From mueller@sc.ZIB-Berlin.DE Thu, 3 Jun 93 13:13:33 +0200 Date: Thu, 3 Jun 93 13:13:33 +0200 From: Peter Mueller mueller@sc.ZIB-Berlin.DE Subject: Pthhbbbt. [06/03, pem] [Subject should be more like 'phew!'] I know, I know, I know. Actually I'm extremely too late. But I think I should write something, too. Now. I'm currently trying to get some order in my received Moose mails. A can't help me, but I've read some of the 'Pthhbbbt' mails. I read some sort of: ... Moose should be useful ... ... Moose should be easy to program ... ... Moose should grab much acceptance ... Well, well, well. Nice goals, though. But: How is it in reality? If you want Moose to be used in a wide spreaded user area you will have to consider the following thing: o Users don't want to see changes. They don't want to learn a new system from scratch. They don't want to use, for example a different text processing system even if it is much better than their used old typewriter. If we want to make Moose attractive to the normal user, we have to offer well known interfaces. Sorry, I know the next sentence will make you flame me but it must be said: We have to provide a ms-dos-interface, we have to provide a unix-interface. The user must have the feel to work with ms-dos or unix, respectively. (OF COURSE: Moose can provide much better things. But these things must first establish themselves. And that will cost a lot of time. BTW: There are many examples, where new technology was not accepted, although it provides fantastic advantages: It was not compatible to old, but used, systems.) Ok. Now for the goodies. I think it is possible to provide Moose with such attractiveness. And it is possible to make it available in such a way, that new facilities can be used. The user will see those things, declares them as useful, and will told them to his/her friends. And then distribution of Moose will function automatically ... ;-) (That's the future view.) Cheers, Peter From mueller@sc.ZIB-Berlin.DE Thu, 3 Jun 93 14:02:09 +0200 Date: Thu, 3 Jun 93 14:02:09 +0200 From: Peter Mueller mueller@sc.ZIB-Berlin.DE Subject: PostScript available? Hi, I would like to know, whether all of you are able to print PostScript files. I think, writing specifications, providing graphical pictures are much more useful. (I don't think it must be each specification release, or update. Only one in, say 4 weeks (?). And I don't know either, how to contribute those files. I just want to hear your comments on this.) Cheers, Peter From mueller@sc.ZIB-Berlin.DE Thu, 3 Jun 93 14:40:46 +0200 Date: Thu, 3 Jun 93 14:40:46 +0200 From: Peter Mueller mueller@sc.ZIB-Berlin.DE Subject: ROI, ORG, [pem 06/03] Hi, I want to present two points. 1. Who is absolutely interested in designing ROI for Moose? (I mean, who is not able to live without it :-) This is the first attempt to create a smaller group. Maybe we can setup a smaller alias list. And others are not bombed with mails. 2. I've thinked about a problem, which - in my opinion - covers the area of the compiler designers (see below) Ad 1. I want to form a smaller group of interested people, to force a useful specification on ROI (where a 1 is the major number ...). I plan to inform the whole Moose community periodically each quarter a year. (If this is QUIRKS: I mean after 3 weeks.) In my opinion we should create smaller groups, where people talk especially and exactly about one (1) topic, and where mails referencing to multiple sujects can be avoided. What do you think? Ad 2. Last night the following problem (and it's possible solution) came into my mind. An object is, at least able to have two 'address spaces', namely private and public. Variables, or 'objects' within the private space are only visible to the object, whereas objects in the public space are also seen to the outer world. Now consider the following object: class example { int i; // i is private public: int j; // j is public void do_something() { i = 1; // Change object's private state j = i + 1; // Change object's public state } }; Now consider, that 'do_something()' is a service, made available via the DIRECTORY SERVICE. Then (I take the term now:) client objects can remotely invoke do_something(). What happens? For the client object, the example must change its private state! But this must only be seen to the client object! Not to others. On the other hand, the change to the public state must be seen to all other clients. We can say, the change of the private state is a local change to the state seen by a specific client object, whereas a change of the public state is a global change seen to all possible client objects. Where are the problems? The global change leads to a synchronization problem. In each situation we have to take care to establish a consistent state. (I think, that's where the compilers must give as much as help as they can!) The local change makes it necessary to provide a copy of at least the private members of an object for each client object! (And therefore we need tools, which similiar to those nice stub-making tools for RPC.) Solutions? Well, to the local change there is an easy solution. Each client, wanting to use other objects' methods remotely, will create an appropriate instance of a server class. This class will inform the remote object, that there is a new client. This will lead at the remote object to 'fork' (if you will forgive my UNIXness ;-) a private copy, especially for this new client. The private copy consists of 1) The private state as it was created on server startup time. (Each time a new client occurs, it will see the same private state.) 2) The public state at this time. (A newly client can see different states than previous ones.) At the client side, this will be done within the constructor of the server class instance. The destructor call will inform the remote object to discard the created client's private view. I suggest the following terms for the - perhaps - following discussion: connector - This is the object used by a client object to establish a new connection to a remote object. The constructor will inform the remote object, that there is a new client, whereas the destructor will say, that the client is finished. shadow - This is the (remote) object which is actually seen by a client object after connection. Within this object only the private (and/or protected (?)) members of the remote object are hold. Public members are still shared through the 'real' remote object. The shadow is created after a connection request by a connector. (The connection between client and shadow must provide a merge between the valid private and public state. Thus, the shadow 'merges' the local view and the global view.) Other Problems? What's about availability and fault tolerance? Reliability? Garbage collection? Hope, to hear some comments, Peter From danodom@matt.ksu.ksu.edu Thu, 3 Jun 93 13:53:00 CDT Date: Thu, 3 Jun 93 13:53:00 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: PostScript available? Peter Mueller Said: > I would like to know, whether all of you are able to print PostScript files. > I think, writing specifications, providing graphical pictures are much more > useful. Nope. If you'll buy me the printer, I'll be happy to say yes... :-) All I have is an HP Deskjet, but I can get access to a Laserjet. If you're using TeX, just send us the TeX source file. -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Thu, 3 Jun 93 13:53:00 CDT Date: Thu, 3 Jun 93 13:53:00 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: PostScript available? Peter Mueller Said: > I would like to know, whether all of you are able to print PostScript files. > I think, writing specifications, providing graphical pictures are much more > useful. Nope. If you'll buy me the printer, I'll be happy to say yes... :-) All I have is an HP Deskjet, but I can get access to a Laserjet. If you're using TeX, just send us the TeX source file. -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Thu, 3 Jun 93 15:48:04 CDT Date: Thu, 3 Jun 93 15:48:04 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: LARRIE Would somebody PLEASE get LARRIE off this list? The 'unknown user' bounces are annoying. I'm also kinda curious about how a nonexistant name got added to the list in the first place... -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From duzan@udel.edu Thu, 03 Jun 93 17:25:27 -0400 Date: Thu, 03 Jun 93 17:25:27 -0400 From: Gary D. Duzan duzan@udel.edu Subject: Pthhbbbt. [06/03, pem] In Message <9306031113.AA26113@sc.zib-berlin.dbp.de> , Peter Mueller wrote: =>[Subject should be more like 'phew!'] => =>I know, I know, I know. Actually I'm extremely too late. But I think I should =>write something, too. Now. => =>I'm currently trying to get some order in my received Moose mails. A can't he lp =>me, but I've read some of the 'Pthhbbbt' mails. I read some sort of: => =>... Moose should be useful ... =>... Moose should be easy to program ... =>... Moose should grab much acceptance ... => =>Well, well, well. Nice goals, though. But: How is it in reality? If you want =>Moose to be used in a wide spreaded user area you will have to consider the =>following thing: => [ ... Stuff about DOS and Unix interfaces ... ] Are you talking about shells, APIs, or binaries? None of these should be in the base package, IMHO. Well, maybe a shell, but not the others. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From duzan@udel.edu Thu, 03 Jun 93 17:28:36 -0400 Date: Thu, 03 Jun 93 17:28:36 -0400 From: Gary D. Duzan duzan@udel.edu Subject: PostScript available? In Message <9306031202.AA26232@sc.zib-berlin.dbp.de> , Peter Mueller wrote: =>Hi, => =>I would like to know, whether all of you are able to print PostScript files. =>I think, writing specifications, providing graphical pictures are much more =>useful. => I can print PostScript at work with a bit of hackery. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From david@davgar.arlington.va.us Fri, 04 Jun 1993 00:45:53 EDT Date: Fri, 04 Jun 1993 00:45:53 EDT From: David Garfield david@davgar.arlington.va.us Subject: PostScript available? [djg27] On Thu, 3 Jun 93 14:02:09 +0200, Peter Mueller wrote: > Hi, > > I would like to know, whether all of you are able to print PostScript files. > I think, writing specifications, providing graphical pictures are much more > useful. I too can handle PostScript, if needed. We may be able to handle some other formats. If nothing else, we all have PC class machines (I think). Of course, such an other format probably means on screen displays. --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Fri, 04 Jun 1993 00:57:13 EDT Date: Fri, 04 Jun 1993 00:57:13 EDT From: David Garfield david@davgar.arlington.va.us Subject: On Peters attempt to make a smaller group [djg28] On Thu, 3 Jun 93 14:40:46 +0200, Peter Mueller wrote: > Hi, > > I want to present two points. > > 1. Who is absolutely interested in designing ROI for Moose? (I mean, who is > not able to live without it :-) This is the first attempt to create a smaller > group. Maybe we can setup a smaller alias list. And others are not bombed > with mails. ... > Ad 1. > > I want to form a smaller group of interested people, to force a useful > specification on ROI (where a 1 is the major number ...). I plan to inform the > whole Moose community periodically each quarter a year. (If this is QUIRKS: > I mean after 3 weeks.) In my opinion we should create smaller groups, where > people talk especially and exactly about one (1) topic, and where mails > referencing to multiple sujects can be avoided. What do you think? ... > > Peter There is a serious problem with trying to make a smaller group for ROI. ROI as you call it is the core of Moose. It is the one of the things that makes Moose Moose. ROI is after all the messaging facility of Moose, and so is crutial. No one should even consider not participating in, or at least paying attention to, this discussion. David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Fri, 04 Jun 1993 01:14:41 EDT Date: Fri, 04 Jun 1993 01:14:41 EDT From: David Garfield david@davgar.arlington.va.us Subject: On Peter's "address spaces" problem [djg29] On Thu, 3 Jun 93 14:40:46 +0200, "Peter Mueller" wrote: > Hi, > > I want to present two points. ... > 2. I've thinked about a problem, which - in my opinion - covers the area of > the compiler designers (see below) > > Ad 2. > > Last night the following problem (and it's possible solution) came into my > mind. An object is, at least able to have two 'address spaces', namely private > and public. Variables, or 'objects' within the private space are only visible > to the object, whereas objects in the public space are also seen to the outer > world. > > Now consider the following object: > > class example { > int i; // i is private > > public: > int j; // j is public > > void do_something() { > i = 1; // Change object's private state > j = i + 1; // Change object's public state > } > }; > In C++ (the language of your example), these exist, but they are not called public and private. They are called static member variables and member variables. Please use the right notation. > Now consider, that 'do_something()' is a service, made available via the > DIRECTORY SERVICE. Then (I take the term now:) client objects can remotely > invoke do_something(). > > What happens? > > For the client object, the example must change its private state! But this > must only be seen to the client object! Not to others. On the other hand, > the change to the public state must be seen to all other clients. > > We can say, the change of the private state is a local change to the state > seen by a specific client object, whereas a change of the public state is > a global change seen to all possible client objects. > > Where are the problems? > > The global change leads to a synchronization problem. In each situation we > have to take care to establish a consistent state. (I think, that's where > the compilers must give as much as help as they can!) > > The local change makes it necessary to provide a copy of at least the private > members of an object for each client object! (And therefore we need tools, > which similiar to those nice stub-making tools for RPC.) > > Solutions? > > Well, to the local change there is an easy solution. Each client, wanting to > use other objects' methods remotely, will create an appropriate instance of > a server class. This class will inform the remote object, that there is a new > client. This will lead at the remote object to 'fork' (if you will forgive my > UNIXness ;-) a private copy, especially for this new client. The private copy > consists of > > 1) The private state as it was created on server startup time. (Each time > a new client occurs, it will see the same private state.) > 2) The public state at this time. (A newly client can see different states > than previous ones.) > > At the client side, this will be done within the constructor of the server class > instance. The destructor call will inform the remote object to discard the > created client's private view. I am confused. It appears that you are trying to say that the client owns the data of the class. This is, IMHO, why we have a kernel. When a client wishes to make a new object of a class, a request is made to the kernel. The kernel allocates memory, and invokes the constructor, allowing the class driver code access to the object for the duration. This allows the class to set up the clients specific data. The 'shared' data is simply variables local to the classes application, that need not have any additional special processing. When the application invokes a method of (or "sends a message to" depending on your terminology) the object, the class is once again given access to the object to do whatever processing needs to be done. At no time, IMHO, should the client ever have access to any object specific or class specific variables. If the client needs access to data, it should ask for it, not get it itself. So, all the client ever does have is one number. This may be an object ID or it may be a process specific results of having done an open()-like call to gain access to an object (as I suggested once before). > > I suggest the following terms for the - perhaps - following discussion: > > connector - This is the object used by a client object to establish a new > connection to a remote object. The constructor will inform the > remote object, that there is a new client, whereas the destructor > will say, that the client is finished. > > shadow - This is the (remote) object which is actually seen by a client > object after connection. Within this object only the private > (and/or protected (?)) members of the remote object are hold. > Public members are still shared through the 'real' remote object. > The shadow is created after a connection request by a connector. > > (The connection between client and shadow must provide a merge between the > valid private and public state. Thus, the shadow 'merges' the local view and > the global view.) These terms shoud not be needed. > > Other Problems? > > What's about availability and fault tolerance? Reliability? Garbage collection? next message... > > Hope, to hear some comments, > > Peter -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Fri, 04 Jun 1993 01:26:13 EDT Date: Fri, 04 Jun 1993 01:26:13 EDT From: David Garfield david@davgar.arlington.va.us Subject: On Garbage Collection [djg30] The issue of garbage collection has now been brought up. I hope to end it now. Garbage Collection is an excuse to be sloppy. In a kernel, or in anything important, you should be precise, not sloppy. If there is ever a time in which the we have lost all pointers to a block, but not freed it, we have done something wrong. To attempt to garbage collect it would just cover the problem up, and it would come back and bite us, over, and over, and over again. Lets not even consider garbage collection for the kernel or any core classes. Garbage collection for specific applications I have no objection to, and this exists now, so it may continue. The rule should be: any process (or kernel) that other processes depend on must be precise and correct. Comments? Disagreements? --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Fri, 04 Jun 1993 01:56:08 EDT Date: Fri, 04 Jun 1993 01:56:08 EDT From: David Garfield david@davgar.arlington.va.us Subject: Synchronous/Asynchronous, one more try. [djg31] Well, ------------------------- I have looked over the QNX paper. I was very surprised to learn that its send() call blocked until after the reply was done. OK, so QNX is synchronous. That does not mean that all modern OSes are synchronous, just that one 11 year old OS is. ------------------------- I fully agree that either the standard library (or whatever we call it) or the kernel should include a synchronous communication layer, but still assert that the kernel must include an asynchronous communication layer at at least as low a level. I agree that programmers should be encouraged to use the synchronous forms unless the applications calls for something else. ------------------------- Peter, my challenge stands. }} All right, try this: under Unix, write a program that reads data from }} two data sources and does different things with the data, such that: }} 1) only one process is used }} 2) select() is not used }} 3) either data source can produce data that will be processed }} imeadiately (sp?) }} 4) the program does not eat CPU time }} }} If you can do this in Unix, I want to see it. I don't think Unix, }} which only has synchronous IO, can do it. }} }} With VMS and its asyncronous IO, this is trivial. You dismissed this by saying that both Unix and VMS are old operating systems. Very well, you are welcome to replace either or both with something that you consider a new/modern operating system. I quoted Unix and VMS because I know them and they are fairly well understood and available. If you do use another operating system in your program, be prepared to explain it. Good Luck... ------------------------- The tendency of modern OSes to seperate things into lots of little chunks outside the kernel is good. But an OS can be just as modern linked as one biiiiig image. And an OS can be just as archaic in little chunks. The little chunks gives you modularity and isolation, which make you programming job easier (usually). :-) ------------------------- --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From duzan@udel.edu Fri, 04 Jun 93 07:16:34 -0400 Date: Fri, 04 Jun 93 07:16:34 -0400 From: Gary D. Duzan duzan@udel.edu Subject: PostScript available? [djg27] In Message <2c0ed387.davgar@davgar.arlington.va.us> , David Garfield wrote: =>We may be able to handle some other formats. If nothing else, we all =>have PC class machines (I think). Of course, such an other format =>probably means on screen displays. => Actually, all I have at home is an HP 2621P terminal. I use a 486DX/50 at work, though. I'm thinking of getting a low end Unix box, like a SPARC Classic for hacking. The sooner I can get away from ISA, BIOS, and 640K conventional memory, the better. I may end up with a 486 running 386BSD, but I'd rather not. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From duzan@udel.edu Fri, 04 Jun 93 07:31:23 -0400 Date: Fri, 04 Jun 93 07:31:23 -0400 From: Gary D. Duzan duzan@udel.edu Subject: Synchronous/Asynchronous, one more try. [djg31] In Message <2c0ee3fd.davgar@davgar.arlington.va.us> , David Garfield wrote: =>Well, => =>------------------------- => =>I have looked over the QNX paper. I was very surprised to learn that =>its send() call blocked until after the reply was done. OK, so QNX is =>synchronous. That does not mean that all modern OSes are synchronous, =>just that one 11 year old OS is. => IPC in QNX was discussed on comp.os.research a few weeks back. It seems that Dan Hildebrant (sp?) and the folks at QNX generally don't have a need for the asynchronous primitives for the class of programs that they deal with (real-time applications.) =>I fully agree that either the standard library (or whatever we call =>it) or the kernel should include a synchronous communication layer, =>but still assert that the kernel must include an asynchronous =>communication layer at at least as low a level. I agree that =>programmers should be encouraged to use the synchronous forms unless =>the applications calls for something else. => Ok, so we do both, with synchronous being primary, with asynchronous being equal or secondary, depending on architecture and implementation. Good enough? =>Peter, my challenge stands. =>}} All right, try this: under Unix, write a program that reads data from =>}} two data sources and does different things with the data, such that: =>}} 1) only one process is used =>}} 2) select() is not used =>}} 3) either data source can produce data that will be processed =>}} imeadiately (sp?) =>}} 4) the program does not eat CPU time =>}} I think my point would be that the question is flawed. :-) You assume that #1 is bad, while I would say that multiple processes might be a reasonable way of dealing with multiple streams. If the processes (threads) are light enough, this shouldn't be a problem. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From duzan@udel.edu Fri, 04 Jun 93 11:24:58 -0400 Date: Fri, 04 Jun 93 11:24:58 -0400 From: Gary D. Duzan duzan@udel.edu Subject: On Garbage Collection [djg30] In Message <2c0edcfa.davgar@davgar.arlington.va.us> , David Garfield wrote: =>The issue of garbage collection has now been brought up. => =>I hope to end it now. => =>Garbage Collection is an excuse to be sloppy. => =>Comments? Disagreements? => I was commenting on garbage collecting system objects, and decided it wasn't too practical. Garbage collection in general is a useful tool. How often have you run across a program with a memory leak? If it is part of your environment you might as well use it. You may be right, though, that the kernel may not be a good place for it to be used. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From duzan@udel.edu Fri, 04 Jun 93 11:27:37 -0400 Date: Fri, 04 Jun 93 11:27:37 -0400 From: Gary D. Duzan duzan@udel.edu Subject: On Peters attempt to make a smaller group [djg28] In Message <2c0ed62d.davgar@davgar.arlington.va.us> , David Garfield wrote: =>There is a serious problem with trying to make a smaller group for =>ROI. ROI as you call it is the core of Moose. It is the one of the =>things that makes Moose Moose. ROI is after all the messaging =>facility of Moose, and so is crutial. No one should even consider not =>participating in, or at least paying attention to, this discussion. => Agreed. If others want to split off to discuss the GUI, secondary storage, etc., fine, but communication is at the heart of the system. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts From danodom@matt.ksu.ksu.edu Fri, 4 Jun 93 16:39:30 CDT Date: Fri, 4 Jun 93 16:39:30 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: PostScript available? David Garfield Said: > We may be able to handle some other formats. If nothing else, we all > have PC class machines (I think). Of course, such an other format > probably means on screen displays. Keep in mind that not all of us are running MS-DOS... -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Fri, 4 Jun 93 16:43:57 CDT Date: Fri, 4 Jun 93 16:43:57 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: On Garbage Collection David Garfield Said: > Garbage Collection is an excuse to be sloppy. Hear, Hear! We should be careful enough not to need GC. > Garbage collection for specific applications I have no objection to, > and this exists now, so it may continue. If we write a LISP, we'll definitely need it for THAT application... :-) -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Fri, 4 Jun 93 16:48:23 CDT Date: Fri, 4 Jun 93 16:48:23 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Home Boxes? Gary D. Duzan Said: > Actually, all I have at home is an HP 2621P terminal. I use a > 486DX/50 at work, though. I'm thinking of getting a low end Unix box, > like a SPARC Classic for hacking. The sooner I can get away from ISA, > BIOS, and 640K conventional memory, the better. I may end up with a > 486 running 386BSD, but I'd rather not. Hey, it's not THAT bad! Especially if you use Linux rather than 386BSD. You can get a low end ALPHA for $5,000 and a good one for $10,000. Why get stuck on a SPARC? Seriously, though, we probably all need to decide on a standard set of tools to write this thing with. If Dennis uses TASM, I use gas, and somebody else uses MASM, we'll be stuck. I suggest selecting GNU tools -- that way we won't have to pay for them if we don't have them. -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From ANDREASA@dhhalden.no 5 Jun 93 12:06:41 +0100 Date: 5 Jun 93 12:06:41 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Home Boxes? > Seriously, though, we probably all need to decide on a > standard set of tools to write this thing with. If Dennis uses TASM, > I use gas, and somebody else uses MASM, we'll be stuck. I suggest > selecting GNU tools -- that way we won't have to pay for them if we > don't have them. Borland has got a very liberal copy policy. You can distribute x number of copies, as long as only one is used at a time, and since we are spread through out the world, that wouldn't be any crucial difficulties, if someone has got a *legal* copy of it! If we use GNU, mustn't we agree on some special policy things then. BTW, we'll need an assembler for MOOSE anyway, so why don't we put our language group to do it? It is very easy to make a simple assembler! Only to hardcode the different op-codes to the different asm. commands. MASS, Moose ASSembler. > -- > Dan Odom > danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS > > Support the League for Programming Freedom. Mail lpf@uunet.uu.net Nough bullshit from me:-). Arff PS. Do you read alt.spam? No? Do! DS. sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From danodom@matt.ksu.ksu.edu Sat, 5 Jun 93 12:19:09 CDT Date: Sat, 5 Jun 93 12:19:09 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Home Boxes? Andreas Arff Said: > Borland has got a very liberal copy policy. You can distribute x number of > copies, as long as only one is used at a time, and since we are spread > through out the world, that wouldn't be any crucial difficulties, if someone > has got a *legal* copy of it! I got a legal copy of BC++ 3.1. If you think I'm going to upload it, you're nuts. It's like 16 HD floppies. > If we use GNU, mustn't we agree on some special policy things then. Not if Moose is going to be free software, which, as far as I know, it will be. > BTW, we'll > need an assembler for MOOSE anyway, so why don't we put our language group > to do it? It is very easy to make a simple assembler! Only to hardcode the > different op-codes to the different asm. commands. > MASS, Moose ASSembler. OK, let's do it. I'm posting another (short) mesage about this - read it. > > Support the League for Programming Freedom. Mail lpf@uunet.uu.net > > Nough bullshit from me:-). Hey, now, what's THAT supposed to mean? :-) -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Sat, 5 Jun 93 12:30:34 CDT Date: Sat, 5 Jun 93 12:30:34 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Vacation and Groups Well, guys, the time has finially come - I'm going on vacation for a few weeks. Before I go, I've got a proposal or two... We are not getting a lot done within our current 'corporate' structure. We are getting some things, like the kernel spec, started, but we could be working on the compiler and UI specs as well. I propose that we split in to groups NOW, like we've been planning to do all along. Let's not discuss it - let's just get up off our asses and do it. I'll be here until about 5:00 Monday morning, CST (about 10:00 GMT, I think), and am 90% likely to be reachable by using ntalk on the address below, by mailing me (I check mail every hour or so), or on the #unix IRC channel (that's usually at night). If you ntalk and I don't respond, just wait - I'll get here eventually. If anybody has a copy of the old Group Structure message, pull it up and repost it. I would, but all my old Moose mail got nuked in a disk crash :-(. Moose has been 'officially' in progress since before Christmas. Let's finially get around to starting. I don't mean coding, I mean writing some coherent specs. Let's set a deadline (say, 1 October to have all specs complete and to begin coding). LET'S DO IT!!! Oh, and put me in the language group. :-) -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From danodom@matt.ksu.ksu.edu Sat, 5 Jun 93 12:39:25 CDT Date: Sat, 5 Jun 93 12:39:25 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Home Boxes? Andreas Arff Said: [ Stuff about copying BC++ deleted ] > Well, we'd only need TASM:-) I can upload it; it's not that long. BUT, why not use A86? It's free, and a decent assembler, too. [ Stuff about GNU policy deleted ] > > Not if Moose is going to be free software, which, as far as I know, it > > will be. > > Yeap. Then what's the problem? [ LPF plug and comments deleted ] > Can't we take that discussion on alt.flame, I'm in a bad mood today:-(. Ah, Arrf supports software patents. Maybe I'll post my League position papers to the list... :-0 -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From ANDREASA@dhhalden.no 5 Jun 93 19:22:25 +0100 Date: 5 Jun 93 19:22:25 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Home Boxes? > Andreas Arff Said: > > > Borland has got a very liberal copy policy. You can distribute x number of > > copies, as long as only one is used at a time, and since we are spread > > through out the world, that wouldn't be any crucial difficulties, if someone > > has got a *legal* copy of it! > > I got a legal copy of BC++ 3.1. If you think I'm going to upload it, > you're nuts. It's like 16 HD floppies. Well, we'd only need TASM:-) > > If we use GNU, mustn't we agree on some special policy things then. > > Not if Moose is going to be free software, which, as far as I know, it > will be. Yeap. > > BTW, we'll > > need an assembler for MOOSE anyway, so why don't we put our language group > > to do it? It is very easy to make a simple assembler! Only to hardcode the > > different op-codes to the different asm. commands. > > MASS, Moose ASSembler. > > OK, let's do it. I'm posting another (short) mesage about this - read it. I got to messages from you, right - but they both where the same:-) > > Nough bullshit from me:-). > > Hey, now, what's THAT supposed to mean? :-) Can't we take that discussion on alt.flame, I'm in a bad mood today:-(. > Dan Odom > Support the League for Programming Freedom. Mail lpf@uunet.uu.net Arff sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From danodom@matt.ksu.ksu.edu Sat, 5 Jun 93 13:58:05 CDT Date: Sat, 5 Jun 93 13:58:05 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Home Boxes? Andreas Arff Said: > Havn't read the GNU licens agreement so... All it says is that, if you use any GNU code in your program, you must distribute it under the terms of the GNU license, which says that if anyone uses code from your program in their programs, they must distribute it under the terms of the GNU license, which says that... > > Ah, Arrf supports software patents. Maybe I'll post my League > > position papers to the list... :-0 > > Supports and supports, weeeeell I don't mind beeing the owner of licensed > software. After, we are all programmer, and our work is our hobby, but > when we work with our hobby, we need money for. The league has nothing against copyrighted and licensed software; the FSF and Project GNU do, but they are both independent of the LPF. All three were founded by the same guy (Richard Stallman, a.k.a. RMS), but are different entities. The League does _not_ oppose copyright on individual programs. We do oppose software patents, and also UI copyright. If anyone is interested, I can send you our paper `Against Software Patents'. I have it in TeX source form and in Postscript. > I suggest you to send your papers to njale@dhhalden.no. You'd do the world > a huge favour! Uh oh.. Why? -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From ANDREASA@dhhalden.no 5 Jun 93 20:28:24 +0100 Date: 5 Jun 93 20:28:24 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Home Boxes? > I can upload it; it's not that long. BUT, why not use A86? It's > free, and a decent assembler, too. Why not. > Then what's the problem? Havn't read the GNU licens agreement so... > [ LPF plug and comments deleted ] > > > Can't we take that discussion on alt.flame, I'm in a bad mood today:-(. > > Ah, Arrf supports software patents. Maybe I'll post my League > position papers to the list... :-0 Supports and supports, weeeeell I don't mind beeing the owner of licensed software. After, we are all programmer, and our work is our hobby, but when we work with our hobby, we need money for. I suggest you to send your papers to njale@dhhalden.no. You'd do the world a huge favour! Arff Note: Dann, two ff's! > Dan Odom > danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Arff sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From ANDREASA@dhhalden.no 5 Jun 93 21:11:59 +0100 Date: 5 Jun 93 21:11:59 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Home Boxes? > The league has nothing against copyrighted and licensed software; the > FSF and Project GNU do, but they are both independent of the LPF. All > three were founded by the same guy (Richard Stallman, a.k.a. RMS), but > are different entities. The League does _not_ oppose copyright on > individual programs. We do oppose software patents, and also UI > copyright. If anyone is interested, I can send you our paper `Against > Software Patents'. I have it in TeX source form and in Postscript. Could agree with that:-). > > I suggest you to send your papers to njale@dhhalden.no. You'd do the world > > a huge favour! > > Uh oh.. Why? The most restrictive guy in this school:-). > Dan Odom Arff sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From david@davgar.arlington.va.us Sat, 05 Jun 1993 21:07:41 EDT Date: Sat, 05 Jun 1993 21:07:41 EDT From: David Garfield david@davgar.arlington.va.us Subject: On Garbage Collection [djg32] Dan Odom Said: > David Garfield Said: > > > Garbage Collection is an excuse to be sloppy. > > Hear, Hear! We should be careful enough not to need GC. Actually, I've been thinking, and the lost memory check for garbage collection is a good thing. It is one of the sanity checks you can run to make sure yoou haven't done anything wrong. We shouldn't actually free any lost memory found, just tell the user the system is on the "fubar" and should be repaired, or at least restarted. > > Garbage collection for specific applications I have no objection to, > > and this exists now, so it may continue. > > If we write a LISP, we'll definitely need it for THAT application... :-) Exactly. --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Sat, 05 Jun 1993 22:25:01 EDT Date: Sat, 05 Jun 1993 22:25:01 EDT From: David Garfield david@davgar.arlington.va.us Subject: Synchronous/Asynchronous, one more try. [djg33] "> " is Gary D. Duzan "> =>" is David Garfield (me) > =>I fully agree that either the standard library (or whatever we call > =>it) or the kernel should include a synchronous communication layer, > =>but still assert that the kernel must include an asynchronous > =>communication layer at at least as low a level. I agree that > =>programmers should be encouraged to use the synchronous forms unless > =>the applications calls for something else. > => > Ok, so we do both, with synchronous being primary, with asynchronous > being equal or secondary, depending on architecture and implementation. > Good enough? Not Good enough. If threads are light enough, sending a message to an object can constitute starting a new thread. Waiting for the message to be finished constitutes waiting for the thread to end. My argument is that asynchronous is the primary and synchronous is equal or secondary, depending on architecture and implementation. > =>Peter, my challenge stands. > =>}} All right, try this: under Unix, write a program that reads data from > =>}} two data sources and does different things with the data, such that: > =>}} 1) only one process is used > =>}} 2) select() is not used > =>}} 3) either data source can produce data that will be processed > =>}} imeadiately (sp?) > =>}} 4) the program does not eat CPU time > =>}} > > I think my point would be that the question is flawed. :-) You > assume that #1 is bad, while I would say that multiple processes > might be a reasonable way of dealing with multiple streams. If the > processes (threads) are light enough, this shouldn't be a problem. Multiple processes are the classical Unix way of solving this problem. My point is that, with asynchronous I/O, it isn't needed. And if you needed to somehow interrelate the data from the multiple streams, multiple processes isn't a good idea because you need to feed it all to one process anyway. As for the possibility of having the same memory space for both processes, this is a possibility, but it means you must right a fully multi-tasking application. While many things need to be capable of multi-tasking (like all our object management code), we shouldn't make applications do it when it isn't needed. Incidentally, #2 is because select() is a primative step towards asynchronous I/O. #4 is because the other way to solve this is to do alternate non-blocking reads (reads that return immeadiately but report that they did nothing), and this solutions is not compatible with a multitasking environment. --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From david@davgar.arlington.va.us Sat, 05 Jun 1993 22:53:51 EDT Date: Sat, 05 Jun 1993 22:53:51 EDT From: David Garfield david@davgar.arlington.va.us Subject: Software Licenses [djg34] Before I begin, let me say it has been a while since I read either license agreement, but: Andreas Arff wrote: > Borland has got a very liberal copy policy. You can distribute x number of > copies, as long as only one is used at a time, and since we are spread > through out the world, that wouldn't be any crucial difficulties, if someone > has got a *legal* copy of it! I believe Borland's policy is that you may transfer you software from one machine to another, PROVIDED you remove all copies from the original machine. Thus, you may use it like you would use a book. You may pass it around, but only one person can have it at any one time. Andreas Arff wrote: > If we use GNU, mustn't we agree on some special policy things then. Dan Odom wrote: > Not if Moose is going to be free software, which, as far as I know, it > will be. The GNU policy is the so called "Copyleft", more formally the GNU General Public License. I believe it policy is basically, "If it includes ANY GNU code, it is FREE SOFTWARE and you must give source when you give an executable. The particularly NASTY part about this is that it applies to the C run time libraries. I do not believe that it applies to the output of the compiler if it did not apply to the input. This should make the GNU compilers/assemblers usable by us. On the subject of Moose being free, I can agree to it being free, but not to it being strictly under the GNU General Public License. It is more reasonable to say "you may have this under the GNU General Public License, or you may have it under these other terms". There is at least one other general license out there. Andreas Arff wrote: > MASS, Moose ASSembler. Nice name. --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From danodom@matt.ksu.ksu.edu Sat, 5 Jun 93 22:52:05 CDT Date: Sat, 5 Jun 93 22:52:05 CDT From: Dan Odom danodom@matt.ksu.ksu.edu Subject: Software Licenses [djg34] David Garfield Said: > I believe Borland's policy is that you may transfer you software from > one machine to another, PROVIDED you remove all copies from the > original machine. Thus, you may use it like you would use a book. > You may pass it around, but only one person can have it at any one > time. It may be installed on more than one machine at a time (e.g., your home and your office), but it can only be in use on one machine at a time. > The GNU policy is the so called "Copyleft", more formally the GNU > General Public License. I believe it policy is basically, "If it > includes ANY GNU code, it is FREE SOFTWARE and you must give source > when you give an executable. The particularly NASTY part about this > is that it applies to the C run time libraries. I do not believe that > it applies to the output of the compiler if it did not apply to the > input. This should make the GNU compilers/assemblers usable by us. One of GNU's chief complaints is that people often misinterpret the GPL this way. >From Section 6, Paragraph 1 of the GNU Library General Public License, Version 2 of June 1991: ``A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or liked with it, is called a ``work that uses the Library''. Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this license.'' >From Section 7, Paragraph 1: ``As an exception to the Sections above, you may also compile or link a ``work that uses the Library'' with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification and reverse engineering for debugging and such modifications.'' So you see, Moose could be _commercial_ and legally make use of GNU libraries. All we have to do is allow the `customer' to modify it... It's good that this license stuff is coming up now... I'd hate for Moose to be completed before we discover that we all want distribution on different terms. I have two requirements for the Moose license: Moose must be free, and the source code to Moose must be freely available. That's it. When I joined the project I got the impression that both of the above would apply, so I'm not too worried about it. Before you jump down my throat about commercial software, let me say that I am NOT opposed to copyright on individual programs, and neither is the League for Programming Freedom. Hell, I make my (meager) living off of software. The reason that I want Moose to be free has to do with the kind of people who tend to use free software... Think of all the gurus you've known, and of how many used SysV over the (free) Berkely UNIX. On the PC, most (if not all) of the Truly Great people I've known used Linux/Minix rather than SCO or QNX. I don't want some accountant running Lotus 1-2-3 on Moose; I'd rather have some student running his cryptanalysis software on it. -- Dan Odom danodom@matt.ksu.ksu.edu -- Kansas State University, Manhattan, KS Support the League for Programming Freedom. Mail lpf@uunet.uu.net From ANDREASA@dhhalden.no 6 Jun 93 21:54:07 +0100 Date: 6 Jun 93 21:54:07 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Doooomed Anybody for a talk session? Please mail me. I'll be at andreasa@gyda.dhhalden.no. Arff sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From david@davgar.arlington.va.us Mon, 07 Jun 1993 00:51:21 EDT Date: Mon, 07 Jun 1993 00:51:21 EDT From: David Garfield david@davgar.arlington.va.us Subject: Software Licenses [djg35] Dan Odom Said: > David Garfield Said: > > > I believe Borland's policy is that you may transfer you software from > > one machine to another, PROVIDED you remove all copies from the > > original machine. Thus, you may use it like you would use a book. > > You may pass it around, but only one person can have it at any one > > time. > > It may be installed on more than one machine at a time (e.g., your > home and your office), but it can only be in use on one machine at a > time. Borland Says: [Exact quote, first two paragraphs] This software is protected by both United States copyright law and international copyright treaty provisions. Therefore, you must treat this software just like a book, except that you may copy it onto a computer to be used and you may make archival copies of the software for the sole purpose of backing up our software and protecting your investment from loss. By saying, "just like a book," Borland means, for example, that this software may be used by any number of people, and may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it is being used at another or on a computer network by more than one user at one location. Just as a book can't be read by two different people in two different places at the same time, neither can the software be used by two different in two different places at the same time (unless, of course, Borland's copyright has been violated). [Note: "no possibility" on paragraph 2 line 4 is bold] I don't know about you, but I am not willing to risk violating the license on my copy. My copy stays on my computer alone. > > The GNU policy is the so called "Copyleft", more formally the GNU > > General Public License. I believe it policy is basically, "If it > > includes ANY GNU code, it is FREE SOFTWARE and you must give source > > when you give an executable. The particularly NASTY part about this > > is that it applies to the C run time libraries. I do not believe that > > it applies to the output of the compiler if it did not apply to the > > input. This should make the GNU compilers/assemblers usable by us. > > One of GNU's chief complaints is that people often > misinterpret the GPL this way. > > From Section 6, Paragraph 1 of the GNU Library General Public > License, Version 2 of June 1991: > > ``A program that contains no derivative of any portion of the Library, > but is designed to work with the Library by being compiled or liked > with it, is called a ``work that uses the Library''. Such a work, in > isolation, is not a derivative work of the Library, and therefore > falls outside the scope of this license.'' > > From Section 7, Paragraph 1: > > ``As an exception to the Sections above, you may also compile or link > a ``work that uses the Library'' with the Library to produce a work > containing portions of the Library, and distribute that work under > terms of your choice, provided that the terms permit modification and > reverse engineering for debugging and such modifications.'' > > So you see, Moose could be _commercial_ and legally make use of GNU > libraries. All we have to do is allow the `customer' to modify it... Well, the copy of GCC that I have on my 486 is DJGPP 2.1. This is under Version 1 of GPL. Version 1 was before they figured out this CORRECT INTERPRETATION that I described, that apparently lasted for many years. > It's good that this license stuff is coming up now... I'd hate for > Moose to be completed before we discover that we all want distribution > on different terms. > > I have two requirements for the Moose license: Moose must be free, > and the source code to Moose must be freely available. That's it. > When I joined the project I got the impression that both of the above > would apply, so I'm not too worried about it. The only additional requirement that I would make is to lose, at least given the right conditions, GNUs restrictions on derived works (that you must give source). > Before you jump down my throat about commercial software, let me say > that I am NOT opposed to copyright on individual programs, and neither > is the League for Programming Freedom. Hell, I make my (meager) > living off of software. The reason that I want Moose > to be free has to do with the kind of people who tend to use free > software... Think of all the gurus you've known, and of how many used > SysV over the (free) Berkely UNIX. On the PC, most (if not all) of > the Truly Great people I've known used Linux/Minix rather than SCO or > QNX. I don't want some accountant running Lotus 1-2-3 on Moose; I'd > rather have some student running his cryptanalysis software on it. I would rather have both. Then we can try to kill MS-DOS, MS-Windows, Windows-NT, and finally Microsoft. --David -- David Garfield/2250 Clarendon Blvd/Arlington, VA 22201 (703)522-9416 Email: david%davgar@uunet.uu.net or garfield@verdi.sra.com From mueller@sc.ZIB-Berlin.DE Mon, 7 Jun 93 10:38:04 +0200 Date: Mon, 7 Jun 93 10:38:04 +0200 From: Peter Mueller mueller@sc.ZIB-Berlin.DE Subject: Pthhbbbt. [06/07, pem] > =>[Subject should be more like 'phew!'] > => > =>I know, I know, I know. Actually I'm extremely too late. But I think I should > =>write something, too. Now. > => > =>I'm currently trying to get some order in my received Moose mails. A can't help > =>me, but I've read some of the 'Pthhbbbt' mails. I read some sort of: > => > =>... Moose should be useful ... > =>... Moose should be easy to program ... > =>... Moose should grab much acceptance ... > => > =>Well, well, well. Nice goals, though. But: How is it in reality? If you want > =>Moose to be used in a wide spreaded user area you will have to consider the > =>following thing: > => > [ ... Stuff about DOS and Unix interfaces ... ] > > Are you talking about shells, APIs, or binaries? None of these > should be in the base package, IMHO. Well, maybe a shell, but not > the others. Yup. I think that's the first part. (I don't think, that it is too much work to add, for example, a shell with ms-dos-like commands.) I still believe, offering the user a well-known interface will give us much more acceptance. Especially when commands provide the same 'look-and-feel'. In the second part (which must be NOT implemented now!!!) I wish to offer an object, say MSDOS, where it should be possible to execute 'normal' msdos programs. (Again: I don't want it NOW! It's just a future view.) Sorry, if I've again had said something, which was misunderstood ... Peter PS: But that's for the GUI/TUI designer. As this is not my primer part, I will go and concentrate on IPC and ROI ;-) > > Gary Duzan > Time Lord > Third Regeneration > Humble Practitioner of the Computer Arts > > > > From ANDREASA@dhhalden.no 19 Jun 93 15:40:50 +0100 Date: 19 Jun 93 15:40:50 +0100 From: Andreas Arff ANDREASA@dhhalden.no Subject: Have a nice summer... Hello everybody, have a nice summer (except Michael). From now on you can all reach me at andreasa@fenris.dhhalden.no. You'll here from me now and then, but not so often as before. Arff sig.'s in for 1000 miles service --Andreas Arff andreasa@dhhalden.no-- From rideau@clipper Thu, 24 Jun 93 22:44:04 MET DST Date: Thu, 24 Jun 93 22:44:04 MET DST From: Francois-Rene Rideau rideau@clipper Subject: Various subjects [far36] #--- begin manage/ideas/mailist.far --- MOOSE messages -------------- There haven't been many messages those times (or have I been missing it all). I think the fact that we write messages in good english does slow the discussion. Don't be reluctant to throw your ideas through the mail, even if it's not finished. #--- end manage/ideas/mailist.far --- #--- begin manage/ideas/moose.far --- (A-)Synchronousness ------------------- let's have an occam-like SEQ/PAR construct in the system, and end with the quarrel. When you want synchronous IO, you use SEQ mode; when you want asynchronous IO, you use PAR mode. Both modes are implemented. Really, I see no point in quarrel about synchronousness. Please implement both sync&async and let the programmer choose. BOTH are important (also remember you can hardly build PAR from SEQ, and you can't feasably build SEQ from PAR). Linking objects --------------- Info objects must contain: Code: - what are the implicit or explicit parameters; what is read, and what is changed. - How it changes data. - What other code is called; what other code calls me. Data: - who can read and who can write. - what it can read or write. - What other data is pointed at; what other data points at me. Note again that code and data are the dual representations of the objective computer world. Garbage Collecting ------------------ Garbage collecting: a system global garbage collecting is good when and only when every pointer use is trusted and/or checked. That shouldn't be the general global case. Local GC is fine, and should be provided inside a standard library for apps to use it. Global GC should be used only through system descriptors, not with directly modifiable pointers. This already has been talked about before, and no one saw any objection about the memory system be modularly layered for each object indepently from the others, with standard modules provided, with raw (on a 386, already three layers, physical, paged then segmented) memory as standard implemented devices above the which you can use stack, double stack (up and down, not very useful with paged memory, but to save segment registers), malloc, malloc/realloc, and/or GC managers etc. From high level, better use name services, system descriptors and other virtual stuff. The compiler is meant to simplify, find best implementation, etc, whenever possible. Let's end with languages and compilers which can only handle optimize code but not data. Let's have our data as virtual as code, our code as handy as data. This means standard compiler output including info on how they implemented HL constructs into LLL/asm. Demand paging & scheduling -------------------------- Demand paging seams is ok, but the MacIntosh shows that sometimes you'd like pages to be loaded BEFORE they are demanded, while the system is just waiting, 'cause ye know they're _very_ likely to be demanded: else you'll have to wait when you demand the pages. Example: when you load Word 5 for the Mac, it won't fetch every (any?) command (that's good: you don't need them all); it loads a command the first time you use it, so at this time, you have to wait for disk access. But as the system waits for your commands, it would have been nice if it used this idle time to fetch commonly used commands as cursor displacement or block commands. MUSIC ----- What's Good With * MS-LoseDoze: scroll bars that appear when and only when necessary (but that's only a detail, and it's not perfect). * MacIntosh: extension is just easy BUT requires complete rebooting to take effect. What's Wrong With * MS-LoseDoze: everything that remains ! * MS-LoseDoze & MacIntosh - it's a user-unextensible interface; you CAN'T program it at user level. (ever tried a series of MANUAL search and replace ? I meant the same long series to call for 20 different files). When something lacks in a software, you just have to redo the software from scratch or wait hopefully for your problem to solve in the next version. - it's an screen only interface only software: you can easily share anything that displays on a screen, but you just can't really efficiently share generic objects. Actually, Apple & MicroShit think their product are OSes, they just are naughty interfaces. * Everything but Borland products: - even a programmer can't program it without having read a (Mac: huge; MS-LoseDoze, worse: buggy) documentation ! - even when the programmer manages anything, he can't append it to the app he uses, so he all the same have to wait for next version of the app, or be ready to rewrite and maintain his own app (true of all existing systems) !!!! What should be good about MUSIC - included should be copy/paste sub-windows (physical aspect a/o logic), w/ or w/out mask. Thus, if a utility offers some interesting icon, you can duplicate it and put it where you want (example: hour, etc). There's NO need for special functions to do that, because iconized objects have been interfaced, thus have a descriptor, thus can have this descriptor duplicated. This means each opened library should remember new descriptors on temporary objects that should not be released. - copy/paste should only be a specialization of push/pop and even read/write to any object IO device understanding the copied/pasted object's class. #--- begin manage/ideas/moose.far --- Let's begin Coding ------------------ * There seems nobody has anything fundamental to add about specs. So let's begin coding. When one needs some implementation convention, just publish it, and continue until some decision has been taken, then modify code accordingly. * languages used. For device programming, let's use ANSI C and Assembly (I vote for TASM, but perhaps you'll prefer GAS). TASM has got good macros et al. and uses standard Intel pseudo-code. GAS seems to have good macros, but uses non-standard pseudo-code for intel instructions. The language team (including myself) will build a C to HLL compiler, and an assembler into HLL embedder. C code will have to include HLL directives inside comments. * C writing conventions. I propose something like the code I'm sending. * ASM writing conventions. It will depend on the assembler used, but that's what I propose. We'll add info about parameters inside macros like DefParam (char near *) Dest in eax * Object support in C and Assembly. I'm sending an Object description library in C. Its purpose is only for booting a HLL compiler in the language itself from only C and ASM. But actual implemented public MOOSE object are very likely to look like that (remember that only public objects need descriptors). So please look at the logical part of it and state what these objects lack, or what they have and shouldn't. Please comment. Problem: what kind of pointers to use in MOOSE implementation: near pointers, far pointers or system only pointers ? * Presentation: we should all use the same style in programming, naming, etc. First, let's not use tab characters, but 8 char long (and even then, let's restrict ourselves) (oops ! I hope this file doesn't contain tabs )-8 Then, I propose we use uppercase for beginning of words (i.e. WriteToDisk and suches), without underscores, but to define types when C of ASM wanted a name (i.e. const zap zap_1 = { &zap_2,1 }, when C required named zap structure). Well, we'll see and we'll vote. * For IO (Especially disk I/O and SuperVGA programming), we can get docs from Linux and/or XFree drivers code, and other PD code. * Regularly publish your code, even tiny. Proceed by month release, then diffs relative to it. #--- end manage/ideas/moose.far --- #--- begin manage/ideas/manage.far --- Project Management ------------------ * Let's define a common MOOSE tree. Here is what I propose. MOOSE ( MANAGE (MAILLIST, ; for project management: mailing list contents, WHODOESWHAT, ; what's done, what's to do, who does/did/will do it IDEAS, ; lists of ideas, each subject managed by one person. OLD), ; old stuff SPECS (MOOSE, ; Generic MOOSE specifications LANGUAGE, ; Low/High Level Language and compiler specs 386IMPL, ; 386 implementation specs PROGRAMG, ; programming conventions ) BIN (386), 386 (BOOT, ; how to boot from BIOS NUCLEUS, ; nucleus BASEOBJ (BASIC,CLASS,IO) ; management of basic objects DRIVERS (MEM,TIME,DISK,SERIAL,GRX,FPU); hardware devices ; perhaps a XMS/VCPI/DPMI compatible version someday ? ), LIBSRC ( OBJECTS(GENERIC,BASIC,CONTAINERS,IO), ; MEM(GENERIC,GRAIN,FLAT,ALLOCRE,GC), ; FILING(FAT,OOFS,HPFS,LINUXFS), ; (sub) file systems GRX(RAW,WINDOWS), ; HL code for graphix SYSTEM(THREAD,SPOOL), ; HL code for multi* DBASES(GENERIC,DBA), ; relational databases MATH(SETS,NUMBERS,LINEAR,ANALYSIS), ; math libraries EMU(DOS,UNIX,APPLE2) ; emulate DOS, Unix, etc. ), COMPIL (BOOT(386,CUTILS), ;booting stuff, C utilities OSL, ;stack language to bootstrap compiler TREES, ;internal object representation def. PARSING, ;parsing= treeing text CASTING, ;manage implicit type cast OPTIMIZG, ;optimizing trees GENERATG(OSL,386), ;generating code from trees ASSEMBLE, ;assembling, unassembling CTRANSLAT, ;C to (from) HLL translation INTERPRET ;tree interpreter/debugger ) ) * 'bout IDEAS directory, here's how it's going to be. Each subject has a file (name:8 chars :-( ), maintained by only one person. Those who want to add things write FILENAME.PER files, where Filename refers to the file's name and PER is a personal three letters identifier. The file maintainer will include new ideas in his file and is meant to heed .PER file ideas, but he each one is free to maintain his .PER file and to remove an idea from it only when he thinks it was well taken into account in the main file. I propose a subject file for each second order subdirectory of the MOOSE directory * Files may be posted using the following syntax: #--- begin FILENAME --- at the beginning of a line, #--- end FILENAME --- at the end. I'm sure someone is able to produce an awk script to manage that, or even .BTM 4dos script. The same person should then also be able to produce automatic unzip-ing and/or diff-ing :-). (I think I'll do the .BTM stuff). * Posted files should use LF only format, whereas zipped files may contain CRLF. See your local DOS2UNIX/UNIX2DOS converter to translate. See another utility to keep datestamp (if you have one, please send it to me, I'd like not to have to do it myself). * I'm willing to maintain any such file. Please state your mind via the mail list. #--- end manage/ideas/manage.far --- #--- begin manage/ideas/LANGUAGE.far --- MOOSE language issue -------------------- Some ideas: - Let's have a standard compiler, providing standard services and virtual classes, from HLL to binary, through MLL,LLL,ASM, etc (when exists). - Let's have a unified preprocessor for everything. The preprocessor will manage compiler modules. I begun the preprocessor in HLL, and I'm translating it to C: it uses a generic symbol table manager and a generic character input manager, and just find a symbol in the input, execute a procedure associated to the symbol if found, a global procedure if not found. Typical procedures will add/remove symbols, accept new symbols, open/push/close/pop structures, etc. - First compiler modules are tokenizers and detokenizers (useful for compressing source parts, but possibly expand it back to text). This is done by putting the right symbols and procedures in the preprocessor. - Then come token interpreters. Note that the use of exceptions as a language feature comes handy for error processing, or even simpler code structuring. A standard generic interpreter is provided. This also can be done directly by using the preprocessor's symbol table. Macros can be used by inserting text before the preprocessor. This is done by having an input stack between the preprocessor and the raw input. - Here, we come interpreters or list/tree builders, which manage identified entities. - Then will certainly come a global tree analyser, that will fill unsynthetized fields and decide each parsed object's destiny: delete unreferenced objects, then compile end objects, etc. Object are grouped by mutual reference for optimization. * Please note that a standard generic library for tree algorithms is provided, as for any common class. Please also note that a tree is an abstract concept independant from implementation. Implementation will depend on particular expected shapes of implemented objects. - Tree simplifiers and translators then come, successively called by the global tree manager. Simplifiers "optimize" trees; translator express them in another "language". - Remains data packing modules to transform simplified trees into code. All that I say to define the global shape of the compiler, but mostly to show that we can and must provide some standard compiling features. - someone in the group said that people don't want to learn new things. That's inaccurate. People hate having to learn a new syntax everytime they use a new tool, when they know this knowledge will have to be forgotten when using then next tool. What I propose is providing a unique syntax for all MOOSE tools. At least, if different contexts require very different syntactic styles, provide a standard syntax for each style, allowing easy differenciation of one from the other (example: structured functional notation is opposite to raw listing, but it's easy to provide both notations for the same objects with the same compiler, changing only the list/tree building part. - not only end-users will appreciate a standard syntax and preprocessor (which will encompass shelling, making, compiling, interpreting, analysing, etc), but also programmers: programmers (who, as end-users already like it) like being able to be able to reuse code; they don't have to write it themselves, and they are able to communicate one with the other without having to study the other one's implementation. But for code reuse to happen, the system must ensure that you can trust other one's code; and it must also ensure that code interface is understandable by the human reusers. That's why the system preprocessor must include as a standard commenting, multiple editing, cross-referencing. This being seen as the fact that an object has multiple aspects and can itself have influence on several other objects, we can view that as the fact that the preprocessor can dispatch multiple objects to multiple aspect managers. BOOTSTRAPPING THE COMPILER -------------------------- (default is SEQ) PAR Define HLL Write HLL libraries /** also helps defining HLL **/ SEQ PAR Design a format to describe objects in 386 ASM, Write a protected mode bootstrapper Write managers for basic OSL objects Write binary routines an OSL interpreter using these objects in C, Write an object manager Write simple IO Write symbol management Write the preprocessor Write an simple data compiler Write routines to write data in MOOSE binary format or assembly if using MOOSE binary, Write routines to get ASM routines' adresses Use the data compiler to produce assembly source or MOOSE binary Use the 386 booter + C object writer to write and debug binary code PAR SEQ optionnally build a C to OSL compiler using the preprocessor. Rewrite the C preprocessor code in OSL Debug the OSL version of the preprocessor using Write in OSL a HLL parser Write in OSL a OSL code generator Finish rewriting the HLL compiler with itself Add features to the HLL compiler Write HLL compiler modules for optimization Write assembly code generator for the HLL, using HLL. /***** Has anyone got a complete C grammar to *****/ /***** OSL: objective stack language; a very simple language that allows us using MOOSE objects, and that is very simply produced by our preprocessor *****/ /***** the order in the PAR statements indicates the order to launch the processes, which are no independent, and tend to interact in that order *****/ END HLL LANGUAGE DEFINITION ----------------------- Here are the basic ideas I'd include in the HLL definition. Please state your mind. I wrote it similar to natural english, but if you stick to (*(int*)(++b->c))(&e)?x:d[++a] notations, I think it can be included in the language too. Basically, you define objects having subobjects and/or operating on other objects. mutable objects can be modified, the others can't and are constant (the default). You define an object by constraining on it: The compiler is meant to manage recursivity, so don't be reluctant to ML-like functional notation. - you define objects with some keywords like Consider x Define x - you can define constraints on objects x = 1 x : integer - you can assume things about objects assume that a is an integer know that a>0 - You can define constraints while defining it. Consider the integer x let x be an integer Define x: integer Consider the integer x whose value is 1 let x be the integer 1 Define x :: integer = 1 Consider x = 1 let x = 1 Define x = 1 - You can access an object's export a.b a.c - Objects have predefined exports x.type x.value - - you can define constraints on objects, which are boolean x = 1 x+y = 0 IsEmpty(x) x :: integer x.type = integer IsConstant(x) x :: mutable integer - you can give orders to the object Check that a=1 a := 1 have a+b = 2 and a*b = 1 - You can define objects with a list syntax LIST a ; b ; c LIST a b c LIST LIST a b c d e - a list can be a list of orders OBJECT { type = Point x = 1 y = OBJECT { value = OBJECT{ Consider a,b :: integer , a+b=5 , a-b=1}.a } } - you can have objects operate on others a [ b ] prefix [+] [ a , b ] - you can define how objects operate on others let a [ b ] = b + 1 let a = function b -> b+1 let a [{}] = {} let a [b::l] = A [b]::a [l] let a [x ; y] = ... let a [x ;y ;z ] = ... let a otherwise fail end a's definition a operates on integers and returns an integer a is a function a is an abelian group law on integers a returns an integer and a a operates a does not have any static variable a reads b a writes b a depends only upon c,d,e a does not depend upon e e does not affect a a writes only its result,d and f a is independent from e let a [b] = { PAR { Write [b] } - you can give implementation details on objects implement a with a list a is implemented as a raw list of short integers a is implemented as register esi on entry b is in register eax input b from register eax output b in esi - you can give concurrent forms of an object a is function a::longint -> a+1 or inline i386 assembly {input eax, inc eax, output eax} let b = function x -> x+1 know that b restricted to longints can be implemented as a - you can comment objects using hypertext note that a's purpose is to make you laugh note that these comments are boredom about fopen, note that _mode_(view "mode description") contains comment "mode description" is "ghheh" - you can use the compiler's services with a standard library. compile ["comment \""+x+"\" is \""+y+"\""] a=compile[x] - you can define exceptions to an object's behaviour exception Out_of_paper | Connection_failure can occur in procedure print. #--- end /manage/ideas/language.far --- #--- begin /specs/language/cutils.doc --- Here is the description of the C utility I'm programming to bootstrap the MOOSE compiler. It includes n parts: object management, symbol table management, IO management, command line management, and a main (convert.c) program to mix it all. All these libraries will be translated to OSL then HLL after the first boot step is over. - object management : it defines object, class and metaclass descriptors. Roughly the same data format will be used for MOOSE objects. At least, the same library will be used to process simple objects from C to MOOSE binary. - The uuencoded zipped C source (for BC 3.1) is given below in a zip.uu file. #--- end /specs/language/cutils.doc --- #--- begin /compil/boot/cutils/zip.uu --- QUUNCD Ver. 1.2, by Theodore A. Kaldis. BEGIN--cut here--CUT HERE-- begin 600 convert.zip M4$L#!!0````(`+&^UQH?>H%>ZP4``%`1```)````0T].5D525"Y#G5=K;]NX M$OT<`?X/4U\@L0TU20OLIHO<+)"Z<==`'!GUHUGD%@$M,38!B53Y<#<;Y$N` M_;*_>H>DY,C/-:Z!(.+,F<.9,V/*/&EM^4!?BJDD&;0%GU.IF5+42#B'+?B3 M6E`++!L,9U114#.2IC"AH"7A*B6:)J`%1(-K(`J4$-S^SX52;))26&*(](Q* MR$1B4JK`*`PM_?]A/$Y-0J'>>QP^YE0=S^I5ZV>JHUPO&_^K=,+$\>Q72[], M,>Y&*P0=EM(U8S?*""=3NF+N"2X^FH?.BGD\>,PF(AVNF+]4S66UM:#0=TA0 MAA;$?G6O[1+.2Z#&4A/Z`)2;#)Z@,[P_FS!]?SEH=[NA75Y];'_JMMUCOQU= M]=Q3=Q!]^/#3+^ZY1^*P%AR`_Z!AO(@=$#85W#W>C'J=Z&8X_+U_Y=8CSF*! MR3]#1W!M!;T3.]/JGEP\';[F M'BX)^FQK7,'3-;Q7?!-6K&%=>9N@;`U:]&P3.%L#8U,W`>=KP/&VNM0:U$_# M)JQ9PQ;CL0Y.G,!EE_]-WL3)6T5O$S=QXE:16Z1-G+15X%9A$R=L%;I1UL3) M6H5M$35QHE:!VR1-G*15Y`Y!8WG_#M&OLQ_:R=^"/%U&=DBJ-D!;"%>W2[R8VU%/Z5`2L!:EKX MU?39G[.U(!8!@@5$.=]_@`IYJ`<`3P&D(<#.ZO@Z+HQWZDG$]R$B: M_D;3W)KK=7@./?R('(5PJ+`[);S(8;%&N')?ZCYWM%CU=D M4SY8[17L#XU*M/'19J_H\L7=>/>S:V&S0G1IB=PTAPNFGDDURU-J&54(=7LH M,4[^]DUD:B6W",;O?FV#`8O8+%_E+:DP6A M7:Z%FE5HQ@7->+!W,JMS,B@HU'1OBK5I&?G6[)J6%8IB9"H6HO$8LB7N5 MA!42P8\TY$9#^XN""7T0DL)U1]47+.T-+/;5M92*V$;Q7)Z#,R*A!9=RJHKS MK_ZV'N*?.RGMC[]:,.XJ+:E]'W2M<1R5R\B?IE%.N?U]KZ#1K`7N`.U>E$9H M6.Z[TV]A74[J31L!$*VZWZ'[1^%^K@75:XO[U(*Y8`E\E4S3"!J+RP^TAF'W MIC\:8FXW830:ND?\7R:"Y:L&KM_^^H"[A?A?E)L4G,5%X5YP3&8G5V57&/I" MAJC8M>!3;'F/Z'@&C4.,C?T]XUX7Y39:#;MQWFPV;+J6>R6)3Z)(`QIV7>[X M8^8D>M.AXL$RVQJ:S>64"W-XB*S._ZIA]0[)N(:,,`X-^T3D-`[!-[^%BWFY MXUX70;*TO#O]U@P/76:A'9FF9SEI M.1YWS8-&.5Z5@?26BKY->]D^L49)M9$<3LM.^&E',+89#&J+`H"ZL(1.8TAI34`G]7 M)GDN12[9B^7)#>:4'OG07+[$+PGE1>H+NS)L3M"*LJ8$4:C/W[+<+V4:@1@D M7U!,]"=4/R*/@'4$L#!!0````(`"AWV!H-3A$'A`,` M`+X,```+````0T].5D525"Y$4TOM5EUOTU88?DX":4;I*`C6DHW5M(A!-J)Q M6W;1U#G%K>HZM9U`4"3F)J?4*(D[^[BCT_8#=C=M%]LT3;O<[7[$M/\S"6D? M-^/U1TJKIB0$KB;.T?%Q["?O\WX?VZ&_Y2FJHGH]*9Y(9<7M"*4`-G5AAA6` M,VW\PB8!A&R-76%_X@_\!`\8VKMD58AE]I_7@,.8MO4:(%6+9I&_=CZ(LG<)?;1M4>":H:&W5N M)MC,$*SYW`G#!:^LKO/8"Y&E#+D!H"E:YPE:X?44&?GEK0'(R1B=A\`/M!?P MA/Z5PQGR;P'7R#^+6(:&%G8A42RIU6ITC99R1RF6-+JKEBV*B]VHED%*6,8J"PV&_S>`VXV5\HF;^HU:W6SQDOV?1L$JM@: MWRQ5RC;)+B+BV,,ERHTH(8^NQ:$D$\7/<%=+"#?YVQ/*^%`%:'2<(E$"VMZG:4GWH*IQNHDS?7N'# M3(Q$U_-E:A&^P`(Y,T^*10&?HG1)PDMA2_Q>C"/])>5`!%,(-DDNO@3+"_V6 ML/=W1:Q??`,CE-50JN;Z"IZRKW,W@,MQKN*[ZY_.6Q-+N:6YI;E3^.VSB[FS M]'2.I*[37HAPT;@XCU*5O*I0B*P,0)Y70A MD4B)DDJE_^[./-_S4`^RM6H::]QN;AB-DKV?\"A4>U-IR$9-*/>N#TNQTLUZ[&#GAQUHP0]H?@*W["Q*%1JE[/IF7'2 M:?KJ,<]0&=`13SM!9(T%^, M;/B;Y=+8_,.F,G@SWHQD_$<#>`902P,$%`````@`*'?8&@4\P97:!P``)1T` M``L```!#3TY615)4+E!22NV9:W`;5Q7'SZ[LV+'CV$GSLI*FUZFA>=1V[)+$ ML9LF\FKM*-6+E6S'B6A'EC;.!EMR5[)I@3I)7S#00J$#%!AF2H&65VE+H9^@ MS###!_I(2NG4;F#XR`R/87@6*)3E_'>ULF)B*\2FH3,]'OU\[KWGGG/WW'OW M:E?Q"7,X*Q01-;,G]%1>]!JCNO"25+=ZO<3_JCI(J_XQR231LTRBYVS]>9LO MV#5G;'ZO%OR^S6=L_J`6-B_9EC^U^3+30Z\P#]"T73-C\U5X\)RS_?R!R_1' MX$_`GQG27X#7J(+H%-%?4?@;\'<8O(Y>XHD*IOQ[V\,KM5P]#!K MJ/LZP_,-:-\$'@.^!3P.?!=X&EB-D%<@^!I@+8KK@/62D\,-*#1*R(X7%AN! M3:B\$MIFI.`J:`+8PI"OAM8,O`-V[^3.ULEKN+C#=O->F2N/`N\!;@*&@120 M!G3@&#`"'&?0&)`!LJB[!5H.V@2T26CO@W8KM-N`]P,?`#Z(AH\!MZ,X!9P$ M3@&G@3N`.V%R%[2[@7M0_!#P810_`GP4N`^X'_@$\$G@`:"B`4L`6`94`=5` MB^2GWBX:4@>/J%JB)Q"F2Y-6Z12I78F>B!;TA?U*(A!6@OU^E=Y,:9LSAF"@ MI]O?G5CTM?TWLI.7YW4=1.U2)77LXHH.5MIW[B2Z3CI)EUG>)6VF[0M:["IK ML;NLQ9ZR%IUE+?:6M>@J:]%=UN+ZLA;[REK<4-9B?UF+`[QP6R8&Z'**[_(O M3[]4S7MGS^X]K*NL=[;O[4!]+P_-W^7NXUZ?IB:4EJ@OUGU^)?T/1>%=W*I$ MH]1G'Q66Q?N9EO%)>_26&6\-;:BAJ3Y-C5Z$IQ%3'Z03 MO4G#U+OJ:K:+D)$QQI*CK+<(M2TFCZ5#:75]&VE]3"0G]93(F\GT1"JO<^?T-U)/HM,(Y>$JVLQ@M(*UPA]TKH8 M3N:*?DL'X$042JFY/EX3S)S84ZHD$X[BT"\0J:;XX\=)& MVD35K&VD0N>_$0YCAE7TIB5K]TP9O<"JIBK8D.>=GS2!0: M\DG#UQ<@J6DU7\)S!^Y&2_57+GX'9A98HT2]9UM!:WK+T[3_R MMO%5^@.Q&^WK$%2H/>>Q-UQ<4]W:+WQZVGM3?DI$4IW_K0=2./##M M?8H*J=I-KWN:N?!#>;-\5OZ-Y^>>,Y['//=Z3G@"GH?D;D^+I]9SO_R&O$.V MK-_)>^4[Y;!TB'XA_Y*>EGIEF5\X3Y$NGY!^+7V.#MGK8"W]*C/C74-W,)=1 MX)%IKTS]/$NKZ7'.GX=V,BWK0..S_`(#Y-\*>%26*UM>.UOYX*?.5MJ[F'\? MH,UTFGL[/DJ].OZJ;1_+:=9?K4W+FFN/.(WTXN>G"V6GS;+<.!64RT4APH7M$6<5=3[HQEE)1WER+`N;C.R5B\FJHJ;/G&\QWY74%Z+- MM4>N*^G)9]Q:Q^/\^4!.T6<=Q8OSL*G$VK*`8"/\ M&U!+`P04````"`"=EM<:B7%-D0\%``!>#P``"````$=%5$]05"Y#K5=M3]M( M$/Y,)/[#M"<1VW$@_DKJ2&WOCD,*!0ETUQ-")Y,LR09G;7G7M!7-%S[?C[Z9 M?;$W(1RYETJH.^/=9V:>>=G-4?2__#O:[^QW?IBR.RX8G#!U7JH_3E##Q22O MIPS>&MWA_*VOO%355?%Y7?E.JBDO#N>C#5W.;[5RO[/-9;BHBLG3M*Z8Q"6> MXV66X_HUEQ\*/B5_+[(J6P;H(2\$1&,NE5G+^+>BFL+X?,S$3,UC+E0$[ZN9 MC"?SK$*[M)7D<+_SN-\!T-OY$`".(A#U\JDJ(*MF]9()!4Q`SF?($,8T*9;+ M3.""'`$@.(@6]F!92*Y=F69"0I[1YS_Q7%`6=06%<0V6=:YXB6&&%D0;%^O& M"QM38R4".:30`2)R'%(8#$F27[B:S"'XF%53#/X#FW$1PJ/9.LDD@\$Q+0$X MGDF&9KW`M28/P2`T'X`V2V;)#7RB6Y+A@./?(K1@ M=T4%`4^3(1I^9ZT97-3T>@VR2\4U[RN[4E-UEF-0=G3*[7O(,&M M[=[;/08(&_256[!<,@0A:Z:R1M:?3_7REE5H<0^,XJ>JHM`0"MG0ENELFT!S M/NSU*(T+1Q<<19'F)#+%C(971)OMXC7G7^]DDB+@KH\7KH'S0LQ`#-N>E(9( MAT@+L.GZ,N]WC5DA\X=P72E_X MW1>^=>W@>8&`-MWPTD#M]GW`@2]\\@7QDBG'T=_;6I^3[4P)>`Q-9;H#&X6) MC)_9B_/#-\7D*TG4N3`P>)).4#=$<)&6;@SH7K\W<_J>YG1_)`"73:-'`:K. MKN]O^J,RI"GMI(>FR*7*%)^`\]",S//J1Q-H0%,I@C(&-[;`S:UXO[.WMV=: M&QR7I](>C/4XL\*6$6>>*XDW[E0,4=W*MS9&GJ#?$=0XBH6JT$GO_KL2TLEOYB@R)6 MB$][B`8[U/U6)F`!7N%N%L59LEZS6VZQ+254QE0VBUAWI257R'\.VP;_#LK9^F`Z\`33\DS=/*O(/#[47GRJYI(D`XOWE@N#*>IY%Y M9>D'C3;[!LVN#6!:]_O07E_;?XCI^_G7+&=U)_@)02P,$%`````@`(9?7&E\& MFHK)`P``70@```@```!'151/4%0N2)U5;6OC1A#^'(/_PY#"V585.^ZUUTM, MH+F0MV*?T]BE+13"1AK;>R>MU-E=4W-W7PRE<+^ZL[M2(E]"H17!6)E0*&ODGQV`M,84U MDI:%ZK=;DPE^PMRBE"..F+V].W9^>A&.W65W*A4EQ4Q;N[8@F_2L[V4>)1#=!ENP4U M:HU_&B3%$,PT/E7`HUYQ]/-O--B;J_VO?RRG)R^NOT9@[#5R]? M?[LC'5_/YO!Z>/2-0QNV=)S6A4QA%EK?=2]1_$M!_)NL!$51;]0$.,2&WUI\:%.'R)G$3V8 MW!CR%O#$)`3)"K7<#3)F21WD>1O7)7"YPPXI#CUI,AU+;;R/>J":/J0RD$ME M]?$01K5`9T*O@N#3'E?X#2ZE@A'XA^O\T&ZWAZG\PPHVXM9`J+?VY:RC>99G M@M+:D>NC.C/4!*Z_ M'CX#O<*LG+.D$#I&M32KV'$* M(^"')#JE)6,J]\[."7I?1&#W&BN'_S5**(H,,:+HW1/?Q#QFN<@R5^6ZB/*! MT[OPZ:I,JB\<_YN3Q=@=+D2FP\F)PAO'#]&K[?'JB^XN_A_/H/GUO]9^S3A9=R?_[I8:NM#M)B::Y"M8);8DYQJJV!3DA1::JMH4*M0E)^?DYJ8AZRTI3\TJ2<5(6@U,0< M9.'DC,0B!;_$W%0%:P4%?2TP4TLALQ@LH:6@I0]RAW)J7DIF&D@:ZCR]#+`, M`%!+`P04````"`#I;M@:2LF>J_P````@`@``!P```$U95DE/+D.=3T]+PS`4 MOP?R'1X;2%OJ]@%$+Y-*#[6'#7<!/H%U`PIM.?&62E8]%G611'G)*<^QR'YVFD$1F M#HA>N/'60%S?>>;6/QY^/YNV[;$AH?ZY[B+KKR$Y?$OW$@>$KZ,+,FV@]N1D MA4YLE+"V-.?77NE#*,UG>QK.^P!02P,$%`````@`"7?8&J;YY1'R`0``R`0` M``<```!-659)3RY(C91=;YLP%(:O%RG_X:BY:5&4T#;3*O4J(6[#6@HB*.T= M8G!H/!$G,B9J-NV_SQ]!L)!*`PG9?M[WG&-CG0'-688Y>(>5Z\>+?F\@9Y1A ML]#OC2W+ZO<`-FIIM%;#%>6B2@IP?5A@DB$?]7M2-5;R`65I464(%_Z/GYB* MD@U:3'Z&0)D`3M_7HKR">^5-UPF7 MWE!NK.TUUJ/F&/^54X%=T=#$2/\5>U4AZ/FH0ZVQ9E6>(SLWOKXTRTK!40>BL0IDK*$36S4RGDB,H(T?J`%+NO3 MB.>X;R9R1-G[<=[O?0']I+'>H-D"9DV"YE*&ZC?%(9G.I2-.#6\/H'EC(H`^2/?5CNX;:"Z0[$CDT;$%*KL-[9]HI@&`7DYUC7I MT)"T"KMKX^BPP]B;+I\T>[`[;!D0QYT^:WS=Q1%YBS2[Z;(Y6;F.23KI4G_V MG3C&>]>ESF(:2K_&W[IX]NP[3S7_VN6!&YC$MUWF$>^SW.G`89JF02EE-V?:P6E4A M.,6KQ$&)TQ%3\;^OW[-CG)"VFNMR`//\/G[OVQ\V/!&2PW+]+X]5^7A]?O9! MR#BM-AQZB_UJO^/E:-OSJ9:U1;V_VV?K/%TUR9]+M4G%>K2=-(F%D$]$/#^[ M#$\^<,TE+T0,LTK&2N2RA%Q"L.`J&DS3J"QY"6V92]2UF@F>;@`5*.1>\&S- M"PA6^("`7Y9T^]?-#5(/".$Y%QNXJ];.'9."D)"R^I_^Z?#,_3I&'`/0D)^X"HP]M#.S7#PM.;P`70PGZWRS']LSJ1T;-P[D M!WEA4]/TXQ7DYA86QI3S/^@O"(,'U@9M,4($-FQD;B;DQJAY$&KKJF`NG7&- MZ!LOJU0QB+=1$2(.=G[VB_ZTJL8!"A^VO.!@<-:6KKG\*JA8HV+?=(WT4NIK M:D$67?&=E$BOY&G2PPK)>!;O]H$1(+=+\8/G">9NX"6!ZM"O$4_""Y0Q9NYL MODR.^GV@:JAV-N>&&VIJHTZ&$Y?$P-Z3$6;]N&/Q0F?BF73VH+I,TU#,VA,611FN8Q!!`&.A'AH#%Q M41FVN(V0AE]R98JJ**NYVCR[PYF.I*2@K. M/;L6D>^'VT8_$0N'ZX_G**V:,:]!P'S#I1+*PP5UY'&>V;FN2;1$G,J[JGCF M>U\CUCGZ>6,0--11$JVJUQ-Q!3_GW?NE:?KMW;*D'!T_7`36LSQ)2FZ6TMM3 M!0LKUU&H2IY4*<3H5R15=^HP=\1!(W8IN4;R&]HX$E??^=0G<;?-"D02=-&]#2CO?)763RR<2PD-;!F-S M>#W0J'NU&1K]@;)KF!7KX:NTQ?3[@%Q+-#D7@5YY&;UL> M=6(^H.?^DIYZ(S(WHIDW7YF_4XC=O>-8*T#,/6B\&Q,'$FR\FQE\8M#O<%=3 M34WC#CJMJM==\951[8,O;V>;E_VV/(JPOF^!Y/\#4$L#!!0````(`()NV!K. M7`S.SP4``/\/```)````3T)*14-44RY(C5?=;]LX#'].@?X/1`=LCI&Z[RNP MP]:D78"U*9J@O;N70+;E6#M;"F2Y77#H_WXB)3O*1[OS0R*)Y(\?(BGI@RAD MS@N8I3]Y9IKE]].3#W8N)`^7[**06=7F',YN-XO-FC=)>>;6BU#\YO0$H`-X MYK\,U](R\:KA1RBP99"Y*!#O(I[-?\!:\[56&6\:(5>G)RQ5K0%3B@8*4?'/ M"`7?.5N1*AB3JJ8S#7+>9%JLC=+-")C,X:IBSJJJQBZ\`( M15.+*A4T;5:B)W(%0MH!A]+YP0S-C*@YI-S2$[CGNF3K!J5?^">K27*>0Z56 M5C,Z@*.BL,$2M3#BV?J*P5#D+ZR5D#:X#41_#,DQ:_U]*2K5J'6Y(4X*Z*Z7 MH`HR8S:#-=,LWZQJ& MI17O^1#"RJ8<,E6O[9[F-C@&E\A'W:)C2JQV^`5"JSY M:ZV>!5I"6CT\^1O;[\*EU)M?GQR4TA"__Q&:L9R8\8W1K0WSPB'`OQ3@.U;S MP0#PBT':"5S2^K,2.4!'2%6^@4L[O(A=G`CB4P,Y,PQ0C:5U^"Y+G6!&XTL2 MQ`QU\ST!;Q`)M&O2LZ<)?K:-`8PGK"J5LHH@7GO12_3ST%-GR?N.=KRWW##' M'T-MQZ&[9/4GM[SC@8M2^,5NG[VP8Z85E[Y\'^2ULW+/A:QDVB$^3N6ZM=&) M4-D0^3J>K?;'66N0*4*QH<,ZY+K2G&$UV"_J(A>/DB09=O:F'&Y43K8RV<4> MS>S`A#0VAO-6/_,-(6V!+,B`?%:MQ+KJ4J3B695ZWQ[PS/N.'CSAF-HDO7LP;6VO1#Y+2##+!8R-5!H5=MX M$.$0Z$D+"5WE0#%3=1TO!%W!?O<=3/8I7W.KJ;(IQ+S/=V^(;U>CT9.#*;L>. M&.B/3!U<],QN%7X&6%!JEBJ+AU`]>.X^/!F-; M[6%`@BH.PA*4C:/=\1=/"O+.D3#-/"TH$D?SA7#IS_H^\6D;:*XVGNK2D`@X MO-:J_B;D*)@N^"_CF5VJ$3,-+>="C?HI:6URG7GMQ%DS;L MSI&Z!/#AW(9A1S+H^HXZE87J.]MK&''?Z2[BV$I.?G$\SC]37W3YAMT';P(K MU%VK'&0"_N*2\J"E)GABOG->^J2"DLF\POPI6DG>OWEL$ICWTP?',.]F%)X0 MMU;'OH4\DU!]\[WKZ`P+WF[DJ<]U>1^/W[A[\Y;VMEFG-I MA*%D]\1ML5S9_3%,FA]]M717[PPI8:)ERT<;#^OC\LIZB?_S4FET>OE#T246 M6T^V[)I+MNR=)Z%NT/>)/4W;4-4]1AUBU,M^X/;9:40.9QF.IM*XP;V[W[K) M5ZW9YHC.[5VHTQCH\W]C9EC0V][;L/Y-D23)[RZ+_89U;YZ[R5/$AH-!9'\3 MJKOS+UBFYU_N^$OTT:X.AUON\62^>)C]A1*'`KZ]'0A-'K_^&`QV6+&%;AGF MT[\GL^OCH*ZA'F!^F]X]3+Z.(S::'I,*&BJ)CCY&TQWYQ>3/Q?\!P,9Z',%: M\/0P74PLPNP8PK9-=_*S`PM^#^`:^W&$V\GMM\F#%4^S43T$B*(HS>(A(>%E M?CBT4`'_].YZ9KE%-A*H+Q(=LU>+_19EQ#!X0B^7M_/Q;+YX$B!_F[0).X.^1]02P,$%`````@`.)C7&LVC";>1 M`P``\`<```@```!35%)43U@N0Y556XO;.!1^WD#^PR'=QI=Q9I*6#G0S'FCG M1J$MA>1A85D6698G2AS92/)79RXH5UV#7%T=&[?.=^1_(0+ M6C8Y@\&[^_E]S=3A8M#O]7M'\9.<%5PPF&DYK_[\YRH^ZO=VUF[7&RM--*=` M%T0"5ZHFE$%H)1KU>Y_Z/0#)=",%[J;I\V?1PX-93)ZWB[%?O(Q@VN\]FI@W M%<]AMN+US(13+EP<\S;@[8*7F,6G"XTF@A#?!P=M""XT7#%]QHN"R3T\ZI9K MND`\$5B9$L4@>!7\L1->=X6SKG#>%2ZZPJ43MO52.(#)&$8F]'1G1KH^65>@ M72'O"JPK%+_,0TP>HT/Z2%-J;\<+"$-ZF@;C(!H.0WJ2!B\#[-C6'UW'QO4W M<`\K,8_7CB86^Z/O:UF):]/8]\TZ:QL;J\3\(PU)(Q2_%BQW\Y"U'3^*S7L$ M;[F&1H"HUIEDP`1DIJ(,S9.,F-@ST?D1@*PLA1_,3;_P$;=CI.8[E']!MM]W>$:'-G` M]]FM)1-YAU_+:H/]^3FM_X/5MVUKH&;8\B_:K.2&;O(-Y`%FM*5[X[+L6+4S M-AE#U<#D^!`^8!7YID#JL!(&BDF"6ML!@SVORA(M$"6_L?/@W(]]\%]/53MX MWO`<2V3V?C(,*P/IQE)M8;,.W8E!IC8UD6[7UH+-L8A*#$,7R"6V;#L7]BZP M;"P3B%=@P>\=O>G>^&1553(BX!T7C?)39$8"TB6DH*Q-Y\H=+B.[9>Z.&"U2 M"$:!OR_!!4&WN6R8ZQPL[=T+\&AOCQ_-+@EN_8<,O^\R9.@V.?Z7V-;`T69& M>7 MZ'P@3Y3.>76X..WWUH0+"/U!<90!MWPY:NS2[JN_GKUX\3RQL\39M69WH_K:2[\VLW;2I']LRY)G?C.>]W9&V'B>)C.3UZ$@=Y$F9W!KW33:5'"-RLD-8RQ? M*8:W6-$=Q^U*.\B3VZ9E7:T\WN:GF+(R#U:[LSF9 M>YQ,%=^?8*X+4@'?@B&,)Y-W:?+'!FQ4BY*)ZA:%COV7P+_1 MI2FHW!W\WZ\2D4\M>@^1CCJ"KM,$V&-;NO/$1ABJ';V2P0$P(C"VVUI=[,)8 MK'6SZ)9'CB%N3I;ITT]IHHW?(]?DK_H]ZHD\YFMKJB/@)FR6CT#F!MT62JL! M@KA=&;&U2RU?J9WMEO!%<61E[M`Y="0TZL`HVSO4>_D?4$L#!!0````(`-"; MUQJB'JKZ70```&P````*````5E-934)/3%0N0U/.S$O.*4U)55#RK0RI+$@M MULM0XN5"B/HG9:4FET!$>;GTM4!D<8E"B&]J2:)S3F)QL4)8<&5N4GY. M2&)23JJ"K4(U+Y="9DIJ7DEF2:4.+U;KF/3=@7]][OXXE*M((*=68Y2\WG(U)BWHM$4:WF\."_)3*H99YQ-X]Z!?/F*PH-$41>V\&2T@WC@3$/`NR$)]]Z2+G.U MH++R#B)1%19BEP!I#[853^"\,X=-S0=8K*YJXQ"BAZXP=JTZY,S?4/>,R5VQ MPE@W5_*K9X`J@*5K+0(.+(TD'(;Z(Q5GGYP!D.+LZS^KNYRVHNM[.GL.+-#; ML7TF![P`V^S364.VN52F*8[:BL7>U-]WY/]W6Y0(KZ/#Y%U.&+Z/F:,N?74T MQZ)?6PV./M"H*,WFU[L8SKX!4$L#!!0````(`*]QV!J44CD,F@```.\````( M````1DE,14E/+DC3U]+2XN524/#-3RG-255PRP02GOK^(*'2XM2TTAR%DGR% MQ.3DU.)B!1?_8(6DG/SD;(64U+),H)""1DIF<7:QIHY":DFR'B\7T"Q]7BY> M+N7,M+R4U#2P:9[^\1Y`$2`W,R\5202L"DF1.]!*F*JRU(J2U*(\H)+4G.)4 M3`D%A'Q>2F8:V+!2L(U(.D$R"OI:4//U,A1`;@,`4$L#!!0````(`%1QV!J, M6$6FS@```/X````'````1$5624\N0]/7TM+BY5)0\,U/*G%A$R23 MEY*9!C)('^0)H',52C)2@:S$I.*BU,04"*N\*+,$))A6FI=G%A?I'^\! M%`#R,O-2$0)@-0@E[D#[8&K*4BM*4HOR@"I2J_P````@`@``!P`````````!`"````":&P``35E624\N0U!+`0(4 M`!0````(``EWV!JF^>41\@$``,@$```'``````````$`(````+L<``!-659) M3RY(4$L!`A0`%`````@`;F_8&D1$H&'4!```-P\```D``````````0`@```` MTAX``$]"2D5#5%,N0U!+`0(4`!0````(`()NV!K.7`S.SP4``/\/```)```` M``````$`(````,TC``!/0DI%0U13+DA02P$"%``4````"``XF-<:S:,)MY$# M``#P!P``"``````````!`"````##*0``4U125$]8+D-02P$"%``4````"`!; MEM<:;?CRS,H!``!5`P``"``````````!`"````!Z+0``4U125$]8+DA02P$" M%``4````"`#0F]<:HAZJ^ET```!L````"@`````````!`"````!J+P``5E-9 M34)/3%0N0U!+`0(4``H``````-.4UQH````````````````*``````````$` M(````.\O``!64UE-0D],5"Y(4$L!`A0`"@``````D&C8&@`````````````` M``H``````````0`@````%S```%)364U"3TQ4+D-02P$"%``*``````"2:-@: M````````````````"@`````````!`"`````_,```4E-934)/3%0N2%!+`0(4 M`!0````(`)%UV!HJ7^"_%P$``-`"```(``````````$`(````&&!F"6O*O8PP -XC ) ;6%C'+>/ @HL MBOWH/6?.#"^2Y3K;"H(X<^;<;S-#G9UQWG>NQFUG[-B\:_/K=F<\G!P>G/&: M6^<]$6]XX_7KYN'!X8&WY*<,X&.Y%O'G3";UPX/S/1_>D6DJN>_-8^'%GN1N M&*2>#%)^OO=S=GC0E0D7\WF\N?-$ZH5!PJ,PB_F'X;C+1].Q=?7CU%:#8:\W ML:?6N]GUB$_>#L?3YZ@ADJ^%&X<)_Y5GB5A)OMH$FUCXAP/ 6^Y%*Y$U%BNO"2-)0\SF((E(I%\O5F' M@ _8$YDN&8O"Q$.%87W2L_[=LT8]GH#F)7J+:YZ='IT@^2)CF 4\R'R>)!XN1B(6Z]]0$6V#80Q\KL4]8Y\SCXOE$HR0 M8/Y10Q'Y6<)7L0#^8.)1$R4?O4 *+WB$(I*IEVY1+%TTD(B\ *P5O@>>$/=< MW$D72!/0=KU!YP/A,@P4/I ?'C"6A%ERDL.B>.-ZR49'%TP1421]+C+>!6KP M,XRNO#!!J1G0&%57I-3Z/VN9D^;AT9$VS#EDJ ]9!P\T-P'.F@O* D/AB])J M'B1ELW%;)S-R'<'IFI/<2JU(QFO(;A&D*A^B. 0'K]>"R-(X<],LWL@W()9( M3B(/O/.&@1O2G_P[W[J,LN06?L,(<=Q;\=] *J^Y$&,W_2U&;#OPY9T\=@ED$H=U?@E)Z2VW*$''>9BYO@1K+F,929$JPLL,I/N/(7^Y!2<0[B*D MYQ>0H$C"&'H#HN?$M:0.6LE[+S7.+ZOO"Z@)[$!(LT S).8*[T,FR,ZM\ P MBD/W5H7.1CNV&Q=TN+/VU=78?N^TI\YP "WOZDR?O%73Y!;,1,$HFMHL[W[3OK;[SG"L M=.#=&7]GSP#J#";3\:RC%3L\N,8T8JJ#0;Y;_MQG[ Q[&/:8%SR$3$@3K!K? MDQDZY244W3J\X_@Y1A)2A@,EK(!'K@U3['9A!.QV.Y[U<,MCU+4P>1DXEKH5 MC.]#Y&0I.*81J8"@4X10-E5DJ]ZIA)?ZIVJ>UH3Z)ZBR7^"NO!1:(\).&CL2 MP>O:Z:/A;,Q'$WO6'9X,1S;YWJB$G70!7*PP]E8-]=LDL0K 5RDW,$3C_)P6 M"AW*X.8#:F@YT'_WRVD:.8T_*H=O=6Z]>\OE,K>(O TGV,B.]8X6BXK"2Y% MAGC"9$WC8H2*><%"WBL5$@^46^#//(*?)"KTJ$ PVI_/3D])F@=SPYJ:UY2]!0.1F?.:@I\HB!UOLBB MVNO3VSH[&PQ'WR0[ 3L;3=[4GM4Y]#QH8GRQ^?0K'DVNVY-K_NKY*:\E(EMR M(Q7W4WUBX+6(MH0Z%GZ[[WP/R3S*8CC\D!F5CM/FLTG[>YM_;P\@\_NEA%0[ M)&ZW5I+-ERXHIG?\"@QV2P:[Y58AXV;]--K&Z3:MP<1]WDKF\$1RVO:%5057 MZ A%YZF:(1X>X2 0P9RUCA7PHIBKY0O=EW2FWA/IWQJGI[??&OI2^])H;PFM M%#:-\PCK?JY/3K/=DLZZ=L\9.-3];=Z!?C]M#Z:V.H%SV*BARGE[TG&/;\,UHK_\ MQRW.9A&._ZG&HQ7-7JM9?YGBY$I-QBLUZ:H)Z-[!64_-N@&,7YUJ#C1KJ)D3 M)(CWJDEXTL?)BUNS YH/YZ,]!RC^AH_PS+ 0@PIDK 7P"^NH!DMU4_I$>SF:P7:- M9.\%D?6'G78?(2#'(M8*3I JQQ9 J#<=F?5S/>#?ZB:DM=O2A)#J!2WBV/^: MJ::E5*DVJ,O1<,2ZN'\ [CX]U]4>CYV>3?V1UX[+JOR^LB""H:*LA=H8 MXQ&*0&/*'I^,%!P OVB!R:2PR7X-\CZ-9@'NQO>-C9P?;D3/MZBX;9&(B:S*Q310BTN MK&;9\*>8O&U#;F.'U+IQIM=_IH(-J_$5L0XVJR+.H?K1%Y=2)< 5A[FN%;@N M*DHQ[(%KNU:GHXQ2$Q/%!YP"5R2->00QQ ,%^JD%,*@2<]8HEF !X6%^"#D& M#2@O(ID#E5 =7""V^Q/;+.VP0BI6XH*L686!8I$G3GE2&D+^]<(,KU2\'+H2 MZHYU@=)W3X6 7T G+237/]:IE(?P].>^)1J6:%KBA25> M6N*5)?X.9NJ:XWA1?:?$J8ARB@L!WAD E1-O?;K0*T?J:["REZ[!VCBG-YA=4Q)=HFLOG1[UYTMR#0%Q7 &7? &\ MR1=H=>@*'[6^ZN/U1O.FI]HH:".BN%1!W<7<&%IU2BJB(ASB:"ZKY=GX!F&$81[/+Y1B>'X'V3K76>T ME.X7RK.@:)$Y.X[0IA3KBK",<<0_K2.ZNW.-K:#$^8WQFO$9)4O%:4]WU,#,#@\4."M=% PG0V$1?#NL +,W:WPGY(>1MC>[% ( M>Y*#UJPJER(U2H;DPX=R XPH)89!_:-YD2NNZ'*NE293L?=19[1 RYUT0*=O MFZ_3*-F[F5"D_F1C2;F]EE:U?CAJV-PI47[7QO\WX7O#L!%K4KR[!=D9!*AL)5 MWX?04G&ZR)?AH )*LK+_V2?W_A=V0\E'6,8#6^.CTJ3DI.)-)H:INUFJ/^7" M(*FT+=;"Q+BHJ'Q36;[96=\RQFD\ -L%T=E]OZ-V7(1R"P.6PHNE^K>!_C/B M](?1LV?/Z"7;MO_0+RY4KT/ZX;32A;1G"X>9!IU7FAX\U)RQ5O,:(3RK5"K4 MM%+L6EA=H$(S[U[%RO;)3O/9UZ'VA,DL[X1)^^W]!DH$[FW\<_:-Y_.?N>!S M3P9E3ZH^H2H6? $W\5S%BSP*K*BU;80\D_MA:)HE./O&^)/;]UYZ7*&PA,6&!MG3FG M5F6[I?Q4;P>5=7-E&TQT))6FF9EO17)2DFAKX!UU8(2 M!BI[5"O."L>N6PY@\;[C[($/G_S.'];\[.$/,E2T[*&_L^F]GBL7,DC98L&^ MH_>T^-XM!X!BZE_CO_P/4$L#!!0 ( $8JT!JP=/2A3B =3 * M;65M,S@V+F1O8]Q:6V_C1I9^I@']APH0K.6$[9%DQW'4<;+RI;N-V&FCY
'&[\\A!8P:-?=L_O-]WJHH76>XL!O.RZR2(6'7JU*ES/Z=J ML/7\W_DW:-&IRS2HXE %^#?UJU68E%X9I0D'8D^MZE4:Y:$*$[5*,93E:5G? MU;OJ"73_'NJ(4)VKC;/JTI!4EV$25*$JJEQ=G:B]PX/-"X@PNE4C]5SEX:DR+U=@Q?'YZ[D:XO!O7E_NJ"P%_KLZ#_,N/^SF M?IH445&&@ZV0+*L>U&V:^&1@H>[R\/:V#@NA,-Z.DC+,\RH3[HZ_6JJ@DJU< M%251&7EQ2.8/MH#R'\#>XE>5A#A7JTH,9&&^"DLU].Y#7RTB$)^%E0JV07'D>WY4UCOZ*_3+ M"B0$Y)F?9I$FP.+]0)Z54:Z&::7NP[S8V<"D7?+ZA6&+FKTZ.CQ\-55O#,V! M!U;-WG9H!S$_I&KX:U7\7FU_4 ?[ERET,_%WGCR5OQT6)8@)>C0)H[P@#\$Y ME2W?%Q%$K\8C_KW:52=D)Y&52VIVE.#4$.C2\ZN$2,!4K%5E6I7A)M&'#Q"\ M!Z$^5RLO*E2:#+8HM-Q32=@LYY:=Q4GM@QP//UV>U:$2Z9)C5BG5X>%2#>V1 Q[X_,=K8-L1(5UL MATE218K<).$_G9[/?^!I2F@([0-ZF*ZR4O0+!\'F^%YY22 ^H\"92E<5D.A@ MBTJ[2),$_TLS;1!!5&1I$BTX)6+G#VJ-S.9@#8X()!17[/FA@@I01%Z6?RQX MOCA:D608SJJ^\X2#[U7MY]$]Y* *G._XZEA]]MEGHB\NI!@^^'&54P5_K+T$ M'":1D"_\V%WNK5;P &GE1S1<'@F'PTD640P#P, ]9 EQ0)>:8\,*J#>JO@>Q ME4? Q_K]-?0[H\&N^TTMLM:L*DY7]V+Y@GP1IWYA=6%7G5G%-KP,@ MOQ0>[4S56/.0;L^L)GN]G!(;EN\S&KFAM&-6" %)8[ [KIJT6%9>=0_[#35+ M]_0$S&V5I471Z$+K"Z':VVE6YSI,#@M!HR:'!Z[",:S [Z,'?BVK:'2'C&!J3:"8B M7KB/-BW(>S! .Q=Z?./O:2 ,84%T:Z/OQO"K3B##_+]M@(%!WH&#L\GHJ=#[ MB>A[A6@KQO?8\K3?"M7AB%SY'1[)]V*_BCW800&?89PZ$%FWKH,LZ%A$I;@A M(\80<[&(V08"KWH&'2XJB6,F& RVZI*X)9I#\6HQ7.U&/:VPP*LF8S$YGY/" M?,B51AL%>^+ M\N,J%.1P-O3R'R"=1I9!$S$I569!DS'@74(@IJVBCQ*C/&8JLQ&HA5K>IYI- M'KPK/-'V4V>3F.*'>4E 6(@E+OJFCK<.NE[X.,.!F)C*D8O M.=@"_8LT#W":A#I6OVY(V&^UZ"JV7GN_7 :C[T*-OL/7#\8T)J#?PW(:#G8.C^^NVQS#FTOX@6])X=PD HEH].QTN+P9X&W+5LZ1\+F2N7W;S^4:DC-1Z/QOQ; M="9>O&@F1IPP?+OT_#PU/+.0"XP# O/0"]X[.BBXL$00?B/)%L6J+E*8 MD7H'$=Z<'V.$4A'WN.)ZA'GQQYN9T"8N:N@OTZ*;QVE4GF0@/#B-UF1DU'W# M-1BV!GS61"T&]7\R%Z=WJDO:,F8BU5NQ9W M]]2]>*LG&,8X16< H2&ILB*S]&M$Q39T@OD) F/B5P;]%U\P'\TKT#U[ZYZ\ M%;9&M\E"??L?W8V_DPF%J'2O_(?'D@CC(NR#P WK&6TTRHIIJK> YXS=WQ9= MG9<)RHQ3T4*T6L;B-,W SU;.2OWJ/_QAN#[8.DN"2P>*^USV5U9MJ'%:D8Q* M.L[K'ZF6[F9]XOJN^GB(L/,^K*0(T$3D/9)RC@_R15:B?O0>8-_XA602E^?GS\>C%B[.S7XY^_ES_ MT&2L,JX(N6)\J,>*TM=>)_FC(Q;HG+*(_P2S82QR^HBYN:ZTGMA,'T;06B8T M^W>W]V,9E(&I =,<396_/ZMR)^:J,5N++ 1N:&_J]RL'H6>*[.!E!]IO+X'6UD] M7=<^$5L._=NCL3KZSNRYTQ7TV.8;(_VW<)Y[#TA#/@^"$5 L<]2:7ZK/#ZT2 M>8%//^#%C!_>4D,V9]N.&$O;.9XYXEWN+184UT M*;:C6*I^MI >I\-:[%X)3M>+0=(C4WNY(Y/<*L2:L"JDOI)G3;* [ M!U*YUY]NW+I24NN.">EB.[#%<\5; $8581#3-_4SZU/2]XR;-8NB$H'+S4V-J',Q.6W+C;B9">#NOWP99MA2A6B<'CH"2E M6HULY%28U)2#>8UB'#(NN)6TK:$-=^P_I4G"U+L@1:>OYY#[>]TQ9.EX0F:B M^E7O2=O'H-L1KFP?:[!E6=C1#>0(<9Q6H6U.6F Y:[]IJ#?\AV08PC';[P4Z M$(8DIO":UI&D1/5#[5BY=*SBJNBS OIZ+V6U@)N:U%6P582R[X6Q2G M4$8BV1%!PB5@QI3Q-/W!UH4VV"R$*[VE9B%+S"/IN[&\U;;EVI82V]YWR((R M9NO8"]I_ET@S%^8,UN!(;2,^4V ]^(2CP=!VU:P"N"O)FQJZZDXZ$YWME(D+F\ M]A!.&QY(U\R[,PWSQD'2+UJU-7=P9Y>7>X<'.]([^L)LTK95@EQJ.6!N-<)Z M'%Y[6/=_E_\=4>0#6]2]ZZ*A7/6LJKB,D,L]0)@[.'*I)B^6<+NZ9>:V2:GT M^L MAJ2@&FSQ1$+E[.W1_AYBRB[CNB%*:C>!+DW-D=?T?SK%GUT<'1+^M#91 M##[)BU-H:7LW%S0';#<9<]'9?'K\UA9]0>YUU_#BLU%(<"2G"OA++[\+Q2M7 M:L%"A1T_"0AR3VJ@@QYW7 JRF;R1?@>;>W@P ME 61Q(STA7@J8>H,WLK MW42&53%?MADE%-+>R]"5+BOD+^/FWD.P'+_J;F)8HR](V,W4D-+7A[>.3<,0 M3J*]Y['Y$8[VJ9;0+9SG%!M"K MT=YHK'D'3)T<;"R'[57BU0H^1'R)!G,5Q1:R%R8\N(\X2H8"%7=.JICA"LQR MA6.F,A0'WZH3X\YH+&?4@3DG!,_U[;? ->U<&(M_+\R1.97>WA:\0.U'U$T-HN<1]M=VVS8$_38;HJ#-AW<;IH;NU'^_JRK&FU; #YZA&*F-6[G3[8 MA*$'\;5 U% XW?HT=WG=._]-=8"PI(E):>G1:/76:RRX5A?'\7C05 QP)T6ILT1T)C MX_\U^'R*,^E+47LG6J"0E.XW!N1*.-2U+KSW\/1OK]^<[H"=R5W%H-[H#&@N M$:&+6]*CP??54$/;8]D;44X>-+B,FG0G9^LK>]>EA#A97[X. 7LU:T=*KCZ9 M3 ;ZIN")]$Q[HVU+#TYG+H&,M6FGDK..]_Q:4A\#.SX0..&7V&IKRL9BZ.D+ M(R9DNA+@)4&U:0.S+-UIZSP7X^?G!CU+D)PXWG';U8JN_U M-8QZ8RK J0:3?)G.Q,LB!#,X*R_6:1=CO#Y.H3Z#[IR([OS4)D:;=4Q4]_@M MM>AQ\:2U%:(2+?L>9>?HU*CD_9\A'IT9#<_YJ.0V%8%\BH974_.\H)(*97-F MYII"_?ABVH'0B'HO*PQ3A.^7!"7(ABTV.91]Q62X2.5,*^#2@)A')J6:MPC6_?RU M(0<[M7Z>$1@)=;8,BU:$CY06V,8]-]/#M@%\L'622BUE7R0LZP\0NQ.'(:;0V2G">A*[V<.R\F5W*HQEHO'X]8U.CS]10^BLA M@PTQ3,Q5E7;EAV?VTZ:?&'MAQZ(\1T''1P<+3GPSD)'*2FA$A]? M24:ZPXM@Q]HG4\56&S$U=LH44U93.:\)A0!G$\=H&GDHSSPPN.?TW*Y]H(&9 M?:?GN@4K/&R% F.-D1A M4-=_5(.^.QYL'8\Q?:.SB*7^$=Q/JDKMR>9URO1,$SO?:@XAL7XDXG>!= M;_2U2+&%/84XUR$YUH,[2X+Y.IT\@.U>_M1O2JH+S^;1GWX$JS9W+YWGII]7 M2H^*N[R1]R#F(:CD]I0G'0Y?88&5-:_MY7Y2PO'XJV=[ZHCE=?B@TU#"\0F* MFM#Y'JGK@<@>?[S359:D;Z*I[659 MQPF"=7X>99J2 Z46BX?8<>(I.W>Y)$M\Y;#T5IEI"0ZV]I7*LL7"<1:;H!8> M+6E"3(1Y:*_?4';FSGRX0CY2*\>XH#X;C7 M[S/1Q)=3]1(.J8K%Y P73*O2E#*H2[481K2 MR&,60T!N #JO@-@*)\W5E0@UA% OPGNV$$:CJ1CU+2\,QV/SX=&LV=/EXR!# MX^EU#Q-YJ89CQ'*4B#&VX@"RYEWN?GI]-&;>,3K[VZQM?IE^XW-U-I4>H.[] MLO*3=U(>9OXVU;=7GKR8> ?Q"#^ :GSRID&E'P'RZD^=3(/4C^1Y1;IBN1HE M=SLR\V:*:E>_O. MJ\6C9M.V\=R2.Q)R\>>89H^#OW'G6T^/G>OY')(5:VD] MH(#JN;W)VIPL'(\[C'/=PFE L<#V$38Q6O'9RKGB[0!6G?S"+L>CQ ME%ZNEXWM'#*OO_O+T)$5XRXY^&X0]-\-ZRW&3P)T-AIW-\I)A]-2^'BR63K8 M>F$:#O(XG9?85"EVM2??%KX5(LZG.!F[B]*EM=?M%!0NJB]W.[=+00[24RU0$#F@] M"TFYRREL9U>+\(-JN-%AFGY(1+]TZ :F!9BXUY8V)+#U;':5U^J(?\1&C0^BVZI M=MJ%S7Z3_?4''#BX2-@!P]STME@[J&MEUSDQH#:>&!B:+=>6/7&F=P:9)GV= MM'E8=F1R>C8_>7-^=6U>:/2?S+4/E)D+!VWN(&W<9LDS9;&8ND]>U'K,$/ZK M\RY7TI-.^M&L#AWX4M "G%[NB\*%S%=3R[: ME4N]DNF*)"MFIGVV$/)-Q@+_^>W[DI_MB7]QS2B9'?*EV\%CH"\GO[B+#MBB M 4. ]NW3(/U6;NDNVJ_%TKPA6L.WW^#KCQ]H_&:U/SVR\.7 MYC&-&WA'QKCI:SJJL(Y^\DL+U=>K#FVMK)__Z1\CK7K^O_EKBS\LX<:RO,AJ MOWFP5"A&8..9YF%\GZP-E\G8[U@?GZP.GZ #/9)_B.&K_H27EO\J])V44U_#^U M7%]OXS82?V:!?@=M7YH$2B+93ITZW0:V9*U]<"PAX\&#KAOT*]ZCS>_&5*B[*37ET,>')&CX7 T' [G#P\N+R_UMM@OOS<=S-7_ M_MYXO?:FK]_<_^1[H(U70!L6J$(_R-/&W:'%7G><+V]%LC$#N:]EK2<'JLZ#UXB#J7#2[3+9TMJ7&]/;NRF<+\IVF_Z ML-]D)(PI>NU;PR;O96L O072(U4?P&6@9Z?>EM:_H..&X>2OZCC)?C2>&_N, MM,)AYDADWSDZPG%PF%PJ>)#[1:&"Y$:-\0V53)='?_KF+[/*=Q_GZ>?%VIR.G$C B*PTZ9B1>\UU/AJ2.-,I%W=-=': MI"-8QI&7:5'\>ZW4R"T!L/UX+34<3V)5ZSA#QYGJQ3?C4/> I 8"D"I^GDDM M[ O9=?.%H1>=;9J@58(F6>)6_[GS3H7YYD&G)-*[7>J+G8/WWB$#_$@ J:DB M9%_GE@P"0DF H*VA>"OUN@2'O:A.1*R(%VWT]RP\F@H#@>@/]488GYVQV7)A M=X;4F13T;<07:3SM*G*95B:S7T. #V(AB*CS6O0%B\12J6/Y0P"#.OOB")Y9 MK#(\4G=(VO5]@I)$"U&B.H[UQ7 S5G1<\!O'/L8J[+$D-23J"']=9]*1,Z0+ M9P@$P'5&G67^.9ME"R[U)!E-+CNY!V#OJ'PX3C*!D7'U314[*')'P* MDC! ]L(8M%176%A M+];(^H@VX[3LP^LX*/Q7YGG0Y3.ZM=7G$]7'F%=)_\# M[DIGRA5KM4@EO)Y>IW\[X2@GGOS.$*Y.0C]D#Q57G'&)*]=.\$'U>^JZ 7T MHH#4O!SL _Q*#4\(6]$LDQLZ /\'OW:V(!I1%(">K3:EQ87:YEC]VSK$'KI[!XUX;'$%SBV ML.!L0N(O*KOAT\B62*[$X0?%)5SIS&1PW*C@K,@X>N\3LA_N:P*SSC?0V2LD M@%!O^]X1QZ.9A;C(F^!K30@0?45/"XRF=?3:M&QNDC@M32A/9(J.:R1K2*A\ M,BM_*U6OI,JY@/GHB!5C4H =Z:Q8T&S>O4-$^5SM2 S^%W'^34O:+UQ[L1; M(+JL!WKK+9 @OO*AN?ZDO^$<>*7;]"'+5QR1?NN%P;28A]GJ-VBSMV"B9?[\ M_+N&BMZ"2JZS,:>1^IYB)GTDA9Q#B\GC7&=UB2;KH])4!_?]QFL0.I!;IG+X M38$:GL:.3N>DQE;5&"!#SS^K&O"MS5T8U/.#[JGX[+>E*2;BQRAB5]?Q%GJ]3+$AZZ@KHP'Q&OZ>"=;$\[A6+*?'%#U1@EW>:H%P%'ZH)^[@Y MRQ:!I1/G)9MOP:%^V<67=' F,,]0"(^J;NU0YVM(EMLR<.0$'[K.P70URS+2 M),=1=(B"^^-FI,(X_?:;EJ=,1:1$'DOL3A*8=&WYH41=*E>RF47%D@%'/]<+E[6"%1CB?"9TL-M-=U*UO3RG^T M_:,;QS*IWC!"Z]40L(E#J.$9ZW SE&3-Y2A\6.A;#>"GF6\?LZ=LM>+::;Z5 M))]MY^*:!:[ZZJR3,R.>3)$ E,B%"(:[_*U7F\='!):A=4WB%"*E,NI.TMU< MMOV.\Q/]^_@)8WQ"50IV6]2U.#^?P'=>$B>4@7+.R8<%3MCT&VP&5%YSJ7OD M'>B!5X(NB>!(+1#19B*9*=J!5;& 4Z/FTV?L;#3U9?9"C=\E%0=H(-OF_8[I M6CC7^<.B6#N##2T W+BP7$I& ->2\X8Y_;)=9CDLDEW! E?6BV=@@J\L6]69 M7MU<4 82X'QOG+=O1PXG#M._))VHR#JQ!$]<>7O,Q7)?(V7CVV_&8?(IG70G M-RD.YL>^W">A#&0%R*ZO"R]+A[96C M#2)'W"NT(@;R2^<=,HG.G;(RA!L;"K,R3TUZ:I9/+=6J8QKI#@\G)Q&LBGOV M*.T:]G8->]O&'MZ"GM9Y.[VU!H(IUR$(SW-^>O\S[([T5LP?'O#$\.E"PQMO M,.>ZZ!(!8FDAI4-R@8-K-3(64W;#2D1=Q1]5>.LB+CB@4ZY)HH;Y,^<@M8:Y MJS[EO7OL:_?-/[=%+D09T_/\5 Q43KKGM( &K0O'6H5)Z*+N6V(G=;F>AW4IJP0K2.P4Y$L'AHG]DHOAZT,)5*^$0K4F M%]],-X7!!'*(^EY2[]-!4(L@N/08Y#,9WE+@W@WTN4,2(;8$G4Z&>U](UA,Q MFE5>R5>M@Z^FF8Z7N7(_A'38U-OI/1>/A>,CI"1>[UP=QN';^/5+' M&3"=I'^O:1*]5.YZOV./7!>.K64\=4%S@IIY@AI[ME0OIC0V'B:I1"1;+=L(*$HA@O7&)(IZY(8#,'J'S0BR8U9$K*8[ M'+A- &)@W%%(NTG^VZO$4W?[E ;M !$A< Y*Y+B-#W9-=1]@]L26W0F$A(TM M4*O3?X$+ACA-$*LU&H6^_/R"GW#X49Y((O%/,$CY)[Y*0'/TFFA@RB3H.ZUI ME[63-1-,U%@N\P[OM"KLDU"/C* V.Q4ZE(.HZ_Z$#9EG8XOH.SIVC1GLD?\% M4$L#!!0 ( +V*(QE$^F[:2B /M2 * ;65M,S@V+FEN8]Q:6V_C M1I9^I@']APH0K.6$[9%DQW'4<7KE2W<;L=-&RY-I( @,BJ0M)A3)\.*X\\A! M8P:-?=L_O-]WJHH76>XL!O.RZR2(6'7JU*ES/Z=JL/7\W_DW:-&IRS2HXE % M^#?UJU68E%X9I0D'8D^MZE4:Y:$*$[5*,93E:5G?U;OJ"73_'NJ(4)VKC;/J MTI!4EV$25*$JJEQ=G:B]PX/-"X@PNE4C]5SEX:DR+U=@Q?'YF[D:XO!OWUSNJ"P%_KLZ#_,N/^SF?IH445&&@ZV0+*L>U&V: M^&1@H>[R\/:V#@NA,-Z.DC+,\RH3[HZ_6JJ@DJU<%251&7EQ2.8/MH#R'\#< MW1>XE>5A#A7JTH, M9&&^"DLU].Y#7RTB$)^%E0JV07'D>WY4UCOZ*_3+"B0$Y)F?9I$FP.+]0)Z5 M4:Z&::7NP[S8V<"D7?+ZI6&+FKT^.CQ\/55O#C0)H[P@#\$YE2W?%Q%$K\8C_KW>52=D M)Y&52VIVE.#4$.C2\ZN$2,!4K%5E6I7A)M&'#Q"\!Z$^5RLO*E2:#+8HM-Q3 M2=@LYY:=Q4GM@QP//UV>%2#>V1 Q[X_(=K8-L1(5ULATE218K<).$_GI[/O^=I M2F@([0-ZF*ZR4O0+!\'F^%YY22 ^H\"92E<5D.A@BTJ[2),$_TLS;1!!5&1I M$BTX)6+G#VJ-S.9@#8X()!17[/FA@@I01%Z6?RQXOCA:D608SJJ^\X2#[U7M MY]$]Y* *G._XZEA]]MEGHB\NI!@^^'&54P5_J+T$'":1D"_\V%WNK5;P &GE M1S1<'@F'PTD640P#P, ]9 EQ0)>:8\,*J#>JO@>QE4? Q_K]-?0[H\&N^TTM MLM:L*DY7]V+Y@GP1IWYA=6%7GKTVN4I2P4K\B/Z MK=LT7WGE=+ U&BW5L^_4,*A6J_<[H*',H0Q)!=W Y*%,8OU@:ZP!H<9Y.07; M[X0.<"3W 3G6D##]SB2_HD3$/=B:Z/7B,$_F^#ZT^/Q?R919!0VA!KM@"WVE MUJ.8G*;^;4.APTI[CY$J(C$V58@U!W6>5G%-KP,@OQ0>[4S56/.0;L^L)GN] MG!(;EN\S&KFAM&-6" %)8[ [KIJT6%9>=0_[#35+]_0$S&V5I471Z$+K"Z': MVVE6YSI,#@M!HR:'!Z[",:S [Z,'?BVK:'2'C&!J3:"8B7KB/-BW(>S! .Q=Z?./O M:2 ,84%T:Z/OQO"K3B##_+]M@(%!WH&#L\GHJ=#[B>A[A6@KQO?8\K3?"M7A MB%SY#1[)]V*_BCW800&?89PZ$%FWKH,LZ%A$I;@A(\80<[&(V08"KWH&'2XJ MB6,F& RVZI*X)9I#\6HQ7.U&/:VPP*LF8S$YGY/"?V1H)OTBK-K?6XX)EB '%Y; M3I6WL&KM]/M$O#*+MI\XF,<4/\Y* ML! Y7..)"U65$=4]*7?5-76X==+WP,<=#,3&5(Q>S"ASHT,5"2NL=*#H[<$M@DB9(P!EU8H(X]'"I?MR5M-MKU M%%HO/=^O U#WH4??8.O[XQL34&^X@7.$[&?I.,^'T![&N1*Q;$? @*ZLBL=0 M,9V4!4)8]AJ0T7*P=7Y\C?FWZ$R\?-E,C#AA^';I^7EJ M>&8YG:\A%Q@'!.:A%[QW=%!P88D@_$:2+8I57:0P(_4[1'AS?HP12D7;%'V]F0INXJ*&_3(MN'J=1>9*!\. T6I.14?<-UV#8&O!9$[48U/_)7)S> MJ2YIQR0'N@G\B]Q+_&6HQ6*.JQ$D$AV9BK54[5K8!CC%)T!A(:D MRHK,TJ\1%=O0">8G"(R)7QGT7WS!?#2O0/?LG7OR3M@:W28+]>U_=#?^3B84 MHM*]\A\>2R*,B[ / C>L9[31*"NFJ=X"GC-V?UUT=5XF*#-.10O1:AF+TS0# M/ULY*_6+__"'X?I@ZRP)+ATH[G/97UFUH<9I13(JZ3AO?J!:NIOUB>N[ZN,A MPMZ+\(*Z,!]=-95TN6AS03'&UUM5W%GB+3\% M1JUM5?0:[+*(M5L[>X"Z"[54S.O&EW6#G\B6:E#KVO.^SJ/;2 JG"!OS/_"4 M$:2PF)K ;6-M86,[H_WFJNQ9BER]W+4HOF@*_1-5=$GJD-/ KDM#956Q5$'1 M_C:T^;%V)46U4-Z#ZSW(%UF)^M%[@'WCQ]'G3.YD)D ^V0$*+% H)2/CEB@<\HB_A/,AK'(Z2/FYKK2>F(S?1A!:YG0[-_=WH]E4 :F!DQS,$LS MRU3^)*^MLC%MQ]=#N,J8WVSKY*OI#K+^%^A1ZKLP&4GZD\?H>;&7U=%W[1&PY]&^/QNKH.[/G M3E?08YMOC/3?PGGN/2 -^3P(1D"QS%%K?JD^/[1*Y 4^_8 7,WYX2PW9P/FW M/:!E#^A+%'S/_-LO)IKWX883]LYFCGN6>(M'AS71I=B.8JGZV4)ZG YKL7MQ MK!JAR-!_0JJ);\*OU14#Z?OWI7JTK5;1NDI 4=@!;/'>L:W!Z M!)("7K?7YH3%/"/"UY74Q:=+6:W=-I-? M28>[S0=IX[!D'VS9[H=B81@\CD-2G=5(0$Z%24T%F->HOR'C@EM)IQH*<,>6 M4YHDS+8+4G3Z9@ZYO]=-0E:+)V0F"E[UGK1]#+I-X,JVK@9;EH4=W4!:$,=I M%=I^I 66L_;[A'K#?TA2(1RS+5Z@ V'(6PJOZ19)%E0_U'Y5TFJ>2Y,JKHH^ M*Z"O]U))"[@I0UT%PR:3V(T(FKG0DSRZ/U3!\H"6% ?RM MJ#^G?J4&=6X$;,\?QF76HLI+32- X^KWNPL4M76C>&%7W;3)01)_P3DE+4%^ M*.T.HU_%KCJ/:;!,1RC'6M*_7Z,XA3(2R8X($BX!,Z9RI^D/MBZTP68AO.L@T(95T/M]5;Q)-;3LF M&A5)2^B6CLM@U-T]XY$07]83YA:M!]-2]IYE\M57H)4M'+=%/-@"9!FQB\]^ M]A](9((Z@XA-,R.LJ#2=O@P$^,^5Z+*_ID)_I0I5&5G8UQ_MB*V.& /LZJ;< MB7654_?&[#6!W$SDMJL7=QM.$'N8W]>V[:+O] 9;G>F1-PZ2?M&JK;EV.[N\ MW#L\V)%VT1=FD[:3$N12O@%SJQ'6X_"FP[K_N_SOB"(?V)7NW1 -Y79G5<5E MA/3M <+SBZ)#PI[6)8O!)7IQ"2]OKN* Y8+O)F(O.YM/C=[;. M"W*ONX9WG8U"@B,Y5OE=*%ZY4@O6)FSR24"0JU$#'?2XXU*0G6LQ?0GY M&C3W]F8 L+6Q.)*8D:X 3SU$G=D[:2 RK(KYLK,HH9#V7H:N-%8A?QDW5QV" MY?AU=Q/#>GP@:FAI16/KQU;'J$C?9&8\T[8+)[[.V.QG+87O%=K>!#Q)=H M,%=1;"';7\*#^XBC9"A0<>>DBAFNP"Q7.&:*07'PK3HQ[HS&]YM^4^@M+ MFIB4EAZ=YJP9,5W=T3>";&8XC4CVF--!R%9$;:[E.^Q>8CAFIB5Y2D[JU[O! M=/#892:[7!C&]W?16 !T+$"GM4ES)#0V_E^#SZ@!6I':7AC0&Z! M0UW>PGL/3__VYNWI#MB9W%4,ZHW.@.82$;JX)3T:?%\--;0]EKT$Y>1!@\NH M27=RMKZR=T-*B)/UY>L0L%>S=J3DMI/)9* O!YY(S[0WVK;TX'3FWL=8FW8J M.4MWSZ\E]3&PXP.!$WZ)K;:F;"R&GKXP8D*F*P%>$E2;-C#+TLVUS@L1GEP+ M3ZR.M0 (>>;K-S9&G9LPW'C>TJ%O7M1;4_1--9CDRW0F7A8AF,%9>;%. MNQCC]7$*]1ETYT1TY\=1]>&3X2"7, MZZ"20!B'IHM<:5\?Y@$[L.;Y@74_?VW(P4ZMGV<$1D*=+<.B%>$CI06V<<_- M]+!M !]LG:122]E'",OZP0LB/UIYU0.R)T8"!&JVK-X=C<"#PY'3:&V4X#P) M7>WAV'D[NY1W,M!X_6#&ID:?J:&T5$(&&V*8F-LI[=F!PS^FY7?LF S/[3L_G=F:^Z!N18@M["G&N0W*L!W>6!/-U.GD MV[#\L=^'5!>>S:,__>Y5;6Y8.L]-/Z^4'A5W>2M/0,S;3\GM*4\Z'#Z\ BMK MWM3+E:2$X_%7S_;4$*>K+$G?1%/;^[&.$P3K_#S*-"4'2BT6#['CQ%-V[G)) MEOBP8>FM,M,2'&SM*Y5EBX7C+#9!+3Q:TH28"//0P*A7[JD[*17C MSW&R;*J3,MW7RE,>QE#JJBOW% ?"<:_?9Z*)KZ;J%1Q2%8O)&2Z85J4I;W2* M9UC5G]K_'N>=(J"SF#:+K=8/67W])8OB<,>F2 ;')H@FV<)IIFHX@_^(Z:=W M;&9]-;51P&"Q,6$H32&7#Q-#7:C#-*21QRR&@-P =%X!L15.FJLK$6H(H5Z$ M]VPAC$93,>I;WA&.Q^;#HUFSI\OW0(;&T^L>)O)2#<>(Y2@18VS% 63-N]S] M]/IHS+QC=/:W6=O\,OW&Y^IL*CU W?MEY2=/HSS,_&VJ+ZP\>23Q.\0C_ "J M\K%H^:3=O&KE>-K9SR+S^[B]#1U:,N^3@NT'0 M?RJLMQ@_"=#9:-S=*"<=3DOAX\EFZ6#KI6DXR'MTWEM3I=C5,@NN239KL^!W MU5*-C\(ZPL;0P#L]E=T$67PSNBFAH#>]1?=(NB]^+42:374VHJ7/*?XUFFT+\"=$G!JRM*O1[5KY2 LGZM@$*&5>6V(R%'WNG=$^JG"Z?A;>N*''@.]R):N3>O;DY! M+IRI>W-U ]=W)MGVC)YQAD"R86+A#)6>D@O: ]7 MM! ;]\+"EARNCM6^^E(-^8_0H/%9=$NUTRYL]IOLK[_9P,%%P@X8YJ:WQ=I! M72N[SHD!M?'$P-!LN;;LB3/];I!ITM=)FX=E1R:G9_.3M^=7U^911O^57/LF MF;EPT.8.TL9MECQ3%HNI^^01K<<,X;\Z3W$E/>FD'\WJDD6,C1Y10OB M&Y!^;M+,>W$;O@2D$+>G^Z)P$=/UY*)=N=0KF:Y(LF)FVI<*(9]A+/"?WSXI M^^&?7C)+9(1^W'3P&^G+RL[OH@"T:, 1HW[X&TL_CENZB_5HLS;.A-7S[ M#;[^^($FIR_P5T\+7)X3;12]/'XUA7PN%V;&U%&FUKRS-9VW#?+73>/_P^(W MSQ3MH7XZ:%_?+#K#^^VP%Z])S6^_/'QI'M.X@7=DC)N^IJ,*Z^@G/[=0?;WJ MT-;*^OF?_C'2JN?_F[^V^,,2;BS+BZSVFS=*A6($-IYI'L8W%Q#[S2SGI6I( M%_3"3%W=(.R-I'A#LL=J>14Q[OR26CPV;B3ABG)F.Q1P +[!GG5/6Y]5=UD4[*S MN2Q\D-E=K*XN5E=7UT]_T-MBO_S>=#!7__M[X_7:F[Y^<_^3[X$V7@%M6* * M_2!/&W>'%G\/U]EH@$SN8]UK2-^DY$PINBU;PV;O)>M ?062(]4 M?0"7@9Z=>EM:_X2.&X:3/ZOC).'1>&[L,](*AYDCD7WGZ C'P6'R0<&#W"\* M%237:IQC Z)37)A)[).#+IY2D8K5F"9[Z]\AMJF2Z>KX7\?T?4[A_GN:ZCQY9#&F4B[NFVBM4E'L(PC+].B^/=:J9%; F#[\5IJ M.)[$JM9QAHXSU8NOQZ'N 4D-!"!5_#R3\M<7LNOF"T,O.MLT0:OJ3!+#K?YS MYYT*\\V]SD*D=[O4%SL'[[U#!OB1 %)3.,B^SBT9!(22 $%;0_%6ZG4)#GM1 MG8A8$2_:Z.]9>#05!@+1'^J-,#X[8[/EPNX,J3,IZ-N(+])XVE7D,JU,9K^& M !_$0A!1YY7H"Q:)I5+'\H< !G7VQ1$\LUAE>*1ND:?K^P0EB1:B1'4HHJ=D#TGX%"1A@.R%,6BIKK"P@&A_MT;40;8= M9V0?6,%'X[\RSX>HEM6OKSB?KCS"ND[^.]R5SI2+U&J12G@]O4[_9L)13CSY MG2%$+:B62;7= #^ M#W[M;$&N%]Q]E8LU7:))"A*_TN]7I#D>.5CU4 ZTN)FI #@]/W<=\YVX7I ^ M WT#]-LL-Q%K>KMQ)T:GT0CTI7'*UL4=1"^M?H?T015+948A"PW1*CTO4HFD M!/1HM2\M+M8RQ^[9UB'TTMD=RL!CB2]P;&'!V83$7Q1SPZ>1+9%)V0_W-4$9IUOH+-72 "AWO:=(XY',PMQD3?!UYH0(/J* MGA883>OHM6G9W"1Q6II0GL@4'==(UI!0^616_E8*74F5<\WRT1$KQJ0 .])9 ML:#9O'N'B/*YVI$ 9O"[CO/WO*#UQKD3;X'H2A[HK;= @OC2A^;Z@_Z&<^"5 M;M/[+%]Q1/JM%P;38AYFJU^AS=Z"B9;Y\_-O&BIZ"RJYRL:<1NI[BIGTB11R M#BTFCW.=U26:K(_B4AW<]QNO0>A ;IG*X3<%:G@:.SJ=DQI;56. ##W_K&K MMS;77U#/#[JGXK/?EJ:8B!^C;EU=Q9GF^3K$@Z:DKH /S&?V> M"M;%\KA7+*;$%S]0@5W1:8)R%7RH)NSCYBQ;!)9.G)=LO@6'^F47W\O!F< \ M0R$\JKJU0YUO'EENR\"1$WSL.@?3U2S+2),<1]$A:NR/FY$*X_3;;UJ>,D60 M$GDLL3M)<'I#"K+E[U,G0#0;XE2K9?HU 3."F:TY0WV7EO['[NDGT*,)0"$_[#DG'0H#EBA-\LDGG(6IO@"2/W+IZO=,"")Z$PR*O$.C;XU*8JD2_=2*+FR M0"CFDN%R][!"HAQ/A,^6&FBOZU:VII7_:/M'-XYE4KUAA-8+(& 3AU##,];A M9BC)FLM1^+#0%QG 3S/?/F1/V6K%Y=)\$4D^V\[%-0M<]=59)V=&/)DB 2B1 M.Q ,=_E;KS8/#P@L0^N:Q"E$2F74G:2[N6S['>N/+VF(OEOD;*QK??C,/D3DXB6!7W[%':->SM&O:VC3V\ 3VM\W9Z8PT$ M4ZY#$)[G_/3^9]@=Z8V8/SS@B>'3A88WWF#.==$E L320DJ'Y,X&UVID+*;L MAI6(NHP_J?#&15QP0*=3:GFE7+1VN],;!O@VVW[?:7\"G:XW-9PJ2ZW007>B[E2"@_]CD M&6O_J8.26ZEPY[$6#P](VJ1)*7X+OW&B4,2ING3F[ Y<+QKP#04"65$X9VMT M+G'L0XU WB04T1]B]!@ELUY2I18%, 27B>FGI[_^@N/Y,/R,"P]TJ:NK[73B MF,7 I2PVXA]GD&LW-W2?+C%AXI'$1&?L0(6#UXB+KVS:OI#^T9OB_VNV;\W/ MK"]K;BV1C5(FG7XTZG[4R5LZP9Z/6W0R*$^H3C2FB3N.)TZ3NDS&)O?QW$(]N3[/#GCZO1L7CK4*D]!%W3?$3NIR/0_K M4E8)5I#8*'$JA>"84"32Z^F6X*@PGD$/6]I-ZG@Z 607#I M,<@C&=Y2T]X-]+E#$B&V!)U.AGM?2-83,9I57LE7K8,OIYF.E[ER)87.FJ@T M'ATV-3;Z3T7CX7C(Z0D7NS<&<;AV_CU2QQDPG:1_JVD2O51N>[]ACUP7CJUE M/'5!8(:>[94+Z8T-G-J:MQ!'3?1LY8O1!3,BHSO!!"*JCM3M+C4M)OO M-:.!HN2& S!ZA\T(LF-61*RF.QRX30!B8%Q+2+M)_NNKQ%-W^Y0& M[0 1(7 .2N2X@ ]V374%8/;$EMT)A(2-+5"KTW^!"X8X31"K-1J%OOS\@I]P M^$F>2"+Q3S!(^2>^3$!S])IH8,HDZ#NM:9>UDS433-18+O,.[[0J[)-0CXR@ M-CL5.I2#J*O^A V99V.+Z&LY=HT9[)%_^2]02P,$% @ ?)I[&"C8[B/Y M!P :!0 P !O!BVR)76FV62Z2<'.D0MC9G/=WY'_N%]U-RG)L7=FKX.E M(.C!>M=7U55\]O0-C=;2TM#6IDB>X2?1IE"I(BU(*U=)RII***T;?)..2END M359;?/U82_H@B4ED+DR&SWZ36F7EL1?T][Y0E!9Y+DW:D):T5.E:09EP3N8+ M+6OK901]TM MY;*JA*E [+R(P W]K&_5F,:*^@;2^<6FSFO"#;!65BC3Z6=E MI94Y*RL6'V1%E[,S*DJP5ZHP1NJ$[L@):+8L2/<#5>\?A9%C>=[DN"&O&ZFU MG-7V:O3ZFS_].),KMJ674%:PB8)2S9[ G"._/>>#R$D?:P5K1NK?'!V:/=A47MLEVRD Y/8R)3* O%39EG8W'OE8PG'T[7(2^K- M;TLH(-(+78V'-2FCXO6/-6Z.JIC-G+(<"/K#Q"3E(OQHE9/KLGZ@KA#5H M8%$5I%/O,JUDU0O9IK?(@M0QW@;^2"OH@\B%8JCT:X-_? 1]_M[@XC1_!2B M)@>G"C^KFI8AR*;+J./PY\)^K!L/$Y:$@)6Z=@J8@L@"X:@K1RV"P-MB.8/PL9QS4<@?A%4"4'[R M%WIYGV8PR/#-[=*\ND\S*HRK;)U6"@0.%'_\6M,^P3?!]@?LYQ"'Z*-040=E MQ166R3;N=,*).B(1S-H'9E;O<1VH8WF\O1TRW!MO*<:RK8?#AZ0"/4>?_FUD MN*?[(+3H( V@M1$:OV3 +TC'W;RR>//PE(^NKTTH45^6>4HCL)*9F,WJ,'9,I;+,*WT9HPY)"2'Q[NT,5LB2N,2BQ64*IL+YYQ4#[ MH,$NW_ #:QH-").=OT,C/['N3+EQ4N%YOIWF>_2\/;Z]#\/S'[^W M[:3S:VWIX00]TIV4<9\AZ8(*'I8=S]_]."M%"L<3B&F[0BE\OZ8E'8C#[4+$V4]C,6I.I%4>_^D_#$%/1B-"/! M6O&?T:!$-<%,+*K%QA.V?8>:!-!N^3R1#O M$=YCO&=3?$[I).Q8HMXPJ0N+*WILPT"L!,\CJ6W\_G# FUI(>MCJE[R$I859 M*F'2.#PV^%WDB)Z?(Y$4 RC30O'.T=F4A+T]R-HA X;547J;:I_32N:EPQZ7 MKA62+'U 6TID,L0Z:X4'81$'?EL8S^!EZC:OC9 .N,X($U:%&1BA=BW5?MOH:( ?RU MMS*VGE,M5LA'V"E<._UQR/O8*BO>L1A87/J0Y6MB,KR"%VS"%UQT=I?0SX*+ M#EW'><'/NVUY&J?)A6(4<26D_J0B6P#2QB-%[R+#ISON02COO,C44C7MR@R$ M)AQHPMHHS5'U2WA6T4'_F'[P$.3;-\@5_#R)MG"Q6-AFH_RJ M#5T#M.>+\70^O;R@\83.)C-\G$XOIM=T=3T9G V&9Q-T[WD0U\FGBQ&:N?$/ M,7"DH^.D4-_A*E"/YF?7,P8FKX1('#\WT7LE@<0OR3<'IC^-B3EH";S!F16E M%/7-87<.# OSH:CM_IX%FTITK8S1&5!$KT/P!^^9\CKV>] 1[VV+K1"<_3/? MC&+@XW\\Z^^H]Q3*>(>;))BN ^K?8PTW,7^'_I$2:(,47'[O%WR/#P6F?_F2 M$SB:>63Q-F.5!VKL$<1M>CPC?IX',*J-Q2O-W3@NR+W4^0+96P+'D@L/RO93ICXII;/GOX'4$L#!!0 M ( $ KT!IR0QX.QP8 (L. , ;W-L8S P,# N87-MC5?);AM'$#U3 M /^A;,"@"-#48L1P1 0!31(R$2T,20GVL3G30[4SF[M[""O'"008^H!\:XYY M53-OJDO4:ZQ_Q+]>^2@-1F\>?>6LH*"+,F5-XM8-_>Z7V/C?'//1'38:/1HJA-EOQ3:46[+ MV"0F5<9JU]SCOV'Y^8XB9?P)7:4:$CHQ]U;32EMGLI24/C@W<' M/Q^WFWNCE+Q5)J43FAJ==IM[?;8!-3I!?*_I.C.6^@F\919A9:FCJ/"%>,7G MN79>6XK97[:T*DFTI%.DA'Q$9!18MAS M*JA .0HU)5EH(A.(XRJ>F6%GP09LO4+8GOU![L8@EN[HXZA3)Z'BS'*@"PB1 M\AZB#,4=Q2V3&F\4\!7C,.3(Z64""==!8)Y328%](U3(>5-=[6EB8CW5G$.W M#J=6I O.AS\18*$[5C8KXQ#4?MA2B\R&!#'$%62A[E"8I6FIX2Z'Q0[!98Y( M=.H*XW6WVVUW8*%*Q-M[]R@!7UI3@? \NEVFQBPO@PV.#D#VV_2^\'Q'1_^T MZ^RJ? DUA]T(IL TR>[6^7O4E7,2(.^XV($&G^"\IJTK\BJ:[F,3+;9X+41[ M38R==$/,G6U2:?$\9LSRS#DNJ*!1%R'(TE7%]U2:C9G\Y"2JK$\L*FIU-1XP M^]#3+2X%FT0.*KE'YU626;'BL595T.X.CU#<1F995#Y(K73 %16FJ2#0.4H( M*\C+H??- AF"]ZAF5I653)+')D '(ST3127"DGM8YC1D=J^')7<_C,$TAB;0 M]#S^$Y6&#*K/7I=?RZ#PBH$!R+%*@ZK8DEGWNV2;.@0\7 _'L]]H'[ZD/AU2$2-3892@X]62B5I*72)Z MT>[02FH%W>'D?'P 2]>#R;@*K;]6YJS3(BEM!AQ:: &.[4N!/$EZG8?S0Q5% MSBS3S=22 5UI.GK!5$"U3<0WO6=^-!Q/1X/Y^'HTH^&(!I?GD_%9?SZ^O*#> M\S^V.!Z.^F-_0M8=T0"TYDKAYJ&&-R4F !Y M9I%O2V@T!#Z!-RNN/)OA3L.I;M)E<^]5F@4^=G)CTB"NWF1IZ%B7[ZU&CNR3 MMP$50\*$6N'2>^5N$Q:#E+=%&D"7[2+L6/N6HV7&J4PPG_%*YK;[V](+9+ [ M;7)M$^/:DC4"*/#IY;E"!MWQQ> E-.7!80X44OQEF996Q=(.:Q97!7*((D _ MEGK7E$X0P-K6L(SDV.4V8<)E0;?&Y(G!_&QA:?YI@I*.YC2;3Z\&\ZLIGJ[F MX[/Q##<_+"QK2[=<7'[J7W%DZ*,?DBM""RWS\A*")M$]0AG57K%<.F>J\''S#R0_,C=M=E&T9C:4DL^MK W74Y/Z>CP M\ -HM[_=3;N8 B![XW.24ZIQNH_!1XCT99R'&?K7M>1 ?+C5YA8-:G*.:-?V M)0X7C>X/A=I6QE2]UQ%. 4J^)7QR$7.&SOCC3@]@T5LI.1UPBL(YCU79DLK M*A[E.!DYTGU>J=]@*_':RI>.0LDX4N662X MMGYM49?7[7#VB#);U+=P+VZ9OD_"+3:>4-[2[4?%$NVMZ*.*;[;O_[+Q0'YK MZ'];V*IBGHYE)&^&&9/^\/#HL(N#@,?9Y,F-^Y'"\49A&X7-^/\S.U;W6_;1K9_9H#\ _=I=E' ]H9Q)-NWFTCPS3K^R"W6 M28S(;1![MA51'TET1B+-55OA;4)L M@&@KU>-' 0_//HNB$6DF9E%3AZ(LFDKHH=5N-U]22:4D+8'IH\_?WDS0F$53 MF07X?C71\R8_%56"!B'XY54Q4T'R4_#2>X75F5=,G=\.7EV5414M%--Z4]S( MJPM^%B_%6$A5/XVE:.HTD^*EX^KRYQ(L2;%(XZIX6E9%3$PV%<]%C<<7W_), MP9AVIDYI3T&A:E63U5%-8R]!&]W6K32G;6=:_QWE2299#$1O 'IS?D6\NZZA M& B5"IF+1;LHTDK2%@=Z[AM,G9(T(2@F^6XV4[(V)!,F&9FILS1O(PSW".=- M1J3S(H=LLJ)I+6EL;ZCD-34F4:[LS,M3=I*\C$A7B'0=+4K00R_TM^-.WDV$ MK-UC6\L\:22MJ8AK62N]M4SCDL?3?AP,7GP-7@[$7PL!*8JD-;K4I$I%>U.$[G0NJE[B1_!E7Z6GJ#TKO(X M[*FWZ"FZ76?%-,H,,RJNTK*&LBA'MOY'/,=.1/^LF268X=4I;8[\#K,'P6$P M&,R#\?;D"KN[6$BAVDS&1&*'NK(HW\C%Z82[/I_32]^ ==MA,!QPTT5J-,J] MUT,N(W!Q(H\Q10,=A031MF?&%%4MR=#26(\]'U+C\SL:]]"X?]?(?6K4(YU_ M(ZW7>'YRN=1(;7J)Q^!WI>W%P!?2 M:O-S)ZA>V_F 6H\&=[0.N?6NL223P:N[QNYS*XV%YFHG/_P:7U^?7-+N@J_D M1]@#=F1BE8]\PXBMN)7B)DW8O9S(V8E1\:(2@Q#_#0>#:8A_AO29@D*G?)M& MT" :L:+-#QW8U_4[1H7@BX=,:7VK9K!NF&]V1 'CAS0[S;EJ*P^AP#S?16'O M013NXV'_CL4/UDI'Q_S[!ZP3SEWCG@YY@?V!9(WK)UGMRT8('82O3YI2; ]V M. HY3ZC(N7[U]0!0Y*L_G]TOZ*$G:&L =XZ@]6(,CUBQ\WO5T'R(^Q4GL&D@ M+UO0Q^WOP\(UN_!HW0EJ,.%O"U(1&=XC:>XN<1Z*];6.*VQ@N M2C=)CJDA=*# .@40W&H 6,M24G9!Z<0X.+X\?\]\$;K_E9"6&-'[IQ3C2\+W MDC"Z N:X3A6W)T5*6)8AO,S3BIO+;CQ#1Z*QP@9/+?7$3\5D,CI]=4'D:N"; ME#98(&51O 1,U4"W*\G+/%*)C"OEM-A]6[1,H*&#\ M49;!-E1 *R 7%FO'WS MC6%]B;A>!T][FJ^;5=5WS5K)N^9%3E14*?)G;]X^]8=L'Z9X0]X'S-7M=;MQ M]^SV47\X9Z%7\#LZ!K.]VHKYH6I*5O605%MQ-KF@)91F"=&-C$DY+U^?D#XZ MOQZ2+UCO9XA0RY2<(W#N!1EL=!O&:B33,KQ.ZBJ,J\%ZG_.ZL-O2\PI*)X3= M=)_QB#RV6F9]K3$C#1(BK;V&22#&B4&<>!W&2HF'X&0>V$IFJ35!'MRRQ_/$,&,#/P]DLFN&#U%+.*,A6XN)U>'P2OOT^/'H3?G_!O8&( M1)2%A%$6LB;I7)PZLB 96MZ2J1C(:*[K:7".@F-OIUQ7!9J^X*N:G#E2J MV%XQ&:$0]"A#_J$@5)7F-U&6)O">.\:!&'J![[*^S>W;W]W8^P8-MYY!*_.T M3L&FUGX*3LN&W _6=]FR$"O6#.%"X7Y'<]ZL-'(N.J4Y#=?HS;)Z&(T0W^:E M$3Y>.QE=C5:L1>-MK>.C+HR)W>-W;UQGI4)#/TM@1MB6R84S+#;:7FSABH*G MJD%/5;%S[V64:46%7D%+O+?*%E$_>[(E?.59,RMCIW@NE!F5G,B:$XVRTTE/ MB[[I-$;F?G%NO9@3:$%JI*N%VZOHA;J7G-YZ55\?B4TC6\J^MEX2W>/;7I'8 MXCKR.%YG0SSJ=58B@G](ITVMO*XF&$39X45X3J_??!S;=L$(=8>=J.EAHP64-FQ?3K(B1$&A\ MK&$IWL[2>)Y"ET FU,B?EE]7:)[]"DME?-Z5!EU!>OMO;R8[?>TP&S>]13;9 M+-JJP&Q1'/_*(O'F,>).4O!8Y-<-U=#@$+A>SRT*+8C=*?O!R"2\%DA;2KIO M# DE:R?DY9Z^>46+K<0X%U[//0OZ0S\4D?KHR9 M7R6&(_+!2"X9/QRN'D2Q%1GGP64EYC!1_I/AS*%+B-"\ZG9%J[]59U9^90X[ M*QL-XJQ1M:PZ8N3>PS_#T\[-.XKJ4(C!V1GO)%! DQ7B@,ZFN%TU4[)NXU@Y MF\3RL2!KS-,&6* 2\^;:&#;<,+1,JZ1*#]W">';6O:7%H;=[I>85=^)J/WTJ M.';J<6#Y39C?_@"T[SWWIB&[E+6]]]?)87J^A+_;'G>>)X_NO7F M!XWI_32P9*\W0ZW;\+D3[,JZ%2\8.+I);R*;N_!2?YJG9*D!B[J_#6A-"A%Q MJ]V#H%M^T*T\6+_HH+_>H+_48/TJ RODY[R:8$FDFFDHH945OJ:S.Z2=R"I? MDK;9JR3U91W??OJ_*6UO=5W;R/H*GU.7=TY+K[GS*WCHFDS!IB/O>;"]]1[, MNFWGNJP_U9Z&*\%=#.A\KY^X3LWWCA<0\;'TFI*FH4F!$>D^QUDQ>*7W/\XJ MT*<(@#\C0KJ'M.>5V-:U<0Z].RZR3&T:OETQT1$4803OX48!C.C>:IXQ(C!^ MB%,+/'I4N]!A])+TJ)0<1<"YA[@+KK6;F&BJE(AD&ECK0KSO^WO^45!,+OUF MIS4FL/4>S5[_169*;N[V11-VBH@%FK#(DK>H37918[S]62>:<+6$7F=%JD(O M.GV&GC7FL@.==/Q22R1E"0W]9U5VB2WB4%NLG?'WE MVF(PW0F]=$SXAL=$D+AI#$=)&]F"T).E, ML&9QAC_,KTI]C&>]FUJ!U;QO#I._M$""R@T?NEM@'[M52GM3S(8 JJ3XKIDT M9BPZK1P+EV6$&G-3!L4RF\JL^(D>XZBJ?K9[DG_JQ1#:%0\S?5#IQU!:<]%E M/ !P<_7GLZ"ZF@?Y6(*13Z ?QKP@QA21(7$]UJ27=D.6XIK'D['T>(VE/Q2[ M6.0B1,=2'\49\&(Z;%"^^]1O8]1G'7R("CY "7MJ^!NT<)T>KE7#%45<5L7? MK(SWJN,7*^0ZE=R(K>Y3R_L4LX.67P8L^[!R"53^^_S>%RG=;W![_^_U?C^O MYRD49SAE.-QSNN-#=Q^KQYG6+XW8.XJC+Z2##>[HZ+->7;*DNJC8IA*/^E?"9156E1IW>YL/,N^Y*I)E"JNW]'ARD/.8K_-CS*J =K39#:S*2%& M6RBUR8>^[4O "+"YNC:G>DYS2<[TR'A M&5(#/EJSI.2"0=6*\='+3L9FAWO'8OIW2(W MOYEEM9NYQ[SLA/XH:JIG_X8SC<#X>#<.NK+7?+@%;^P.L9Y_!R4GL\?5E$;=+I-;>5",X( M=QF)NMA;'Q-]ZX,[K!PKCYCD3U@5D?%D<#87.UQW/= 4+BR%CC4,ZW?335=OI3U QX#A8(Y^EH4G MEI0QS !V[1'DZY4O=^A*?J3+*)*J],F67SV*$>&E/FG7--Z]?RT&G,O1;S!^ M;+;H0(.*#K:NKU]9,+'=ZW;D77()B1I.40Q1#5 MWC4Y-DKJ( (7LI;D$7BG+9&HM05T]QW)B MW1TM:MONKE=$@,9M5\!L[;D+EVC<+5X:E+1Q%E6M+=3HHI?3"@U%Z!Z"<]P4 ML/JZYL*65AM84*_YB>\9/+> ?E;/NGO$KFOH=-QK]+(0XTW[3O,__A=02P,$ M% @ ZZ#7&H!33=@<&P F5$ P !O.O7;ZLML3&"6R)+&'(MDL4I']R$4P MC6#?!MC]%S-_<<\Y=6$5)3O.3O>L@>Y(8EW.]3N7*I[O[.V^Z71&(Y:E+.T* M6;*<2R92-L\BP?(B*^MI'; YCR4KLZID\.O\E[E@OWOXX.S&=B[1D1UF: M"B$/9[R8BJK 1Z/;_]BID))/A611Q4(]A]TZ_.&#EVE99%$5EC%0&8W9<"<8 M#AX^Z$3CSL;7L4@7(JT$^\#.+E_/V6+0'PPW G<,8YMACYWPHF;#)WM[P?#) MDVU_Q.:W99S$4MRPI)OEM,_6,Y9G0!=?9'&!;"=='D>BIR<&W7_I/GQPRJL% MB.;P_%N@J^/M>9C-23:+K$K$S1;\(]G/5;=*4:K3@L-3%N(81?:&GC?)4N(S M%4S"[A7\6XHD$3Z]XSKD\&2XR\9Q*=DS]F\@ F4;/TD L;#F2C-GK!AFE4+ MD=@MLB**4UZ"T .65?["0%M8%"5=JBE"1#4<)O\WZ_3QY4 M@[!@OR@N&QK_)I8Y3*_%WU$MJ#>?1* Y";,4!8MV4Q&9L%CYGR#P *1*"B#! MAP*%);.XM*M_'Z=1]EZRS3%,^W,/=SB[_,-VW]_CLALG3';Y-"9/QQ$!JI%X MR'D1H1!'"@YP:^+4FB[_2Y8&#&0]Y\D4G(T>^QO,N5;$(DNRM*QI=?AZ?OSM M#Z38>EF',*M0*H]0GF;]$! #! !" WN4+4/A;@%D99T#!P X\C1@Z)XBZ*.."LTU@ M7L;-;[V^9Q_*M!7Z'1T FBCK_BX#RH!&R13V &9E/$8?REGL^\1LG2[A MC]%?).9 ";#)*Q#],IY7UNI.I)',YB0!*K/<#GYC%$ MHRX/PX]:3<[6AA74W-8K4?0AT+9"3DCAEH*JFMT%]RUY6OHAYIS+ \"ZFR-Q M*C1JC!F$M%.>S%#JE52H2FN@]09L!Q3B%FB_$-&@H=$ M@ (>[D,IP='999]=U N*Q];<(,@CXB:*6W0-+>O6#H=G;TY>/N]?_OLE&M#! MMV_/CG\X/NQ_?? 6U+TP>)P+0%HP6"\<;U@BPR)>@";\E7E59G,P)+!-HB%T M:,"]"I'P]"^I,K^02XP?8TBERK^6 M_7;R=-X'?>P[V15+:^!=8O "!P(Z ;!&0AW]@8:=39:QK2(%\JB6AS;?*< M9RT* 7I\BD,"=GQZ"MY/ MGUN[@&W4/U=@:@G:T^8LCC+9!\N!V &6Z0H7B(#8#84,>TV.ES% MF)AQB+FB:.\!0%5H@>B<#YP29)=4)5?!!B"AC--I50OI2_V-0$\'T9]5BP*3 MX#%#Y/D&(G:7%P4I%&#D T1.>N[@GXM[30"'B"]2[2!I=LU;R2?EEO,^^PX" M"N#LC B) "T.@$..B AT@SN.,):JE+8E26)SG'Q$79=Q-[?8 JY(!&*DR#KG6Y-BBR. L 2 MRC.B&#T971.57OPU<1DH .9*C>.(2&5%EMA?)_US#KH2I0Y[SS-VC5$C UL0 M['UY59B4@ MQ5. 6,J?Y,,';XDC:Z%1YYDS/"( !-&4,<:0A+RC,M9K)NN]:6J3H&'(@7BQ M4#66V>X6/E;R+,O8(?UL.,/\:B/XLX80^_A(T4"/MX:P,NB M1?4$$@BH4 O \<+43DZ$HLPLQ:S?FN(M,H"@H_-FC']KHEQ?R^6@>X]%^-+9['!RI[I!:L7^71['O>!%SJG'NYT_H M42] KHZ]OT>C3:MY760V$V\L7%DGTN [XNT^?IR6OY2B,>S1)_X>/GB)R2P$ MJY!B*QGZ&^O;.EM:UWP:&/>[@CT!N#I/.]M?[-H?#8?BYZJS"?;)E/!-@^W1 M%X-9KS-R/%//4\Y\ZZS'>M:K#.H*\(D2=R^$4#/8ZHQ=VH=MHEZ=)D@/6W_% M(@[%Z^'5Z[/;I].&8/]0"@N$":EFN=-?O+Q]^B[M;M31S-J^<].]6<\=>M<& M!^[0G3M7/?2'WK7J,0Z%T)]&EYTUK5'=->W"LC@U*I_C"=L3)_TDAR6'"_5@E3,@G4F/*3H91!L!H@K CWK MIS&0!H;(2"HPD7DQSLP98TWUU78$]P"-)-50.WQZ="X>3LG-0*"B6@H["""A+3-+Q+RHXS?!1$9 #" M".MAKTOPX'"&PQ;PN$(I_/]2_6B;Z#9DG7Z/B8'@>_H[XTIJ>W( MN,&D*$!CJ@OU2S[3CD%V"-,')[/&_>#[8_I68FVB'F/,AK^9YX/&-ME7;,A. MLZ#I)4I1Z5X+/EA5"Y(-ZVX-USI&V"(H- 09;:ZTM1QRPUO)M7G+5VN=ZZ?T MQK$%=$JJS:B9N-RZE>4L#9D@ZW(M^/&>HA_")-L>SAI/U7I#:80.(H'U JPB MN2 Y[*DP< J1EYCC[%MX@42TFDR@%@>LNZ>!>TPY&X+TPR7M>(V8HSMQJJ7G MG=4]:VVT7O:$D"L;M83AB^/3M(?W\$UP-*Y$&B:% ;8T3@1>0@PR M" S8 LJ*.&"JLRM5\[LUO3%N$-6.GF%DG78"WHCL2AGF[QFV\3 .'CYOAILQUAH_M\'N017JR=3;H2?MKXZ&^._JNJL!$55,V>")" M:(!([!'%T=GEU<7W=DODP"L4&[F&]I$2.*P38?LVI;[%ONU+-F@4.4$ZBHVZ M5A86('V_H!MEDXG$0R[=JC1%Z>9;$X; .53!V7.R0-D(U&'+,6P*PB;ND"37 M&-QMB-Q.EJ!$.7<%;35PCAIXF<:EM5C$)MYC^%O,37?]^=%;ISQC&L)B9PSV M3U2](YNZNJA%8KP.A3S&W(JG:85Y(GQCF[(J*(0U#2S*Y7M^\A%*L@205DA3 M8?28&ZR9.G$(;=?F1&XUH_6I*KAW[EJ2@X7-8QNE35IC*FV!1R#8\]<9$"/D MUQ=BJ",6"8=:L \ ,138A:#CX4?L4I7K^-V'Q,'@R0EES[PLBWA"1D6N85K-*IF2I8[,WQ> M="?L4^SH6O=VKG;NYNK[%E-KR5XQ,$LH[0M0\ MA13&D$0Y,6F'CH3ZLZ[<$""WS>/&*S]E!&VR,3"B%?PVZKU=AJX*VS1]4N?K MF=B9?6I3E7N8L+6B-XP=Z[76>M+HS'F0BBE3M5N>R5A?K0HG3$)5P9?_^M7 MT65H=6EL]I!<<<2>/QWZ>L8&QW93$$)FAYDI56J/7V76 !(I5M9\;-<<>&N. M]9(F8S)ME<^RID:*:ZP"51#U&BW8 T"L+#W__O%Y=B%X<@5I5RC-U+ -_]A@ M5^GBB/7[?1U/G+"A \GQ4H3J*$!'\A&[J&65E+SQY2,"]W@%FS[BUVW::<#*F^R'4R=-?[HS,G+;SQV_0;H M"M-WIR2AY=70JVNQPA*\DA]IM43--R$-\289CKW6O$-(O(Y>0Z-_Z.NRGXAT M6L[8FF4+D=\P"16_:E!BP=YFR=9#0G5PS$DB)8I-PCGL8X,QYGH'[EF#E5]F[H#7%/0!PIKS/&D!Z='EUCIU_/93V M?CV\8Z47+S]KI4>[MZZU_9E4;=^QTN=1M7T'53N?2=7.'2M]'E4[#56$"-=T M@YNYM9@#D,R4 =[!!#NGH_9;+)D"@JJI(W5#E%Y@RW[4P7OCL3[U=%:&TIAT+>TZ;!:2ZYG%@9#IMXEMC@"&>\C!_4$LA*I1".A/J#+(T8W60K\YW1O M,9H\';!->PV857F@&9)0(D(U0?? 9$]-5-=]L%)#^O N$NG8=*U&4#.4U@(< M7<$@=66J%KK)DT5R'$3P*5SVW>X )@5-5ELX@OJ OJ6N3;HAUDQ1.L,DU-Q/ M0$E9?4_P6F@12QU,0]-U_BEJ[==]TJ6N-EUQ1H+Q=KF]\]2H5Y$'];HYR*K&-'W054_& M]@F*;NR*H=!O1NB5&&=U63?LZW(=S ;0 @^$EW2AX??1\A%7168"P9L:7?"_ M1_#?[Q^_:_W.U>_;ZG>E2&(+;[+]@H="$AN_J;T>E-!=3<>/;&P'45JMR)AD MN]RWR^I?ANH7D]?C5MI+\+S20(I9O(%BRJ ]>%18K/)H61[+G(=B#6;"E$46 M-Z5-HJP84(=F?!HACVJZ?7::^=IGW4?#%GD-&0YM1\),7Y/C1VIM)&>>F8+/ MX)"^N_DK@7B.J8PP !K5X\K?K_\; 'C4WA:IGO%8<;N)H5)I 6]V IK6V%E* M:X-2T3UHJ=12W 0!NX-:N+>6?X[^K/)]R\?_.6PX2^$:GC2UM1D<9YL@++SD M1Q<.(U&DGK6SI-+T0I$!WC'.E5C H68\G=:_>ABP!HO^'>%K,?,L4B4&KT(P MRD),8]A.!.;L!J KVM!+<[S$@$<&*97>*P]]O^!\('#85?WIIZ>FE98R!O5 M./D.PGB?O6Z.4WP]T)X\R0I)2@"2T<",>O"(*@.*\#4.]"[1W)"F_FR%_^#; M!X5ZR4XR>LE)E.J%*SQ$Q(7HAJAES+Q'L[.M7D(C,S>"I)<+-*D0%E&[1!TN MXX]3AU.RI_-1C UT4M^<:>&Y+]@^/."%G#?D!JWP]LCKHT[I#7VM 0Q39N((OK M'=USU3:GV\3G\!Y\0EGM3C*[ZHD.WT-:E7!@#2]"V'>K^Q1>-\4/7TYDC;9HN >$-FLJ:,H-A)9,G[A8B5 M8&S ]@,K"[RH7%C(7),.WP+3]LYI;UVVKPF@#'P]0M+.=?_^.^,=*C5)VB,G MLCT?I.C%"76RHM^'"U@+V.A,K>#VQ5?9M/^A5BC5"S 2P7>>EWB1W!8.%J4- MND1M6,$,?/,;A&VR&1/_>.J_:PK);X5@;!M!E!X*_7J=S18Z\&"OM>OU$JOW*% D5B"]4:UYM4G:0R&LPF^ M>N9>[]:% "VL:9#J(L-80(@#WO'%B/;;A8$O(PW,2E*X"% (["ZXNL!EWCVB M&RV\HMN]/@SIE'&K:W-E:EF^.:.-,0>&Z71H0MD!?I,898&^ G(%>HF,/C?7 M(8"KOUD$^;O.:8TE6!PW%)C,OCEQT"83T6KC,V@OHMS [_W69Q66!#?>R MOIDW_B<(R=ZD^"PAV?=C6[)Y^]O)QESROZ=XFJG-^P'-5'[75*; MDUM/@CP9':Z7$653M[(2+H,OG]R3?G.68-]R<6C/D3L+29K7\37#Z[.#7X_' M\W\BC\UQUC_((IU!VGQ'[@/NT5J_OGF\. "P^Z$B7&^4L0BU45NZI F*:2,BVY$ M3NL4\N\DL.4AE84@[/I_"[F6WK2!('SF+_3D6[!$46D>%5A56[GJ*:@]I+U& MIC:*$0G(!B6](J'^[XUC=5M],O2D$(;2B2F- MOZV8:_M6ML<4XQ9["(\DNJ%SCZ\XS)D[^VXZ;UW"E2'J)DH-2YT(%=*Q3%E_ MD95ZT(#68M6X/^Z.IEX>5L>08#Z \&Y1$S 'R,$\ M[)B#R=V5B+L*--F]Y^KFX_S[7,K1N)NPU(OGKDFYA+[^.(LW3DUH>9\:S>3? M<PE?#ZJ0^"$P?-#O;:(DL!\ M591=%221K'B?RTT UGM@I5SQF!([BK:%4N9\$-?^TNE,_R#"[. M7MFW^FGF#M\+K=ZS )/:'4BN\S& B8J!ZAG%55LM[5//[.S#R M_,=//F'1?J31EA;F)QBJE8 H2[1'TJI'WI6@.?"1 6DNK QE!,^8BLX&H 4* M""8,9JN+&_,@/*P6O1CY-GCF)+53(,SF83HYE*[@6XJT<[SE*[&3YVWD4 M](7^1%JI6%"$X0\,?$W'4M&Q%Q 6/.)ZRI$U_'1X U'V2%(I\-66U2L:JG6I5,$B2L"=O*#@_DQ-)S@M6\39 M1I=] 9'^,)#AU)180($&(>/OEH3SU:^H)W102_; X%@&BBQ9[/#K:/)AD"&I MAV>V@%?]:QZ/2PM]\;!^ZX!8I)R1F"%FO>"" M/3Y*$6RONBK>.I'Z[EM)QN5G:*+*AYX0W]@CH6;R)*RU@.];9/AIS3) MQ.#(LB@#MH2%OV5&6I>E$K >I\L WM;MC@,UC;[.$%LQ6&7WE27=/"]\_!)+ M#=WC0OK$&V1H-'N"[UXYX+*K%]RK\$#\)7V/M 6NG:+ E=<1N#0U)Y:PIP+C MWYM_4$L! A,#% @ 9%X8&8):\J]C# WB, D 0 *2! M &UA8W)O+FEN8U!+ 0(3 Q0 ( $8JT!JP=/2A3B =3 * M $ "D@8H, !M96TS.#8N9&]C4$L! A,#% @ O8HC&43Z;MI* M( ^U( H 0 *2! "T &UE;3,X-BYI;F-02P$"$P,4 M" !\FGL8*-CN(_D' !H% # ! I(%R30 ;W-L,# P,# N M87-M4$L! A,#% @ 0"O0&G)#'@['!@ BPX P 0 *2! ME54 &]S;&,P,# P+F%S;5!+ 0(3 Q0 ( *^@UQI)6N#DW1$ .LW , M $ "D@89< !O , Francois-Rene Rideau wrote: =>(A-)Synchronousness =>------------------- I don't know anything about Occam, but I would go for including both as well, though the interface should allow for the case where one is emulated in terms of the other. =>Linking objects =>--------------- => Info objects must contain: => =>Code: =>- what are the implicit or explicit parameters; what is read, =>and what is changed. =>- How it changes data. =>- What other code is called; what other code calls me. => I'm not sure I take your meaning. Parameters can be expressed explicitly enough, but not the semantics of the code. Are you wanting to attach human-readable notes on the semantics to objects? =>Data: =>- who can read and who can write. So what is a "who"? =>- What other data is pointed at; what other data points at me. => The former is no problem, but if I understand you correctly, the latter is essentially the GC problem discussed later. =>Garbage Collecting =>------------------ Right, no GC among system objects. GC within system objects optional. =>Demand paging & scheduling =>-------------------------- => Do you want automatic (profiled?) or programmer-defined preloading? =>MUSIC =>----- => No mention of X? As I'm not much of a UI person, I'l not comment further. =>Let's begin Coding =>------------------ => =>* There seems nobody has anything fundamental to add about specs. What specs? =>* languages used. For device programming, let's use ANSI C and =>Assembly (I vote for TASM, but perhaps you'll prefer GAS). =>TASM has got good macros et al. and uses standard Intel pseudo-code. =>GAS seems to have good macros, but uses non-standard pseudo-code for =>intel instructions. GAS is free and portable; I doubt that TASM is either. =>The language team (including myself) will build a C to HLL compiler, and =>an assembler into HLL embedder. =>C code will have to include HLL directives inside comments. => Why comments? Why not pragmas or something? Perhaps adopt the C++ 'extern "C" {}' construct. I'm reminded of C64 BASIC programs that had assembly imbedded as a rem statement on the first line. =>Please comment. Problem: =>what kind of pointers to use in MOOSE implementation: near pointers, far =>pointers or system only pointers ? => For portability reasons, inter-object pointers should be special system pointers, interpreted by the destination objects themselves. =>* For IO (Especially disk I/O and SuperVGA programming), we can get =>docs from Linux and/or XFree drivers code, and other PD code. => They are at least a good source for example code. 386BSD too. Gary Duzan Time Lord Third Regeneration Humble Practitioner of the Computer Arts