[SCM] Lisaac compiler branch, master, updated. lisaac-0.12-401-g9346ca2

Benoit Sonntag sonntag at icps.u-strasbg.fr
Tue Aug 18 01:10:19 UTC 2009


The following commit has been merged in the master branch:
commit 9346ca25132c24f87b1f77d5ab076f687be2c2e9
Author: Benoit Sonntag <sonntag at icps.u-strasbg.fr>
Date:   Tue Aug 18 03:10:13 2009 +0200

    bootstrap remove old version

diff --git a/lib/base/block.li b/lib/base/block.li
deleted file mode 100644
index 915c94c..0000000
--- a/lib/base/block.li
+++ /dev/null
@@ -1,214 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := BLOCK;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-   
-  - comment := "Block instruction library { ... } .";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-    
-  //
-  // Conditional :
-  //
-  
-  - '||' Left 10 other:BLOCK :BOOLEAN <-
-  (
-    value || other
-  );
-  
-  - '&&' Left 20 other:BLOCK :BOOLEAN <-
-  (
-    value && other
-  );
-  
-  - if test:BOOLEAN <-
-  (
-    test.if_true {
-      value;
-    };
-  );
-  
-  //
-  // Loop :
-  //
-  
-  - loop_infinitely <-
-  (
-    (`(1)`:BOOLEAN(TRUE,FALSE)).if {
-      value;
-      loop_infinitely;
-    };
-  );
-  
-  - while_do body:BLOCK <-
-  ( //? {body!=NULL};
-    
-    value.if {
-      body.value;
-      while_do body;
-    };
-  );
-  
-  - do_while test:BLOCK <-
-  ( //? {test!=NULL};
-    
-    value;
-    test.value.if {
-      do_while test;
-    };
-  );
-  
-  - until_do body:BLOCK <-
-  ( // ? {body!=NULL};
-    
-    (! value).if {
-      body.value;
-      until_do body;
-    };
-  );
-  
-  - do_until test:BLOCK <-
-  ( //? {test!=NULL};
-    
-    value;
-    (! test.value).if {
-      do_until test;
-    };
-  );
-  
-  - while_do body:BLOCK ensure test:BLOCK <-
-  // Mix loop version beetween `while_do' and `do_while'
-  (
-    value.if {
-      body.value;
-      test.value.if {
-	while_do body ensure test;
-      };
-    };
-  );
-  
-  /*
-  - until_do body:BLOCK or_until test:BLOCK <-
-  (
-    (! value).if {
-      body.value;
-      (! test.value).if {
-	until_do body or_until test;
-      };
-    };
-  );
-  */
-  
-  //
-  // Debug: Require / Ensure / Check
-  //
-  
-  - '?' msg:STRING_CONSTANT <-
-  // User assertion with message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >=10) && {! value}).if {      
-      crash_on ptr with_message msg;   
-    };
-  );
-  
-  - '?' <-
-  // User assertion without message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >=10) && {! value}).if {      
-      crash_on ptr with_message "User assertion violated.";   
-    };
-  );
-  
-  - '-?' msg:STRING_CONSTANT <-
-  // Require assertion with message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >= 5) && {! value}).if {
-      crash_on ptr with_message msg;   
-    };
-  );
-  
-  - '-?' <-
-  // Require assertion without message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >= 5) && {! value}).if {
-      crash_on ptr with_message "Require assertion violated.";   
-    };
-  );
-  
-  - '+?' msg:STRING_CONSTANT <-
-  // Ensure assertion with message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >= 15) && {! value}).if {
-      crash_on ptr with_message msg;   
-    };
-  );
-  
-  - '+?' <-
-  // Require assertion without message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >= 15) && {! value}).if {
-      crash_on ptr with_message "Ensure assertion violated.";   
-    };
-  );
-
-  - '?#' val:INTEGER <-
-  // Other assertion without message.
-  ( + ptr:POINTER;
-    
-    ptr := top_runtime_stack;
-    ((debug_level >= val) && {! value}).if {
-      crash_on ptr with_message "Assertion violated.";   
-    };
-  );
-  
-  //
-  // Code debug.
-  //
-  
-  - '!' <-
-  (
-    (debug_level >=10).if { 
-      value; 
-    };
-  );
-  
-  
-  
\ No newline at end of file
diff --git a/lib/base/boolean.li b/lib/base/boolean.li
deleted file mode 100644
index 72df140..0000000
--- a/lib/base/boolean.li
+++ /dev/null
@@ -1,138 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded BOOLEAN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Boolean library (self is mapping on int C).";
-
-  - type    := `char`;
-  - default := FALSE;
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private  
-  
-  - deferred_boolean:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    deferred;
-    result
-  );
-  
-Section Public
-
-  //
-  // Conditional :
-  //
-  
-  - if_true block:BLOCK  <- deferred;
-  
-  - if_false block:BLOCK <- deferred;
-  
-  - if true_block:BLOCK else false_block:BLOCK <- deferred;
-  
-  - if_true true_block:BLOCK else false_block:BLOCK <- deferred;
-  
-  - if_false true_block:BLOCK else false_block:BLOCK <- deferred;
-  
-  - if true_block:BLOCK :BOOLEAN <- deferred_boolean;
-  
-  - elseif cond:BLOCK then block:BLOCK :BOOLEAN <- deferred_boolean;
-  
-  - elseif cond:BLOCK then block:BLOCK else block_else:BLOCK <- deferred;
-    
-  - else_if cond:BLOCK then block:BLOCK :BOOLEAN <- 
-  // Alias.
-  elseif cond then block;
-  
-  - else_if cond:BLOCK then block:BLOCK else block_else:BLOCK <- 
-  // Alias.
-  elseif cond then block else block_else;
-  
-  //
-  // Binary operator :
-  //
-  
-  - '||' Left 10  other:BLOCK   :BOOLEAN <- deferred_boolean;
-  
-  - '&&' Left 20  other:BLOCK   :BOOLEAN <- deferred_boolean; 
-  
-  - '|'  Left 10  other:BOOLEAN :BOOLEAN <- deferred_boolean;
-  
-  - '&'  Left 20  other:BOOLEAN :BOOLEAN <- deferred_boolean;
-  
-  - '^' Left 10  other:BOOLEAN :BOOLEAN  <- deferred_boolean;
-  
-  - '->' Right 25 other:BOOLEAN :BOOLEAN <- deferred_boolean;
-
-  - '->>' Right 25 other:BLOCK  :BOOLEAN <- deferred_boolean;
-  
-  - '=>' s:ABSTRACT_STRING <- deferred;
-  
-  //
-  // Prefix operator
-  //
-  
-  - '!' :BOOLEAN <- deferred;
-  
-  //
-  // Convertion
-  //
-  
-  - to_string:STRING <- 
-  ( + result:STRING;
-    
-    deferred;
-    result
-  );
-  
-  - to_integer:INTEGER <- 
-  ( + result:INTEGER;
-    
-    deferred;
-    result
-  );
-  
-  - to_character:CHARACTER <- 
-  ( + result:CHARACTER;
-    
-    deferred;
-    result
-  );
-  
-  - append_in str:STRING <- str.append to_string;
-
-  //
-  // Output.
-  //
-  
-  - print <-
-  (
-    deferred;
-  );
-
-
diff --git a/lib/base/char_unicode.li b/lib/base/char_unicode.li
deleted file mode 100644
index e36c449..0000000
--- a/lib/base/char_unicode.li
+++ /dev/null
@@ -1,376 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded CHAR_UNICODE -> UINTEGER_16;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Static Unicode Character library .";
-
-  - type    := `unsigned short`;
-  - default := '\0';
-  
-Section Insert
-  
-  - parent_character_ref:CHARACTER_REF := CHARACTER_REF;
-  
-Section Public
-    
-  - in_range low:CHAR_UNICODE to up:CHAR_UNICODE :BOOLEAN <- ((Self >= low) && {Self<= up});
-  
-  //
-  // General :
-  //
-  
-  - object_size:INTEGER := 2;
-
-  - pointer_size:INTEGER := 1;
-  
-  - maximum:INTEGER := 0FFFFh;
-  
-  - minimum:INTEGER := 0;
-  
-  //  - '==' other:CHAR_UNICODE :BOOLEAN <- (code == other.code); BSBS=> JBJB A revoir
-/* BSBS: JBJB a revoir ??
-  - code:UINTEGER_16 <-
-  // Unicode code of Current.
-  ( + result:UINTEGER_16;
-    result:=to_uinteger_16;
-    result
-  );
-*/  
-  - to_uinteger_16:UINTEGER_16 <- UINTEGER_16.force_conversion Self;
-  // Auto-cast
-  
-  //  - print <- to_uinteger_16.print; BSBS-> JBJB a revoir !!
-  
-  - to_integer:INTEGER <-
-  // Sign-extended conversion.
-  ( + result:INTEGER;
-    result:=code.to_integer;
-    ? {result.in_range (INTEGER_8.minimum) to (INTEGER_8.maximum)};
-    result
-  );
-  
-  - code:INTEGER_8 <-
-  // ASCII code of Current.
-  // No Sign-extended conversion.
-  ( + result:INTEGER_8;
-    result:=to_integer_8;
-    //? {result.in_range minimum to maximum};
-    result
-  );
-  
-  //
-  // Print.
-  //
-  
-  - print <- IO.put_character Self;
-  
-  //
-  // Switch case :
-  //
-  
-  - when value:CHAR_UNICODE then block:BLOCK :CHAR_UNICODE <-
-  (
-    (Self=value).if block;
-    Self
-  );
-  
-  - when first_value:CHAR_UNICODE to last_value:CHAR_UNICODE then block:BLOCK :CHAR_UNICODE <-
-  ( ? {first_value<=last_value};
-    
-    ((Self>=first_value) && {Self<=last_value}).if block;
-    Self
-  );
-  
-  //
-  // Binary operator :
-  //
-  
-  - '+' other:CHAR_UNICODE :CHAR_UNICODE <- (code+other.code).to_character;
-  
-  - '-' other:CHAR_UNICODE :CHAR_UNICODE <- (code-other.code).to_character;
-  
-  - '!==' other:CHAR_UNICODE :BOOLEAN <- (code !== other.code);
-  // Comparison using `code'.
-  
-  - '==' other:CHAR_UNICODE :BOOLEAN <- (code == other.code);
-  // Comparison using `code'.
-  
-  - '<' other:CHAR_UNICODE :BOOLEAN <- ( code < other.code );
-  // Comparison using `code'.
-  
-  - '<=' other:CHAR_UNICODE :BOOLEAN <- ( code <= other.code );
-  // Comparison using `code'.
-  
-  - '>' other:CHAR_UNICODE :BOOLEAN <- ( code > other.code );
-  // Comparison using `code'.
-  
-  - '>=' other:CHAR_UNICODE :BOOLEAN <- ( code >= other.code );
-  // Comparison using `code'.
-  
-  - decimal_value:INTEGER <-
-  // Gives the value of a decimal digit.
-  ( + result:INTEGER;
-    ? {is_digit};
-    result := to_integer - 48;
-    ? {result.in_range 0 to 9};
-    result
-  );
-  
-  - binary_value:INTEGER <-
-  // Gives the value of a binary digit.
-  ( + result:INTEGER;
-    ? {is_binary_digit};
-    result := code - 48;
-    ? {result.in_range 0 to 1};
-    result
-  );
-  
-  - octal_value:INTEGER <-
-  // Gives the value of an octal digit.
-  ( + result:INTEGER;
-    ? {is_octal_digit};
-    result := code - 48;
-    ? {result.in_range 0 to 7};
-    result
-  );
-  
-  - hexadecimal_value:INTEGER <-
-  // Gives the value of an hexadecimal digit.
-  ( + result:INTEGER;
-    ? {is_hexadecimal_digit};
-    (code < 'A'.code).if {
-      result := code - 48;
-    }.elseif {code<'a'.code} then {
-      result := code - 55;
-    } else {
-      result := code - 87;
-    };
-    ? {result.in_range 0 to 15};
-    result
-  );
-  
-  - same_as other:CHAR_UNICODE :BOOLEAN <-
-  // Case insensitive comparison.
-  // No difference between upper/lower case letters.
-  ( + result:BOOLEAN;
-    (Self = other).if {
-      result:=TRUE;
-    } else {
-      code
-      .when 65 to 90 then {
-	result:=(code = (other.code - 32));
-      }
-      .when 97 to 122 then {
-	result:=(code = (other.code + 32));
-      };
-      ? {result ->> {(to_lower = other) | (to_upper = other)}};
-    };
-    result
-  );
-  
-  - to_upper:CHAR_UNICODE <-
-  // Conversion to the corresponding upper case.
-  ( + result:CHAR_UNICODE;
-    ((code < 97) || {code > 122}).if {
-      result := Self;
-    } else {
-      result := (code - 32).to_character;
-    };
-    result
-  );
-  
-  - to_lower:CHAR_UNICODE <-
-  // Conversion to the corresponding lower case.
-  ( + result:CHAR_UNICODE;
-    ((code < 65) || {code > 90}).if {
-      result := Self;
-    } else {
-      result := (code + 32).to_character;
-    };
-    result
-  );
-  
-  - is_letter:BOOLEAN <-
-  // Is it a letter ('a' .. 'z' or 'A' .. 'Z') ?
-  ( + result:BOOLEAN;
-    (Self >= 'a').if {
-      result := (Self <= 'z');
-    }.elseif {Self >= 'A'} then {
-      result := (Self <= 'Z');
-    };
-    ? {result = (in_range 'A' to 'Z' | in_range 'a' to 'z')};
-    result
-  );
-  
-  - is_digit:BOOLEAN <-
-  // Belongs to '0'..'9'.
-  ( + result:BOOLEAN;
-    (Self >= '0').if {
-      result := (Self <= '9');
-    };
-    ? {result = in_range '0' to '9'};
-    result
-  );
-  
-  - is_binary_digit:BOOLEAN <-
-  // Belongs to '0'..'1'.
-  ( + result:BOOLEAN;
-    result:= (Self = '0') || {Self = '1'};
-    ? {result = in_range '0' to '1'};
-    result
-  );
-  
-  - is_octal_digit:BOOLEAN <-
-  // Belongs to '0'..'7'.
-  ( + result:BOOLEAN;
-    (Self >= '0').if {
-      result := (Self <= '7');
-    };
-    ? {result = in_range '0' to '7'};
-    result
-  );
-  
-  - is_hexadecimal_digit:BOOLEAN <-
-  // Is it one character of "0123456789abcdefABCDEF" ?
-  ( + result:BOOLEAN;
-    (is_digit).if {
-      result := TRUE;
-    }.elseif {Self >= 'a'} then {
-      result := (Self <= 'f');
-    }.elseif {Self >= 'A'} then {
-      result := (Self <= 'F');
-    };
-    ? {result = ("0123456789abcdefABCDEF".has Self)};
-    result
-  );
-  
-  - is_lower:BOOLEAN <-
-  // Is it some lowercase letter ('a'..'z')?
-  ( + result:BOOLEAN;
-    (Self >= 'a').if {
-      result:=(Self <= 'z');
-    };
-    result
-  );
-  
-  - is_upper:BOOLEAN <-
-  // Is it some uppercase letter ('A'..'Z')?
-  ( + result:BOOLEAN;
-    (Self >= 'A').if {
-      result:=(Self <= 'Z');
-    };
-    result
-  );
-  
-  - is_separator:BOOLEAN <-
-  // True when character is a separator.
-  (
-    (Self= ' ') || {Self = '\t'} || {Self='\n'} ||
-    {Self='\r'} || {Self = '\0'} || {Self='\f'} || {Self='\v'}
-  );
-  
-  - is_letter_or_digit:BOOLEAN <-
-  // Is it a letter (see `is_letter') or a digit (see `is_digit') ?
-  ( + result:BOOLEAN;
-    result := (is_letter || {is_digit});
-    ? {result = (is_letter | is_digit)};
-    result
-  );
-  
-  - is_ascii:BOOLEAN := TRUE;
-  // Is character a 8-bit ASCII character?
-  
-  - is_bit:BOOLEAN <- ((Self='0') || {Self='1'});
-  // True for `0' and `1'.
-  
-  - next:CHAR_UNICODE <-
-  // Give the next character (the following `code');
-  ( ? {code<255};
-    (code + 1).to_character
-  );
-  
-  - previous:CHAR_UNICODE <-
-  // Give the previous character (the `code' before);
-  ( ? {code > 0};
-    (code - 1).to_character
-  );
-  
-  //
-  // Conversions:
-  //
-  
-  - to_hexadecimal:STRING <-
-  // Create a new STRING giving the `code' in hexadecimal.
-  // For example :
-  //    (255).to_character.to_hexadecimal gives "FF".
-  // Note: see `to_hexadecimal_in' to save memory.
-  ( + result:STRING;
-    string:=STRING.make 2;
-    to_hexadecimal_in result;
-    ? {result.count = 2};
-    result
-  );
-  
-  - to_hexadecimal_in str:STRING <-
-  // Append the equivalent of `to_hexadecimal' at the end of
-  // `str'. Thus you can save memory because no other
-  // STRING is allocate for the job.
-  ( + c, old_count:INTEGER;
-    
-    old_count:=str.count;
-    c := code >> 4;
-    (c<10).if {
-      str.extend (('0'.code + c).to_character);
-    } else {
-      str.extend (('A'.code - 10 + c).to_character);
-    };
-    c := code & 00001111b;
-    (c<10).if {
-      str.extend (('0'.code + c).to_character);
-    } else {
-      str.extend (('A'.code - 10 + c).to_character);
-    };
-    ? {str.count = (2 + old_count)};
-  );
-  
-  //
-  // Miscellaneous:
-  //
-  
-  - is_alpha:BOOLEAN <-
-  // See `is_letter' (yes this is just a call to `is_letter').
-  // Isn't `is_letter' better English ;-)
-  ( + result:BOOLEAN;
-    result := is_letter;
-    ? {result = is_letter};
-    result
-  );
-  
-  //
-  // Hashing :
-  //
-  
-  - hash_code: INTEGER <- code;
diff --git a/lib/base/character.li b/lib/base/character.li
deleted file mode 100644
index d71dfe9..0000000
--- a/lib/base/character.li
+++ /dev/null
@@ -1,428 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded CHARACTER;
-
-  - export  := INTEGER_8, CHAR_UNICODE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Static Character library (self is mapping on `char' C).";
-
-  - type    := `char`;
-  - default := '\0';
-  
-Section Insert
-  
-  - parent_character_ref:CHARACTER_REF := CHARACTER_REF;
-  
-Section Public
-      
-  - in_range low:CHARACTER to up:CHARACTER :BOOLEAN <- ((Self >= low) && {Self<= up});
-  
-  //
-  // General :
-  //
-  
-  - object_size:INTEGER := 1;
-
-//  - pointer_size:INTEGER := 1;
-  
-  - maximum:INTEGER := 255;
-  
-  - minimum:INTEGER := 0;
-  
-  - to_integer:INTEGER <-
-  // Sign-extended conversion.
-  ( + result:INTEGER;
-    result:=code.to_integer;
-    ? {result.in_range (INTEGER_8.minimum) to (INTEGER_8.maximum)};
-    result
-  );
-  
-  - code:INTEGER_8 <-
-  // ASCII code of Current.
-  // No Sign-extended conversion.
-  ( + result:INTEGER_8;
-    result:=to_integer_8;
-    //? {result.in_range minimum to maximum};
-    result
-  );
-  
-  - to_integer_8:INTEGER_8 <- CONVERT[CHARACTER,INTEGER_8].on Self;
-  // Auto-cast.
-  
-  //- to_char_unicode:CHAR_UNICODE <- CHAR_UNICODE.force_conversion Self;
-  // Auto-cast.
-  
-  - to_uinteger_8:UINTEGER_8 <- CONVERT[CHARACTER,UINTEGER_8].on Self;
-  
-  //
-  // Print.
-  //
-  
-  - print <- IO.put_character Self;
-  
-  //
-  // Switch case :
-  //
-  
-  - when value:CHARACTER then block:BLOCK :CHARACTER <-
-  (
-    (Self=value).if block;
-    Self
-  );
-
-  - when value1:CHARACTER or value2:CHARACTER then block:BLOCK :CHARACTER <-
-  (
-    ((Self = value1) || {Self = value2}).if block;
-    Self
-  );
-  
-  - when first_value:CHARACTER to last_value:CHARACTER then block:BLOCK :CHARACTER <-
-  ( ? {first_value<=last_value};
-
-    ((Self>=first_value) && {Self<=last_value}).if block;
-    Self
-  );
-
-  //
-  // Looping.
-  //
-  
-  - to limit_up:SELF do blc:BLOCK <-
-  (
-    (Self<=limit_up).if {
-      blc.value Self;
-      (Self+1.to_character).to limit_up do blc;
-    };
-  );
-  
-  - downto limit_down:SELF do blc:BLOCK <-
-  (
-    (Self>=limit_down).if {
-      blc.value Self;
-      (Self-1.to_character).downto limit_down do blc;
-    };
-  );
-  
-  - to limit_up:SELF by step:SELF do blc:BLOCK <-
-  (
-    (Self<=limit_up).if {
-      blc.value Self;
-      (Self+step.to_character).to limit_up by step do blc;
-    };
-  );
-  
-  - downto limit_down:SELF by step:SELF do blc:BLOCK <-
-  (
-    (Self>=limit_down).if {
-      blc.value Self;
-      (Self-step.to_character).downto limit_down by step do blc;
-    };
-  );
-  
-  //
-  // Binary operator :
-  //
-  
-  - '+' other:CHARACTER :CHARACTER <- (code+other.code).to_character;
-  
-  - '-' other:CHARACTER :CHARACTER <- (code-other.code).to_character;
-
-  - '-!' other:CHARACTER :INTEGER   <- code - other.code;
-  
-  - '+#' other:INTEGER :CHARACTER <- (code + other).to_character;
-  
-  - '-#' other:INTEGER :CHARACTER <- (code - other).to_character;
-  
-  - '!==' other:CHARACTER :BOOLEAN <- (code !== other.code);
-  // Comparison using `code'.
-  
-  - '==' Right 60 other:CHARACTER :BOOLEAN <- (code == other.code);
-  // Comparison using `code'.
-  
-  - '<' other:CHARACTER :BOOLEAN <- ( code < other.code );
-  // Comparison using `code'.
-  
-  - '<=' other:CHARACTER :BOOLEAN <- ( code <= other.code );
-  // Comparison using `code'.
-  
-  - '>' other:CHARACTER :BOOLEAN <- ( code > other.code );
-  // Comparison using `code'.
-  
-  - '>=' other:CHARACTER :BOOLEAN <- ( code >= other.code );
-  // Comparison using `code'.
-  
-  - decimal_value:INTEGER <-
-  // Gives the value of a decimal digit.
-  ( + result:INTEGER;
-    ? {is_digit};
-    result := to_integer - 48;
-    ? {result.in_range 0 to 9};
-    result
-  );
-  
-  - binary_value:INTEGER <-
-  // Gives the value of a binary digit.
-  ( + result:INTEGER;
-    ? {is_binary_digit};
-    result := code - 48;
-    ? {result.in_range 0 to 1};
-    result
-  );
-  
-  - octal_value:INTEGER <-
-  // Gives the value of an octal digit.
-  ( + result:INTEGER;
-    ? {is_octal_digit};
-    result := code - 48;
-    ? {result.in_range 0 to 7};
-    result
-  );
-  
-  - hexadecimal_value:INTEGER <-
-  // Gives the value of an hexadecimal digit.
-  ( + result:INTEGER;
-    ? {is_hexadecimal_digit};
-    (code < 'A'.code).if {
-      result := code - 48;
-    }.elseif {code<'a'.code} then {
-      result := code - 55;
-    } else {
-      result := code - 87;
-    };
-    ? {result.in_range 0 to 15};
-    result
-  );
-  
-  - same_as other:CHARACTER :BOOLEAN <-
-  // Case insensitive comparison.
-  // No difference between upper/lower case letters.
-  ( + result:BOOLEAN;
-    (Self = other).if {
-      result:=TRUE;
-    } else {
-      code
-      .when 65 to 90 then {
-	result:=(code = (other.code - 32));
-      }
-      .when 97 to 122 then {
-	result:=(code = (other.code + 32));
-      };
-      ? {result ->> {(to_lower = other) | (to_upper = other)}};
-    };
-    result
-  );
-  
-  - to_upper:CHARACTER <-
-  // Conversion to the corresponding upper case.
-  ( + result:CHARACTER;
-    ((code < 97) || {code > 122}).if {
-      result := Self;
-    } else {
-      result := (code - 32).to_character;
-    };
-    result
-  );
-  
-  - to_lower:CHARACTER <-
-  // Conversion to the corresponding lower case.
-  ( + result:CHARACTER;
-    ((code < 65) || {code > 90}).if {
-      result := Self;
-    } else {
-      result := (code + 32).to_character;
-    };
-    result
-  );
-  
-  - is_letter:BOOLEAN <-
-  // Is it a letter ('a' .. 'z' or 'A' .. 'Z') ?
-  ( + result:BOOLEAN;
-    (Self >= 'a').if {
-      result := (Self <= 'z');
-    }.elseif {Self >= 'A'} then {
-      result := (Self <= 'Z');
-    };
-    ? {result = (in_range 'A' to 'Z' | in_range 'a' to 'z')};
-    result
-  );
-  
-  - is_digit:BOOLEAN <-
-  // Belongs to '0'..'9'.
-  ( + result:BOOLEAN;
-    (Self >= '0').if {
-      result := (Self <= '9');
-    };
-    ? {result = in_range '0' to '9'};
-    result
-  );
-  
-  - is_binary_digit:BOOLEAN <-
-  // Belongs to '0'..'1'.
-  ( + result:BOOLEAN;
-    result:= (Self = '0') || {Self = '1'};
-    ? {result = in_range '0' to '1'};
-    result
-  );
-  
-  - is_octal_digit:BOOLEAN <-
-  // Belongs to '0'..'7'.
-  ( + result:BOOLEAN;
-    (Self >= '0').if {
-      result := (Self <= '7');
-    };
-    ? {result = in_range '0' to '7'};
-    result
-  );
-  
-  - is_hexadecimal_digit:BOOLEAN <-
-  // Is it one character of "0123456789abcdefABCDEF" ?
-  ( + result:BOOLEAN;
-    (is_digit).if {
-      result := TRUE;
-    }.elseif {Self >= 'a'} then {
-      result := (Self <= 'f');
-    }.elseif {Self >= 'A'} then {
-      result := (Self <= 'F');
-    };
-    ? {result = ("0123456789abcdefABCDEF".has Self)};
-    result
-  );
-  
-  - is_lower:BOOLEAN <-
-  // Is it some lowercase letter ('a'..'z')?
-  ( + result:BOOLEAN;
-    (Self >= 'a').if {
-      result:=(Self <= 'z');
-    };
-    result
-  );
-  
-  - is_upper:BOOLEAN <-
-  // Is it some uppercase letter ('A'..'Z')?
-  ( + result:BOOLEAN;
-    (Self >= 'A').if {
-      result:=(Self <= 'Z');
-    };
-    result
-  );
-  
-  - is_separator:BOOLEAN <-
-  // True when character is a separator.
-  (
-    (Self= ' ') || {Self = '\t'} || {Self='\n'} ||
-    {Self='\r'} || {Self = '\0'} || {Self='\f'} || {Self='\v'}
-  );
-  
-  - is_letter_or_digit:BOOLEAN <-
-  // Is it a letter (see `is_letter') or a digit (see `is_digit') ?
-  ( + result:BOOLEAN;
-    result := (is_letter || {is_digit});
-    ? {result = (is_letter | is_digit)};
-    result
-  );
-  
-  - is_identifier:BOOLEAN <-
-  // Is it a letter or a digit or '_' ?
-  (
-    (is_letter_or_digit) || {Self = '_'}
-  );
-  
-  - is_ascii:BOOLEAN := TRUE;
-  // Is character a 8-bit ASCII character?
-  
-  - is_bit:BOOLEAN <- ((Self='0') || {Self='1'});
-  // True for `0' and `1'.
-  
-  - next:CHARACTER <-
-  // Give the next character (the following `code');
-  ( ? {code<255};
-    (code + 1).to_character
-  );
-  
-  - previous:CHARACTER <-
-  // Give the previous character (the `code' before);
-  ( ? {code > 0};
-    (code - 1).to_character
-  );
-  
-  //
-  // Conversions:
-  //
-  
-  - to_hexadecimal:STRING <-
-  // Create a new STRING giving the `code' in hexadecimal.
-  // For example :
-  //    (255).to_character.to_hexadecimal gives "FF".
-  // Note: see `to_hexadecimal_in' to save memory.
-  ( + result:STRING;
-    string:=STRING.make 2;
-    to_hexadecimal_in result;
-    ? {result.count = 2};
-    result
-  );
-  
-  - to_hexadecimal_in str:STRING <-
-  // Append the equivalent of `to_hexadecimal' at the end of
-  // `str'. Thus you can save memory because no other
-  // STRING is allocate for the job.
-  ( + c, old_count:INTEGER;
-    
-    old_count:=str.count;
-    c := code >> 4;
-    (c<10).if {
-      str.extend (('0'.code + c).to_character);
-    } else {
-      str.extend (('A'.code - 10 + c).to_character);
-    };
-    c := code & 00001111b;
-    (c<10).if {
-      str.extend (('0'.code + c).to_character);
-    } else {
-      str.extend (('A'.code - 10 + c).to_character);
-    };
-    ? {str.count = (2 + old_count)};
-  );
-  
-  //
-  // Miscellaneous:
-  //
-  
-  - is_alpha:BOOLEAN <-
-  // See `is_letter' (yes this is just a call to `is_letter').
-  // Isn't `is_letter' better English ;-)
-  ( + result:BOOLEAN;
-    result := is_letter;
-    ? {result = is_letter};
-    result
-  );
-  
-  //
-  // Hashing :
-  //
-  
-  - hash_code: INTEGER <- code;
-  
-  
-
diff --git a/lib/base/false.li b/lib/base/false.li
deleted file mode 100644
index 7d486f4..0000000
--- a/lib/base/false.li
+++ /dev/null
@@ -1,132 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded FALSE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "FALSE object";
-
-  - type    := `char`;
-  - default := FALSE;
-  
-Section Inherit
-  
-  - parent_boolean:BOOLEAN := BOOLEAN;
-  
-Section Public
-  
-  //
-  // Conditional :
-  //
-  
-  - if_true block:BLOCK;
-  
-  - if_false block:BLOCK <-
-  ( //? {block!=NULL};
-    block.value;
-  );
-  
-  - if true_block:BLOCK else false_block:BLOCK <-
-  (
-    false_block.value;
-  );
-
-  - if_true true_block:BLOCK else false_block:BLOCK <-
-  (
-    false_block.value;
-  );
-  
-  - if_false true_block:BLOCK else false_block:BLOCK <- 
-  (
-    true_block.value;
-  );
-  
-  - if true_block:BLOCK :BOOLEAN <- FALSE;
-  
-  - elseif cond:BLOCK then block:BLOCK :BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    result := cond.value;
-    result.if {
-      block.value;
-    };
-    result
-  );
-  
-  - elseif cond:BLOCK then block:BLOCK else block_else:BLOCK <-
-  (
-    (cond.value).if {
-      block.value;
-    } else {
-      block_else.value;
-    };
-  );
-  
-  //
-  // Binary operator :
-  //
-  
-  - '=='  Right 60 other:BOOLEAN :BOOLEAN <- ! other;
-  
-  - '!==' Right 60 other:BOOLEAN :BOOLEAN <- other;
-  
-  - '||'  Left 10  other:BLOCK   :BOOLEAN <- other.value;
-  
-  - '&&'  Left 20  other:BLOCK   :BOOLEAN <- FALSE;
-  
-  - '|'   Left 10  other:BOOLEAN :BOOLEAN <- other;
-  
-  - '&'   Left 20  other:BOOLEAN :BOOLEAN <- FALSE;
-  
-  - '^'  Left 10  other:BOOLEAN :BOOLEAN <- other;
-  
-  - '->'  Right 25 other:BOOLEAN :BOOLEAN <- TRUE;
-  
-  - '->>' Right 25 other:BLOCK  :BOOLEAN <- TRUE;
-  
-  - '=>' s:ABSTRACT_STRING <-
-  (
-  );
-  
-  //
-  // Prefix operator
-  //
-  
-  - '!' :BOOLEAN <- TRUE;
-  
-  //
-  // Convertion
-  //
-  
-  - to_string:STRING       <- "0".to_string;
-  
-  - to_integer:INTEGER     <- 0;
-  
-  - to_character:CHARACTER <- '0';
-
-  //
-  // Print.
-  //
-  
-  - print <- "FALSE".print;
\ No newline at end of file
diff --git a/lib/base/low_level/character_ref.li b/lib/base/low_level/character_ref.li
deleted file mode 100644
index 5716ff0..0000000
--- a/lib/base/low_level/character_ref.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := CHARACTER_REF;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :=" .";
-    
-Section Inherit
-  
-  - parent_hashable:HASHABLE <- HASHABLE;
-  
-  - parent_comparable:COMPARABLE <- COMPARABLE;
-  
-Section Public
-  
-  - item:CHARACTER;
-  
-  - set_item value:CHARACTER <-
-  (
-    item := value;
-  );
-
-  - '<' other:SELF : BOOLEAN <-
-  (
-    item < other.item
-  );
-  
-  - code:INTEGER <-
-  // ASCII code of Current
-  (
-    item.code
-  );
-
-  - to_upper:SELF <-
-  (
-    item.to_upper
-  );
-
-  - to_lower:SELF <-
-  // Conversion of Current to lower case
-  (
-    item.to_lower
-  );
-
-  // Object Printing:
-
-  - out_in_tagged_out_memory <- fill_tagged_out_memory;
-      
-  - fill_tagged_out_memory <-
-  (
-    item.fill_tagged_out_memory;
-  );
-      
-  // Hashing:
-  
-  - hash_code:INTEGER <-
-  (
-    item.hash_code
-  );
diff --git a/lib/base/reference.li b/lib/base/reference.li
deleted file mode 100644
index ce6159e..0000000
--- a/lib/base/reference.li
+++ /dev/null
@@ -1,63 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := REFERENCE[E];
-  
-  - import    := E;
-  - export    := E,POINTER;
-  
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "Reference on object (Expanded)";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-    
-  + value:E;
-  
-  //
-  // Creation.
-  //
-
-  - create v:E :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make v;
-    result
-  );
-
-  - make v:E <-
-  ( 
-    value := v;
-  );
-  
-  //
-  // Cast.
-  //
-  
-  - to_e:E <- value;
-    
-  - from_e v:E :SELF <- create v;
diff --git a/lib/base/tools.li b/lib/base/tools.li
deleted file mode 100644
index 52e6d14..0000000
--- a/lib/base/tools.li
+++ /dev/null
@@ -1,48 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TOOLS;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - comment := "Miscellaneous Tools";
-  
-Section Public
-  
-  - unicode_to_ascii uni:FAST_ARRAY[CHAR_UNICODE] to asc:FAST_ARRAY[CHARACTER] <-
-  ( + i:INTEGER;
-    {uni.item i != 0}.while_do {
-      asc.put ((uni.item i & 0FFh).to_uinteger_8) to i;
-      i := i + 1;
-    };
-    asc.put 0 to i;    
-  );
-
-  - ascii_to_unicode asc:FAST_ARRAY[CHARACTER] to uni:FAST_ARRAY[CHAR_UNICODE] <-
-  ( + i:INTEGER;
-    {asc.item i != 0}.while_do {
-      uni.put (asc.item i) to i;
-      i := i + 1;
-    };
-    uni.put 0 to i;    
-  );
diff --git a/lib/base/true.li b/lib/base/true.li
deleted file mode 100644
index b1defd3..0000000
--- a/lib/base/true.li
+++ /dev/null
@@ -1,129 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded TRUE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "TRUE object";
-
-  - type    := `char`;
-  - default := TRUE;
-  
-Section Inherit
-  
-  - parent_boolean:BOOLEAN := BOOLEAN;
-  
-Section Public
-  
-  //
-  // Conditional :
-  //
-  
-  - if_true block:BLOCK  <-
-  (
-    block.value;
-  );
-  
-  - if_false block:BLOCK;
-  
-  - if true_block:BLOCK else false_block:BLOCK <-
-  (
-    true_block.value;
-  );
-  
-  - if_true true_block:BLOCK else false_block:BLOCK <-
-  (
-    true_block.value;
-  );
-  
-  - if_false true_block:BLOCK else false_block:BLOCK <- 
-  (
-    false_block.value;
-  );
-  
-  - if true_block:BLOCK :BOOLEAN <-
-  (
-    true_block.value;
-    TRUE
-  );
-  
-  - elseif cond:BLOCK then block:BLOCK :BOOLEAN <- TRUE;
-  
-  - elseif cond:BLOCK then block:BLOCK else block_else:BLOCK;
-  
-  //
-  // Binary operator :
-  //
-  
-  - '=='  Right 60 other:BOOLEAN :BOOLEAN <- other;
-  
-  - '!==' Right 60 other:BOOLEAN :BOOLEAN <- ! other;
-  
-  - '||'  Left 10  other:BLOCK   :BOOLEAN <- TRUE;   // or else
-  
-  - '&&'  Left 20  other:BLOCK   :BOOLEAN <- other.value;  // and then
-  
-  - '|'   Left 10  other:BOOLEAN :BOOLEAN <- TRUE;  // or
-  
-  - '&'   Left 20  other:BOOLEAN :BOOLEAN <- other; // and
-  
-  - '^'  Left 10  other:BOOLEAN :BOOLEAN <- ! other;
-  
-  - '->'  Right 25 other:BOOLEAN :BOOLEAN <- other;
-
-  - '->>' Right 25 other:BLOCK  :BOOLEAN <- other.value;
-  
-  - '=>' s:ABSTRACT_STRING <-
-  (
-    s.print;
-    `while (1)`;
-  );
-  
-  //
-  // Prefix operator
-  //
-  
-  - '!':BOOLEAN <- FALSE;
-  
-  //
-  // Conversion
-  //
-  
-  - to_string:STRING       <- "1".to_string; // BSBS: A revoir ...
-  
-  - to_integer:INTEGER     <- 1;
-  
-  - to_character:CHARACTER <- '1';
-  
-  //
-  // Print.
-  //
-  
-  - print <- "TRUE".print;
-
-
-
-
-
-
diff --git a/lib/clean.sh b/lib/clean.sh
deleted file mode 100755
index ff16fad..0000000
--- a/lib/clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-for i in `find -name "*~"` ; do rm $i ; done
-for i in `find -name "*.c"` ; do rm $i ; done
-for i in `find -name "*.old"` ; do rm $i ; done
diff --git a/lib/collection/array.li b/lib/collection/array.li
deleted file mode 100644
index 1a453b4..0000000
--- a/lib/collection/array.li
+++ /dev/null
@@ -1,440 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ARRAY[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :=" General purpose resizable ARRAYs .";
-  
-  // General purpose resizable ARRAYs as they are define in the Eiffel language definition.
-  // The `lower' bound can be any arbitrary value, even a negative one.
-  //
-  // This implementation uses only one chunk of memory, the `storage' area which is a 
-  // NATIVE_ARRAY. One must keep in mind that this internal `storage' area is always kept 
-  // left align. Thus, you can expect good performances while using an ARRAY to modelize a
-  // stack behavior with `add_last' / `last' / `remove_last'.
-  // Conversely `add_first' and `remove_first' are likely to slow down your program if 
-  // they are too often used. If the fact that `lower' is always stuck to 0 is not a 
-  // problem for you, also consider FAST_ARRAY to get better performances.
-  
-Section Inherit
-    
-  + parent_arrayed_collection:Expanded ARRAYED_COLLECTION[V];
-  
-Section Public
-  
-  + lower:INTEGER; // Lower index bound.
-  
-  //
-  // Creation and Modification:
-  //
-  
-  - create min_index:INTEGER to max_index:INTEGER :SELF <-
-  // Prepare the array to hold values for indexes in range
-  // [`min_index' .. `max_index']. Set all values to default.
-  // When `max_index' = `min_index' - 1, the array `is_empty'.
-  ( + result:SELF;
-    
-    result := SELF.clone;
-    result.make min_index to max_index;
-    result
-  );
-  
-  - make min_index:INTEGER to max_index:INTEGER <-
-  // Prepare the array to hold values for indexes in range
-  // [`min_index' .. `max_index']. Set all values to default.
-  // When `max_index' = `min_index' - 1, the array `is_empty'.
-  [ ...
-    {min_index <= max_index + 1} -? "Valid bounds.";
-  ]
-  ( 
-    ensure_capacity (max_index - min_index + 1) and_bounds min_index to max_index;
-  )
-  [ ...
-    "Lower set." +? { lower = min_index };
-    "Upper set." +? { upper = max_index };
-    "Items set." +? { all_default };    
-  ];
-  
-  - create_with_capacity needed_capacity:INTEGER lower low:INTEGER :SELF <-
-  // Create an empty array with `capacity' initialized
-  // at least to `needed_capacity' and `lower' set to `low'.
-  ( + result:SELF;
-    
-    result := clone;
-    result.with_capacity needed_capacity lower low;
-    result
-  );
-  
-  - with_capacity needed_capacity:INTEGER lower low:INTEGER <-
-  // Create an empty array with `capacity' initialized
-  // at least to `needed_capacity' and `lower' set to `low'.
-  [ ...
-    -? { needed_capacity >= 0};
-  ]
-  (
-    ensure_capacity needed_capacity and_bounds low to (low-1);
-  )
-  [ ...
-    +? { is_empty };
-    +? { needed_capacity <= capacity };
-    +? { lower = low };
-  ];
-  
-Section Public
-  
-  - ensure_capacity needed_capacity:INTEGER and_bounds low:INTEGER to up:INTEGER <-
-  [ ...
-    -? { up >= low - 1 };
-    -? { needed_capacity >= up - low + 1 };
-  ]
-  (
-    (capacity < needed_capacity).if {
-      storage := NATIVE_ARRAY[V].create needed_capacity;
-      capacity := needed_capacity;
-    };
-    lower := low;
-    upper := up;
-  )
-  [ ...
-    +? { needed_capacity <= capacity };
-    +? { lower = low };
-    +? { upper = up };
-    +? {all_default};
-  ];
-  
-  //
-  // Modification:
-  //
-  
-  - resize min_index:INTEGER to max_index:INTEGER <-
-  // Resize to bounds `min_index' and `max_index'. Do not lose any
-  // item whose index is in both [`lower' .. `upper'] and
-  // [`min_index' .. `max_index']. New positions if any are
-  // initialized with the appropriate default value.
-  [ ...
-    -? { min_index <= max_index + 1 };
-  ]
-  ( + needed, offset, intersize:INTEGER;
-       
-    needed := max_index - min_index + 1;
-    ( needed > 0 ).if {
-      ( needed > capacity ).if {
-	( capacity = 0 ).if {
-	  storage := NATIVE_ARRAY[V].calloc needed;
-	  capacity := needed;
-	} else {
-	  storage := storage.realloc capacity with needed;
-	  capacity := needed;
-	};
-      };
-      offset := lower - min_index;
-      intersize := max_index.min upper - min_index.max lower + 1;
-      ( intersize > 0 ).if {
-	( offset = 0 ).if {
-	  ( intersize < capacity ).if {
-	    storage.clear intersize to (capacity - 1);
-	  };
-	}.elseif { offset < 0 } then {
-	  storage.move (- offset) to (intersize - offset - 1) by offset;
-	  ( intersize < capacity ).if {
-	    storage.clear intersize to ( capacity - 1);
-	  };
-	} else {
-	  storage.move 0 to (intersize - 1) by offset;
-	  storage.clear 0 to ( offset - 1);
-	  ( (intersize + offset) < capacity ).if {
-	    storage.clear (intersize + offset) to (capacity - 1);
-	  };
-	};
-      } else {
-	storage.clear 0 to ( capacity - 1);
-      };
-    };
-    lower := min_index;
-    upper := max_index;
-  )
-  [ ...
-    +? { lower = min_index };
-    +? { upper = max_index };
-  ];
-  
-  
-  - reindex new_lower:INTEGER <-
-  // Change indexing to take in account the expected `new_lower'
-  // index. The `upper' index is translated accordingly.
-  ( + i:INTEGER;
-    
-    i := new_lower - lower;
-    lower := lower + i;
-    upper := upper + i;
-  )
-  [ ...
-    +? { lower = new_lower };
-    +? { count = old count };
-  ];
-  
-  //
-  // Implementation of deferred:
-  //
-  
-  - subarray min:INTEGER to max:INTEGER :SELF <-
-  ( + result:SELF;    
-
-    result := slice min to max;
-    result.reindex min;
-    result
-  )
-  [ ...
-    +? { Result.lower = min };
-  ];
-  
-  - is_empty:BOOLEAN <- ( upper < lower );
-  
-  - count:INTEGER <- ( upper - lower + 1 );
-  
-  - item i:INTEGER :V <-
-  ( 
-    storage.item (i - lower)
-  );
-  
-  - put element:V to i:INTEGER <-
-  ( 
-    storage.put element to (i - lower);    
-  );
-    
-  - force element:V to index:INTEGER <-
-  (     
-    (upper < index).if {
-      (index = upper + 1).if {
-	add_last element;
-      } else {
-	resize (lower,index);
-	put element to index;
-      };
-    }.elseif { index < lower } then {
-      resize (index,upper);
-      put element to index;
-    } else {
-      put element to index;
-    };
-  )
-  [ ...
-    +? { lower = index.min (Old lower) };    
-  ];
-  
-  - copy other:SELF <-
-  ( +  needed_capacity:INTEGER;
-    
-    lower := other.lower;
-    upper := other.upper;
-    needed_capacity := upper - lower + 1;
-    ( capacity < needed_capacity ).if {
-      storage := storage.create needed_capacity;
-      capacity := needed_capacity;
-    };
-    ( needed_capacity > 0 ).if {
-      storage.copy_from (other.storage) until (needed_capacity - 1);
-    };
-  );
-  
-  - set_all_with v:V <-
-  ( 
-    storage.set_all_with v until (upper - lower);    
-  );
-  
-  - remove_first <-
-  ( 
-    storage.remove_first (upper - lower);
-    lower := lower + 1;
-  )
-  [ ...
-    +? {upper = Old upper};
-  ];
-  
-  - remove_head n:INTEGER <-
-  (
-    storage.move (n - lower + 1) to (upper - lower) by (-n);
-    lower := lower + n;
-  )
-  [ ...
-    +? {upper = Old upper};
-  ];
-  
-  - remove index:INTEGER <-
-  ( 
-    storage.remove (index - lower) until (upper - lower);
-    upper := upper - 1;        
-  );
-  
-  - clear <-
-  (
-    upper := lower - 1;    
-  )
-  [ ...
-    +? {capacity = Old capacity};   
-  ];
-  
-  - add_first element:V <-
-  ( 
-    (upper < lower).if {
-      add_last element;
-    } else {
-      add_last element;
-      move (lower,(upper - 1),1);
-      put (element,lower);
-    };
-  );
-  
-  - add_last element:V <-
-  ( + new_capacity:INTEGER;
-    
-    ( capacity < count + 1 ).if {
-      ( capacity = 0 ).if {
-	new_capacity := 16;
-	storage := storage.create new_capacity;
-	capacity := new_capacity;
-      } else {
-	new_capacity := 2 * capacity;
-	storage := storage.realloc capacity with new_capacity;
-	capacity := new_capacity;
-      };
-    };
-    upper := upper + 1;
-    put element to upper;   
-  );
-  
-  - from_collection model:COLLECTION[V] <-
-  (
-    with_capacity ((model.count),(model.lower));    
-    upper := modele.upper;    
-    (model.lower).to (model.upper) do { i:INTEGER;
-      put ((model.item i),i);
-    };
-  )
-  [ ...
-    +? { lower = model.lower };
-    +? { upper = model.upper };
-  ];
-  
-  - all_default:BOOLEAN <-
-  (
-    storage.all_default (upper - lower)
-  );
-  
-  - occurrences element:V :INTEGER <-
-  ( 
-    storage.occurrences element until (upper - lower)
-  );
-  
-  - fast_occurrences element:V :INTEGER <-
-  ( 
-    storage.fast_occurrences element until (upper - lower)
-  );
-  
-  - first_index_of element:V :INTEGER <-
-  ( + result:INTEGER;
-    
-    (upper >= lower).if {
-      result := lower + storage.first_index_of element until (upper - lower);
-    } else {
-      result := lower;
-    };
-  );
-  
-  - index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    
-    (upper >= lower).if {
-      result := lower + storage.index_of (element,start_index - lower) until (upper - lower);
-    } else {
-      result := lower;
-    };
-    result    
-  );
-  
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    
-    (upper >= lower).if {
-      result := lower + storage.reverse_index_of element from (start_index - lower);
-    } else {
-      result := lower;
-    };
-  );
-  
-  - fast_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    
-    (upper >= lower).if {
-      result := lower + storage.fast_index_of (element,start_index - lower) until (upper - lower);
-    } else {
-      result := lower;
-    };
-    result
-  );
-  
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    
-    (upper >= lower).if {
-      result := lower + storage.fast_reverse_index_of element from (start_index - lower);
-    } else {
-      result := lower;
-    };
-    result
-  );
-			
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;    
-    
-    (Self = other).if {
-      result := true;
-    }.elseif {(lower = other.lower) && {upper = other.upper}} then {
-      result := storage.fast_memcmp (other.storage) until count;
-    };    
-    result
-  );
-  
-  - is_equal_map other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    ( Self = other ).if {
-      result := true;
-    }.elseif {(lower = other.lower) && {upper = other.upper}} then {
-      result := storage.memcmp (other.storage) until count;
-    };  
-    result
-  );
-  
-  - slice min:INTEGER to max:INTEGER :SELF <-
-  ( + result:SELF;
-        
-    result := SELF.create lower to (lower + max - min);
-    (max >= min).if {
-      // Slice not empty
-      result.storage.slice_copy storage to 0 from (min - lower) to (max - lower);
-    };    
-  );
-  
diff --git a/lib/collection/array2.li b/lib/collection/array2.li
deleted file mode 100644
index 0a8706b..0000000
--- a/lib/collection/array2.li
+++ /dev/null
@@ -1,387 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ARRAY2[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :=" General prurpose, resizable, two dimensional array.";
-    
-Section Inherit
-
-  + parent_collection2:Expanded COLLECTION2[V];
-  
-Section Public
-  
-  + lower1:INTEGER;
-  + lower2:INTEGER;
-  
-  + upper1:INTEGER;
-  + upper2:INTEGER;
-  
-Section ARRAY2
-  
-  + storage:NATIVE_ARRAY[V];
-  // To store elements line by line.
-
-  + capacity:INTEGER;
-  // Number of elements in `storage'.
-  
-Section Public
-  
-  //
-  // Creation / modification:
-  //
-  
-  - create (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) :SELF <-
-  // Reset all bounds `line_minimum' / `line_maximum' / `column_minimum' and
-  // `column_maximum' using arguments as new values.
-  // All elements are set to the default value of type E.
-  ( + result:SELF;
-    
-    result:= clone;
-    result.make (line_min, column_min) to (line_max, column_max);
-    result
-  );
-
-  - make (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) <-
-  // Reset all bounds `line_minimum' / `line_maximum' / `column_minimum' and
-  // `column_maximum' using arguments as new values.
-  // All elements are set to the default value of type E.
-  [ ...
-    -? {line_min <= line_max};
-    -? {column_min <= column_max};
-  ]
-  (
-    lower1 := line_min;
-    upper1 := line_max;
-    lower2 := column_min;
-    upper2 := column_max;
-
-    (capacity >= count).if {
-      storage.clear_all (count - 1);
-    } else {
-      capacity := count;
-      storage := NATIVE_ARRAY[V].create count;
-    }; 
-  )
-  [ ...
-    +? {line_minimum = line_min};
-    +? {line_maximum = line_max};
-    +? {column_minimum = column_min};
-    +? {column_maximum = column_max};
-  ];
-
-  - from_collection2 model:COLLECTION2[V] <-
-  (
-    make (model.line_minimum,model.column_minimum) 
-    to   (model.line_maximum,model.column_maximum);
-    
-    line_minimum.to line_maximum do { i:INTEGER;
-      column_minimum.to column_maximum do { j:INTEGER;
-      	put (model.item (i,j)) to (i,j);
-      }; 
-    };
-  )
-  [ ...
-    +? { lower1 = model.lower1 };
-    +? { lower2 = model.lower2 };
-  ];
-
-  - from_collection contents:COLLECTION[V] 
-  size (line_min,column_min:INTEGER) to (line_max,column_max:INTEGER) <-
-  //  Reset all bounds using `line_min', `line_max', `column_min',
-  //  and `column_max' .
-  //  Copy all elements of `contents', line by line into Current.
-  [ ...
-    -? { line_min <= line_max };
-    -? { column_min <= column_max };
-    -? { contents.count = (line_max - line_min + 1) * (column_max - column_min +1) };
-  ]
-  (    
-    make (line_min,column_min) to (line_max,column_max);        
-    0.to (count - 1) do { i:INTEGER;
-      storage.put (contents.item (contents.lower + i)) to i;
-    }; 
-  )
-  [ ...
-    +? { line_minimum = line_min };
-    +? { line_maximum = line_max };
-    +? { column_minimum = column_min };
-    +? { column_maximum = column_max };
-    +? { count = contents.count };
-  ];
-    
-  - from_model model:COLLECTION[COLLECTION[V]] <-
-  // The `model' is used to fill line by line the COLLECTION2.
-  // Assume all sub-collections of `model' have the same indexing.
-  (
-    make (model.lower,model.first.lower) to (model.upper,model.first.upper);
-
-    (model.lower).to (modele.upper) do { line:INTEGER;
-      (model.first.lower).to (model.first.upper) do { column:INTEGER;
-	put (model.item line.item column) to (line,column);
-      }; 
-    };
-  )
-  [ ...
-    -? { line_minimum = model.lower};
-    -? { line_maximum = model.upper};
-    -? { column_minimum = model.first.lower};
-    -? { column_maximum = model.first.upper};
-  ];
-  
-  //
-  // Resizing:
-  //
-  
-  - resize (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) <-
-  // Resize bounds of the Current array
-  [ ...
-    -? { line_max >= line_min };
-    -? { column_max >= column_min };
-  ]
-  ( + tmp:SELF;
-        
-    tmp := SELF.create (line_min,column_min) to (line_max, column_max);    
-    // BSBS: It may be possible to avoid this ceation when :
-    // BSBS:   new `capacity' <= old `capacity'
-    lower1.to line_maximum do { l:INTEGER;
-      lower2.to column_maximum do { c:INTEGER;
-	(tmp.valid_index (l,c)).if {
-	  tmp.put (item (l,c)) to (l,c);
-	}; 
-      }; 
-    };     
-    standard_copy tmp;
-  )
-  [ ...
-    +? { line_minimum = line_min };
-    +? { line_maximum = line_max };
-    +? { column_minimum = column_min };
-    +? { column_maximum = column_max };
-  ];
-  
-  //
-  // Implementation of others feature from COLLECTION2:
-  //
-  
-  - item (line,column:INTEGER) :V <-
-  (
-    storage.item ((line - lower1) * count2 + column - lower2)
-  );
-    
-  - put element:V to (line,column:INTEGER) <-
-  (
-    storage.put element to ((line - lower1) * count2 + column - lower2);
-  );
-    
-  - count1:INTEGER <-
-  (
-    upper1 - lower1 + 1
-  );
-    
-  - count2:INTEGER <-
-  (
-    upper2 - lower2 + 1
-  );
-    
-  - count:INTEGER <-
-  (
-    count1 * count2
-  );
-    
-  - force x:V to (line, column:INTEGER) <-
-  (
-    (! valid_index (line,column)).if {
-      resize (line.min lower1,column.min lower2) to 
-      (line.max upper1,column.max upper2);
-    };
-    put x to (line,column);
-  );
-    
-  - set_all_with element:V <-
-  (
-    storage.set_all_with element until (count - 1);
-  );
-    
-  - replace_all old_value:V with new_value:V <-
-  (
-    storage.replace_all old_value with new_value until (count - 1);
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  (
-    storage.fast_replace_all old_value with new_value until (count - 1);
-  );
-    
-  - sub_collection2 (line_min, column_min:INTEGER) to (line_max, column_max:INTEGER) :SELF <- 
-  ( + k:INTEGER;
-    + result:SELF;
-    
-    result := SELF.create (line_min,column_min) to (line_max,column_max);    
-    k := 0;
-    line_min.to line_max do { i:INTEGER;      
-      column_min.to column_max do { j:INTEGER;
-	result.storage.put (item (i,j)) to k;
-	k := k + 1;
-      }; 
-    }; 
-    result
-  )
-  [ ...
-    +? { result.lower1 = line_min };
-    +? { result.lower2 = column_min };
-    +? { result.upper1 = line_max };
-    +? { result.upper2 = column_max };
-  ];
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  (
-    storage.occurrences elt until (count - 1)    
-  );
-    
-  - fast_occurrences elt:V :INTEGER <-
-  (
-    storage.fast_occurrences elt until (count - 1)    
-  );
-    
-  - has x:V :BOOLEAN <-
-  // Search if a element x is in the array using `equal'.
-  // See also `fast_has' to chose the apropriate one.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.first_index_of x until (count - 1) <= count - 1;
-    };
-    result
-  );
-    
-  - fast_has x:V :BOOLEAN <-
-  //  Search if a element x is in the array using `='.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.fast_first_index_of x until (count - 1) <= count - 1;
-    };
-    result
-  );
-  
-  - all_default:BOOLEAN <-
-  (
-    storage.all_default (count - 1)
-  );
-    
-  - swap (line1, column1:INTEGER) with (line2, column2:INTEGER) <-
-  ( + tmp:V;
-    + c2, index1, index2:INTEGER; 
-    
-    c2 := count2;
-    index1 := (line1 - lower1) * c2 + column1 - lower2;
-    index2 := (line2 - lower1) * c2 + column2 - lower2;
-    tmp := storage.item index1;
-    storage.put (storage.item index2) to index1;
-    storage.put tmp to index2;
-  );
-    
-  - copy other:SELF <-
-  (
-    lower1 := other.lower1;
-    upper1 := other.upper1;
-    lower2 := other.lower2;
-    upper2 := other.upper2;
-    (capacity < count).if {
-      capacity := count;
-      storage := storage.calloc count;
-    };
-    storage.copy_from (other.storage) until (count - 1);
-  );
-    
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    result := FALSE;
-    ( other = Self ).if {
-      result := TRUE;
-    }.elseif { lower1 != other.lower1 } then {
-    }.elseif { lower2 != other.lower2 } then {
-    }.elseif { upper1 != other.upper1 } then {
-    }.elseif { upper2 != other.upper2 } then {
-    } else {
-      result := storage.memcmp (other.storage) until count;
-    };
-    
-    result
-  );
-  
-  //
-  // Other features:
-  //
-  
-  - transpose <-
-  // Transpose the Current array
-  ( + oldu1,oldu2 :INTEGER;
-    + oldl1,oldl2 :INTEGER;
-    + tmp1,tmp2:INTEGER;
-    
-    oldu1 := line_maximum;
-    oldu2 := column_maximum;
-    oldl1 := lower1;
-    oldl2 := lower2;
-    tmp1 := lower1.min lower2;
-    tmp2 := line_maximum.max column_maximum;
-    resize (tmp1,tmp1) to (tmp2,tmp2);    
-    lower1.to line_maximum do { i:INTEGER;      
-      (i + 1).to column_maximum do { j:INTEGER;
-	swap (i,j) with (j,i);
-      };
-    };     
-    resize (oldl2,oldl1) to (oldu2,oldu1);
-  )
-  [ ...
-    +? { line_minimum = Old column_minimum };
-    +? { column_minimum = Old line_minimum };
-    +? { line_maximum = Old column_maximum };
-    +? { column_maximum = Old line_maximum };
-    +? { count = Old count };
-  ];
-  
-  - to_external:POINTER <-
-  // Gives C access to the internal `storage' (may be dangerous).
-  (
-    storage.to_external
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    -? { count2 = upper2 - lower2 + 1 };
-//    -? { capacity >= count }
-//  ]; 
-  
diff --git a/lib/collection/array3.li b/lib/collection/array3.li
deleted file mode 100644
index f3470e8..0000000
--- a/lib/collection/array3.li
+++ /dev/null
@@ -1,399 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ARRAY3[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :=" General prurpose, resizable, three dimensional array..";
-    
-Section Inherit
-  
-  + parent_collection3:Expanded COLLECTION3[V];
-  
-Section Public
-  
-  + lower1:INTEGER;
-  + lower2:INTEGER;
-  + lower3:INTEGER;
-  
-  + upper1:INTEGER;
-  + upper2:INTEGER;
-  + upper3:INTEGER;
-  
-  + count1:INTEGER;
-  + count2:INTEGER;
-  + count3:INTEGER;
-  
-  + count:INTEGER;
-  
-Section ARRAY3
-  
-  + storage:NATIVE_ARRAY[V];
-  // To store elements line by line.
-  
-  + capacity:INTEGER;
-  // Number of elements in `storage'.
-  
-Section Public
-  
-  //
-  // Creation / modification:
-  // 
-  
-  - create (line_min, column_min, depth_min:INTEGER) 
-  to (line_max, column_max, depth_max:INTEGER) :SELF <-
-  // Reset all bounds `line_minimum' / `line_maximum' / `column_minimum'
-  // `column_maximum' / `depth_min' and `depth_max' using arguments as
-  // new values. All elements are set to the default value of type E.
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (line_min, column_min, depth_min) to (line_max, column_max, depth_max);
-    result
-  );  
-  
-  - make (line_min, column_min, depth_min:INTEGER) to (line_max, column_max, depth_max:INTEGER) <-
-  // Reset all bounds `line_minimum' / `line_maximum' / `column_minimum'
-  // `column_maximum' / `depth_min' and `depth_max' using arguments as
-  // new values. All elements are set to the default value of type E.
-  [ ...
-    -? { line_min   <= line_max   };
-    -? { column_min <= column_max };
-    -? { depth_min  <= depth_max  };
-  ]
-  (  
-    lower1 := line_min;
-    upper1 := line_max;
-    lower2 := column_min;
-    upper2 := column_max;
-    lower3 := depth_min;
-    upper3 := depth_max;
-    count1 := upper1 - lower1 + 1;
-    count2 := upper2 - lower2 + 1;
-    count3 := upper3 - lower3 + 1;
-    count := count1 * count2 * count3;
-    (capacity >= count).if {
-      storage.clear_all (count - 1);
-    } else {
-      capacity := count;
-      storage := NATIVE_ARRAY[V].calloc count;
-    };
-  )
-  [ ...
-    +? { line_minimum = line_min };
-    +? { line_maximum = line_max };
-    +? { column_minimum = column_min };
-    +? { column_maximum = column_max };
-    +? { depth_minimum = depth_min };
-    +? { depth_maximum = depth_max };
-  ];
-    
-  - from_collection3 model:COLLECTION3[V] <-
-  (
-    make (model.line_minimum, model.column_minimum, model.depth_minimum) 
-    to   (model.line_maximum, model.column_maximum, model.depth_maximum);
-    
-    line_minimum.to line_maximum do { i:INTEGER;      
-      column_minimum.to column_maximum do { j:INTEGER;	 
-	depth_minimum.to depth_maximum do { k:INTEGER;
-	  put (model.item (i,j,k)) to (i,j,k);
-	}; 
-      }; 
-    }; 
-  )
-  [ ...
-    +? { lower1 = model.lower1 };
-    +? { lower2 = model.lower2 };
-    +? { lower3 = model.lower3 };
-  ];
-    
-  - from_collection contents:COLLECTION[V] 
-  size (line_min,column_min,depth_min:INTEGER) 
-  to (line_max,column_max,depth_max:INTEGER) <-
-  // Reset all bounds using `line_min', `line_max', `column_min',
-  // `column_max', `depth_min', and `depth_max'.
-  // Copy all elements of `contents', line by line into Current.
-  [ ...
-    -? { line_min <= line_max };
-    -? { column_min <= column_max };
-    -? { depth_min <= depth_max };
-    -? { 
-      contents.count = (line_max - line_min + 1) * 
-      (column_max - column_min + 1) * 
-      (depth_max - depth_min + 1) 
-    };
-  ]
-  (    
-    make (line_min,column_min,depth_min) to (line_max,column_max,depth_max);
-    
-    0.to (count - 1) do { i:INTEGER;
-      storage.put (contents.item (contents.lower + i)) to i;
-    }; 
-  )
-  [ ...
-    +? { line_minimum = line_min };
-    +? { line_maximum = line_max };
-    +? { column_minimum = column_min };
-    +? { column_maximum = column_max };
-    +? { depth_minimum = depth_min };
-    +? { depth_maximum = depth_max };
-    +? { count = contents.count };
-  ];
-    
-  - from_model model:COLLECTION[COLLECTION[COLLECTION[V]]] <-
-  //The `model' is used to fill line by line the COLLECTION3.
-  //Assume all sub-collections of have the same indexing.
-  (
-    make (model.lower,model.first.lower,model.first.first.lower) 
-    to   (model.upper,model.first.upper,model.first.first.upper);
-    
-    (model.lower).to (model.upper) do { line:INTEGER;
-      (model.first.lower).to (model.first.upper) do { column:INTEGER;
-	(model.first.first.lower).to (model.first.first.upper) do { depth:INTEGER;
-	  put (model.item line.item column.item depth) to (line,column,depth);
-	}; 
-      };
-    };
-  )
-  [ ...
-    -? { line_minimum = model.lower };
-    -? { line_maximum = model.upper };
-    -? { column_minimum = model.first.lower };
-    -? { column_maximum = model.first.upper };
-    -? { depth_minimum = model.first.first.lower };
-    -? { depth_maximum = model.first.first.upper };
-  ];
-  
-  //
-  // Resizing:
-  //
-  
-  - resize (line_min, column_min, depth_min:INTEGER) to (line_max, column_max, depth_max:INTEGER) <-
-  // Resize bounds of the Current array
-  [ ...
-    -? { line_max   >= line_min   };
-    -? { column_max >= column_min };
-    -? { depth_max  >= depth_min  };
-  ]
-  ( + tmp:SELF;
-        
-    tmp := SELF.clone;
-    tmp.make (line_min, column_min, depth_min) to (line_max, column_max, depth_max);
-    //BSBS: It may be possible to avoid this creation when :
-    //BSBS:   new `capacity' <= old `capacity'
-    
-    lower1.to line_maximum do { l:INTEGER;
-      lower2.to column_maximum do { c:INTEGER;
-	lower3.to depth_maximum do { d:INTEGER;
-	  (tmp.valid_index (l,c,d)).if {
-	    tmp.put (item (l,c,d)) to (l,c,d);
-	  }; 
-	}; 
-      }; 
-    }; 
-    
-    standard_copy tmp;
-  )
-  [ ...
-    +? { line_minimum = line_min };
-    +? { line_maximum = line_max };
-    +? { column_minimum = column_min };
-    +? { column_maximum = column_max };
-    +? { depth_minimum = depth_min };
-    +? { depth_maximum = depth_max };
-  ];
-  
-  //
-  // Implementation of others feature from COLLECTION3:
-  //
-  
-  - item (line, column, depth:INTEGER) :V <-
-  (
-    storage.item (
-      (line - lower1) * count2 * count3 + 
-      (column - lower2) * count3 + depth - lower3
-    )
-  );
-    
-  - put element:V to (line, column, depth:INTEGER) <-
-  (
-    storage.put element to (
-      (line - lower1) * count2 * count3 + 
-      (column - lower2) * count3 + depth - lower3
-    );
-  );
-    
-  - force x:V to (line, column, depth:INTEGER) <-
-  (
-    (! valid_index (line,column,depth)).if {
-      resize (line.min lower1,column.min lower2,depth.min lower3) 
-      to     (line.max upper1,column.max upper2,depth.max upper3);
-    };
-    put x to (line,column,depth);
-  );
-    
-  - set_all_with element:V <-
-  (
-    storage.set_all_with element with (count - 1);
-  );
-    
-  - replace_all old_value:V with new_value:V <-
-  (
-    storage.replace_all old_value with new_value until (count - 1);
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  (
-    storage.fast_replace_all old_value with new_value until (count - 1);
-  );
-    
-  - sub_collection3 (line_min, column_min, depth_min:INTEGER) 
-  to (line_max, column_max, depth_max:INTEGER) :SELF <-
-  ( + n:INTEGER;
-    + result:SELF;
-    
-    result := create (line_min,column_min,depth_min) to (line_max,column_max,depth_max);
-    
-    line_min.to line_max do { i:INTEGER;
-      column_min.to column_max do { j:INTEGER;
-	depth_min.to depth_max do { k:INTEGER;
-	  result.storage.put (item (i,j,k)) to n;
-	  n := n + 1;
-	}; 
-      };
-    };
-    result
-  )
-  [ ...   
-    +? { result.lower1 = line_min   };
-    +? { result.lower2 = column_min };
-    +? { result.lower3 = depth_min  };
-    +? { result.upper1 = line_max   };
-    +? { result.upper2 = column_max };
-    +? { result.upper3 = depth_max  };    
-  ];
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  (
-    storage.occurrences elt until (count - 1)
-  );
-    
-  - fast_occurrences elt:V :INTEGER <-
-  (
-    storage.fast_occurrences elt until (count - 1)
-  );
-    
-  - has x:V :BOOLEAN <-
-  //Search if a element x is in the array using `equal'.
-  //See also `fast_has' to choose the apropriate one.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.index_of x until (count - 1) <= count - 1;
-    };
-    result
-  );
-    
-  - fast_has x:V :BOOLEAN <-
-  // Search if a element x is in the array using `='.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.fast_index_of x until (count - 1) <= count -1;
-    };
-    result
-  );
-    
-  - all_default:BOOLEAN <-
-  (
-    storage.all_default (count - 1)
-  );
-    
-  - swap (line1, column1, depth1:INTEGER) with (line2, column2, depth2:INTEGER) <-
-  ( + tmp:V;
-    + index1, index2:INTEGER;
-    
-    index1 := (line1 - lower1) * count2 * count3 + (column1 - lower2) * count3 + depth1 - lower3;
-    index2 := (line2 - lower1) * count2 * count3 + (column2 - lower2) * count3 + depth2 - lower3;
-    tmp := storage.item index1;
-    storage.put(storage.item index2) to index1;
-    storage.put tmp to index2;
-  );
-    
-  - copy other:SELF <-
-  (
-    lower1 := other.lower1;
-    upper1 := other.upper1;
-    lower2 := other.lower2;
-    upper2 := other.upper2;
-    lower3 := other.lower3;
-    upper3 := other.upper3;
-    count  := other.count;
-    count1 := other.count1;
-    count2 := other.count2;
-    count3 := other.count3;
-    (capacity < count).if {
-      capacity := count;
-      storage := storage.calloc count;
-    };
-    storage.copy_from (other.storage) until (count - 1);
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    -? { count1 = upper1 - lower1 + 1 };
-//    -? { count2 = upper2 - lower2 + 1 };
-//    -? { count3 = upper3 - lower3 + 1 };
-//    -? { capacity >= count };
-//  ];
-  
-  
-/*  
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    result := FALSE;
-    
-    ( other = Self ).if {
-      result := true;
-    }.elseif { lower1 != other.lower1 } then {
-    }.elseif { lower2 != other.lower2 } then {
-    }.elseif { lower3 != other.lower3 } then {
-    }.elseif { upper1 != other.upper1 } then {
-    }.elseif { upper2 != other.upper2 } then {
-    }.elseif { upper3 != other.upper3 } then {
-    } else {
-      result := storage.memcmp (other.storage) until count;
-    };
-    
-    result
-  );
-*/
\ No newline at end of file
diff --git a/lib/collection/avl_dictionary.li b/lib/collection/avl_dictionary.li
deleted file mode 100644
index 4c2c8c4..0000000
--- a/lib/collection/avl_dictionary.li
+++ /dev/null
@@ -1,216 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := AVL_DICTIONARY[V, K];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Associative memory. Values of type `V' are stored using Keys of type `K'.";
-	
-  // Efficient implementation of DICTIONARY using an AVL balanced tree. 
-  // AVL stands for the names of G. M. Adel'son-Velskii and E. M. Landis, 
-  // two Russian mathematicians who first came up with this method of keeping 
-  // the tree balanced.
-
-Section Insert
-  
-  + parent_avl_tree:Expanded AVL_TREE[K];
-
-Section Inherit
-  
-  + parent_simple_dictionary:Expanded SIMPLE_DICTIONARY[V, K];
-  
-Section Private
-  
-  - key_memory:K <- item_memory;
-		
-Section Public
-  
-  - capacity:INTEGER <- count;
-
-  - at k:K :V <- 
-  ( + dic:AVL_DICTIONARY_NODE[V,K];
-    dic ?= root.at k;
-    dic.value
-  );
-
-  - fast_at k:K :V <- 
-  ( + dic:AVL_DICTIONARY_NODE[V,K];
-    dic ?= root.fast_at k;
-    dic.value
-  );
-
-  - reference_at k:K :V <-
-  ( + result:V;
-    + n:AVL_DICTIONARY_NODE[V, K];
-    
-    (root != NULL).if {
-      n := root.at k;
-      (n != NULL).if {
-	result := n.value;
-      };
-    };
-    result
-  );
-
-  - fast_reference_at k:K :V <-
-  ( + result:V;
-    + n:AVL_DICTIONARY_NODE[V, K];
-		
-    (root != NULL).if {
-      n := root.fast_at k;
-      (n != NULL).if {
-	result := n.value;
-      };
-    };
-    result
-  );
-  
-  - put v:V to k:K <- add v to k;
-  
-  - add v:V to k:K <-
-  (
-    value_memory := v;
-    key_memory := k;
-    root := do_insert root;
-  );
-
-  - fast_put v:V to k:K <-
-  (
-    value_memory := v;
-    key_memory := k;
-    root := fast_do_insert root;
-  );
-
-  - occurrences v:V :INTEGER <-
-  ( + result:INTEGER;
-    
-    (root != NULL).if {
-      result := root.occurrences v;
-    };
-    result
-  );
-
-  - fast_occurrences v:V :INTEGER <-
-  ( + result:INTEGER;
-    
-    (root != NULL).if {
-      result := root.fast_occurrences v;
-    };
-    result
-  );
-
-  - key_at v:V :K <- root.key_at v;
-		
-  - fast_key_at v:V :K <- root.fast_key_at v;
-
-  - clear_count <- clear_count_and_capacity;
-
-  - clear_count_and_capacity <-
-  (
-    (! is_empty).if {
-      clear_nodes root;
-      root := NULL;
-      count := 0;
-      map_dirty := TRUE;
-    };
-  );
-
-  - item i:INTEGER :V <-
-  ( + dic:AVL_DICTIONARY_NODE[V,K];
-    (map_dirty).if {
-      build_map;
-    };
-    dic ?= map.item (i - 1);
-    dic.value
-  );
-
-  - key index:INTEGER :K <-
-  (
-    (map_dirty).if {
-      build_map;
-    };
-    map.item (index - 1).key
-  );
-
-  - internal_key k:K :K <- root.at(k).key;
-  
-  - make <-
-  (
-    map := FAST_ARRAY[AVL_TREE_NODE[K]].create 0;
-    // lost_nodes ::= common_lost_nodes.reference_at(generating_type)
-    // if lost_nodes = NULL then
-    //	create lost_nodes.set_item(NULL)
-    //	common_lost_nodes.add(lost_nodes, generating_type)
-    //end
-  );
-
-Section Private
-  
-  + value_memory:V;
-
-  - set_value_and_key n:AVL_TREE_NODE[K] <-
-  ( + dic:AVL_DICTIONARY_NODE[V,K];
-    
-    dic ?= n;
-    dic.make (value_memory, key_memory);
-  );
-
-  - set_value n:AVL_TREE_NODE[K] <-
-  ( + dic:AVL_DICTIONARY_NODE[V,K];
-    
-    dic ?= n;
-    dic.set_value value_memory;
-  );
-
-  - exchange_and_discard (n1, n2:AVL_TREE_NODE[K]) <-
-  (
-    n1.set_key (n2.key);
-    n1.set_value (n2.value);
-    rebalance := TRUE;
-    count := count - 1;
-    discard_node n2;
-  );
-
-  - discard_node n:AVL_DICTIONARY_NODE[V, K] <-
-  ( + v:V;
-    + k:K;
-		
-    n.make (v, k);
-  );
-
-  - a_new_node:AVL_DICTIONARY_NODE[V, K] <-
-  (
-    AVL_DICTIONARY_NODE[V, K].clone
-  );
-  
-  
-  //		
-  //invariant
-  //
-  
-  //[ ...
-   // -? {lost_nodes != NULL};
-   // -? {lost_nodes = common_lost_nodes.at generating_type};
-  //]
-
diff --git a/lib/collection/avl_set.li b/lib/collection/avl_set.li
deleted file mode 100644
index 716100a..0000000
--- a/lib/collection/avl_set.li
+++ /dev/null
@@ -1,143 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := AVL_SET[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Inherit
-  
-  + parent_set:Expanded SET[V];
-  
-  + parent_avl_tree:Expanded AVL_TREE[V];
-  
-Section Public 
-  
-  - add e:V <-
-  (
-    item_memory := e;
-    root := do_insert root;
-  );
-
-  - fast_add e:V <-
-  (
-    item_memory := e;
-    root := fast_do_insert root;
-  );
-
-  - clear_count <-
-  (
-    (! is_empty).if {
-      clear_nodes root;
-      root := NULL;
-      count := 0;
-      map_dirty := TRUE;
-    };
-  );
-
-  - reference_at e:V :V <-
-  ( + n:AVL_SET_NODE[V];
-    + result:V;
-    
-    (root != NULL).if {
-      n := root.at e;
-      (n != NULL).if {
-	result := n.item;
-      };
-    };
-    result
-  );
-
-  - item index:INTEGER :V <-
-  ( + result:V;
-    
-    (map_dirty).if {
-      build_map;
-    };
-    map.item (index - 1).item
-  );
-  
-Section Private
-  
-  - set_item n:AVL_SET_NODE[V] <-
-  (
-    n.make item_memory;    
-  );
-
-  - set_value n:AVL_SET_NODE[V];
-
-  - exchange_and_discard (n1, n2:AVL_SET_NODE[V]) <-
-  (
-    map_dirty := TRUE;
-    n1.set_item (n2.item);
-    rebalance := TRUE;
-    count := count - 1;
-    discard_node n2;
-  );
-
-  - discard_node n:AVL_SET_NODE[V] <-
-  ( //+ i:V;
-    
-    //n.make i;
-    //n.set_left (lost_nodes.item);
-    //lost_nodes.set_item n;
-  );
-
-  - a_new_node:AVL_SET_NODE[V] <-
-  (
-    AVL_SET_NODE[V].create
-  );
-
-Section Public  
-  
-  - create:SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-
-  (
-    //(lost_nodes != NULL).if {
-    //  clear_count;
-    //} else {
-    //  create map.make 0;
-    //  lost_nodes ::= common_lost_nodes.reference_at generating_type;
-    //  (lost_nodes = NULL).if {
-//	create lost_nodes.set_item NULL;
-//	common_lost_nodes.add (lost_nodes, generating_type);
-//      };
-//    };
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [
-//    -? {lost_nodes != NULL};
-//    -? {lost_nodes = common_lost_nodes.at generating_type};
-//  ];
-
diff --git a/lib/collection/fast_array.li b/lib/collection/fast_array.li
deleted file mode 100644
index 7921d8e..0000000
--- a/lib/collection/fast_array.li
+++ /dev/null
@@ -1,578 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := FAST_ARRAY[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - author      :="Boutet Jerome (boutet at loria.fr)";
-  
-  - comment     :="Resizable, fixed lower bound array.\
-                  \Unlike ARRAY, the `lower' bound of a FAST_ARRAY is frozen \
-                  \to 0. Thus, some memory is saved and looping toward `lower' \
-                  \bound (which is 0) run a little bit faster.";
-		  		  
-  // General purpose resizable FAST_ARRAYs. The only difference with ARRAY is the 
-  // fact that the `lower' bound is actually frozen to 0. The `item' access is likely
-  // to be more efficient as well as loop going from `upper' to `lower' just because 
-  // `lower' is 0. Keep in mind that even if the `lower' is frozen to 0
-  // it is really better to use the `lower' attribute, and not 0 directly, just because 
-  // you may decide in the future to use another COLLECTION implementation.
-  //
-  // Like ARRAY, the FAST_ARRAY implementation uses only one chunk of memory, the 
-  // `storage' area which is a NATIVE_ARRAY. One must keep in mind that this internal 
-  // `storage' area is always kept left align. Thus, you can expect good performances 
-  // while using a FAST_ARRAY to modelize a stack behavior with 
-  // `add_last' / `last' / `remove_last'. Conversely `add_first' and `remove_first' are 
-  // likely to slow down your program if they are too often used. If the fact that 
-  // `lower' is stuck to 0 do matter, also consider ARRAY.
-		  
-Section Inherit
-  
-  + parent_arrayed_collection:Expanded ARRAYED_COLLECTION[V];
-  
-Section Public
-  
-  - lower:INTEGER := 0; // Frozen lower bound.
-  
-  //
-  // Creation and modification:
-  //
-  
-  - create new_count:INTEGER :SELF <-
-  // Make array with range [0 .. `new_count' - 1].
-  // When `new_count' = 0 the array is empty.
-  ( + result:SELF;
-        
-    result := clone;        
-    result.make new_count;
-    result
-  );
-  
-  - create_with_capacity new_count:INTEGER :SELF <-
-  // Create an empty array with at least `needed_capacity'.
-  ( + result:SELF;
-    
-    result := clone;        
-    result.with_capacity new_count;
-    result
-  );
-  
-  - create_with_native_array_byte na:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make_with_native_array_byte na size s;
-    result
-  );
-  
-  - make_with_map_object obj:OBJECT <-
-  // BSBS: A revoir.
-  [ ...
-    //-? {obj.object_size!=0};
-    -? {element_sizeof = 1};
-  ]
-  ( 
-    storage := CONVERT[OBJECT,NATIVE_ARRAY[V]].on obj;
-    capacity := obj.object_size;
-    upper := -1;
-  )
-  [ ...
-    +? {storage != NULL};
-  ];
-  
-  - make_with_native_array_byte na:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER <-
-  // BSBS: super naze !
-  [ ...
-    -? {s > 0};
-    -? {na != NULL};
-  ]
-  (    
-    storage  := na;
-    capacity := s;
-    upper := -1;
-  )
-  [ ...
-    +? {storage != NULL};
-  ];
-
-  - make_with_native_array na:NATIVE_ARRAY[V] size s:INTEGER <-
-  [ ...
-    -? {s > 0};
-    -? {na != NULL};
-  ]
-  (    
-    storage  := na;
-    capacity := s;
-    upper := s-1;
-  )
-  [ ...
-    +? {storage != NULL};
-  ];
-  
-  - make new_count:INTEGER <-
-  // Make array with range [0 .. `new_count' - 1].
-  // When `new_count' = 0 the array is empty.
-  [ ...
-    -? { new_count >= 0};
-  ]
-  ( 
-    ( new_count.to_integer > capacity).if {
-      // The new one is bigger:
-      storage := NATIVE_ARRAY[V].create new_count;            
-      capacity := new_count;
-    }.elseif { (capacity > 0) && { upper >= 0}} then { 
-      // The new one is smaller and just need to be cleared:
-      storage.clear 0 to upper;
-    }; 
-    upper := new_count - 1;
-  )
-  [ ...
-    +? { count = new_count };
-    +? { capacity >= Old capacity };
-    +? { (upper >= 0) ->> {all_default} }; 
-  ]; 
-    
-  - with_capacity needed_capacity:INTEGER <-
-  // Create an empty array with at least `needed_capacity'.
-  [ ...
-    -? { needed_capacity >= 0 };
-  ]
-  (    
-    (capacity < needed_capacity).if {
-      storage := NATIVE_ARRAY[V].create needed_capacity;
-      capacity := needed_capacity;
-    //}.elseif { capacity > needed_capacity } then {
-    //  storage.clear 0 to upper; // BSBS: Ca serre a quoi de le vider !
-    };
-    upper := -1;
-  )
-  [ ...
-    +? { capacity >= needed_capacity };
-    +? { is_empty };    
-  ]; 
-  
-  //
-  // Hashable.
-  //
-  
-  - hash_code:INTEGER <-
-  ( + result:INTEGER;
-    
-    (! is_empty).if {
-      (last != NULL).if {
-	result := last.hash_code;
-      }.elseif {first != NULL} then {
-	result := first.hash_code;
-      };
-    };
-    result
-  );
-  
-  //
-  // Modification:
-  //
-
-  - set_capacity new_capacity:INTEGER <-
-  // Resize capacity the array, but not count.
-  [
-    -? {new_capacity >= 0};
-  ]
-  (    
-    (new_capacity > capacity).if {
-      (capacity = 0).if {
-  	storage := NATIVE_ARRAY[V].create new_capacity;
-      } else {
-  	storage := storage.realloc capacity with new_capacity;	
-      }; 
-      capacity := new_capacity;	
-    }; 
-  )
-  [
-    +? { capacity >= Old capacity };    
-  ];
-  
-  - fast_resize new_count:INTEGER <-
-  [
-    ? {new_count <= capacity}; 
-  ]
-  (
-    upper := new_count - 1;
-  );
-  
-  - resize new_count:INTEGER <-
-  // Resize the array. When `new_count' is greater than
-  // `count', new positions are initialized with appropriate
-  // default values.
-  [ ...
-    -? {new_count >= 0};
-  ]
-  ( + new_capacity:INTEGER;
-           
-    ( new_count > count).if {
-      (capacity = 0).if {
-	storage := NATIVE_ARRAY[V].create new_count;
-	capacity := new_count;
-      }.elseif { capacity < new_count } then {
-	new_capacity := capacity * 2;
-	{ new_capacity >= new_count }.until_do {
-	  new_capacity := new_capacity * 2;
-	}; 
-	storage := storage.realloc capacity with new_capacity;
-	capacity := new_capacity;	
-      }; 
-    }.elseif { new_count != count } then {
-      storage.clear new_count to (count - 1);
-    }; 
-    
-    upper := new_count - 1;
-  ) 
-  [ ...
-    +? { count = new_count };
-    +? { capacity >= Old capacity };    
-  ]; 
-  
-  //
-  // Implementation of deferred:
-  //
-  
-  - is_empty:BOOLEAN <- ( upper < 0 ); // end is_empty
-    
-  - item i:INTEGER :V <- 
-  (    
-    storage.item i
-  ); 
-    
-  - put element:V to i:INTEGER <-
-  (     
-    storage.put element to i;    
-  ); 
-  
-  - add element:V first n:INTEGER <-
-  [ -? {n > 0}; ]
-  ( + new_capacity,new_count:INTEGER;
-
-    new_count := count + n;
-    (capacity = 0).if {
-      storage := NATIVE_ARRAY[V].create new_count;
-      capacity := new_count;
-    }.elseif {new_count > capacity} then {
-      new_capacity := capacity * 2;
-      {new_capacity >= new_count}.until_do {
-        new_capacity := new_capacity * 2;
-      };
-      storage := storage.realloc capacity with new_capacity;
-      capacity := new_capacity;
-    };
-    storage.move 0 to upper by n;
-    storage.set_slice_with element from lower until (n-1);
-  );
-  
-  - add_first element:V <-
-  ( 
-    add_last element;
-    (upper = 0).if {
-    }.elseif {upper = 1} then {
-      swap 0 with 1;
-    } else {
-      move 0 to (upper - 1) by 1;
-      storage.put element to 0;
-    }; 
-  ); 
-    
-  - add_last element:V <-
-  ( + new_capacity:INTEGER;
-        
-    (upper + 1 <= capacity - 1 ).if {
-      upper := upper + 1;
-    }.elseif {capacity = 0} then {
-      storage := NATIVE_ARRAY[V].create 2;
-      capacity := 2;
-      upper := 0
-    } else {
-      new_capacity := 2 * capacity;
-      storage := storage.realloc capacity with new_capacity;
-      capacity := new_capacity;
-      upper := upper + 1;
-    }; 
-    storage.put element to upper;
-  ); 
-  
-  - count:INTEGER <- ( upper + 1 ); // end count
-    
-  - clear <-
-  ( 
-    upper := -1;
-  )
-  [ ...
-    +? { capacity = Old capacity };    
-  ]; 
-    
-  - copy other:FAST_ARRAY[V] <-
-  // Copy `other' onto Current.
-  ( + other_upper, new_capacity:INTEGER;
-    
-    other_upper := other.upper; 
-    (other_upper >= 0).if {
-      new_capacity := other_upper + 1;
-      
-      ( capacity < new_capacity ).if {
-	storage := NATIVE_ARRAY[V].create new_capacity;
-	capacity := new_capacity;
-      //}.elseif { capacity > 0 } then {
-      //  storage.clear_all (capacity - 1);
-      }; 
-      storage.copy_from (other.storage) until other_upper;
-    //}.elseif { capacity > 0 } then {
-    //  storage.clear_all (capacity - 1);
-    }; 
-    upper := other_upper;
-  ); 
-  
-  - set_all_with v:V <-
-  ( 
-    storage.set_all_with v until upper;    
-  ) ; 
-    
-  //
-  // Sort    
-  //
-  
-  - bubble_sort <-
-  // Bubble sort :-( => BSBS: Optmize with Quick sort...
-  ( + low,up,idx,max:INTEGER;
-    + sw:BOOLEAN;
-    
-    max := upper-1;
-    
-    low := 0;
-    up  := max;
-    {
-      sw:=FALSE;
-      low.to up do { i:INTEGER;	
-	(item i > item (i+1)).if {
-	  swap i with (i+1);
-	  sw := TRUE;
-	};
-	
-	idx := max - i;
-	(item idx > item (idx+1)).if {
-	  swap idx with (idx+1);
-	  sw := TRUE;
-	};		
-      };
-      up  := up - 1;
-      low := low + 1;
-    }.do_while {sw};
-  );
-  
-  //
-  //
-  //
-  
-  - from_collection model:COLLECTION[V] <-
-  ( + i1:INTEGER;
-    
-    with_capacity model.count;
-    upper := model.count - 1;
-    i1 := 0;    
-    (model.lower).to (model.upper) do { i2:INTEGER;
-      storage.put (model.item i2) to i1;
-      i1 := i1 + 1;
-    }; 
-  ); 
-    
-  - '=='  Right 60 other:COLLECTION[V] :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + o:SELF;
-    
-    ( Self = other).if {
-      result := TRUE;
-    } else {
-      o ?= other;
-      ((o != NULL) && { upper = o.upper }).if {
-	result := storage.fast_memcmp (o.storage) until (upper + 1) ;
-      };
-    };
-    
-    result
-  ); 
-    
-  - is_equal_map other:SELF :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    
-    ( Self = other).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := storage.memcmp (other.storage) until (upper + 1);
-    }; 
-    
-    result
-  ); 
-    
-  - all_default:BOOLEAN <- 
-  [
-    -? {storage != NULL};
-  ]
-  (  
-    storage.all_default upper
-  ); 
-    
-  - occurrences element:V :INTEGER <- 
-  (    
-    storage.occurrences element until upper    
-  ); 
-    
-  - fast_occurrences element:V :INTEGER <- 
-  (     
-    storage.fast_occurrences element until upper    
-  ); 
-  
-  - first_index_of element:V :INTEGER <- 
-  ( + result:INTEGER;
-    
-    (upper >= 0).if {
-      result := storage.first_index_of element until upper;
-    };
-    result
-  ); 
-
-  - index_of element:V start start_index:INTEGER :INTEGER <- 
-  ( + result:INTEGER;
-    
-    (upper >= 0).if {
-      result := storage.index_of (element,start_index) until upper;
-    };    
-    result 
-  ); 
-  
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  (
-    storage.reverse_index_of (element, start_index)
-  );
-    
-  - fast_first_index_of element:V :INTEGER <- 
-  ( + result:INTEGER;    
-    
-    (upper >= 0).if {
-      result := storage.fast_first_index_of element until upper;
-    };    
-    result
-  ); 
-
-  - fast_index_of element:V start start_index:INTEGER :INTEGER <- 
-  ( + result:INTEGER;    
-    
-    (upper >= 0).if {
-      result := storage.fast_index_of (element,start_index) until upper;
-    };    
-    result
-  ); 
-  
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  (
-    storage.fast_reverse_index_of (element, start_index)
-  );
-	  
-  - subarray min:INTEGER to max:INTEGER :SELF <-  // slice
-  ( + result:SELF;
-    
-    result := SELF.create (max - min + 1);
-    result.storage.slice_copy storage to 0 from min to max;
-    
-    result
-  ); 
-    
-  - force element:V to index:INTEGER <- 
-  (     
-    ( index <= upper ).if {
-      storage.put element to index;
-    }.elseif { index = (upper + 1) } then {
-      add_last element;
-    } else {
-      resize (index + 1);
-      storage.put element to index;
-    }; 
-  ); 
-    
-  - remove_first <- 
-  ( + void_storage:NATIVE_ARRAY[V];
-    
-    ( upper = 0).if {
-      storage := void_storage;
-      capacity := 0;
-      upper := -1;
-    } else {
-      storage.remove_first upper;
-      upper := upper - 1;
-    }; 
-  )
-  [ ...
-    +? {lower = Old lower};
-  ]; 
-    
-  - remove_head n:INTEGER <-
-  (
-    storage.move n to upper by (-n);
-    upper := upper - n;
-  );
-    
-  - remove index:INTEGER <- 
-  (     
-    storage.remove index until upper;
-    upper := upper - 1;
-  ); 
-  
-  - remove beg:INTEGER to end:INTEGER <-
-  [ ...
-    -? {beg <= end};
-  ]
-  ( + s:INTEGER;
-    
-    (beg = end).if {
-      remove beg;
-    } else {
-      s := end - beg + 1;
-      move (end+1) to upper by (-s);
-      upper := upper - s;
-    };
-  );
-
-  - remove_since beg:INTEGER <-
-  [
-    -? {beg >= 0};
-  ]
-  (     
-    (beg <= upper).if {      
-      upper := beg - 1; 
-    };
-  );
-    
-  //
-  // Guru Section.
-  //
-  
-  - set_upper new_up:INTEGER <-
-  (
-    upper := new_up;
-  );
diff --git a/lib/collection/fast_array2.li b/lib/collection/fast_array2.li
deleted file mode 100644
index 3c4c919..0000000
--- a/lib/collection/fast_array2.li
+++ /dev/null
@@ -1,381 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FAST_ARRAY2[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="Resizable two dimensional array.                   \
-              \Unlike ARRAY2, the `lower1' bound and the `lower2' \
-              \bound are frozen to 0. Thus, one can expect better \
-              \performances.";
-
-Section Inherit
-    
-  + parent_collection2:Expanded COLLECTION2[V];
-  
-Section Public
-  
-  + upper1:INTEGER; 
-  + count1:INTEGER;
-  
-  + upper2:INTEGER;
-  + count2:INTEGER;
-  
-  + count:INTEGER;
-  
-Section FAST_ARRAY2
-    
-  + storage:NATIVE_ARRAY[V];
-  
-  + capacity :INTEGER; // of `storage'.
-  
-Section Public
-  
-  - lower1:INTEGER := 0;
-  
-  - lower2:INTEGER := 0;
-  
-  - create (new_count1,new_count2:INTEGER) :SELF<-
-  // Create with new dimensions.
-  // All elements are set to the default value of type E.
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (new_count1,new_count2);
-    result
-  );
-  
-  - make (new_count1,new_count2:INTEGER) <-
-  // Create or reset self with new dimensions.
-  // All elements are set to the default value of type E.
-  [ ...
-    -? { new_count1 > 0};
-    -? { new_count2 > 0};
-  ]
-  (    
-    count1 := new_count1;
-    upper1 := new_count1 - 1;
-    count2 := new_count2;
-    upper2 := new_count2 - 1;
-    count := count1 * count2;
-    (capacity < count).if {
-      capacity := count;
-      storage := NATIVE_ARRAY[V].create capacity;
-    } else {
-      storage.clear_all (capacity - 1);
-    };
-  )
-  [ ...
-    +? { count1 = new_count1};
-    +? { count2 = new_count2};
-    +? { all_default};
-  ];
-  
-  
-  - from_collection2 model:COLLECTION2[V] <-
-  // Uses the `model' to update self.
-  (
-    make ((model.upper1 + 1), (model.upper2 + 1));
-    
-    lower1.to upper1 do { i:INTEGER;
-      lower2.to upper2 do {j :INTEGER;
-	put (model.item (i,j)) to (i,j);
-      };
-    };
-  );
-  
-  - from_collection contents:COLLECTION[V] size (new_count1, new_count2:INTEGER) <-
-  //  Reset all bounds using `new_count#i'.
-  //  Copy all elements of `contents', line by line into Current.
-  [ ...
-    -? { new_count1 >= 0 };
-    -? { new_count2 >= 0 };
-    -? { contents.count = new_count1 * new_count2 };
-  ]
-  (
-    make (new_count1, new_count2);
-    0.to (count - 1) do { i:INTEGER;
-      storage.put (contents.item (contents.lower + i)) to i;
-    };
-  )
-  [ ...
-    +? { line_maximum = new_count1 - 1 };
-    +? { column_maximum = new_count2 - 1 };
-    +? { count = contents.count };
-  ];
-
-  - from_model model:COLLECTION[COLLECTION[V]] <-
-  // The `model' is used to fill line by line the COLLECTION2.
-  // Assume all sub-collections of `model' have the number of items.
-  ( + l,c:INTEGER;
-		
-    make(model.count, model.first.count);
-    l := model.lower;
-    lower1.to upper1 do { line:INTEGER;
-      c := model.item l.lower;
-      lower2.to upper2 do { column:INTEGER;
-	put (model.item l.item c) to (line, column);
-	c := c + 1;
-      };
-      l := l + 1;
-    };
-  );
-
-  - sub_collection2 (line_min,column_min:INTEGER) to (line_max,column_max:INTEGER) :SELF <-
-  ( + l,c:INTEGER;
-    + result:SELF;
-		
-    result := create (line_max - line_min + 1, column_max - column_min + 1);
-    l := line_min;
-    (result.lower1).to (result.upper1) do { line:INTEGER;
-      c := column_min;
-      (result.lower2).to (result.upper2) do { column:INTEGER;
-	result.put (item (l, c)) to (line, column);					
-	c := c + 1;
-      };      
-      l := l + 1;
-    };
-  );
-  
-  //
-  // Implementation of others feature from COLLECTION2:
-  //
-  
-  - item (line, column:INTEGER) :V <-
-  (
-    storage.item (line * count2 + column)
-  );
-    
-  - put element:V to (line, column:INTEGER) <-
-  (
-    storage.put element to (line * count2 + column);
-  );
-    
-  - force element:V to (line , column :INTEGER) <-
-  (
-    (! valid_index (line, column)).if {
-      resize (line.max upper1,column.max upper2);
-    };    
-    put element to (line,column);
-  );
-    
-  - copy other:SELF <-
-  (
-    count1 := other.count1;
-    upper1 := count1 - 1;
-    count2 := other.count2;
-    upper2 := count2 - 1;
-    count := count1 * count2;
-    ( capacity < count).if {
-      capacity := count;
-      storage := NATIVE_ARRAY[V].create capacity;
-    };
-    storage.copy_from (other.storage) until (count - 1);
-  );
-  
-  //
-  // Writing.
-  //
-  
-  - set_all_with v:V <-
-  //  All element are set with the value v.
-  (
-    storage.set_all_with v until (count - 1);   
-  ); 
-    
-  - all_default:BOOLEAN <-
-  (
-    storage.all_default (count - 1)
-  );
-    
-  -  slice (l1,up1:INTEGER) to (l2,up2:INTEGER) :SELF <-
-  // Create a new collection initialized with elements of
-  // range `low'..`up'. result has the same dynamic type
-  // as self collection.
-  ( + result:SELF;
-    
-    result := SELF.create ((up1 - l1 + 1),(up2 - l2 + 1));
-    l1.to up1 do { line:INTEGER;
-      l2.to up2 do { column:INTEGER;
-	result.put (item (line,column)) to (line - l1,column - l2);
-      };
-    };
-  ); 
-    
-  - set_slice (l1,up1:INTEGER) to (l2,up2:INTEGER) with element:V <-
-  // Set all the elements in the range [(l1,up1),(l2,up2)] of
-  // self with the element 'element'.
-  (
-    (l1 * count2).to (up1 * count2) by count2 do { i:INTEGER;
-      l2.to up2 do { j:INTEGER;
-	storage.put element to (i + j);
-      };
-    };
-  );
-    
-  - swap (line1, column1:INTEGER) with (line2, column2:INTEGER) <-
-  ( + tmp:V;
-    + c2, index1, index2:INTEGER;
-    
-    c2 := count2;
-    index1 := line1 * c2 + column1;
-    index2 := line2 * c2 + column2;
-    tmp := storage.item  index1;
-    storage.put (storage.item index2) to index1;
-    storage.put tmp to index2;
-  );
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  (
-    storage.occurrences elt until (count - 1)
-  );
-    
-  - fast_occurrences elt:V :INTEGER <-
-  (
-    storage.fast_occurrences elt until (count - 1)
-  );
-  
-  //
-  // Resizing:
-  //
-  
-  - resize (new_count1,new_count2:INTEGER) <-
-  [ ...
-    -? {new_count1 > 0};
-    -? {new_count2 > 0};
-  ]
-  ( + tmp:SELF;
-        
-    tmp := SELF.create (new_count1, new_count2);
-    // It may be possible to avoid this ceation when :
-    //    new `capacity' <= old `capacity'
-    line_maximum.downto 0 do { l:INTEGER;
-      column_maximum.downto 0 do { c:INTEGER;
-	(tmp.valid_index (l,c)).if {
-	  tmp.put (item (l,c)) to (l,c);
-	};
-      };
-    };
-    
-    standard_copy tmp;
-  )
-  [ ...
-    +? { upper1 = new_count1 - 1 };
-    +? { count1 = new_count1 };
-    +? { upper2 = new_count2 - 1 };
-    +? { count2 = new_count2 };
-    +? { count = new_count1 * new_count2 };
-  ];
-  
-  //
-  // Looking and Searching:
-  //
-  
-  - has x:V :BOOLEAN <-
-  // Look for `x' using `equal' for comparison.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.first_index_of x until (count-1) <= count - 1;
-    };
-    result
-  ); 
-    
-  - fast_has x:V :BOOLEAN <-
-  // Same as `has' but use `=' for comparison
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.fast_first_index_of x until (count - 1) <= count - 1;
-    };
-    result
-  ); 
-  
-  //
-  // Other features:
-  //
-  
-  - replace_all old_value:V with new_value:V <-
-  (
-    storage.replace_all old_value with new_value until (count - 1);
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  (
-    storage.fast_replace_all old_value with new_value until (count - 1);
-  );
-    
-  - transpose <-
-  // Transpose the self array
-  ( + oldu1,oldu2,tmp:INTEGER;
-    
-    oldu1 := upper1;
-    oldu2 := upper2;
-    tmp := count2.max count1;
-    resize (tmp,tmp);
-    
-    lower1.to upper1 do {i :INTEGER;
-      (i + 1).to upper2 do { j:INTEGER;
-	swap (i,j) with (j,i);
-      };
-    };
-    resize (oldu2,oldu1);
-  );
-    
-  - to_external:POINTER <-
-  // Gives C access to the internal `storage' (may be dangerous).
-  (
-    storage.to_external
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    -? { count1 = upper1 + 1 };
-//    -? { count2 = upper2 + 1 };
-//    -? { count = count1 * count2};
-//    -? { capacity >= count };
-//  ];
-  
-  
-/* ------------------------------ OLD ----------------------------
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
- 
-    ( other = Self).if {
-      result := TRUE;
-    }.elseif { upper1 != other.upper1} then {
-    }.elseif { upper2 != other.upper2} then {
-    } else {
-      result := storage.memcmp (other.storage) until count;
-    };
-    result
-  );
-*/
\ No newline at end of file
diff --git a/lib/collection/fast_array3.li b/lib/collection/fast_array3.li
deleted file mode 100644
index bc7df8f..0000000
--- a/lib/collection/fast_array3.li
+++ /dev/null
@@ -1,417 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FAST_ARRAY3[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="Resizable three dimensional array.\
-              \Unlike ARRAY3, the `lower1', `lower2' and `lower3' bounds \
-              \are frozen to 0. Thus, one can expect better performances. .";
-    
-Section Inherit
-  
-  + parent_collection3:Expanded COLLECTION3[V];
-  
-Section Public
-  
-  + upper1:INTEGER;
-  + count1:INTEGER;
-  
-  + upper2:INTEGER;
-  + count2:INTEGER;
-  
-  + upper3:INTEGER;
-  + count3:INTEGER;
-  
-  + count:INTEGER;
-  
-Section Private
-  
-  + count2x3:INTEGER;
-  // To speed up access, this value is always equal to
-  // `count2' * `count3'
-  
-Section FAST_ARRAY3
-    
-  + storage:NATIVE_ARRAY[V];
-  
-  + capacity:INTEGER; // of `storage'.
-  
-Section Public
-  
-  - lower1:INTEGER := 0;
-  
-  - lower2:INTEGER := 0;
-  
-  - lower3:INTEGER := 0;
-  
-  - create (new_count1, new_count2, new_count3:INTEGER) :SELF<-
-  // Create or reset `Current' with new dimensions.
-  // All elements are set to the default value of type E.
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (new_count1, new_count2, new_count3);
-    result
-  );
-  
-  - make (new_count1, new_count2, new_count3 :INTEGER) <-
-  // Create or reset `self' with new dimensions.
-  // All elements are set to the default value of type E.
-  [ ...
-    -? { new_count1 > 0 };
-    -? { new_count2 > 0 };
-    -? { new_count3 > 0 };
-  ]
-  (    
-    count1 := new_count1;
-    upper1 := new_count1 - 1;
-    count2 := new_count2;
-    upper2 := new_count2 - 1;
-    count3 := new_count3;
-    count2x3 := count2 * count3;
-    upper3 := new_count3 - 1;
-    count := count1 * count2x3;
-    (capacity < count).if {
-      capacity := count;
-      storage := NATIVE_ARRAY[V].create capacity;
-    } else {
-      storage.clear_all (capacity - 1);
-    };
-  )
-  [ ...
-    +? { count1 = new_count1 };
-    +? { count2 = new_count2 };
-    +? { count3 = new_count3 };
-    +? { all_default };
-  ];
-    
-  - from_collection3 model:COLLECTION3[V] <-
-  // Uses the `model' to update self.
-  (
-    make (model.upper1 + 1, model.upper2 + 1, model.upper3 + 1);
-    lower1.to upper1 do { i:INTEGER;
-      lower2.to upper2 do { j:INTEGER;
-	lower3.to upper3 do { k:INTEGER;
-	  put (model.item (i,j,k)) to (i,j,k);
-	};
-      };
-    };
-  );
-    
-  - from_collection contents:COLLECTION[V] size (new_count1, new_count2, new_count3:INTEGER) <-
-  //  Reset all bounds using `new_count#i'.
-  //  Copy all elements of `contents', line by line into self.
-  [ ...
-    -? { new_count1 >= 0 };
-    -? { new_count2 >= 0 };
-    -? { new_count3 >= 0 };
-    -? { contents.count = new_count1 * new_count2 * new_count3 };
-  ]
-  (    
-    make (new_count1, new_count2, new_count3);
-    lower1.to (count - 1) do { i:INTEGER;
-      storage.put (contents.item (contents.lower + i)) to i;
-    };
-  )
-  [ ...
-    +? { line_maximum   = new_count1 - 1 };
-    +? { column_maximum = new_count2 - 1 };
-    +? { depth_maximum  = new_count3 - 1 };
-    +? { count = contents.count };
-  ];
-  
-  
-  - from_model model:COLLECTION[COLLECTION[COLLECTION[V]]] <-
-  // The `model' is used to fill line by line the COLLECTION3.
-  // Assume all sub-collections of have the same indexing.
-  ( + n:INTEGER;
-       
-    make (
-      model.upper - model.lower + 1, 
-      model.first.upper - model.first.lower + 1, 
-      model.first.first.upper - model.first.first.lower + 1
-    );
-    
-    (model.lower).to (model.upper) do { line:INTEGER;
-      (model.first.lower).to (model.first.upper) do { column:INTEGER;
-	(model.first.first.lower).to (model.first.first.upper) do { depth:INTEGER;
-	  storage.put (model.item line.item column.item depth) to n;
-	  n := n + 1;
-	};
-      };
-    };
-  )
-  [ ...
-    +? { line_maximum   = model.upper - model.lower };
-    +? { column_maximum = model.first.upper - model.first.lower };
-    +? { depth_maximum  = model.first.first.upper - model.first.first.lower };
-  ];
-  
-  //
-  // Implementation of others feature from COLLECTION3:
-  //
-  
-  - item (line, column, depth:INTEGER) :V <-
-  (
-    storage.item (line * count2x3 + column * count3 + depth)
-  );
-    
-  - put element:V to (line, column, depth:INTEGER) <-
-  (
-    storage.put element to (line * count2x3 + column * count3 + depth);
-  );
-  
-  
-  - force element:V to (line, column, depth :INTEGER) <-
-  (
-    (! valid_index (line, column, depth)).if {
-      resize (line.max upper1 + 1, column.max upper2 + 1, depth.max upper3 + 1);
-    };
-    put element to (line,column,depth);
-  );
-  
-  
-  - copy other:SELF <-
-  (
-    count1 := other.count1;
-    upper1 := count1 - 1;
-    count2 := other.count2;
-    upper2 := count2 - 1;
-    count3 := other.count3;
-    count2x3 := count2 * count3;
-    upper3 := count3 - 1;
-    count := count1 * count2x3;
-    (capacity < count).if {
-      capacity := count;
-      storage := storage.calloc capacity;
-    };
-    storage.copy_from (other.storage) until (count - 1);
-  );
-  
-  - sub_collection3 (line_min,column_min,depth_min:INTEGER) 
-  to (line_max,column_max,depth_max:INTEGER) :SELF <-
-  ( + n:INTEGER;
-    + result:SELF;
-        
-    result := SELF.create (
-      line_max - line_min + 1, 
-      column_max - column_min + 1, 
-      depth_max - depth_min + 1
-    );
-    
-    line_min.to line_max do { i:INTEGER;
-      column_min.to column_max do { j:INTEGER;
-	depth_min.to depth_max do { k:INTEGER;
-	  result.storage.put (item (i,j,k)) to n;
-	  n := n + 1;
-	};
-      };
-    };
-    result
-  )
-  [ ...
-    +? { result.upper1 = line_max - line_min     };
-    +? { result.upper2 = column_max - column_min };
-    +? { result.upper3 = depth_max - depth_min   };    
-  ];
-  
-  //
-  // Writing:
-  //
-  
-  - set_all_with x:V <-
-  //  All element are set with the value x.
-  (
-    storage.set_all_with x until (count - 1);
-  );
-    
-  - all_default:BOOLEAN <-
-  (
-    storage.all_default (count - 1)
-  );
-    
-  - slice (l1,up1:INTEGER) to (l2,up2:INTEGER) to (l3,up3:INTEGER) :SELF <-
-  // Create a new collection initialized with elements of
-  // range `low'..`up'. result has the same dynamic type
-  // as self collection.
-  ( + result:SELF;
-    
-    result := SELF.create (up1 - l1 + 1, up2 - l2 + 1, up3 - l3 + 1);
-    l1.to up1 do { line:INTEGER;
-      l2.to up2 do { column:INTEGER;
-	l3.to up3 do { depth:INTEGER;
-	  result.put (item (line,column,depth)) to (line - l1,column - l2,depth - l3);
-	};
-      };
-    };
-  ); 
-    
-  - set_slice (l1,up1:INTEGER) to (l2,up2:INTEGER) to (l3,up3:INTEGER) with element:V <-
-  // Set all the elements in the
-  // range [(l1,up1),(l2,up2),(l3,up3)] of
-  // self with the element 'element'.
-  (
-    (l1 * count2x3).to (up1 * count2x3) by count2x3 do { i:INTEGER;
-      (l2 * count3).to (up2 * count3) by count3 do { j:INTEGER;
-	l3.to up3 do { k:INTEGER;
-	  storage.put element to (i + j + k);
-	};
-      };
-    };
-  );  
-  
-  - swap (line1, column1, depth1:INTEGER) with (line2, column2, depth2:INTEGER) <-
-  ( + tmp:V;
-    + c3, c2x3, index1, index2:INTEGER;
-    c3   := count3;
-    c2x3 := count2x3;
-    index1 := line1 * c2x3 + column1 * c3 + depth1;
-    index2 := line2 * c2x3 + column2 * c3 + depth2;
-    tmp := storage.item index1 ;
-    storage.put (storage.item index2) to index1;
-    storage.put tmp to index2;
-  );
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  (
-    storage.occurrences elt until (count - 1)
-  );
-    
-  - fast_occurrences elt:V :INTEGER <-
-  (
-    storage.fast_occurrences elt until (count - 1)
-  );
-  
-  //
-  // Resizing:
-  //
-  
-  - resize (new_count1,new_count2,new_count3:INTEGER) <-
-  [ ...
-    -? { new_count1 > 0};
-    -? { new_count2 > 0};
-    -? { new_count3 > 0};
-  ]
-  ( + tmp:SELF;
-        
-    tmp := SELF.create (new_count1, new_count2, new_count3);
-    // BSBS: It may be possible to avoid this creation when :
-    // BSBS:   new `capacity' <= old `capacity'
-    
-    line_maximum.downto 0 do { l:INTEGER;
-      column_maximum.downto 0 do { c:INTEGER;
-	depth_maximum.downto 0 do { d:INTEGER;
-	  (tmp.valid_index (l,c,d)).if {
-	    tmp.put (item (l,c,d)) to (l,c,d);
-	  };
-	};
-      };
-    };
-    standard_copy tmp;
-  )
-  [ ...
-    +? { upper1 = new_count1 - 1};
-    +? { count1 = new_count1    };
-    +? { upper2 = new_count2 - 1};
-    +? { count2 = new_count2    };
-    +? { upper3 = new_count3 - 1};
-    +? { count3 = new_count3    };
-    +? { count = new_count1 * new_count2 * new_count3 };
-  ];
-  
-  //
-  // Looking and Searching:
-  //
-  
-  - has x:V :BOOLEAN <-
-  // Look for `x' using `equal' for comparison.
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.index_of x until (count-1) <= (count-1);
-    };
-    result
-  );  
-  
-  - fast_has x:V :BOOLEAN <-
-  // Same as `has' but use `=' for comparison
-  ( + result:BOOLEAN;
-    
-    (count > 0).if {
-      result := storage.fast_index_of x until (count - 1) <= (count - 1);
-    };
-    result
-  ); 
-  
-  //
-  // Other features:
-  //
-  
-  - replace_all old_value:V with new_value:V <-
-  (
-    storage.replace_all old_value with new_value until (count - 1);
-  );
-  
-  
-  - fast_replace_all old_value:V with new_value:V <-
-  (
-    storage.fast_replace_all old_value with new_value until (count - 1);
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    -? {count1 = upper1 + 1};
-//    -? {count2 = upper2 + 1}; 
-//    -? {count3 = upper3 + 1};
-//    -? {count = count1 * count2 * count3};
-//    -? {count2x3 = count2 * count3};
-//    -? {capacity >= count};
-//  ];
-  
-/*
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    result := FALSE;
-    
-    (other = Self).if {
-      result := TRUE;
-    }.elseif { upper1 != other.upper1} then {
-    }.elseif { upper2 != other.upper2} then {
-    }.elseif { upper3 != other.upper3} then {
-    } else {
-      result := storage.memcmp (other.storage) until count;
-    };
-    
-    result
-  );
-*/
\ No newline at end of file
diff --git a/lib/collection/hashed_dictionary.li b/lib/collection/hashed_dictionary.li
deleted file mode 100644
index dac8ca1..0000000
--- a/lib/collection/hashed_dictionary.li
+++ /dev/null
@@ -1,773 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := HASHED_DICTIONARY[V,K];
-
-
-  - copyright := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment   := " Associative memory.\
-  \Values of type `V' are stored using Keys of type `K'.";
-  
-  // Efficient implementation of DICTIONARY using `hash_code' on keys.   
-	      
-Section Inherit
-  
-  - parent_simple_dictionary:Expanded SIMPLE_DICTIONARY[V,K];
-  
-Section Public
-// HASHED_DICTIONARY
-  
-  + buckets:NATIVE_ARRAY[HASHED_DICTIONARY_NODE[V,K]];
-  // The `buckets' storage area is the primary hash table of `capacity'
-  // elements. To search some key, the first access is done in `buckets'
-  // using the remainder of the division of the key `hash_code' by
-  // `capacity'. In order to try to avoid clashes, `capacity' is always a
-  // prime number (selected using HASH_TABLE_SIZE).
-  
-Section Public
-  
-  - default_size:INTEGER := 193;
-  // Default size for the storage area in number of items.
-  
-  // Counting:
-  
-  + capacity:INTEGER;
-  // Of the `buckets' storage area.
-  
-  + count:INTEGER;
-  // Actual `count' of stored elements.
-  
-  //  
-  // Basic access:
-  //
-  
-  - has k:K :BOOLEAN <-
-  // Is there a value currently associated with key `k'?
-  ( + idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;    
-    {(node = NULL) || {node.key == k}}.until_do {
-      node := node.next;
-    };
-    node != NULL
-  );
-  
-  - at k:K :V <-
-  // Return the value associated to key `k'.
-  // (See also `reference_at' if V is a reference type.)
-  ( + idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];  
-       
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;    
-    {node.key == k}.until_do {
-      node := node.next;
-    };
-    node.item
-  );
-  
-  - reference_at k:K :V <-
-  // Return NULL or the value associated with key `k'. Actually, this 
-  // feature is useful when the type of values (the type E) is a 
-  // reference type, to avoid using `has' just followed by `at' to get 
-  // the corresponding value.
-  ( + idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-    + result:V;
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) ||{node.key == k}}.until_do {
-      node := node.next;
-    };
-    (node != NULL).if {
-      result := node.item;
-    };        
-    result
-  );
-  
-  - fast_has k:K :BOOLEAN <-
-  ( + idx:INTEGER; 
-    + node:HASHED_DICTIONARY_NODE[V,K];
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.key = k}}.until_do {
-      node := node.next;
-    };
-    node != NULL
-  );
-
-  - fast_at k:K :V <-
-  ( + idx:INTEGER; 
-    + node:HASHED_DICTIONARY_NODE[V,K];
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    {node.key = k}.until_do {
-      node := node.next;
-    };
-    node.item
-  );
-  
-  - fast_reference_at k:K :V <-
-  // Return NULL or the value associated with key `k'. Actually, this 
-  // feature is useful when the type of values (the type V) is a 
-  // reference type, to avoid using `has' just followed by `at' to get 
-  // the corresponding value.
-  ( + idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-    + result:V;
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.key = k}}.until_do {
-      node := node.next;
-    };
-    ( node != NULL ).if {
-      result := node.item;
-    };        
-    result
-  );
-  
-Section Public  
-
-  - put v:V to k:K  <-
-  // Change some existing entry or `add' the new one. If there is
-  // as yet no key `k' in the dictionary, enter it with item `v'.
-  // Otherwise overwrite the item associated with key `k'.
-  ( + h, idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-        
-    h := k.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-        
-    {(node = NULL) || {node.key == k}}.until_do {
-      node := node.next;
-    };
-    (node = NULL).if {
-      (capacity = count).if {
-	increase_capacity;
-	idx := h % capacity;
-      };
-      node := new_node v to k next (buckets.item idx);
-      buckets.put node to idx;
-      count := count + 1;
-      cache_user := -1;
-    } else {
-      node.set_item v;
-    };    
-  );
-
-  - fast_put v:V to k:K  <-
-  // Change some existing entry or `add' the new one. If there is
-  // as yet no key `k' in the dictionary, enter it with item `v'.
-  // Otherwise overwrite the item associated with key `k'.
-  ( + h, idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-        
-    h := k.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-        
-    {(node = NULL) || {node.key = k}}.until_do {
-      node := node.next;
-    };
-    (node = NULL).if {
-      (capacity = count).if {
-	increase_capacity;
-	idx := h % capacity;
-      };
-      node := new_node v to k next (buckets.item idx);
-      buckets.put node to idx;
-      count := count + 1;
-      cache_user := -1;
-    } else {
-      node.set_item v;
-    };    
-  );
-    
-  - add v:V to k:K <-
-  // To add a new entry `k' with its associated value `v'. Actually, this
-  // is equivalent to call `put', but may run a little bit faster.
-  ( + idx:INTEGER;
-    + node:HASHED_DICTIONARY_NODE[V,K];
-       
-    cache_user := -1;
-    (capacity = count ).if {
-      increase_capacity;
-    };
-    idx := k.hash_code % capacity;
-    node:= new_node v to k next (buckets.item idx);
-    buckets.put node to idx;
-    count := count + 1;    
-  );
-  
-  //
-  // Removing:
-  //
-  
-  - remove k:K <-
-  // Remove entry `k' (which may exist or not before this call).
-  ( + h, idx:INTEGER;
-    + node, previous_node:HASHED_DICTIONARY_NODE[V,K]; 
-    
-    cache_user := -1;
-    h := k.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-    (node != NULL ).if {
-      (node.key == k ).if {
-	count := count - 1;
-	node := node.next;
-	buckets.put node to idx;
-      } else {
-	previous_node := node;
-	node := node.next;
-	{(node = NULL) || {node.key == k}}.until_do {
-	  previous_node := node;
-	  node := node.next;
-	};
-	(node != NULL ).if {
-	  count := count - 1;
-	  previous_node.set_next (node.next);
-	};
-      };
-    };    
-  );
-  
-  - fast_remove k:K <-
-  ( + h, idx:INTEGER; 
-    + node, previous_node:HASHED_DICTIONARY_NODE[V,K];
-		
-    cache_user := -1;
-    h := k.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-    (node != NULL).if {
-      (node.key = k).if {
-	count := count - 1;
-	node := dispose_node node;
-	buckets.put node to idx;
-      } else {					
-	previous_node := node;
-	node := node.next;	
-	{(node = NULL) || {node.key = k}}.until_do {	  
-	  previous_node := node;
-	  node := node.next;
-	};
-	(node != NULL).if {
-	  count := count - 1;
-	  previous_node.set_next (dispose_node node);
-	};
-      };
-    };
-  );
-  
-  - clear <-
-  // Discard all items.
-  ( 
-    cache_user := -1;
-    count := 0;    
-    buckets.set_all_with NULL until (capacity - 1);
-  )
-  [   
-    +? {capacity = Old capacity};
-  ];
-  
-  //
-  // To provide iterating facilities:
-  //
-    
-  - item i:INTEGER :V <-
-  (    
-    set_cache_user i;
-    cache_node.item    
-  );
-    
-  - key index:INTEGER :K <-
-  (    
-    set_cache_user index;
-    cache_node.key    
-  );
-    
-  - key_map_in buffer:COLLECTION[K] <-
-  // Append in `buffer', all available keys (this may be useful to
-  // speed up the traversal).
-  ( + node:HASHED_DICTIONARY_NODE[V,K];
-    + idx:INTEGER;
-
-    node := buckets.item idx;
-    count.downto 1 do { i:INTEGER;	    
-      {node != NULL}.until_do {
-	idx := idx + 1;
-	? {idx < capacity};
-	node := buckets.item idx;
-      }; 
-      buffer.add_last (node.key);
-      node := node.next;
-    }; 
-  );
-    
-  - item_map_in buffer:COLLECTION[V]  <-
-  // Append in `buffer', all available items (this may be useful to
-  // speed up the traversal).
-  ( + node:HASHED_DICTIONARY_NODE[V,K];
-    + idx:INTEGER;
-
-    node := buckets.item idx;
-    count.downto 1 do { i:INTEGER;
-      {node != NULL}.until_do {
-	idx := idx + 1;
-	? {idx < capacity};
-	node := buckets.item idx;
-      };
-      buffer.add_last (node.item);
-      node := node.next;
-    };         
-  );
-    
-  - copy other:SELF <-
-  // Reinitialize by copying all associations of `other'.
-  (    
-    clear;
-    (capacity < other.count).if {
-      with_capacity (other.count + 1);
-    }.elseif {capacity = 0} then {
-      make;
-    }; 
-    
-    1.to (other.count) do { i:INTEGER;
-      put (other.item i) to (other.key i);
-    }; 
-  );
-  
-  //
-  // Other features:
-  //
-  
-  - internal_key k:K :K <-
-  // Retrieve the internal key object which correspond to the existing
-  // entry `k' (the one memorized into the `self' dictionary).
-  ( + node:HASHED_DICTIONARY_NODE[V,K];
-    + result:K;
-        
-    node := buckets.item (k.hash_code % capacity);
-    result := node.key;
-    {result == k}.until_do {
-      node := node.next;
-      result := node.key;
-    }; 
-    result
-  );
-  
-Section Private
-  
-  - increase_capacity <-
-  // There is no more free slots:the dictionary must grow.
-  [ 
-    -? {capacity = count};
-  ]
-  ( + idx, new_capacity,i:INTEGER;    
-    + old_buckets:NATIVE_ARRAY[HASHED_DICTIONARY_NODE[V,K]];
-    + node1, node2:HASHED_DICTIONARY_NODE[V,K];
-    
-    old_buckets  := buckets;
-    new_capacity := HASH_TABLE_SIZE.prime_number_ceiling (capacity + 1);
-    
-    buckets := NATIVE_ARRAY[HASHED_DICTIONARY_NODE[V,K]].create new_capacity;
-    i := capacity -1;
-    capacity := new_capacity;
-    {i < 0}.until_do {
-      node1 := old_buckets.item i;
-      {node1 = NULL}.until_do {
-	node2 := node1.next;
-	idx := node1.key.hash_code % capacity;
-	node1.set_next (buckets.item idx);
-	buckets.put node1 to idx;
-	node1 := node2;
-      }; 
-      i := i - 1;
-    }; 
-    cache_user := -1;
-  )
-  [
-    +? { count = Old count };
-    +? { capacity > Old capacity };    
-  ];
-    
-  - set_cache_user index:INTEGER <-
-  // Set the internal memory cache (`cache_user', `cache_node' and
-  // `cache_buckets') to the appropriate valid value.
-  [
-    -? { valid_index index };
-  ]
-  (    
-    (index = cache_user + 1).if {
-      cache_user := index;
-      cache_node := cache_node.next;
-      {cache_node != NULL}.until_do {
-	cache_buckets := cache_buckets + 1;
-	cache_node := buckets.item cache_buckets;
-      }; 
-    }.elseif {index = cache_user} then {
-    }.elseif {index = 1} then {
-      cache_user := 1;
-      cache_buckets := 0;
-      cache_node := buckets.item cache_buckets;
-      {cache_node != NULL}.until_do {
-	cache_buckets := cache_buckets + 1;
-	cache_node := buckets.item cache_buckets;
-      }; 
-    } else {
-      set_cache_user 1;
-      {cache_user = index}.until_do {
-	set_cache_user (cache_user + 1);
-      }; 
-    }; 
-  )
-  [ 
-    ...
-    +? {cache_user = index};
-    +? {cache_buckets.in_range 0 to (capacity - 1)};
-    +? {cache_node != NULL};
-  ];
-  
-  + cache_user:INTEGER;
-  // The last user's external index in range [1 .. `count'] (see `item'
-  // and `valid_index' for example) may be saved in `cache_user' otherwise
-  // -1 to indicate that the cache is not active. When the cache is
-  // active, the corresponding index in `buckets' is save in
-  // `cache_buckets' and the corresponding node in `cache_node'.
-
-  + cache_node:HASHED_DICTIONARY_NODE[V, K];
-  // Meaningful only when `cache_user' is not -1.
-
-  + cache_buckets:INTEGER;
-  // Meaningful only when `cache_user' is not -1.
-
-  - dispose_node node:HASHED_DICTIONARY_NODE[V, K] :HASHED_DICTIONARY_NODE[V, K] <-
-  // Add `node' in the `free_nodes' list.
-  [
-    -? {node != NULL};
-  ]
-  ( + result:HASHED_DICTIONARY_NODE[V,K];
-    result := node.next;
-    //node.set_next (free_nodes.item)
-    //free_nodes.set_item(node)
-    result
-  )
-  [
-    +? {Result = Old node.next};
-  ];
-
-  - new_node v:V to k:K next nxt:HASHED_DICTIONARY_NODE[V,K] :HASHED_DICTIONARY_NODE[V, K] <-
-  // Create a new one.
-  (
-    HASHED_DICTIONARY_NODE[V,K].create v to k next nxt
-  );
-  
-Section Public
-  
-  - create:SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - create_with_capacity n:INTEGER :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.with_capacity n;
-    result
-  );
-  
-  - make <-
-  // Create an empty dictionary. Internal storage `capacity' of the
-  // dictionary is initialized using the `Default_size' value. Then,
-  // tuning of needed storage `capacity' is performed automatically
-  // according to usage. if you are really sure that your dictionary
-  // is always really bigger than `Default_size', you may consider to use
-  // `with_capacity' to save some execution time.
-  (
-    with_capacity default_size;
-  ) 
-  [    
-    +? {capacity = default_size};
-  ];
-    
-  - with_capacity medium_size:INTEGER <-
-  // May be used to save some execution time if one is sure that
-  // storage size will rapidly become really bigger than `Default_size'.
-  // When first `remove' occurs, storage size may naturally become
-  // smaller than `medium_size'. Afterall, tuning of storage size is
-  // done automatically according to usage.
-  [
-    -? { medium_size > 0 };
-  ]
-  ( + new_capacity:INTEGER;
-       
-    new_capacity := HASH_TABLE_SIZE.prime_number_ceiling medium_size;
-    buckets := NATIVE_ARRAY[HASHED_DICTIONARY_NODE[V,K]].create new_capacity;
-    capacity := new_capacity;
-    cache_user := -1;
-    count := 0;
-  )
-  [
-    +? { is_empty };
-    +? { capacity >= medium_size };
-  ];
-		
-  //
-  // Invariant
-  //
-  
-//  [
-//    -? {capacity > 0};
-//    -? {capacity >= count};
-//    -? {cache_user.in_range (-1) to count};
-//    -? {(cache_user > 0) ->> {cache_node != NULL}};
-//    -? {(cache_user > 0) ->> {cache_buckets.in_range 0 to (capacity - 1)}}
-//  ];
-  
-  
- //------------------- OLD -------------------- 
-  
-  /*
-
-  + cache_user :INTEGER;
-  // The last user's external index in range [1 .. `count'] (see `item'
-  // and `valid_index' for example) may be saved in `cache_user' otherwise
-  // -1 to indicate that the cache is not active. When the cache is
-  // active, the corresponding index in `buckets' is save in
-  // `cache_buckets' and the corresponding node in `cache_node'.
-  
-  + cache_node:HASHED_DICTIONARY_NODE[V,K];
-  // Meaningful only when `cache_user' is not -1.
-  
-  + cache_buckets:INTEGER;
-  // Meaningful only when `cache_user' is not -1.
-  
-  
-  
-  - is_empty:BOOLEAN <- count = 0;
-  // Is it empty ?
-  
-  - fast_has k:K :BOOLEAN <-
-  // Is there a value currently associated with key `k'?
-  (
-    + idx:INTEGER;
-    + node:DICTIONARY_NODE[V,K];
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    
-    { (node = NULL) || { node.key = k}}.until_do {
-      node := node.next;
-    };
-    node != NULL
-  );
-  
-  - fast_at k:K :V <-
-  // Return the value associated to key `k'.
-  // (See also `reference_at' if V is a reference type.)
-  (
-    + idx:INTEGER;
-    + node:DICTIONARY_NODE[V,K];  
-    
-    ? { fast_has k };
-    
-    idx := k.hash_code % capacity;
-    node := buckets.item idx;
-    
-    { node.key = k}.until_do {
-      node := node.next;
-    };
-    node.item
-  );
-  
-  
-  - '@' Left 1 k:K :V <-
-  (
-    at k
-  );
-  
-    
-  // Looking and searching some value:
-  
-  
-  - occurrences v:V :INTEGER <-
-  // Number of occurrences using `equal'.
-  // See also `fast_occurrences' to chose the apropriate one.
-  (
-    1.to count do { i:INTEGER;
-      (safe_equal (v,(item i)) ).if {
-	result := result + 1;
-      }; // end if
-    }; // end fo
-    
-    ? { result >= 0 };
-    
-    result
-  );
-  
-  
-  - fast_occurrences v:V :INTEGER <-
-  // Number of occurrences using `='.
-  // See also `occurrences' to chose the apropriate one.
-  (
-    + result:INTEGER;
-    
-    1.to count do { i:INTEGER;
-      (v = item i ).if {
-	result := result + 1;
-      }; // end if
-    }; // end do
-    
-    ? { result >= 0 };
-    
-    result
-  );
-  
-  
-  - key_at v:V :K <-
-  // Retrieve the key used for value `v' using `equal' for comparison.
-  (
-    + i:INTEGER;
-    + result:K;
-    
-    ? { occurrences v = 1};
-    i := 1;
-    {safe_equal (v,(item i))}.until_do {
-      i := i + 1;
-    };
-    result := cache_node.key;
-    
-    ? { equal ((at result) ,v) };
-    
-    result
-  );
-  
-  
-  - fast_key_at v:V :K <-
-  // Retrieve the key used for value `v' using `=' for comparison.
-  (
-    + i:INTEGER;         
-    + result:K;
-    
-    ? { fast_occurrences v = 1 };
-    i := 1;
-    {v = item(i)}.until_do {
-      i := i + 1;
-    };
-    result := cache_node.key;
-    
-    ? { at result = v };
-    
-    result
-  );
-  
-  - upper :INTEGER <-
-  (
-    count
-  );
-  
-  
-  - valid_index index:INTEGER :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    
-    result := (1 <= index) && {index <= count};
-    
-    ? { result =  index.in_range lower to upper };
-    
-    result
-  );
-  
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  // do both dictionaries have the same set of associations?
-  // Keys are compared with `==' and values are comnpared
-  // with the basic = operator. See also `is_equal_map'.
-  (
-    + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self = other ).if {
-      result := TRUE;
-    }.elseif { count = other.count } then {
-      result := TRUE;
-      i := 1;
-      {!result || {i > count}}.until_do {
-	(other.has (key i) ).if {
-	  (other.at (key i) != item i ).if {
-	    result := FALSE;
-	  } else {
-	    i := i + 1;
-	  }; // end if
-	} else {
-	  result := FALSE;
-	}; // end if
-      }; // end until_do
-    }; // end if
-    
-    ? { result ->> {count = other.count} };
-    
-    result
-  );
-  
-  
-  - is_equal_map other:SELF :BOOLEAN <-
-  // Do both dictionaries have the same set of associations?
-  // Both keys and values are compared with `=='. See also `=='.
-  (
-    + i:INTEGER;
-    + k:K; 
-    + result:BOOLEAN;
-    (Self = other ).if {
-      result := TRUE;
-    }.elseif { count = other.count } then {
-      result := TRUE;
-      i := 1;
-      {! result || {i > count}}.until_do {
-	k := key i;
-	(other.has k ).if {
-	  (! safe_equal ((other.at k),(item i)) ).if {
-	    result := FALSE;
-	  } else {
-	    i := i + 1;
-	  }; // end if
-	} else {
-	  result := FALSE;
-	}; // end if
-      }; // end until_do
-    }; // end if
-    
-    result
-  );
-*/  
diff --git a/lib/collection/hashed_set.li b/lib/collection/hashed_set.li
deleted file mode 100644
index ec37794..0000000
--- a/lib/collection/hashed_set.li
+++ /dev/null
@@ -1,774 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := HASHED_SET[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Definition of a mathematical set of hashable objects.";
-  
-  // All common operations on mathematical sets are available.
-    
-Section Inherit
-  
-  + parent_set:Expanded SET[V];
-  
-Section Public
-  
-  - default_size:INTEGER := 53;
-  // Minimum size for storage in number of items.
-  
-Section SET
-  
-  + buckets:NATIVE_ARRAY[HASHED_SET_NODE[V]];
-  // The `buckets' storage area is the primary hash table of `capacity'
-  // elements. To search some element, the first access is done in
-  // `buckets' using the remainder of the division of the key `hash_code' by
-  // `capacity'. In order to try to avoid clashes, `capacity' is always a
-  // prime number (selected using HASH_TABLE_SIZE).
-  
-  //
-  // Internal cache handling:
-  //
-  
-  + cache_user:INTEGER;
-  // The last user's external index in range [1 .. `count'] (see `item'
-  // and `valid_index' for example) may be saved in `cache_user' otherwise
-  // -1 to indicate that the cache is not active. When the cache is
-  // active, the corresponding index in `buckets' is save in
-  // `cache_buckets' and the corresponding node in `cache_node'.
-  
-  + cache_node:HASHED_SET_NODE[V];
-  // Meaningful only when `cache_user' is not -1.
-  
-  + cache_buckets:INTEGER;
-  // Meaningful only when `cache_user' is not -1.
-    
-Section Public
-  
-  - create:SELF <-
-  // Create an empty set. Internal storage `capacity' of the set is
-  // initialized using the `Default_size' value. Then, tuning of needed
-  // storage size is done automatically according to usage. If you
-  // are really sure that your set is always really bigger than
-  // `Default_size', you may use `with_capacity' to save some execution time.
-  ( + result:SELF;
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-  
-  (    
-    with_capacity default_size;
-  )
-  [ ...
-    +? { capacity = default_size };
-  ];
-  
-  - create_with_capacity sz:INTEGER :SELF <-
-  // Create an empty set using `medium_size' as an appropriate value
-  // to help initialization of `capacity'. Thus, this feature may be used
-  // in place of `make' to save some execution time if one is sure that
-  // storage size will rapidly become really bigger than `Default_size' (if
-  // not sure, simply use `make'). Anyway, the initial `medium_size' value
-  // is just an indication and never a limit for the possible
-  // `capacity'. Keep in mind that the `capacity' tuning is done
-  // automatically according to usage.
-  ( + result:SELF;
-    
-    result := clone;
-    result.with_capacity sz; 
-    result
-  );
-  
-  - with_capacity medium_size:INTEGER <-
-  [ ...
-    -? {medium_size > 0};
-  ]
-  ( + new_capacity:INTEGER;
-        
-    new_capacity := HASH_TABLE_SIZE.prime_number_ceiling medium_size;
-    buckets := NATIVE_ARRAY[HASHED_SET_NODE[V]].create new_capacity;
-    capacity := new_capacity;
-    cache_user := -1;
-    count := 0;
-  )
-  [ ...
-    +? { is_empty };
-    +? { capacity >= medium_size };
-  ];
-  
-  //
-  // Counting:
-  //
-  
-  + capacity:INTEGER; // Of the `buckets' storage area.
-  
-  + count:INTEGER;
-    
-  //
-  // Adding and removing:
-  //
-  
-  - add e:V <-
-  // Add a new item to the set:the mathematical definition of
-  // adding in a set is followed.
-  ( + h, idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-            
-    cache_user := -1;
-    h := e.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;    
-    {(node = NULL) || {node.item == e}}.until_do {
-      node := node.next;
-    };
-    (node = NULL).if {
-      (capacity = count).if {
-	increase_capacity;
-	idx := h % capacity;
-      };
-      node := HASHED_SET_NODE[V].create e next (buckets.item idx);
-      buckets.put node to idx;
-      count := count + 1;
-    };
-  );
-
-  - fast_add e:V <-
-  // Add a new item to the set:the mathematical definition of
-  // adding in a set is followed.
-  ( + h, idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-        
-    cache_user := -1;
-    h := e.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;    
-    {(node = NULL) || {node.item = e}}.until_do {
-      node := node.next;
-    };
-    (node = NULL).if {
-      (capacity = count).if {
-	increase_capacity;
-	idx := h % capacity;
-      };
-      node := HASHED_SET_NODE[V].create e next (buckets.item idx);
-      buckets.put node to idx;
-      count := count + 1;
-    };   
-  );  
-  	 
-  - remove e:V <-
-  // Remove item `e' from the set:the mathematical definition of
-  // removing from a set is followed.
-  ( + h, idx:INTEGER;
-    + node, previous_node:HASHED_SET_NODE[V];
-       
-    cache_user := -1;
-    h := e.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-    (node != NULL).if {
-      ( node.item == e).if {
-	count := count - 1;
-	node := node.next;
-	buckets.put node to idx;
-      } else {
-	previous_node := node;
-	node := node.next;
-	{(node = NULL) || {node.item == e}}.until_do {
-	  previous_node := node;
-	  node := node.next;
-	};
-	(node != NULL).if {
-	  count := count - 1;
-	  previous_node.set_next (node.next);
-	};
-      };
-    };    
-  );
-  
-  - fast_remove e:V <-
-  // Remove item `e' from the set:the mathematical definition of
-  // removing from a set is followed.
-  ( + h, idx:INTEGER;
-    + node, previous_node:HASHED_SET_NODE[V];
-       
-    cache_user := -1;
-    h := e.hash_code;
-    idx := h % capacity;
-    node := buckets.item idx;
-    (node != NULL).if {
-      (node.item = e).if {
-	count := count - 1;
-	node := node.next;
-	buckets.put node to idx;
-      } else {
-	previous_node := node;
-	node := node.next;
-	{(node = NULL) || {node.item = e}}.until_do {
-	  previous_node := node;
-	  node := node.next;
-	};
-	(node != NULL).if {
-	  count := count - 1;
-	  previous_node.set_next (node.next);
-	};
-      };
-    };    
-  );
-  
-  - clear <-
-  // Empty the current set.
-  (
-    cache_user := -1;
-    count := 0;
-    buckets.set_all_with NULL until (capacity - 1);
-  )
-  [ ...
-    +? {capacity = Old capacity};
-  ];
-  
-  //
-  // Looking and searching:
-  //
-  
-  - has e:V :BOOLEAN <-
-  // Is element `e' in the set?
-  ( + idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-        
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.item == e}}.until_do {
-      node := node.next;
-    };
-    node != NULL        
-  );
-  
-  - fast_has e:V :BOOLEAN <-
-  // Is element `e' in the set?
-  ( + idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-        
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.item = e}}.until_do {
-      node := node.next;
-    };
-    node != NULL
-  );
-  
-  - reference_at e:V :V <-
-  ( + idx:INTEGER; 
-    + node:HASHED_SET_NODE[V];
-    + result:V;
-				
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.item == e}}.until_do {
-      node := node.next;
-    };
-    (node != NULL).if {
-      result := node.item;
-    };
-    result
-  );
-  
-  - fast_reference_at e:V :V <-
-  ( + idx:INTEGER; 
-    + node:HASHED_SET_NODE[V];
-    + result:V;
-				
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    {(node = NULL) || {node.item = e}}.until_do {
-      node := node.next;
-    };
-    (node != NULL).if {
-      result := node.item;
-    };
-    result
-  );
-  
-  //
-  // To provide iterating facilities:
-  //
-    
-  - item i:INTEGER :V <-
-  // Return the item indexed by `index'.
-  (         
-    set_cache_user i;
-    cache_node.item
-  );  
-  
-  //
-  // Mathematical operations:
-  //
-  
-  - intersection other:SELF <-
-  // Make the intersection of the `self' set with `other'.
-  ( + i,c:INTEGER;
-    + node1, node2:HASHED_SET_NODE[V];
-        
-    cache_user := -1;
-    i := capacity - 1;
-    c := count;
-    {c = 0}.until_do {
-      node1 := buckets.item i;
-      {(node1 = NULL) || {other.has (node1.item)}}.until_do {
-	node1 := node1.next;
-	c := c - 1;
-	buckets.put node1 to i;
-	count := count - 1;
-      };
-      (node1 != NULL).if {
-	node2 := node1.next;
-	c := c - 1;
-	{node2 = NULL}.until_do {
-	  (! other.has (node2.item)).if {
-	    node1.set_next (node2.next);
-	    count := count - 1;
-	  } else { 
-	    node1 := node2;
-	  };	  
-	  node2 := node2.next;
-	  c := c - 1;
-	};
-      };
-      i := i - 1;
-    };    
-  );
-  
-  - copy other:SELF <-
-  // Copy 'other' into the current set
-  (
-    // Note:this is a naive implementation because we should
-    // recycle already allocated nodes of `self'.
-    ( capacity = 0 ).if {
-      with_capacity (other.count + 1);
-    } else {
-      clear;
-    };
-    
-    lower.to (other.count) do { i:INTEGER;
-      add (other.item i);
-    };
-  );
-  
-  - from_collection model:COLLECTION[V] <-
-  ( + i, up:INTEGER;
-				
-    with_capacity (model.count.max 1);
-    up := model.upper;
-    i := model.lower;
-    {i > up}.until_do {
-      add (model.item i);
-      i := i + 1;
-    };
-  );
-  
-Section Private  
-  
-  - increase_capacity <-
-  // There is no more free slots:the set must grow.
-  ( + i,idx, new_capacity:INTEGER;
-    + old_buckets:NATIVE_ARRAY[HASHED_SET_NODE[V]];
-    + node1, node2:HASHED_SET_NODE[V];
-    
-    new_capacity := HASH_TABLE_SIZE.prime_number_ceiling (capacity + 1);
-    old_buckets := buckets;
-    buckets := buckets.create new_capacity;
-    i := capacity - 1;
-    capacity := new_capacity;
-    { i< 0 }.until_do {
-      node1 := old_buckets.item i;
-      {node1 = NULL}.until_do {
-	node2 := node1.next;
-	idx := node1.item.hash_code % capacity;
-	node1.set_next (buckets.item idx);
-	buckets.put node1 to idx;
-	node1 := node2;
-      };
-      i := i - 1;
-    };
-    cache_user := -1;    
-  );
-  
-  - set_cache_user index:INTEGER <-
-  (      
-    (index = cache_user + 1).if {
-      cache_user := index;
-      cache_node := cache_node.next;
-      {cache_node != NULL}.until_do {
-	cache_buckets := cache_buckets + 1;
-	cache_node := buckets.item cache_buckets;
-      };
-    }.elseif { index = cache_user} then {
-    }.elseif { index = 1} then {
-      cache_user := 1;
-      cache_buckets := 0;
-      cache_node := buckets.item cache_buckets;
-      {cache_node != NULL}.until_do {
-	cache_buckets := cache_buckets + 1;
-	cache_node := buckets.item cache_buckets;
-      };
-    } else {
-      set_cache_user 1;
-      {cache_user = index}.until_do {
-	set_cache_user (cache_user + 1);
-      };
-    };
-    
-    ? { cache_user = index};
-    ? { cache_buckets.in_range 0 to (capacity - 1)};
-    ? { cache_node != NULL};
-  );
-  
-  //
-  // Invariant.
-  //
-  
-//  [
-//    -? {capacity > 0};
-//    -? {capacity >= count};
-//    -? {cache_user.in_range (-1) to count};
-//    -? {(cache_user > 0) ->> {cache_node != NULL}};
-//    -? {(cache_user > 0) ->> {cache_buckets.in_range 0 to (capacity - 1)}}
-//  ];
-    
-  // -----------------OLD-----------------  
-  
-  /*
-  
-  
-  
-  - union other:SELF <-
-  // Make the union of the `self' set with `other'.
-  ( + e:V;
-    + old_count:INTEGER;
-    
-    ? {old_count := count; 
-       other != NULL};
-    
-    lower.to (other.count) do { i:INTEGER;
-      e := other.item i;
-      add e;
-    };
-    ? { count <= (old_count + other.count)};
-  );
-
-  - fast_union other:SELF <-
-  // Make the union of the `self' set with `other'.
-  ( + old_count:INTEGER;
-    + e:V;
-    ? {old_count := count; 
-       other != NULL};
-    
-    lower.to (other.count) do { i:INTEGER;
-      e := other.item i;
-      fast_add e;
-    };
-    ? { count <= (old_count + other.count)};
-  );
-  
-  
-  - '+' Left 1 other:SELF :SELF <-
-  // Return the union of the `self' set with `other'.
-  (
-    + result:SELF;
-    
-    ? { other != NULL};
-    
-    result := twin ;
-    result.union other ;
-    
-    ? { result.count <= count + other.count};
-    ? { (Self.is_subset_of result) && (other.is_subset_of result)};
-    
-    result
-  );
-  
-  
-  
-  - is_disjoint other:SELF :BOOLEAN <-
-  ( + j:INTEGER;
-    + result:BOOLEAN;
-     
-    (other.count<count).if {
-      result := other.is_disjoint Self;
-    } else {
-      j:=upper;
-      {(j<lower) || {other.has (item j)}}.until_do {
-	j := j-1;
-      };
-      result := (j=0);
-    };
-    result
-  ); 
-
-  - fast_is_disjoint other:SELF :BOOLEAN <-
-  ( + j:INTEGER;
-    + result:BOOLEAN;
-     
-    (other.count<count).if {
-      result := other.fast_is_disjoint Self;
-    } else {
-      j:=upper;
-      {(j<lower) || {other.fast_has (item j)}}.until_do {
-	j := j-1;
-      };
-      result := (j=0);
-    };
-    result
-  );
- 
-  - '^' other:SELF :SELF <-
-  // Return the intersection of the `self' set with `other'.
-  (
-    + result:SELF;
-    ? {other != NULL};
-    
-    result := twin;
-    result.intersection(other) ;
-    
-    ? { result.count <= other.count.min count};
-    ? { (result.is_subset_of Self) && { result.is_subset_of other}};
-  );
-  
-  - minus other:SELF <-
-  // Make the set `self' - `other'.
-  (
-    + old_count:INTEGER;
-    
-    ? { other != NULL};
-    
-    old_count:=count;
-    
-    lower.to (other.count) do { i:INTEGER;
-      remove (other.item i);
-    };
-    
-    ? { count <= old count};
-  );
-  
-  
-  - '-' other:SELF :SELF <-
-  // Return  the set `self' - `other'.
-  (
-    + result:SELF;
-    
-    ? { other != NULL};
-    
-    result := twin ;
-    result.minus other;
-    
-    ? { result.count <= count};
-    ? { result.is_subset_of(Self)};
-    
-    result
-  );
-  
-  // Comparison:
-  
-  - is_subset_of other:SELF :BOOLEAN <-
-  // Is the `self' set a subset of `other'?
-  (
-    + i:INTEGER;
-    + result:BOOLEAN;
-    
-    ? { other != NULL};
-    
-    result := FALSE;
-    (Self = other).if {
-      result := TRUE;
-    }.elseif { count <= other.count} then {
-      result := TRUE;
-      i := 1;
-      {! result || {i > count}}.until_do {
-	result := other.has (item i);
-	i := i + 1;
-      };
-    };
-    ? { result ->> {count <= other.count}};
-    
-    result
-  );
-  
-  
-  - is_disjoint_from other:SELF :BOOLEAN <-
-  // Is the `self' set disjoint from `other' ?
-  (
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    ? { other != NULL};
-    
-    result := FALSE;
-    
-    ( Self != other).if {
-      result := TRUE;
-      i := 1;
-      ( count <= other.count).if {
-	{! result || {i > count}}.until_do {
-	  result := ! other.has (item i);
-	  i := i + 1;
-	};
-      } else {
-	{! result || {i > other.count}}.until_do {
-	  result := ! has (other.item i);
-	  i := i + 1;
-	};
-      };
-    };
-    ? { result = (Self ^ other).is_empty };
-    
-    result
-  );
-  
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  // Is the `self' set equal to `other'?
-  (
-    + i:INTEGER;
-    + result:BOOLEAN;
-    
-    result := FALSE;
-    ( Self = other ).if {
-      result := TRUE;
-    }.elseif { count = other.count} then {
-      result := TRUE;
-      i := 1;
-      { ! result || {i > count}}.until_do {
-	result := other.fast_has (item i);
-	i := i + 1;
-      };
-    };
-    //ensure then
-    //? { result = ((is_subset_of other) & (other.is_subset_of self))};
-    
-    result
-  );
-  
-  
-
-  - fast_copy other:SELF <-
-  // Copy 'other' into the current set
-  (
-    // Note:this is a naive implementation because we should
-    // recycle already allocated nodes of `self'.
-    ( capacity = 0 ).if {
-      with_capacity (other.count + 1);
-    } else {
-      clear;
-    };
-    
-    lower.to (other.count) do { i:INTEGER;
-      fast_add (other.item i);
-    };
-  );
-  
-  
-  // NONE
-  
-    
-  - force e:V <-  
-  // Add a new item to the set: the mathematical definition of
-  // adding in a set is followed.
-  ( + h, idx: INTEGER;
-    + node:HASHED_SET_NODE[V];
-    ? {! fast_has e};
-    h := e.hash_code;
-    cache_user := -1;
-    (capacity = count).if {
-      increase_capacity;
-    };
-    idx := h % capacity;
-    node := HASHED_SET_NODE[V].create e next (buckets.item idx);
-    buckets.put node to idx;
-    count := count + 1;
-    ? {fast_has e};
-  );
-  
-    - search e:V :V <-
-  // Is element `e' in the set?
-  ( + idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-    + result:V;
-    ? { e != NULL };
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    { (node = NULL) || {node.item == e}}.until_do {
-      node := node.next;
-    };
-    (node !=NULL).if {
-      result := node.item;
-    };
-    result
-  );
-  
-  - get_if cmp:BLOCK with_hash h:INTEGER :V <-
-  // Is element `e' in the set?
-  ( + idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-    + result:V;
-
-    idx := h % capacity;
-    node := buckets.item idx;
-    { (node = NULL) || {cmp.value (node.item)}}.until_do {
-      node := node.next;
-    };
-    (node !=NULL).if {
-      result := node.item;
-    };
-    result
-  );
-
-  - fast_search e:V :V <-
-  // Is element `e' in the set?
-  ( + idx:INTEGER;
-    + node:HASHED_SET_NODE[V];
-    + result:V;
-    ? { e != NULL };
-    idx := e.hash_code % capacity;
-    node := buckets.item idx;
-    { (node = NULL) || {node.item = e}}.until_do {
-      node := node.next;
-    };
-    (node !=NULL).if {
-      result := node.item;
-    };
-    result
-  );
-  
-  - fast_index_of elt:V :INTEGER <-
-  ( + result:INTEGER;
-    
-    result := upper;
-    {(result<lower) || {item result = elt}}.until_do {
-      result := result - 1;
-    };
-    result
-  );
-*/
\ No newline at end of file
diff --git a/lib/collection/linked2_list.li b/lib/collection/linked2_list.li
deleted file mode 100644
index caacc15..0000000
--- a/lib/collection/linked2_list.li
+++ /dev/null
@@ -1,526 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED2_LIST[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Two way linked list with internal automatic memorization \
-               \of the last access .";
-	       
-Section Inherit
-  
-  + parent_linked_collection:Expanded LINKED_COLLECTION[V];
-  
-Section LINKED2_LIST
-  
-  + first_link:LINK2[V];
-  // NULL when empty or gives access to the first element.
-    
-  + last_link:LINK2[V];
-  // NULL when empty or gives access to the last element.
-  
-  + mem_idx:INTEGER; 
-  
-  + mem_lnk:LINK2[V];
-  // To speed up accessing, `mem_idx' and `mem_lnk' is the
-  // memory of the last access done. For example, after
-  // item(1), `mem_idx' is 1 and `mem_lnk' is `first_link'.
-  // When list is empty, `first_link' is NULL as well as
-  // `mem_lnk' and `mem_idx' is 0;
-  
-Section Public
-  
-  - create:SELF <-
-  // Make an empty list;
-  (     
-    SELF.clone
-  );
-  
-  - is_empty:BOOLEAN <- first_link = NULL;
-  
-  - add_first element:V <-
-  ( 
-    (first_link = NULL).if {
-      first_link := LINK2[V].create element previous NULL next NULL;
-      last_link := first_link;
-      upper := 1;
-      mem_idx := 1;
-      mem_lnk := first_link;
-    } else {
-      first_link := LINK2[V].create element previous NULL next first_link;
-      first_link.next.set_previous first_link;
-      upper := upper + 1;
-      mem_idx := mem_idx + 1;
-    };
-  )
-  [ ...
-    +? { upper = 1 + Old upper };
-  ];
-    
-  - add_last element:V <-
-  ( 
-    (first_link = NULL).if {
-      first_link := LINK2[V].create element previous NULL next NULL;
-      last_link := first_link;
-      upper := 1;
-      mem_idx := 1;
-      mem_lnk := first_link;
-    } else {
-      last_link := LINK2[V].create element previous last_link next NULL;
-      last_link.previous.set_next last_link;
-      upper := upper + 1;
-    };
-  );
-    
-  - add element:V to index:INTEGER <-
-  ( + link:LINK2[V];
-    
-    (index = 1).if {
-      add_first element;
-    }.elseif {index = upper + 1} then {
-      add_last element;
-    } else {
-      (index - 1 != mem_idx).if {
-	go_item (index - 1);
-      };
-      link := LINK2[V].create element previous mem_lnk next (mem_lnk.next);
-      link.next.set_previous link;
-      mem_lnk.set_next link;
-      upper := upper + 1;
-    };    
-  );
-    
-  - remove_first <-
-  ( 
-    (upper = 1).if {
-      first_link := NULL;			
-      last_link  := NULL;
-      mem_lnk    := NULL;
-      mem_idx := 0;
-      upper   := 0;
-    } else {      
-      first_link := first_link.next;
-      first_link.set_previous NULL;
-      upper := upper - 1;
-      (mem_idx > 1).if {
-	mem_idx := mem_idx - 1;
-      } else {
-	mem_lnk := first_link;
-	mem_idx := 1;
-      };      
-    };
-  );
-    
-  - remove index:INTEGER <-
-  ( + link:LINK2[V];
-    
-    (index = 1).if {
-      remove_first;
-    }.elseif { index = upper} then {
-      remove_last;
-    } else {
-      ((index - 1) != mem_idx).if {
-	go_item (index - 1);
-      };
-      link := mem_lnk.next;
-      mem_lnk.set_next (link.next);
-      link.next.set_previous mem_lnk;
-      upper := upper - 1;
-    };
-  );
-    
-  - first:V <- first_link.item;
-  
-  - last:V <- last_link.item;
-  
-  - item index:INTEGER :V <-
-  (
-    (index != mem_idx).if {
-      go_item index;
-    };
-    mem_lnk.item
-  );
-    
-  - put element:V to index:INTEGER <-
-  ( 
-    (index != mem_idx).if {
-      go_item index;
-    };
-    mem_lnk.set_item element;    
-  );
-    
-  - count:INTEGER <- upper;
-  
-  - set_all_with v:V <-
-  ( 
-    (first_link != NULL).if {
-      first_link.set_all_with v;
-    };    
-  );
-    
-  - copy other:SELF <-
-  (
-    from_collection other;
-  );
-    
-  - '==' Right 60 other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINK2[V];
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := lnk1.item = lnk2.item;
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-    
-  - is_equal_map other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINK2[V];
-    + safe_equal:SAFE_EQUAL[V];
-    
-    ( Self = other ).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := safe_equal.test (lnk1.item) with (lnk2.item);
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-    
-  - index_of x:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + safe_equal:SAFE_EQUAL[V];
-    
-    result := start_index;
-    {(result > upper) || {safe_equal.test x with (item result)}}.until_do {
-      result := result + 1;
-    };    
-    result
-  );
-  
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + safe_equal:SAFE_EQUAL[V]; 
-    + temporary_idx:INTEGER;
-    + temporary_lnk:LINK2[V];
-    + result:INTEGER;
-    
-    (start_index != mem_idx).if {
-      go_item start_index;
-    };
-    temporary_idx := mem_idx;
-    temporary_lnk := mem_lnk;
-    {(temporary_idx < lower) || {safe_equal.test element with (temporary_lnk.item)}}.until_do {
-      temporary_idx := temporary_idx - 1;
-      temporary_lnk := temporary_lnk.previous;
-    };
-    result := temporary_idx;
-    (temporary_idx >= lower).if {
-      mem_idx := temporary_idx;
-      mem_lnk := temporary_lnk;
-    };
-    result
-  );
-
-  - fast_index_of x:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + u:INTEGER;
-    
-    result := lower;
-    u := upper;
-    {(result > u) || {x = item result}}.until_do {
-      result := result + 1;
-    };
-    result
-  );	
-
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + temporary_idx:INTEGER;
-    + temporary_lnk:LINK2[V];
-    + result:INTEGER;
-		
-    (start_index != mem_idx).if {
-      go_item start_index;
-    };
-    temporary_idx := mem_idx;
-    temporary_lnk := mem_lnk;			
-    {(temporary_idx < lower) || {element = temporary_lnk.item}}.until_do {
-      temporary_idx := temporary_idx - 1;
-      temporary_lnk := temporary_lnk.previous;
-    };
-    result := temporary_idx;
-    (temporary_idx >= lower).if {
-      mem_idx := temporary_idx;
-      mem_lnk := temporary_lnk;
-    };
-  );
-    
-  - clear <-
-  (
-    (first_link != NULL).if {
-      first_link := NULL;
-      mem_idx := 0;
-      mem_lnk := NULL;
-      upper := 0;
-      last_link := NULL;
-    };
-  )
-  [ ...
-    +? {upper = 0};
-  ];
-    
-  - from_collection model:COLLECTION[V] <-
-  ( + lnk:LINK2[V];
-    
-    (first_link = NULL).if {
-      (model.lower).to (model.upper) do { i:INTEGER;
-	add_last (model.item i);
-      };
-    } else {
-      lnk := first_link;
-      (model.lower).to (model.upper) do { i:INTEGER;
-	(lnk = NULL).if {
-	  add_last (model.item i);
-	} else {
-	  lnk.set_item (model.item i);
-	  lnk := lnk.next;
-	};
-      };
-      (lnk = first_link).if {
-	? {model.count = 0};
-	clear;
-      }.elseif {lnk != NULL} then {
-	+ i:INTEGER;
-	i := model.count;
-	(mem_idx != i).if {
-	  go_item i;
-	};
-	? {lnk = mem_lnk.next};
-	mem_lnk.set_next NULL;
-	upper := i;
-	last_link := mem_lnk;
-      };
-    };   
-  );
-    
-  - slice low:INTEGER to up:INTEGER :SELF <-
-  ( + lnk:LINK2[V];
-    + result:SELF;
-
-    result := SELF.create;    
-    (mem_idx != low).if {
-      go_item low;
-    };
-    lnk := mem_lnk;
-    (up - low + 1).downto 1 do { i:INTEGER;
-      result.add_last (lnk.item);
-      lnk := lnk.next;
-    };
-    result
-  );
-    
-  - occurrences element:V :INTEGER <-
-  ( + lnk:LINK2[V];
-    + safe_equal:SAFE_EQUAL[V];
-    + result:INTEGER;
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (safe_equal.test element with (lnk.item)).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };    
-    result
-  );
-    
-  - fast_occurrences element:V :INTEGER <-
-  ( + lnk:LINK2[V];
-    + result:INTEGER;
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (element = lnk.item).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };
-    result
-  );
-    
-  - force element:V to index:INTEGER <-
-  ( + v:V;
-    
-    {index <= upper}.until_do {
-      add_last v;
-    };
-    put element to index;
-  );
-    
-  - all_default:BOOLEAN <-
-  ( + l:LINK2[V];
-    + d:V;
-    + result:BOOLEAN;
-    
-    result := TRUE;
-    l := first_link;
-    {(! result) || {l = NULL}}.until_do {
-      d := l.item;
-      (d != NULL).if {
-	result := d.is_default;
-      };
-      l := l.next;
-    };    
-    result
-  );
-    
-  - remove_last <-
-  ( 
-    (upper = 1).if {
-      first_link := NULL;
-      last_link  := NULL;
-      mem_lnk := NULL;
-      mem_idx := 0;
-      upper := 0;
-    } else {
-      link := last_link;
-      last_link := link.previous;
-      last_link.set_next NULL;
-      (mem_idx = upper).if {
-	mem_idx := 1;
-	mem_lnk := first_link;
-      };
-      upper := upper - 1;
-    };    
-  );
-    
-  - replace_all old_value:V with new_value:V <-
-  ( + safe_equal:SAFE_EQUAL[V];
-    
-    lower.to upper do { i:INTEGER;
-      (safe_equal.test (item i) with old_value).if {
-	put new_value to i;
-      };
-    };   
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  ( 
-    lower.to upper do { i:INTEGER;
-      (item i = old_value).if {
-	put new_value to i;
-      };
-    };    
-  );
-  
-  - reverse <-
-  ( + temp:V; 
-    + low:LINK2[V]; 
-    + high:LINK2[V];
-    + i:INTEGER;
-    
-    low  := first_link;
-    high := last_link;
-    
-    i := count / 2;
-    ? {(i > 0) -> ((low != NULL) & (high != NULL))};
-    ? {(i > 0) -> ((low != high) & (low.previous != high))};
-    {i = 0}.until_do {
-      temp := low.item;
-      low.set_item (high.item);
-      high.set_item temp;
-      low  := low.next;
-      high := high.previous;
-      i    := i - 1;
-    };	
-  );
-			
-Section Private
-  
-  - go_item index:INTEGER <-
-  [ ...
-    -? { valid_index index };
-    -? { mem_idx != index };
-    -? { mem_idx > 0 };
-    -? { mem_lnk != NULL };
-  ]
-  (
-    (index > mem_idx).if {
-      ((upper - index) < (index - mem_idx)).if {
-	mem_idx := upper;
-	mem_lnk := last_link;
-	{index = mem_idx}.until_do {
-	  mem_lnk := mem_lnk.previous;
-	  mem_idx := mem_idx - 1;
-	};
-      } else {
-	{index = mem_idx}.until_do {
-	  mem_lnk := mem_lnk.next;
-	  mem_idx := mem_idx + 1;
-	};
-      };
-    }.elseif {(mem_idx - index) < (index - 1)} then {
-      {index = mem_idx}.until_do {
-	mem_lnk := mem_lnk.previous;
-	mem_idx := mem_idx - 1;
-      };
-    } else {
-      mem_idx := 1;
-      mem_lnk := first_link;
-      {index = mem_idx}.until_do {
-	mem_lnk := mem_lnk.next;
-	mem_idx := mem_idx + 1;
-      };
-    };
-  )
-  [ ...
-    +? { mem_idx = index };
-    +? { mem_lnk != NULL };
-  ];
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    "Empty status." -? {(first_link = NULL) ->
-//    ((last_link = NULL) & (upper = 0) & (mem_idx = 0) & (mem_lnk = NULL))};
-    
-//    "Not empty status." -? {(first_link != NULL) ->
-//    ((last_link != NULL) & (upper > 0) & (mem_idx > 0) & (mem_lnk != NULL))};
-//  ];
diff --git a/lib/collection/linked_list.li b/lib/collection/linked_list.li
deleted file mode 100644
index 29c2a69..0000000
--- a/lib/collection/linked_list.li
+++ /dev/null
@@ -1,515 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED_LIST[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="One way linked list with internal automatic memorization of the last access.";
-  
-  // One way linked list implementation with internal automatic cached memorization 
-  // of the last access. Because of the last access memory cache, the traversal of a 
-  // LINKED_LIST from the `lower' index to the `upper' index using `item' is quite 
-  // efficient. As one can expect, adding element using `add_first' or
-  // `add_last' is really efficient too, actually, the total number of elements 
-  // (i.e. `count') as well as a reference to the last cell is also cached automatically. 
-  // Keep in mind that LINKED_LIST uses a one way linked storage from `lower' to `upper', 
-  // so traversing a LINKED_LIST from `upper' to `lower' will be extremely time consumming 
-  // (also consider LINKED2_LIST).
-  
-Section Inherit
-  
-  + parent_linked_collection:Expanded LINKED_COLLECTION[V];
-    
-Section LINKED_LIST
-  
-  + first_link:LINKED_LIST_NODE[V];
-  // NULL when empty or gives access to the first element.
-    
-  + last_link:LINKED_LIST_NODE[V];
-  // NULL when empty or gives access to the last element.
-  
-  + mem_idx:INTEGER; 
-  + mem_lnk:LINKED_LIST_NODE[V];
-  // To speed up accessing, `mem_idx' and `mem_lnk' is the
-  // memory of the last access done. For example, after
-  // item(1), `mem_idx' is 1 and `mem_lnk' is `first_link'.
-  // When list is empty, `first_link' is NULL as well as
-  // `mem_lnk' and `mem_idx' is 0;
-  
-Section Public
-    
-  - create:SELF <-
-  // Make an empty list;
-  (     
-    SELF.clone    
-  )
-  [ ...
-    +? {count = 0};
-  ];
-    
-  - is_empty:BOOLEAN <- first_link = NULL;
-  
-  - add_first element:V <-
-  ( 
-    (first_link = NULL).if {
-      first_link := LINKED_LIST_NODE[V].create element next NULL;
-      upper := 1;
-      last_link := first_link;
-      mem_idx := 1;
-      mem_lnk := first_link;
-    } else {
-      first_link := LINKED_LIST_NODE[V].create element next first_link;
-      upper := upper + 1;
-      mem_idx := mem_idx + 1;
-    };    
-  );
-  
-  - add_last element:V <-
-  ( + lnk:LINKED_LIST_NODE[V];
-    
-    (first_link = NULL).if {
-      first_link := LINKED_LIST_NODE[V].create element next NULL;
-      upper := 1;
-      last_link := first_link;
-      mem_idx := 1;
-      mem_lnk := first_link;
-    } else {
-      lnk := LINKED_LIST_NODE[V].create element next NULL;
-      last_link.set_next lnk;
-      upper := upper + 1;
-      last_link := lnk;
-    };
-  );
-  
-  - add element:V to index:INTEGER <-
-  ( + link:LINKED_LIST_NODE[V];
-
-    (index = 1).if {
-      add_first element;
-    }.elseif { index = upper + 1 } then {
-      add_last element;
-    } else {
-      ((index - 1) != mem_idx ).if {
-	go_item (index - 1);
-      };
-      link := LINKED_LIST_NODE[V].create element next (mem_lnk.next);
-      mem_lnk.set_next link;
-      upper := upper + 1;
-    };
-  );
-  
-  - remove_first <-
-  ( 
-    (upper = 1).if {
-      first_link := NULL;				
-      last_link  := NULL;
-      mem_lnk    := NULL;
-      mem_idx    := 0;
-      upper      := 0;
-    } else {
-      first_link := first_link.next;
-      (mem_idx = 1).if {
-	mem_lnk := first_link;
-      } else {
-	mem_idx := mem_idx - 1;
-      };
-      upper := upper - 1;
-    };    
-  );
-  
-  - remove index:INTEGER <-
-  ( + link:LINKED_LIST_NODE[V];    
-    
-    (index = 1).if {
-      remove_first;
-    }.elseif {index = upper} then {
-      remove_last;
-    } else {
-      ((index - 1) != mem_idx).if {
-	go_item (index - 1);
-      };
-      link := mem_lnk.next;
-      mem_lnk.set_next (link.next);
-      upper := upper - 1;
-    };    
-  );
-  
-  - first:V <- first_link.item;
-  
-  - last:V <- last_link.item;
-  
-  - item i:INTEGER :V <-
-  (
-    (i != mem_idx).if {
-      go_item i;
-    };
-    mem_lnk.item
-  );
-    
-  - put element:V to i:INTEGER <-
-  ( 
-    (i != mem_idx).if {
-      go_item i;
-    };
-    mem_lnk.set_item element;
-  );
-  
-  - count:INTEGER <- upper;
-  
-  - set_all_with v:V <-
-  ( 
-    (first_link != NULL).if {
-      first_link.set_all_with v;
-    };    
-  );
-  
-  - copy other:SELF <-
-  (
-    from_collection other;
-  );
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINKED_LIST_NODE[V];
-        
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := lnk1.item = lnk2.item;
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-  
-  - is_equal_map other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINKED_LIST_NODE[V];    
-    + safe_equal:SAFE_EQUAL[V];
-    
-    ( Self = other).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := safe_equal.test (lnk1.item) with (lnk2.item);
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-  
-  - index_of x:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + safe_equal:SAFE_EQUAL[V];
-    
-    result := start_index;
-    {(result > upper) || {safe_equal.test x with (item result)}}.until_do {
-      result := result + 1;
-    };    
-    result
-  );
-
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + safe_equal: SAFE_EQUAL[V]; 
-    + temporary_idx, new_mem_idx:INTEGER;
-    + temporary_lnk, new_mem_lnk:LINKED_LIST_NODE[V];
-    + result:INTEGER;
-
-    temporary_idx := lower;
-    temporary_lnk := first_link;
-    {temporary_idx > start_index}.until_do {
-      (safe_equal.test element with (temporary_lnk.item)).if {
-	new_mem_idx := temporary_idx;
-	new_mem_lnk := temporary_lnk;
-      };
-      temporary_idx := temporary_idx + 1;
-      temporary_lnk := temporary_lnk.next;
-    };
-    (new_mem_lnk = NULL).if {
-      result := lower - 1;
-    } else {
-      result := new_mem_idx;
-      mem_lnk := new_mem_lnk;
-      mem_idx := new_mem_idx;
-    };
-    result
-  );
-     
-  - fast_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + u:INTEGER;
-    + result:INTEGER;
-    
-    result := start_index;
-    u := upper;
-    {(result > u) || {element = item result}}.until_do {
-      result := result + 1;
-    };
-    result
-  );
-  
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + safe_equal: SAFE_EQUAL[V]; 
-    + temporary_idx, new_mem_idx:INTEGER;
-    + temporary_lnk, new_mem_lnk:LINKED_LIST_NODE[V];
-    + result:INTEGER;
-
-    temporary_idx := lower;
-    temporary_lnk := first_link;
-    {temporary_idx > start_index}.until_do {
-      (element = temporary_lnk.item).if {
-	new_mem_idx := temporary_idx;
-	new_mem_lnk := temporary_lnk;
-      };
-      temporary_idx := temporary_idx + 1;
-      temporary_lnk := temporary_lnk.next;
-    };
-    (new_mem_lnk = NULL).if {
-      result := lower - 1;
-    } else {
-      result := new_mem_idx;
-      mem_lnk := new_mem_lnk;
-      mem_idx := new_mem_idx;
-    };
-    result
-  );
-    
-  - clear <-
-  (
-    (first_link != NULL).if {
-      first_link := NULL;
-      mem_idx    := 0;
-      mem_lnk    := NULL;
-      upper      := 0;
-      last_link  := NULL;
-    };
-  )
-  [ ...
-    +? {upper = 0};    
-  ];
-  
-  - from_collection model:COLLECTION[V] <-
-  ( + lnk:LINKED_LIST_NODE[V];
-    
-    (first_link = NULL).if {
-      (model.lower).to (model.upper) do { i:INTEGER;
-	add_last (model.item i);
-      };
-    } else {
-      lnk := first_link;
-      (model.lower).to (model.upper) do { i:INTEGER;
-	(lnk = NULL).if {
-	  add_last (model.item i);
-	} else {
-	  lnk.set_item (model.item i);
-	  lnk := lnk.next;
-	};
-      };
-      (lnk = first_link).if {
-	? { model.count = 0 };	
-	clear;
-      }.elseif { lnk != NULL } then {
-	+ i:INTEGER;
-	i := model.count;
-	(mem_idx != i).if {
-	  go_item i;
-	};
-	? { lnk = mem_lnk.next };	
-	mem_lnk.set_next NULL;
-	upper := i;
-	last_link := mem_lnk;
-      };
-    };    
-  );
-  
-  - slice low:INTEGER to up:INTEGER :SELF <-
-  ( + result:SELF;
-    + lnk:LINKED_LIST_NODE[V];
-        
-    result := SELF.create;    
-    (mem_idx != low).if {
-      go_item low;
-    };
-    lnk := mem_lnk;
-    (up - low + 1).downto 1 do { i:INTEGER;
-      result.add_last (lnk.item);
-      lnk := lnk.next;
-    };
-    
-    result
-  );
-  
-  - occurrences element:V :INTEGER <-
-  ( + lnk:LINKED_LIST_NODE[V];
-    + result:INTEGER;
-    + safe_equal:SAFE_EQUAL[V];
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (safe_equal.test element with (lnk.item)).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };   
-    result
-  );
-  
-  - fast_occurrences element:V :INTEGER <-
-  ( + lnk:LINKED_LIST_NODE[V];
-    + result:INTEGER;
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (element = lnk.item).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };
-    result
-  );
-  
-  - force element:V to index:INTEGER <-
-  ( + v:V;
-    
-    {index <= upper}.until_do {
-      add_last v;
-    };
-    put element to index;
-  );
-  
-  - all_default:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + l:LINKED_LIST_NODE[V];
-    + d:V;
-    
-    result := TRUE;
-    l := first_link;
-    {(! result) || {l = NULL}}.until_do {
-      d := l.item;
-      (d != NULL).if {
-	result := d.is_default;
-      };
-      l := l.next;
-    };
-    
-    result
-  );
-  
-  - remove_last <-
-  ( 
-    (upper = 1).if {
-      first_link := NULL;
-      last_link  := NULL;
-      mem_lnk    := NULL;
-      mem_idx    := 0;
-      upper      := 0;
-    } else {
-      ((upper - 1) != mem_idx).if {
-	go_item (upper - 1);
-      };
-      upper := upper - 1;
-      last_link := mem_lnk;
-      last_link.set_next NULL;
-    };    
-  );
-  
-  - replace_all old_value:V with new_value:V <-
-  ( + safe_equal:SAFE_EQUAL[V];
-    
-    lower.to upper do { i:INTEGER;
-      (safe_equal.test (item i) with old_value).if {
-	put new_value to i;
-      };
-    };    
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  ( 
-    lower.to upper do { i:INTEGER;
-      (item i = old_value).if {
-	put new_value to i;
-      };
-    };
-  );
-
-  - reverse <-
-  ( + prev, lnk, next:LINKED_LIST_NODE[V];
-		
-    lnk := first_link;			
-    {lnk = NULL}.until_do {
-      next := lnk.next;
-      lnk.set_next prev;
-      prev := lnk;
-      lnk := next;
-    };
-    last_link := first_link;
-    first_link := prev;
-    (mem_idx != 0).if {
-      mem_idx := count - mem_idx + 1;
-    };
-  );
-    
-Section Private
-  
-  - go_item i:INTEGER <-
-  [ 
-    -? { valid_index i};
-    -? { mem_idx != i};
-    -? { mem_idx > 0};
-    -? { mem_lnk != NULL};
-  ]    
-  (    
-    (mem_idx > i).if {
-      mem_idx := 1;
-      mem_lnk := first_link;
-    };
-    {i = mem_idx}.until_do {
-      mem_lnk := mem_lnk.next;
-      mem_idx := mem_idx + 1;
-    };
-  )
-  [
-    +? {mem_idx = i};
-    +? {mem_lnk != NULL};
-  ];
-    
-  //
-  // Invariant
-  //
-  
-//  [ ...
-//    "Empty status." -? {(first_link = NULL) ->>  
-//    {(last_link = NULL) & (upper = 0) & (mem_idx = 0) & (mem_lnk = NULL)}};
-
-//    "Not empty status." -? {(first_link != NULL) ->> 
-//    {(last_link != NULL) & (upper > 0) & (mem_idx > 0) & (mem_lnk != NULL)}};    
-//  ];
diff --git a/lib/collection/linked_xor_list.li b/lib/collection/linked_xor_list.li
deleted file mode 100644
index f2f00cf..0000000
--- a/lib/collection/linked_xor_list.li
+++ /dev/null
@@ -1,596 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED_XOR_LIST[V];
-
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-  
-  - comment := "One Xor way linked list with internal automatic memorization \
-               \of the last access .";
-	       
-Section Inherit
-  
-  + parent_linked_collection:Expanded LINKED_COLLECTION[V];
-  
-Section LINKED2_LIST
-  
-  + first_link:LINKED_XOR_NODE[V];
-  // NULL when empty or gives access to the first element.
-    
-  + last_link:LINKED_XOR_NODE[V];
-  // NULL when empty or gives access to the last element.
-  
-  + mem_idx:INTEGER; 
-  
-  + mem_lnk:LINKED_XOR_NODE[V];
-  + mem_lnk_prev:LINKED_XOR_NODE[V];
-  + mem_lnk_next:LINKED_XOR_NODE[V];  
-  // To speed up accessing, `mem_idx' and `mem_lnk' is the
-  // memory of the last access done. For example, after
-  // item(1), `mem_idx' is 1 and `mem_lnk' is `first_link'.
-  // When list is empty, `first_link' is NULL as well as
-  // `mem_lnk' and `mem_idx' is 0;
-  
-Section Public
-  
-  - create:SELF <-
-  // Make an empty list;
-  (     
-    SELF.clone
-  );
-  
-  - is_empty:BOOLEAN <- first_link = NULL;
-  
-  - add_first element:V <-
-  ( + new:LINKED_XOR_NODE[V];
-    (first_link = NULL).if {
-      first_link := LINKED_XOR_NODE[V].create element previous NULL next NULL;
-      last_link := first_link;
-      upper := mem_idx := 1;
-      mem_lnk := first_link;      
-    } else {
-      new := LINKED_XOR_NODE[V].create element previous NULL next first_link;
-      first_link.set_link new and (first_link.next NULL);
-      first_link := new;
-      upper := upper + 1;
-      (mem_idx = 1).if {
-        mem_lnk_prev := new;
-      };
-      mem_idx := mem_idx + 1;
-    };
-  )
-  [ ...
-    +? { upper = 1 + Old upper };
-  ];
-    
-  - add_last element:V <-
-  ( + new:LINKED_XOR_NODE[V];
-    (first_link = NULL).if {
-      first_link := LINKED_XOR_NODE[V].create element previous NULL next NULL;
-      last_link := first_link;
-      upper := 1;
-      mem_idx := 1;
-      mem_lnk := first_link;
-    } else {
-      new := LINKED_XOR_NODE[V].create element previous last_link next NULL;
-      last_link.set_link (last_link.next NULL) and new;
-      last_link := new;
-      (mem_idx = upper).if {
-        mem_lnk_next := new;
-      };
-      upper := upper + 1;
-    };
-  );
-    
-  - add element:V to index:INTEGER <-
-  ( + link:LINKED_XOR_NODE[V];
-    
-    (index = 1).if {
-      add_first element;
-    }.elseif {index = upper + 1} then {
-      add_last element;
-    } else {
-      (index - 1 != mem_idx).if {
-	go_item (index - 1);
-      };
-      link := LINKED_XOR_NODE[V].create element previous mem_lnk next (mem_lnk_next);
-      mem_lnk_next.set_link link and (mem_lnk_next.next mem_lnk);
-      mem_lnk.set_link mem_lnk_prev and link;
-      mem_lnk_next := link;
-      upper := upper + 1;
-    };    
-  );
-    
-  - remove_first <-
-  ( + next,next_next:LINKED_XOR_NODE;
-    (upper = 1).if {
-      first_link := NULL;			
-      last_link  := NULL;
-      mem_lnk := mem_lnk_prev := mem_lnk_next := NULL;
-      mem_idx    := 0;
-      upper      := 0;
-    } else {            
-      next := first_link.next NULL;
-      next_next := next.next first_link;
-      next.set_link NULL and next_next;
-      first_link := next;
-      upper := upper - 1;
-      (mem_idx > 1).if {
-        mem_idx := mem_idx - 1;
-        (mem_idx = 1).if {
-          mem_lnk_prev := NULL;
-        };
-      } else {
-        mem_lnk := first_link;
-        mem_lnk_next := next_next;
-	mem_idx := 1;
-      };      
-    };
-  );
-    
-  - remove index:INTEGER <-
-  ( + next_next:LINKED_XOR_NODE[V];
-    
-    (index = 1).if {
-      remove_first;
-    }.elseif { index = upper} then {
-      remove_last;
-    } else {
-      (index != mem_idx).if {
-	go_item index;
-      };
-      mem_lnk_prev.set_link (mem_lnk_prev.previous mem_lnk) and mem_lnk_next;
-      next_next := mem_lnk_next.next mem_lnk;
-      mem_lnk_next.set_link mem_lnk_prev and next_next;
-      mem_lnk := mem_lnk_next;
-      mem_lnk_next := next_next;
-      upper := upper - 1;
-    };
-  );
-    
-  - first:V <- first_link.item;
-  
-  - last:V <- last_link.item;
-  
-  - item index:INTEGER :V <-
-  (
-    (index != mem_idx).if {
-      go_item index;
-    };
-    mem_lnk.item
-  );
-    
-  - put element:V to index:INTEGER <-
-  ( 
-    (index != mem_idx).if {
-      go_item index;
-    };
-    mem_lnk.set_item element;    
-  );
-    
-  - count:INTEGER <- upper;
-  
-  - set_all_with v:V <-
-  ( 
-    not_yet_implemented;
-    
-    (first_link != NULL).if {
-      first_link.set_all_with v;
-    };    
-  );
-    
-  - copy other:SELF <-
-  (
-    not_yet_implemented;
-    
-    from_collection other;
-  );
-    
-  - '==' Right 60 other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINKED_XOR_NODE[V];
-    
-    not_yet_implemented;
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := lnk1.item = lnk2.item;
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-    
-  - is_equal_map other:SELF :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + lnk1, lnk2:LINKED_XOR_NODE[V];
-    + safe_equal:SAFE_EQUAL[V];
-    
-    not_yet_implemented;
-    
-    ( Self = other ).if {
-      result := TRUE;
-    }.elseif {upper = other.upper} then {
-      result := TRUE;
-      lnk1 := first_link;
-      lnk2 := other.first_link;
-      {(lnk1 = NULL) || {! result}}.until_do {
-	result := safe_equal.test (lnk1.item) with (lnk2.item);
-	lnk1 := lnk1.next;
-	lnk2 := lnk2.next;
-      };
-    };    
-    result
-  );
-    
-  - index_of x:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + safe_equal:SAFE_EQUAL[V];
-    
-    not_yet_implemented;
-    
-    result := start_index;
-    {(result > upper) || {safe_equal.test x with (item result)}}.until_do {
-      result := result + 1;
-    };    
-    result
-  );
-  
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + safe_equal:SAFE_EQUAL[V]; 
-    + temporary_idx:INTEGER;
-    + temporary_lnk:LINKED_XOR_NODE[V];
-    + result:INTEGER;
-    
-    not_yet_implemented;
-    
-    (start_index != mem_idx).if {
-      go_item start_index;
-    };
-    temporary_idx := mem_idx;
-    temporary_lnk := mem_lnk;
-    {(temporary_idx < lower) || {safe_equal.test element with (temporary_lnk.item)}}.until_do {
-      temporary_idx := temporary_idx - 1;
-      temporary_lnk := temporary_lnk.previous;
-    };
-    result := temporary_idx;
-    (temporary_idx >= lower).if {
-      mem_idx := temporary_idx;
-      mem_lnk := temporary_lnk;
-    };
-    result
-  );
-
-  - fast_index_of x:V start start_index:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + u:INTEGER;
-    
-    not_yet_implemented;
-    
-    result := lower;
-    u := upper;
-    {(result > u) || {x = item result}}.until_do {
-      result := result + 1;
-    };
-    result
-  );	
-
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  ( + temporary_idx:INTEGER;
-    + temporary_lnk:LINKED_XOR_NODE[V];
-    + result:INTEGER;
-    
-    not_yet_implemented;
-    
-    (start_index != mem_idx).if {
-      go_item start_index;
-    };
-    temporary_idx := mem_idx;
-    temporary_lnk := mem_lnk;			
-    {(temporary_idx < lower) || {element = temporary_lnk.item}}.until_do {
-      temporary_idx := temporary_idx - 1;
-      temporary_lnk := temporary_lnk.previous;
-    };
-    result := temporary_idx;
-    (temporary_idx >= lower).if {
-      mem_idx := temporary_idx;
-      mem_lnk := temporary_lnk;
-    };
-  );
-    
-  - clear <-
-  (
-    
-    not_yet_implemented;
-    
-    (first_link != NULL).if {
-      first_link := NULL;
-      mem_idx := 0;
-      mem_lnk := NULL;
-      upper := 0;
-      last_link := NULL;
-    };
-  )
-  [ ...
-    +? {upper = 0};
-  ];
-    
-  - from_collection model:COLLECTION[V] <-
-  ( + lnk:LINKED_XOR_NODE[V];
-    
-    not_yet_implemented;
-    
-    (first_link = NULL).if {
-      (model.lower).to (model.upper) do { i:INTEGER;
-	add_last (model.item i);
-      };
-    } else {
-      lnk := first_link;
-      (model.lower).to (model.upper) do { i:INTEGER;
-	(lnk = NULL).if {
-	  add_last (model.item i);
-	} else {
-	  lnk.set_item (model.item i);
-	  lnk := lnk.next;
-	};
-      };
-      (lnk = first_link).if {
-	? {model.count = 0};
-	clear;
-      }.elseif {lnk != NULL} then {
-	+ i:INTEGER;
-	i := model.count;
-	(mem_idx != i).if {
-	  go_item i;
-	};
-	? {lnk = mem_lnk.next};
-	mem_lnk.set_next NULL;
-	upper := i;
-	last_link := mem_lnk;
-      };
-    };   
-  );
-    
-  - slice low:INTEGER to up:INTEGER :SELF <-
-  ( + lnk:LINKED_XOR_NODE[V];
-    + result:SELF;
-    
-    not_yet_implemented;
-    
-    result := SELF.create;    
-    (mem_idx != low).if {
-      go_item low;
-    };
-    lnk := mem_lnk;
-    (up - low + 1).downto 1 do { i:INTEGER;
-      result.add_last (lnk.item);
-      lnk := lnk.next;
-    };
-    result
-  );
-    
-  - occurrences element:V :INTEGER <-
-  ( + lnk:LINKED_XOR_NODE[V];
-    + safe_equal:SAFE_EQUAL[V];
-    + result:INTEGER;
-    
-    not_yet_implemented;
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (safe_equal.test element with (lnk.item)).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };    
-    result
-  );
-    
-  - fast_occurrences element:V :INTEGER <-
-  ( + lnk:LINKED_XOR_NODE[V];
-    + result:INTEGER;
-    
-    not_yet_implemented;
-    
-    lnk := first_link;
-    {lnk = NULL}.until_do {
-      (element = lnk.item).if {
-	result := result + 1;
-      };
-      lnk := lnk.next;
-    };
-    result
-  );
-    
-  - force element:V to index:INTEGER <-
-  ( + v:V;
-    
-    not_yet_implemented;
-    
-    {index <= upper}.until_do {
-      add_last v;
-    };
-    put element to index;
-  );
-    
-  - all_default:BOOLEAN <-
-  ( + l:LINKED_XOR_NODE[V];
-    + d:V;
-    + result:BOOLEAN;
-    
-    not_yet_implemented;
-    
-    result := TRUE;
-    l := first_link;
-    {(! result) || {l = NULL}}.until_do {
-      d := l.item;
-      (d != NULL).if {
-	result := d.is_default;
-      };
-      l := l.next;
-    };    
-    result
-  );
-    
-  - remove_last <-
-  ( 
-    (upper = 1).if {
-      first_link := NULL;
-      last_link  := NULL;
-      mem_lnk := mem_lnk_prev := mem_lnk_next := NULL;
-      mem_idx := 0;
-      upper := 0;
-    } else {
-      link := last_link.previous NULL;
-      link.set_link (link.previous last_link) and NULL;
-      last_link := link;      
-      (mem_idx = upper).if {
-	mem_idx := 1;
-        mem_lnk := first_link;
-        mem_lnk_prev := NULL;
-        mem_lnk_next := mem_lnk.next NULL;
-      };
-      upper := upper - 1;
-    };    
-  );
-    
-  - replace_all old_value:V with new_value:V <-
-  ( + safe_equal:SAFE_EQUAL[V];
-    
-    not_yet_implemented;
-    
-    lower.to upper do { i:INTEGER;
-      (safe_equal.test (item i) with old_value).if {
-	put new_value to i;
-      };
-    };   
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  ( 
-    
-    not_yet_implemented;
-    
-    lower.to upper do { i:INTEGER;
-      (item i = old_value).if {
-	put new_value to i;
-      };
-    };    
-  );
-  
-  - reverse <-
-  ( + temp:V; 
-    + low:LINKED_XOR_NODE[V]; 
-    + high:LINKED_XOR_NODE[V];
-    + i:INTEGER;
-    
-    not_yet_implemented;
-    
-    low  := first_link;
-    high := last_link;
-    
-    i := count / 2;
-    ? {(i > 0) -> ((low != NULL) & (high != NULL))};
-    ? {(i > 0) -> ((low != high) & (low.previous != high))};
-    {i = 0}.until_do {
-      temp := low.item;
-      low.set_item (high.item);
-      high.set_item temp;
-      low  := low.next;
-      high := high.previous;
-      i    := i - 1;
-    };	
-  );
-			
-Section Private
-  
-  - go_item index:INTEGER <-
-  [ ...
-    -? { valid_index index };
-    -? { mem_idx != index };
-    -? { mem_idx > 0 };
-    -? { mem_lnk != NULL };
-  ]
-  (
-    (index > mem_idx).if {
-      ((upper - index) < (index - mem_idx)).if {
-	mem_idx := upper;
-        mem_lnk := last_link;
-        mem_lnk_prev := last_link.previous NULL;
-        mem_lnk_next := NULL;
-        {index = mem_idx}.until_do {
-          mem_lnk_next := mem_lnk;
-          mem_lnk := mem_lnk_prev;
-          mem_lnk_prev := mem_lnk.previous mem_lnk_next;
-	  mem_idx := mem_idx - 1;
-	};
-      } else {
-        {index = mem_idx}.until_do {
-          mem_lnk_prev := mem_lnk;
-          mem_lnk := mem_lnk_next;
-          mem_lnk_next := mem_lnk.next mem_lnk_prev;
-	  mem_idx := mem_idx + 1;
-	};
-      };
-    }.elseif {(mem_idx - index) < (index - 1)} then {
-      {index = mem_idx}.until_do {
-        mem_lnk_next := mem_lnk;
-        mem_lnk := mem_lnk_prev;
-        mem_lnk_prev := mem_lnk.previous mem_lnk_next;        
-	mem_idx := mem_idx - 1;
-      };
-    } else {
-      mem_idx := 1;
-      mem_lnk := first_link;
-      mem_lnk_prev := NULL;
-      mem_lnk_next := first_link.next NULL;
-      {index = mem_idx}.until_do {
-        mem_lnk_prev := mem_lnk;
-        mem_lnk := mem_lnk_next;
-        mem_lnk_next := mem_lnk.next mem_lnk_prev;        
-	mem_idx := mem_idx + 1;
-      };
-    };
-  )
-  [ ...
-    +? { mem_idx = index };
-    +? { mem_lnk != NULL };
-  ];
-  
-  //
-  // Invariant.
-  //
-  
-//  [ ...
-//    "Empty status." -? {(first_link = NULL) ->
-//    ((last_link = NULL) & (upper = 0) & (mem_idx = 0) & (mem_lnk = NULL))};
-    
-//    "Not empty status." -? {(first_link != NULL) ->
-//    ((last_link != NULL) & (upper > 0) & (mem_idx > 0) & (mem_lnk != NULL))};
-//  ];
diff --git a/lib/collection/low_level/any_avl_dictionary_node.li b/lib/collection/low_level/any_avl_dictionary_node.li
deleted file mode 100644
index 19f94fd..0000000
--- a/lib/collection/low_level/any_avl_dictionary_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := ANY_AVL_DICTIONARY_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
diff --git a/lib/collection/low_level/any_avl_set_node.li b/lib/collection/low_level/any_avl_set_node.li
deleted file mode 100644
index 813da61..0000000
--- a/lib/collection/low_level/any_avl_set_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_AVL_SET_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/any_hashed_bijective_dictionary_node.li b/lib/collection/low_level/any_hashed_bijective_dictionary_node.li
deleted file mode 100644
index af0abfc..0000000
--- a/lib/collection/low_level/any_hashed_bijective_dictionary_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_HASHED_BIJECTIVE_DICTIONARY_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/any_hashed_dictionary_node.li b/lib/collection/low_level/any_hashed_dictionary_node.li
deleted file mode 100644
index 1b29794..0000000
--- a/lib/collection/low_level/any_hashed_dictionary_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_HASHED_DICTIONARY_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/any_hashed_set_node.li b/lib/collection/low_level/any_hashed_set_node.li
deleted file mode 100644
index cf89429..0000000
--- a/lib/collection/low_level/any_hashed_set_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_HASHED_SET_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/any_linked_list_node.li b/lib/collection/low_level/any_linked_list_node.li
deleted file mode 100644
index db279c0..0000000
--- a/lib/collection/low_level/any_linked_list_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_LINKED_LIST_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/any_two_way_linked_list_node.li b/lib/collection/low_level/any_two_way_linked_list_node.li
deleted file mode 100644
index fac74bb..0000000
--- a/lib/collection/low_level/any_two_way_linked_list_node.li
+++ /dev/null
@@ -1,31 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := ANY_TWO_WAY_LINKED_LIST_NODE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/arrayed.li b/lib/collection/low_level/arrayed.li
deleted file mode 100644
index f5e0167..0000000
--- a/lib/collection/low_level/arrayed.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ARRAYED;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Generic collection";
-  
-  // BSBS: A revoir cela doit rentrer ARRAYED_COLLECTION (mais il faut voir avec STRING)
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - lower:INTEGER <- deferred;
-  - upper:INTEGER <- deferred;
-  - count:INTEGER <- deferred;
-
-  - capacity:INTEGER <- deferred;
-  
-  - element_sizeof:INTEGER <- 
-  // The size in number of bytes for type `E'.
-  ( 
-    deferred;
-    0
-  );
-  
-  - add_last_buffer buf:FAST_ARRAY[UINTEGER_8] from beg:INTEGER to end:INTEGER <-
-  (
-    deferred;
-  );
-    
-  - item_byte idx:INTEGER offset ofs:INTEGER :UINTEGER_8 <-
-  (
-    deferred;
-  );
-
-  - set_capacity new_capacity:INTEGER <-
-  (
-    deferred;
-  );
-  
-  - set_count new_count:INTEGER <-
-  (
-    deferred;
-  );
-  
-  - to_native_array_uinteger_8:NATIVE_ARRAY[UINTEGER_8] <- 
-  (
-    deferred;
-    NULL
-  );
-
diff --git a/lib/collection/low_level/arrayed_collection.li b/lib/collection/low_level/arrayed_collection.li
deleted file mode 100644
index 97b1b99..0000000
--- a/lib/collection/low_level/arrayed_collection.li
+++ /dev/null
@@ -1,218 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ARRAYED_COLLECTION[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Common root for ARRAY[V] and FAST_ARRAY[V].";
-  
-Section Inherit
-  
-  - parent_arrayed:ARRAYED := ARRAYED;
-  
-  - parent_collection:COLLECTION[V] := COLLECTION[V];
-  
-Section Public //ARRAYED_COLLECTION, BMP_FILE, TYPES
-  
-  + storage:NATIVE_ARRAY[V];
-  // Internal access to storage location.
-    
-Section Public
-  
-  - element_sizeof:INTEGER <- 
-  // The size in number of bytes for type `E'.
-  ( + result:INTEGER;
-    
-    (V.is_expanded_type).if {
-      result := V.object_size;
-    } else {
-      result := POINTER.object_size;
-    };
-    result
-  );
-  
-  + capacity:INTEGER;
-  // Internal storage capacity in number of item.
-  
-  + upper:INTEGER;
-  // Upper index bound.
-      
-  - subarray min:INTEGER to max:INTEGER :SELF <-
-  // New collection consisting of items at indexes in [`min' .. `max'].
-  // Result has the same dynamic type as `Current'.
-  // See also `slice'.
-  [
-    -? { lower <= min };
-    -? { max <= upper };
-    -? { min <= max + 1 };
-  ]
-  (     
-    deferred;
-    NULL
-  )
-  [    
-    +? { same_dynamic_type result };
-    +? { result.count = max - min + 1 };
-    +? { result.lower = min | (result.lower = 0) };
-  ];
-  
-  //
-  // Implementation of deferred:
-  //
-  
-  - first:V <- storage.item 0;
-  
-  - second:V <- storage.item 1;
-  
-  - last :V <- item upper;
-  
-  - add element:V to index:INTEGER <-
-  ( 
-    (index = upper + 1).if {
-      add_last element;
-    } else {
-      add_last element;
-      move index to (upper - 1) by 1;
-      put element to index;
-    };
-  );
-    
-  - remove_last <-
-  ( 
-    upper := upper - 1;    
-  );
-  
-  - remove_tail n:INTEGER <-
-  (
-    upper := upper - n;
-  );
-  
-  - replace_all old_value:V with new_value:V <-
-  ( 
-    storage.replace_all old_value with new_value until (count - 1);    
-  );
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  ( 
-    storage.fast_replace_all old_value with new_value until (count - 1);    
-  );
-  
-  - reverse <-
-  ( + i,j:INTEGER;
-    	
-    i := lower;
-    j := upper;		
-    {i >= j}.until_do {
-      swap i with j;
-      i := i + 1;
-      j := j - 1;
-    };
-  );	
-  
-  //
-  // Interfacing with C:
-  //
-  
-  - to_external:POINTER <-
-  // Gives C access into the internal `storage' of the ARRAY.
-  // Result is pointing the element at index `lower'.
-  //
-  // NOTE: do not free/realloc the Result. Resizing of the array
-  //       can makes this pointer invalid.
-  [
-    -? {! is_empty};
-  ]
-  ( 
-    storage.to_pointer
-  )
-  [
-    +? {Result.is_not_null};    
-  ];
-
-  - to_native_array:NATIVE_ARRAY[V] <-
-  // Gives C access into the internal `storage' of the ARRAY.
-  // Result is pointing the element at index `lower'.
-  //
-  // NOTE: do not free/realloc the Result. Resizing of the array
-  //       can makes this pointer invalid.
-  [
-    -? {! is_empty};
-  ]
-  ( 
-    storage
-  )
-  [
-    +? {Result.is_not_null};    
-  ];
-  
-Section ARRAYED_COLLECTION
-  
-  - set_upper new_upper:INTEGER <-
-  (
-    upper := new_upper;
-  );
-  
-  //
-  // invariant
-  //
-  
-//  [
-//    -? {capacity >= (upper - lower + 1)};
-//    -? {(capacity > 0) ->> {storage.is_not_null}};
-//  ];
-
-Section Public
-  
-  - set_count new_count:INTEGER <-
-  (
-    upper := new_count + lower - 1;
-  );
-
-  - to_native_array_uinteger_8:NATIVE_ARRAY[UINTEGER_8] <- 
-  (
-    CONVERT[NATIVE_ARRAY[V],NATIVE_ARRAY[UINTEGER_8]].on storage
-  );
-  
-  - add_last_buffer buf:FAST_ARRAY[UINTEGER_8] from beg:INTEGER to end:INTEGER <-
-  ( + tab:NATIVE_ARRAY[UINTEGER_8];
-    + pos_beg,size,new_capacity:INTEGER;
-
-    pos_beg := count * element_sizeof; // + ofs_buf;
-    size    := end - beg + 1;
-    
-    new_capacity := (pos_beg + end - beg + element_sizeof) / element_sizeof;
-    (capacity < new_capacity).if {
-      "cap:".print;
-      capacity.print;
-      "new:".print;
-      new_capacity.print;
-      "Crash !\n".print;
-      crash;
-    };
-    
-    tab := CONVERT[NATIVE_ARRAY[V],NATIVE_ARRAY[UINTEGER_8]].on storage;
-    tab.copy (buf.storage + beg) to pos_beg until size;
-    //ofs_buf := (pos_beg + size) % element_sizeof;
-    upper   := (pos_beg + size - 1) / element_sizeof;
-  );
diff --git a/lib/collection/low_level/avl_constants.li b/lib/collection/low_level/avl_constants.li
deleted file mode 100644
index 8e77d3d..0000000
--- a/lib/collection/low_level/avl_constants.li
+++ /dev/null
@@ -1,38 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := AVL_CONSTANTS;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-
-Section SELF
-  
-  - balanced:INTEGER := 0;
-
-  - imbalanced_left:INTEGER := -1;
-
-  - imbalanced_right:INTEGER := 1;
diff --git a/lib/collection/low_level/avl_dictionary_node.li b/lib/collection/low_level/avl_dictionary_node.li
deleted file mode 100644
index 533fc62..0000000
--- a/lib/collection/low_level/avl_dictionary_node.li
+++ /dev/null
@@ -1,175 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name := AVL_DICTIONARY_NODE[V,K];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Auxiliary class to implement AVL_DICTIONARY.";
-  
-Section Inherit
-  
-  + parent_avl_tree_node:Expanded AVL_TREE_NODE[K];
-  
-  - parent_any_avl_dictionary_node:ANY_AVL_DICTIONARY_NODE := ANY_AVL_DICTIONARY_NODE;
-  
-Section Public
-  
-  - key:K <- item;
-  
-  - set_key i:K <- set_item i;
-  
-Section AVL_DICTIONARY, AVL_DICTIONARY_NODE
-  
-  + value:V;
-
-  - set_value v:V <-
-  (
-    value := v;
-  )
-  [
-    +? {value = v};
-  ];
-
-  - fast_at k:K :AVL_DICTIONARY_NODE[V, K] <-
-  // Is element `e' in the tree?
-  ( + result:AVL_DICTIONARY_NODE[V, K];
-    
-    (key = k).if {
-      result := Self;
-    }.elseif {key == k /*SAFE_EQUAL[K].test key and k*/} then {
-      // because otherwise there would be an infinite recursion
-      // result := NULL
-    }.elseif {k < key} then {
-      (left != NULL).if {
-	result := left.fast_at k;
-      };	
-    } else {
-      (right != NULL).if {
-	result := right.fast_at k;
-      };
-    };
-    result
-  );
-
-  - occurrences v:V :INTEGER <-
-  (
-    occurrences v start 0
-  );
-
-  - fast_occurrences v:V :INTEGER <-
-  (
-    fast_occurrences v start 0
-  );
-
-  - key_at v:V :K <-
-  ( + result:K;
-    
-    (v == value /*SAFE_EQUAL[V].test v and value*/).if {
-      result := key;
-    }.elseif {left != NULL} then {
-      result := left.key_at v;
-    }.elseif {right != NULL} then {
-      result := right.key_at v;
-    };
-    result
-  );
-
-  - fast_key_at v:V :K <-
-  ( + result:K;
-    
-    (v = value).if {
-      result := key;
-    }.elseif {left != NULL} then {
-      result := left.fast_key_at v;      
-    }.elseif {right != NULL} then {
-      result := right.fast_key_at v;
-    };
-    result
-  );
-	
-Section AVL_DICTIONARY_NODE
-  
-  - occurrences v:V start cnt:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-
-    result := cnt;
-    (v == value /*SAFE_EQUAL[V].test v and value*/).if {
-      result := result + 1;
-    };
-    (left != NULL).if {
-      result := left.occurrences v start result;
-    };
-    (right != NULL).if {
-      result := right.occurrences v start result;
-    };
-    result
-  )
-  [
-    +? {Result >= cnt};
-  ];
-
-  - fast_occurrences v:V start cnt:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    result := cnt;
-    (v = value).if {
-      result := result + 1;
-    };
-    (left != NULL).if {
-      result := left.fast_occurrences v start result;
-    };
-    (right != NULL).if {
-      result := right.fast_occurrences v start result;
-    };
-    result
-  )
-  [
-    +? {Result >= cnt};
-  ];
-
-Section AVL_DICTIONARY
-
-  //
-  // Creation:
-  //
-  
-  - create (v:V,k:K) :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (v,k);
-    result
-  );
-  
-  - make (v:V,k:K) <-
-  (
-    set_balance balanced;
-    left  := NULL;
-    right := NULL;
-    set_value v;
-    set_key k;
-  )
-  [
-    +? {value = v};
-    +? {key = k};
-  ];
diff --git a/lib/collection/low_level/avl_set_node.li b/lib/collection/low_level/avl_set_node.li
deleted file mode 100644
index ff539fc..0000000
--- a/lib/collection/low_level/avl_set_node.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := AVL_SET_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Auxiliary class to implement AVL_SET.";
-	
-  // This a classic implementation of an AVL tree (balanced tree first
-  // designed by Adelson-Velskii and Landis, 1960)
-  
-Section Inherit
-  
-  + parent_avl_tree_node:Expanded AVL_TREE_NODE[V];
-  
-  - parent_any_avl_set_node:ANY_AVL_SET_NODE := ANY_AVL_SET_NODE;
-
-Section AVL_SET
-  
-  //
-  // Creation:
-  //
-  
-  - create i:V :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i;
-    result
-  );
-  
-  - make i:V <-
-  (
-    set_balance balanced;
-    left  := NULL;
-    right := NULL;
-    set_item i;
-  )
-  [
-    +? {item = i};
-  ];
-  
-
-
diff --git a/lib/collection/low_level/avl_tree.li b/lib/collection/low_level/avl_tree.li
deleted file mode 100644
index 440b10f..0000000
--- a/lib/collection/low_level/avl_tree.li
+++ /dev/null
@@ -1,604 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := AVL_TREE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  // Definition of a mathematical set of comparable objects. All common
-  // operations on mathematical sets are available.
-
-Section Insert
-  
-  - parent_avl_constants:AVL_CONSTANTS := AVL_CONSTANTS;
-
-Section Public
-  
-  - debug_string:STRING <-
-  ( + result:STRING;
-    
-    (root = NULL).if {
-      result := "NULL";
-    } else {
-      result := tagged_out_memory;
-      result.clear_count;
-      root.out_in_tagged_out_memory;
-    };
-    result
-  );
-
-  + count:INTEGER;
-  
-Section Public
-  
-  //
-  // Adding and removing:
-  //
-  
-  - remove e:V <-
-  (
-    root := do_remove (root, e);
-  );
-
-  - fast_remove e:V <-
-  (
-    root := fast_do_remove (root, e);
-  );
-
-Section SELF
-  
-  + root:AVL_TREE_NODE[V];
-
-  + rebalance:BOOLEAN;
-
-  + item_memory:V;
-
-  - set_value_and_key n:AVL_TREE_NODE[V] <-
-  (
-    deferred;
-  );
-
-  - set_value n:AVL_TREE_NODE[V] <-
-  (
-    deferred;
-  );
-
-  - fast_do_insert n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n = NULL).if {
-      result := new_node;
-      set_value_and_key result;
-      count := count + 1;
-      map_dirty := TRUE;
-      rebalance := TRUE;
-    }.elseif {item_memory = n.item} then {
-      result := n;
-      set_value result;
-      rebalance := FALSE;
-    }.elseif {item_memory < n.item} then {
-      n.set_left (do_insert (n.left));
-      (rebalance).if {
-	result := left_grown n;
-      } else {
-	result := n;
-      };
-    } else {
-      ? {item_memory > n.item};				
-      n.set_right (do_insert (n.right));
-      (rebalance).if {
-	result := right_grown n;
-      } else {
-	result := n;
-      };
-    };
-    result
-  )
-  [
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {rebalance = (node_height Result > Old node_height n)};
-  ];
-
-  - do_insert n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n = NULL).if {
-      result := new_node;
-      set_value_and_key result;
-      count := count + 1;
-      map_dirty := TRUE;
-      rebalance := TRUE;
-    }.elseif {item_memory < n.item} then {
-      n.set_left (do_insert (n.left));
-      (rebalance).if {
-	result := left_grown n;
-      } else {
-	result := n;
-      };
-    }.elseif {item_memory > n.item} then {
-      n.set_right (do_insert (n.right));
-      (rebalance).if {
-	result := right_grown n;
-      } else {
-	result := n;
-      };
-    } else {
-      ? {item_memory == n.item};				
-      result := n;
-      set_value result;
-      rebalance := FALSE;
-    };
-    result
-  )
-  [
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {rebalance = (node_height Result > Old node_height n)};
-  ];
-
-  - left_grown n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  [
-    -? {rebalance};
-    -? {n != NULL};
-    -? {node_height (n.right) - node_height (n.left) + 1 = n.balance};
-  ]
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n.balance)
-    .when imbalanced_left then {
-      (n.left.balance = imbalanced_left).if {
-	n.set_balance balanced;
-	n.left.set_balance balanced;
-      } else {
-	(n.left.right.balance)
-	.when imbalanced_left then {
-	  n.set_balance imbalanced_right;
-	  n.left.set_balance balanced;
-	}
-	.when balanced then {
-	  n.set_balance balanced;
-	  n.left.set_balance balanced;
-	}
-	.when imbalanced_right then {
-	  n.set_balance balanced;
-	  n.left.set_balance imbalanced_left;
-	};
-	n.left.right.set_balance balanced;
-	n.set_left (n.left.rotate_left);
-      };
-      result := n.rotate_right;
-      rebalance := FALSE;
-    }
-    .when balanced then {
-      n.set_balance imbalanced_left;
-      result := n;
-    }
-    .when imbalanced_right then {
-      n.set_balance balanced;
-      result := n;
-      rebalance := FALSE;
-    };
-    result
-  )
-  [
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {
-      rebalance = (node_height Result > 1 + 
-      Old node_height (n.right).max (node_height (n.left) - 1))
-    };
-  ];
-
-  - right_grown n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  [
-    -? {rebalance};
-    -? {n != NULL};
-    -? {node_height (n.right) - 1 - node_height (n.left) = n.balance};
-  ]
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n.balance)
-    .when imbalanced_right then {
-      (n.right.balance = imbalanced_right).if {
-	n.set_balance balanced;
-	n.right.set_balance balanced;
-      } else {
-	(n.right.left.balance)
-	.when imbalanced_right then {
-	  n.set_balance imbalanced_left;
-	  n.right.set_balance balanced;
-	}
-	.when balanced then {
-	  n.set_balance balanced;
-	  n.right.set_balance balanced;
-	}
-	.when imbalanced_left then {
-	  n.set_balance balanced;
-	  n.right.set_balance imbalanced_right;
-	};
-	
-	n.right.left.set_balance balanced;
-	n.set_right (n.right.rotate_right);
-      };
-      result := n.rotate_left;
-      rebalance := FALSE;
-    }
-    .when balanced then {
-      n.set_balance imbalanced_right;
-      result := n;
-    }
-    .when imbalanced_left then {
-      n.set_balance balanced;
-      result := n;
-      rebalance := FALSE;
-    };
-    result
-  )
-  [
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {
-      rebalance = (node_height Result > 1 + 
-      Old node_height (n.left).max (node_height (n.right) - 1))
-    };
-  ];
-
-  - fast_do_remove (n:AVL_TREE_NODE[V],e:V) :AVL_TREE_NODE[V] <-
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n = NULL).if {
-      rebalance := FALSE;
-    }.elseif {e = n.item} then {
-      (n.left = NULL).if {
-	result := n.right;
-	exchange_and_discard (n, n);
-      }.elseif {n.right = NULL} then {
-	result := n.left;
-	exchange_and_discard (n, n);
-      } else {
-	n.set_left (remove_right (n, n.left));
-	(rebalance).if {
-	  result := left_shrunk n;
-	} else {
-	  result := n;
-	};
-      };
-    }.elseif {e < n.item} then {
-      n.set_left (do_remove (n.left, e));
-      (rebalance).if {
-	result := left_shrunk n;
-      } else {
-	result := n;
-      };
-    } else {
-      ? {e > n.item};			
-      n.set_right (do_remove (n.right, e));
-      (rebalance).if {
-	result := right_shrunk n;
-      } else {
-	result := n;
-      };
-    };
-    result
-  )
-  [
-    +? {Result = NULL || 
-      {Result.balance = node_height (Result.right) - node_height (Result.left)}
-    };
-    +? {rebalance = (node_height Result < Old node_height n)};
-  ];
-
-  - do_remove (n:AVL_TREE_NODE[V],e:V) :AVL_TREE_NODE[V] <-
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n = NULL).if {
-      rebalance := FALSE;
-    }.elseif {e < n.item} then {
-      n.set_left (do_remove (n.left, e));
-      (rebalance).if {
-	result := left_shrunk n;
-      } else {
-	result := n;
-      };
-    }.elseif {e > n.item} then {
-      n.set_right (do_remove (n.right, e));
-      (rebalance).if {
-	result := right_shrunk n;
-      } else {
-	result := n;
-      };
-    }.elseif {n.left = NULL} then {
-      result := n.right;
-      exchange_and_discard (n, n);
-    }.elseif {n.right = NULL} then {
-      result := n.left;
-      exchange_and_discard (n, n);
-    } else {
-      n.set_left (remove_right (n, n.left));
-      (rebalance).if {
-	result := left_shrunk n;
-      } else {
-	result := n;
-      };
-    };
-    result
-  )
-  [
-    +? {Result = NULL ||
-    {Result.balance = node_height (Result.right) - node_height (Result.left)}};
-    +? {rebalance = (node_height Result < Old node_height n)};
-  ];
-
-  - remove_right (n1, n2:AVL_TREE_NODE[V]) :AVL_TREE_NODE[V] <-
-  [
-    -? {n1 != NULL};
-    -? {n2 != NULL};
-  ]
-  ( + result:AVL_TREE_NODE[V];
-    
-    (n2.right = NULL).if {
-      result := n2.left;
-      exchange_and_discard (n1, n2);
-    } else {
-      n2.set_right (remove_right (n1, n2.right));
-      (rebalance).if {
-	result := right_shrunk n2;
-      } else {
-	result := n2;
-      };
-    };
-    result
-  )
-  [
-    +? {Result = NULL || 
-    {Result.balance = node_height (Result.right) - node_height (Result.left)}};
-    +? {rebalance = (node_height Result < Old node_height n2)};
-  ];
-
-  - left_shrunk n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  [
-    -? {rebalance};
-    -? {n != NULL};
-    -? {node_height (n.right) - node_height (n.left) - 1 = n.balance};
-  ]
-  ( + result:AVL_TREE_NODE[V];
-				
-    (n.balance)
-    .when imbalanced_left then {
-      n.set_balance balanced;
-      result := n;
-    }
-    .when balanced then {
-      n.set_balance imbalanced_right;
-      result := n;
-      rebalance := FALSE;
-    }
-    .when imbalanced_right then {
-      (n.right.balance)
-      .when imbalanced_left then {
-	(n.right.left.balance)
-	.when imbalanced_left then {
-	  n.set_balance balanced;
-	  n.right.set_balance imbalanced_right;
-	}
-	.when balanced then {
-	  n.set_balance balanced;
-	  n.right.set_balance balanced;
-	}
-	.when imbalanced_right then {
-	  n.set_balance imbalanced_left;
-	  n.right.set_balance balanced;
-	};
-	
-	n.right.left.set_balance balanced;
-	n.set_right (n.right.rotate_right);
-      }
-      .when balanced then {
-	n.set_balance imbalanced_right;
-	n.right.set_balance imbalanced_left;
-	rebalance := FALSE;
-      }
-      .when imbalanced_right then {
-	n.set_balance balanced;
-	n.right.set_balance balanced;
-      };
-      result := n.rotate_left;
-    };
-    result
-  )
-  [		    
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {rebalance = (node_height Result < 1 + 
-    Old node_height (n.right).max (node_height (n.left) + 1))};
-  ];
-
-  - right_shrunk n:AVL_TREE_NODE[V] :AVL_TREE_NODE[V] <-
-  [
-    -? {rebalance};
-    -? {n != NULL};
-    -? {node_height (n.right) + 1 - node_height (n.left) = n.balance};
-  ]
-  ( + result:AVL_TREE_NODE[V];
-		
-    (n.balance)
-    .when imbalanced_right then {
-      n.set_balance balanced;
-      result := n;
-    }
-    .when balanced then {
-      n.set_balance imbalanced_left;
-      result := n;
-      rebalance := FALSE;
-    }
-    .when imbalanced_left then {
-      (n.left.balance)
-      .when imbalanced_right then {
-	(n.left.right.balance)
-	.when imbalanced_right then {
-	  n.set_balance balanced;
-	  n.left.set_balance imbalanced_left;
-	}
-	.when balanced then {
-	  n.set_balance balanced;
-	  n.left.set_balance balanced;
-	}
-	.when imbalanced_left then {
-	  n.set_balance imbalanced_right;
-	  n.left.set_balance balanced;
-	};					
-	n.left.right.set_balance balanced;
-	n.set_left (n.left.rotate_left);
-      }
-      .when balanced then {
-	n.set_balance imbalanced_left;
-	n.left.set_balance imbalanced_right;
-	rebalance := FALSE;
-      }
-      .when imbalanced_left then {
-	n.set_balance balanced;
-	n.left.set_balance balanced;
-      };
-      result := n.rotate_right;
-    };
-    result
-  )
-  [
-    +? {Result != NULL};
-    +? {Result.balance = node_height (Result.right) - node_height (Result.left)};
-    +? {rebalance = (node_height Result < 1 + 
-    Old node_height (n.left).max (node_height (n.right) + 1))};
-  ];
-
-  - exchange_and_discard (n1, n2:AVL_TREE_NODE[V]) <-
-  [
-    -? {n1 != NULL};
-    -? {n2 != NULL};
-  ]
-  (
-    deferred;
-  )
-  [
-    +? {map_dirty};
-    +? {count = Old count - 1};
-    +? {rebalance};
-  ];
-	
-  - clear_nodes node:AVL_TREE_NODE[V] <-
-  (
-    (node.left != NULL).if {
-      clear_nodes (node.left);
-    };
-    (node.right != NULL).if {
-      clear_nodes (node.right);
-    };
-    discard_node node;
-  );
-
-  - node_height node:AVL_TREE_NODE[V] :INTEGER <-
-  ( + result:INTEGER;
-    
-    (node != NULL).if {
-      result := node.height;
-    };
-    result
-  );
-		
-Section Public		
-  
-  //
-  // Looking and searching:
-  //
-  
-  - has e:V :BOOLEAN <-
-  // Is element `e' in the set?
-  (
-    (root != NULL) && {root.has e}
-  );
-
-  - fast_has e:V :BOOLEAN <-
-  // Is element `e' in the set?
-  (
-    (root != NULL) && {root.fast_has e}
-  );
-
-Section SELF
-  
-  //
-  // Iterating internals:
-  //
-  
-  - build_map <-
-  [
-    "build_needed" -? {map_dirty};
-  ]
-  (
-    map.clear; //_count;
-    (count > 0).if {
-      root.map_in map;
-    };
-    map_dirty := FALSE;
-  )
-  [
-    "build_done" +? {! map_dirty};
-  ];
-
-  + map:FAST_ARRAY[AVL_TREE_NODE[V]];
-  // Elements in a row for iteration. See `build_map'.
-
-  + map_dirty:BOOLEAN;
-  // True when the map needs to be built again for the iterators. 
-  // See `build_map'.
-
-Section SELF
-  
-  - new_node:AVL_TREE_NODE[V] <-
-  ( 
-    a_new_node
-  );
-
-  - a_new_node:AVL_TREE_NODE[V] <-
-  (
-    deferred;
-    NULL
-  );
-	
-  - discard_node n:AVL_TREE_NODE[V] <-
-  [
-    -? {n != NULL};
-  ]
-  (
-    deferred;
-  );
-	
-  //	
-  // invariant
-  //
-  
-//  [
-//    -? {map != NULL};
-//    -? {(! map_dirty) -> (map.count = count)};
-//    -? {(count > 0) -> ((root != NULL) && {root.count = count})};
-//  ]
-
diff --git a/lib/collection/low_level/avl_tree_node.li b/lib/collection/low_level/avl_tree_node.li
deleted file mode 100644
index 2305e7c..0000000
--- a/lib/collection/low_level/avl_tree_node.li
+++ /dev/null
@@ -1,243 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := AVL_TREE_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Auxiliary class to implement AVL_SET.";
-	
-  // This a classic implementation of an AVL tree (balanced tree first designed 
-  // by Adelson-Velskii and Landis (hence A.V.L.), 1960)
-
-Section Insert
-  
-  - parent_avl_constants:AVL_CONSTANTS := AVL_CONSTANTS;
-
-Section Public
-  
-  - out_in_tagged_out_memory <-
-  (
-    item.out_in_tagged_out_memory;
-    tagged_out_memory.add_last '(';
-    (left = NULL).if {
-      tagged_out_memory.append "NULL";
-    } else {
-      left.out_in_tagged_out_memory;
-    };
-    tagged_out_memory.add_last ',';
-    (right = NULL).if {
-      tagged_out_memory.append "NULL";
-    } else {
-      right.out_in_tagged_out_memory;
-    };
-    tagged_out_memory.add_last ')';
-  );
-
-Section Public 
-  //AVL_TREE_NODE, AVL_TREE
-  
-  + left:AVL_TREE_NODE[V];
-
-  + right:AVL_TREE_NODE[V];
-
-  + item:V;
-
-  + balance:INTEGER;
-  // Balance factor; either `balanced' (the tree is balanced),
-  // `imbalanced_left' (the left branch is the longer) or
-  // `imbalanced_right' (the right branch is the longer)
-
-  - count:INTEGER <-
-  ( + result:INTEGER;
-    
-    result := 1;
-    (left != NULL).if {
-      result := result + left.count;
-    };
-    (right != NULL).if {
-      result := result + right.count;
-    };
-    result
-  );
-
-  - height:INTEGER <-
-  ( + result:INTEGER;
-		
-    (left != NULL).if {
-      result := left.height;
-    };
-    (right != NULL).if {
-      result := result.max (right.height);
-    };
-    result + 1
-  );
-
-  - map_in map:COLLECTION[AVL_TREE_NODE[V]] <-
-  [
-    -? {map != NULL};
-  ]
-  (
-    (left != NULL).if {
-      left.map_in map;
-    };
-    map.add_last Self; 
-    (right != NULL).if {
-      right.map_in map;
-    };
-  )
-  [
-    +? {map.count = Old map.count + count};
-  ];
-
-  - has e:V :BOOLEAN <-
-  // Is element `e' in the tree?
-  ( + result:BOOLEAN;
-		
-    result := item == e; //SAFE_EQUAL[V].test item and e;
-    (! result).if {
-      (e < item).if {
-	result := (left != NULL) && {left.has e};
-      } else {
-	result := (right != NULL) && {right.has e};
-      };
-    };
-    result
-  );	
-
-  - fast_has e:V :BOOLEAN <-
-  // Is element `e' in the tree?
-  ( + result:BOOLEAN;
-		
-    result := item = e;
-    ((! result) && {! item == e /*SAFE_EQUAL[V].test item and e*/}).if {
-      (e < item).if {
-	result := (left != NULL) && {left.fast_has e};
-      } else {
-	result := (right != NULL) && {right.fast_has e};
-      };
-    };
-    result
-  )
-  [
-    +? {Result -> (count > 0)};
-  ];
-
-  - at e:V :AVL_TREE_NODE[V] <-
-  // Is element `e' in the tree?
-  ( + result:AVL_TREE_NODE[V];
-			
-    (item == e /*SAFE_EQUAL[V].test item and e*/).if {
-      result := Self;
-    }.elseif {e < item} then {
-      (left != NULL).if {
-	result := left.at e;
-      };
-    } else {
-      (right != NULL).if {
-	result := right.at e;
-      };
-    };
-    result
-  );
-
-  - set_item i:V <-
-  [
-    // Equality admitted for the free list
-    -? {(left != NULL) ->> {(left.item = i) || {left.item < i}}};
-    -? {(right != NULL) ->> {right.item > i}};
-  ]
-  (
-    item := i;
-  )
-  [
-    +? {item = i};
-  ];
-
-  - set_left l:AVL_TREE_NODE[V] <-
-  [
-    // Equality admitted for the free list
-    -? {(l != NULL) -> ((l.item = item) || {l.item < item})};
-  ]
-  (
-    left := l;
-  )
-  [
-    +? {left = l};
-  ];
-
-  - set_right r:AVL_TREE_NODE[V] <-
-  [
-    -? {(r != NULL) ->> {r.item > item}};
-  ]
-  (
-    right := r;
-  )
-  [
-    +? {right = r};
-  ];
-
-  - set_balance b:INTEGER <-
-  (
-    balance := b;
-  )
-  [
-    +? {balance = b};
-  ];
-
-Section AVL_TREE, AVL_DICTIONARY, AVL_SET
-  
-  //
-  // Rotations:
-  //
-  
-  - rotate_right:AVL_TREE_NODE[V] <-
-  // Proceeds to some reorganisation and returns the upper node.
-  ( + result:AVL_TREE_NODE[V];
-    + left_right:AVL_TREE_NODE[V];
-    
-    result := left;
-    left_right := left.right;
-    left.set_right Self;
-    set_left left_right;
-    result
-  )
-  [
-    +? {Result != NULL};
-  ];
-
-  - rotate_left:AVL_TREE_NODE[V] <-
-  // Proceeds to some reorganisation and returns the upper node.
-  ( + result:AVL_TREE_NODE[V];
-    + right_left:AVL_TREE_NODE[V];
-		
-    result := right;
-    right_left := right.left;
-    right.set_left Self; 
-    set_right right_left;
-    result
-  ) 
-  [
-    +? {Result != NULL};
-  ];
-  
diff --git a/lib/collection/low_level/collection.li b/lib/collection/low_level/collection.li
deleted file mode 100644
index f123e28..0000000
--- a/lib/collection/low_level/collection.li
+++ /dev/null
@@ -1,842 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COLLECTION[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Pierre-Alexandre Voye";
-
-  - comment := "Common abstract definition of a sequenceable collection of objects."; 
-
-  // Such a collection is traversable using a simple INTEGER index from `lower' 
-  // to `upper' using `item'. All COLLECTIONs are resizable thanks to 
-  // `add_last' / `remove_last', `add_first' / `remove_first' as well as 
-  // `add' / `remove' .
-  //
-  // This abstraction provides feature to view a COLLECTION as a stack 
-  // (as an example by using `add_last', `last', and `remove_last'). 
-  // One can also use a COLLECTION as a queue (as an example, by using
-  // `add_last', `first' and `remove_first'). 
-  //
-  // The Lisaac standard library provides five implementations of COLLECTION: 
-  // ARRAY, FAST_ARRAY, LINKED_LIST and LINKED2_LIST. Except for creations all 
-  // implementations have exactly the same behavior. Switching from one 
-  // implementation to another only change the memory used and the execution 
-  // time (see header comment of ARRAY, FAST_ARRAY, LINKED_LIST and LINKED2_LIST 
-  // for more details).
-  
-Section Inherit
-  
-//  - parent_storage:STORAGE := STORAGE;
-  
-  - parent_traversable:TRAVERSABLE[V] := TRAVERSABLE[V]; 
-  
-Section Public
-  
-  //
-  // Accessing:
-  //
-  
-  - item i:INTEGER :V <-  
-  // Item at the corresponding index `i'.
-  //
-  // See also `lower', `upper', `valid_index', `put', `swap'.
-  ( + result:V;
-    
-    deferred;
-    result
-  );
-  
-  //
-  // Writing:
-  //
-  
-  - put element:V to i:INTEGER <-
-  // Make `element' the item at index `i'.
-  //
-  // See also `lower', `upper', `valid_index', `item', `swap', `force'.
-  [
-    -? { valid_index i };    
-  ]
-  ( 
-    deferred;
-  )
-  [
-    +? { item i = element };
-    +? { count = Old count};
-  ];
-    
-  - swap i1:INTEGER with i2:INTEGER <-
-  // Swap item at index `i1' with item at index `i2'.
-  //
-  // See also `item', `put'.
-  [
-    -? { valid_index i1 };
-    -? { valid_index i2 };
-  ]
-  ( + tmp:V;
-   
-    tmp := item i1;
-    put (item i2) to i1;
-    put tmp to i2;
-  )
-  [
-    +? { item i1 = Old item i2 };
-    +? { item i2 = Old item i1 };
-    +? { count = Old count };
-  ];
-    
-  - set_all_with v:V <-
-  // Set all items with value `v'.
-  //
-  // See also `set_slice_with'.
-  ( 
-    deferred;
-  )
-  [
-    +? { count = Old count };
-  ];
-    
-  - set_slice lower_index:INTEGER to upper_index:INTEGER with v:V <-
-  // Set all items in range [`lower_index' .. `upper_index'] with `v'.
-  //
-  // See also `set_all_with'.
-  [
-    -? { lower_index <= upper_index };
-    -? { valid_index lower_index };
-    -? { valid_index upper_index };
-  ] 
-  (    
-    lower_index.to upper_index do { i:INTEGER;
-      put v to i;
-    }; 
-  )
-  [
-    +? { count = Old count };
-  ];
-    
-  - clear_all <-
-  // Set every item to its default value.
-  // The `count' is not affected 
-  //
-  // see also `clear', `all_default'.
-  ( + value:V;
-   
-    set_all_with value;
-  ) 
-  [
-    "Stable upper." +? { upper = Old upper };
-    "Stable lower." +? { lower = Old lower };
-    +? { all_default };
-  ];
-  
-  //
-  // Adding:
-  //
-  
-  - add_first element:V <-
-  // Add a new item in first position : `count' is increased by
-  // one and all other items are shifted right.
-  //
-  // See also `add_last', `first', `last', `add'.
-  ( 
-    deferred;
-  )
-  [
-    -? { first = element };
-    -? { count = 1 + Old count };
-    -? { lower = Old lower };
-    -? { upper = 1 + Old upper };
-  ];
-    
-  - add_last element:V <-
-  // Add a new item at the end : `count' is increased by one.
-  //
-  // See also `add_first', `last', `first', `add'.
-  ( 
-    deferred;
-  )
-  [
-    +? { last = element };
-    +? { count = 1 + Old count };
-    +? { lower = Old lower };
-    +? { upper = 1 + Old upper };
-  ];
-    
-  - add element:V to index:INTEGER <-
-  // Add a new `element' at rank `index' : `count' is increased
-  // by one and range [`index' .. `upper'] is shifted right
-  // by one position.
-  //
-  // See also `add_first', `add_last', `append_collection'.
-  [
-    -? { index.in_range lower to (upper + 1)};
-  ]
-  (    
-    deferred;
-  )
-  [
-    +? { item index = element };
-    +? { count = 1 + Old count };
-    +? { upper = 1 + Old upper };
-  ];
-    
-  - append_collection other:COLLECTION[V] <-
-  // Append `other' to Current.
-  //
-  // See also `add_last', `add_first', `add'.
-  [
-    -? { other != NULL };
-  ]
-  (    
-    (other.lower).to (other.upper) do { i:INTEGER; 	
-      add_last (other.item i);
-    }; 
-  )
-  [
-    +? { count = other.count + Old count };
-  ];
-  
-  //
-  // Modification:
-  //
-  
-  - force element:V to index:INTEGER <-
-  // Make `element' the item at `index', enlarging the collection if
-  // necessary (new bounds except `index' are initialized with
-  // default values).
-  //
-  // See also `put', `item', `swap'.
-  [
-    +? { index >= lower};
-  ]
-  (    
-    deferred;
-  )
-  [
-    -? { upper = index.max (Old upper) };
-    -? { item index = element };
-  ];
-    
-  - copy other:SELF <-
-  // Reinitialize by copying all the items of `other'.
-  (
-    deferred;
-  );
-    
-  - from_collection model:COLLECTION[V] <-
-  // Initialize the current object with the contents of `model'.
-  [
-    -? { model != NULL };
-    "Useful work." -? {model != Self};
-  ]
-  (    
-    deferred;
-  )
-  [
-    +? { count = model.count };
-  ];
-  
-  //
-  // Removing:
-  //
-  
-  - remove_first <-
-  // Remove the `first' element of the collection.
-  //
-  // See also `remove_last', `remove', `remove_head'.
-  [
-    -? { ! is_empty };
-  ]
-  ( 
-    deferred;   
-  )
-  [
-    +? { count = Old count - 1};
-    +? {(lower = Old lower + 1) ^ (upper = Old upper - 1)};
-  ];
-  
-  - remove_head n:INTEGER <-
-  // Remove the `n' elements of the collection.
-  //
-  // See also `remove_tail', `remove', `remove_first'.
-  [
-    -? {n > 0};
-    -? {n <= count};
-  ]
-  (
-    deferred;
-  )
-  [
-    +? { count = Old count - n };
-    +? {(lower = Old lower + n) ^ (upper = Old upper - n)};
-  ];
-  
-  - remove index:INTEGER <-
-  // Remove the item at position `index'. Followings items
-  // are shifted left by one position.
-  //
-  // See also `remove_first', `remove_head', `remove_tail', `remove_last'.
-  [
-    -? { valid_index index };
-  ]
-  ( 
-    deferred;    
-  )
-  [
-    +? { count = Old count - 1};
-    +? { upper = Old upper - 1};
-  ];
-    
-  - remove_last <-
-  // Remove the `last' item.
-  //
-  // See also `remove_first', `remove', `remove_tail'.
-  [
-    -? {! is_empty};
-  ]
-  (    
-    deferred;    
-  )
-  [
-    +? { count = Old count - 1 };
-    +? { upper = Old upper - 1 };
-  ];
-  
-  - remove_tail n:INTEGER <-
-  // Remove the last `n' item(s).
-  //
-  // See also `remove_head', `remove', `remove_last'.
-  [
-    -? {n > 0};
-    -? {n <= count};
-  ]
-  (
-    deferred;
-  )
-  [
-    +? {count = Old count - n};
-    +? {upper = Old upper - n};
-  ];
-  
-  - clear <-
-  // Discard all items in order to make it `is_empty'.
-  //
-  // See also `clear_all'.
-  (
-    deferred;
-  )
-  [
-    "Is empty." +? { count = 0 };
-  ];
-  
-  //
-  // Looking and Searching:
-  //
-  
-  - has x:V :BOOLEAN <-
-  // Look for `x' using `equal' for comparison.
-  // 
-  // See also `fast_has', `index_of', `fast_index_of'.
-  (
-    valid_index (first_index_of x)
-  );
-    
-  - fast_has x:V :BOOLEAN <-
-  // Look for `x' using basic `=' for comparison.
-  // 
-  // See also `has', `fast_index_of', `index_of'.
-  (
-    valid_index (fast_first_index_of x)
-  );
-    
-  - first_index_of element:V :INTEGER <-
-  // Give the index of the first occurrence of `element' using
-  // `==' for comparison.
-  // Answer `upper + 1' when `element' is not inside.
-  //
-  // See also `fast_first_index_of', `index_of', `last_index_of', 
-  // `reverse_index_of'.
-  ( 
-    deferred;
-    0
-  )
-  [
-    "Definition." +? {Result = index_of element start lower};
-  ];  
-  
-  - index_of element:V start start_index:INTEGER :INTEGER <-
-  // Using `is_equal' for comparison, gives the index of the first occurrence 
-  // of `element' at or after `start_index'. Answer `upper + 1' when `element' 
-  // when the search fail.
-  //
-  // See also `fast_index_of', `reverse_index_of', `first_index_of'.
-  (
-    deferred;
-    0
-  )
-  [
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {valid_index Result ->> { SAFE_EQUAL[V].test element with (item Result)}};
-  ];
-  
-  - reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  // Using `is_equal' for comparison, gives the index of the first occurrence of 
-  // `element' at or before `start_index'. Search is done in reverse direction, 
-  // which means from the `start_index' down to the `lower' index . 
-  // Answer `lower -1' when the search fail.
-  //
-  // See also `fast_reverse_index_of', `last_index_of', `index_of'.
-  [
-    -? { valid_index start_index };
-  ]
-  (
-    deferred;
-    0
-  )
-  [
-    +? {Result.in_range (lower - 1) to start_index};
-    +? {valid_index Result -> (item Result == element)};
-  ];
-
-  - last_index_of element:V :INTEGER <-
-  // Using `is_equal' for comparison, gives the index of the last occurrence 
-  // of `element' at or before `upper'. Search is done in reverse direction, 
-  // which means from the `upper' down to the `lower' index . Answer `lower -1' 
-  // when the search fail.
-  //
-  // See also `fast_last_index_of', `reverse_index_of', `index_of'.
-  (
-    reverse_index_of element start upper
-  )
-  [
-    "Definition." +? {Result = reverse_index_of element start upper};
-  ];
-
-  - fast_first_index_of element:V :INTEGER <-
-  // Give the index of the first occurrence of `element' using basic `=' 
-  // for comparison. Answer `upper + 1' when `element' is not inside.
-  //
-  // See also `first_index_of', `last_index_of', `fast_last_index_of'.
-  (
-    deferred;
-    0
-  )
-  [
-    "Definition." +? {Result = fast_index_of element start lower};
-  ];
-
-  - fast_index_of element:V start start_index:INTEGER :INTEGER <-
-  // Using basic `=' for comparison, gives the index of the first occurrence 
-  // of `element' at or after `start_index'. Answer `upper + 1' when `element' 
-  // when the search fail.
-  //
-  // See also `index_of', `fast_reverse_index_of', `fast_first_index_of'.
-  (
-    deferred;
-    0
-  )
-  [
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {valid_index Result ->> {element = item Result}};
-  ];
-
-  - fast_reverse_index_of element:V start start_index:INTEGER :INTEGER <-
-  // Using basic `=' comparison, gives the index of the first occurrence 
-  // of `element' at or before `start_index'. Search is done in reverse 
-  // direction, which means from the `start_index' down to the `lower' 
-  // index . Answer `lower -1' when the search fail.
-  //
-  // See also `reverse_index_of', `fast_index_of', `fast_last_index_of'.
-  [
-    -? { valid_index start_index };
-  ]
-  (
-    deferred;
-    0
-  )
-  [
-    +? { Result.in_range (lower - 1) to start_index  };
-    +? { valid_index Result ->> {item Result = element}};
-  ];
-
-  - fast_last_index_of element:V :INTEGER <-
-  // Using basic `=' for comparison, gives the index of the last occurrence 
-  // of `element' at or before `upper'. Search is done in reverse direction, 
-  // which means from the `upper' down to the `lower' index . Answer `lower -1' 
-  // when the search fail.
-  //
-  // See also `fast_reverse_index_of', `last_index_of'.
-  (
-    fast_reverse_index_of element start upper
-  )
-  [
-    "Definition." +? {Result = fast_reverse_index_of element start upper};
-  ];
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - '=='  Right 60 other:COLLECTION[V] :BOOLEAN <-
-  // Do both collections have the same `lower', `upper', and
-  // items?
-  // The basic `=' is used for comparison of items.
-  //
-  // See also `is_equal_map', `same_items'.
-  ( 
-    deferred;
-    FALSE
-  )
-  [ 
-    +? { Result ->> {(lower = other.lower) & (upper = other.upper)} };   
-  ];
-    
-  - is_equal_map other:SELF :BOOLEAN <-
-  // Do both collections have the same `lower', `upper', and
-  // items?
-  // Feature `==' is used for comparison of items.
-  //
-  // See also `==', `same_items'.
-  ( 
-    deferred;
-    FALSE
-  )
-  [
-    +? { result -> ((lower = other.lower) & (upper = other.upper)) };   
-  ];
-    
-  - all_default:BOOLEAN <-
-  // Do all items have their type's default value?
-  // Note: for non NULL items, the test is performed with the `is_default' predicate.
-  //
-  // See also `clear_all'.
-  ( 
-    deferred;
-    FALSE
-  );
-    
-  - same_items other:COLLECTION[V] :BOOLEAN <-
-  // Do both collections have the same items? The basic `=' is used
-  // for comparison of items and indices are not considered (for
-  // example this routine may yeld true with `Current' indexed in
-  // range [1..2] and `other' indexed in range [2..3]).
-  //
-  // See also `is_equal_map', `is_equal'.
-  [
-    -? { other != NULL };
-  ]
-  ( + result:BOOLEAN;
-    + i,j:INTEGER;
-       
-    (count = other.count).if {
-      result := TRUE;
-      i := lower;
-      j := other.lower;
-      {(! result) || {i > upper}}.until_do {
-	result := (item i = other.item j);
-	i := i + 1;
-	j := j + 1;
-      }; 
-    }; 
-    result
-  )
-  [
-    +? { result -> (count = other.count)};   
-  ];
-    
-  - occurrences element:V :INTEGER <-
-  // Number of occurrences of `element' using `equal' for comparison.
-  // 
-  // See also `fast_occurrences', `index_of'.
-  ( 
-    deferred;
-    0
-  )
-  [
-    +? { result >= 0 };
-  ];
-    
-  - fast_occurrences element:V :INTEGER <-
-  // Number of occurrences of `element' using basic `=' for comparison.
-  // 
-  // See also `occurrences', `index_of'.
-  ( 
-    deferred;
-    0
-  )
-  [ 
-    +? { result >= 0 };
-  ];
-  
-  //
-  // Printing:
-  //
-  
-  - fill_tagged_out_memory <-
-  ( + i:INTEGER;
-    + v:V;
-    
-    tagged_out_memory.append "lower: ";
-    lower.append_in tagged_out_memory;
-    tagged_out_memory.append " upper: ";
-    upper.append_in tagged_out_memory;
-    tagged_out_memory.append " [";
-    
-    i := lower;
-    {(i > upper) || {tagged_out_memory.count > 2048}}.until_do {
-      v := item i;
-      (v = NULL).if {
-	tagged_out_memory.append "NULL";
-      } else {
-	v.out_in_tagged_out_memory;
-      }; 
-      (i < upper).if {
-	tagged_out_memory.add_last ' ';
-      }; 
-      i := i + 1;
-    }; 
-    (i <= upper).if {
-      tagged_out_memory.append " ...";
-    }; 
-    tagged_out_memory.add_last ']';
-  );
-  
-  //
-  // Agents based features:
-  //
-  
-  - foreach action:BLOCK <- do_all action;
-  
-  - do_all action:BLOCK <-
-  // Apply `action' to every item of `Self'.
-  //
-  // See also `for_all', `exists'.
-  (
-    lower.to upper do { i:INTEGER;
-      action.value (item i);
-    };
-  );
-  
-  - foreach action:BLOCK while test:BLOCK <-
-  // Apply `action' to every item of `Self' while test is true
-  ( + i:INTEGER;
-    + tst:BOOLEAN;
-    
-    i := lower;
-    {(i <= upper) && {test.value (item i)}}.while_do {
-      action.value (item i);
-      i := i+1;
-    };
-  );
-
-  - foreach action:BLOCK until test:BLOCK <-
-  // Apply `action' to every item of `Self' until test is true
-  ( + i:INTEGER;
-    + tst:BOOLEAN;
-    
-    i := lower;
-    {(i <= upper) && {! test.value (item i)}}.while_do {
-      action.value (item i);
-      i := i+1;
-    };
-  );
-
-  - foreach action:BLOCK only_if test:BLOCK <-
-  (
-    lower.to upper do { i:INTEGER;
-      test.value (item i).if {
-	action.value (item i);
-      };
-    };    
-  );
-  
-  - is_all test:BLOCK :BOOLEAN <- for_all test;
-  
-  - for_all test:BLOCK :BOOLEAN <-
-  // Do all items satisfy `test'?
-  //
-  // See also `do_all', `exists'.
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    result := TRUE;
-    i := lower;
-    {(! result) || {i > upper}}.until_do {
-      result := test.value (item i);
-      i := i + 1;
-    };
-    result
-  );
-    
-  - exists test:BLOCK :BOOLEAN <-
-  // Does at least one item satisfy `test'?
-  //
-  // See also `do_all', `for_all'.
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    i := lower;
-    {(result) || {i > upper}}.until_do {
-      result := test.value (item i);
-      i := i + 1;
-    };
-    result
-  );
-  
-  // 
-  // Traditionals features (in functional languages)
-  //
-  
-  - filter test:BLOCK in other:SELF <-
-  // Filter all element which `test' element is true
-  ( + elt:V;
-    
-    lower.to upper do { j:INTEGER;
-      elt := item j;
-      (test.value elt).if {
-	other.add_last elt;
-      };
-    };
-  );
-
-  - fold_left function:BLOCK with element:V :V <-
-  ( + result:V;
-    
-    result := element;
-    lower.to upper do { j:INTEGER;
-      result := function.value (result,item j);
-    };
-    result
-  );
-
-  - fold_right function:BLOCK with element:V :V <-
-  ( + result:V;
-    
-    result := element;
-    upper.downto lower do { j:INTEGER;
-      result := function.value (result,item j);
-    };
-    result
-  );
-  
-  //
-  // Other features
-  //
-      
-  - replace_all old_value:V with new_value:V <-
-  // Replace all occurrences of the element `old_value' by `new_value'
-  // using `equal' for comparison.
-  //
-  // See also `fast_replace_all', `move'.
-  ( 
-    deferred;
-  )
-  [
-    +? { count = Old count};
-    +? { (! SAFE_EQUAL[V].test old_value with new_value) ->> {occurrences old_value = 0}};
-  ];  
-  
-  - fast_replace_all old_value:V with new_value:V <-
-  // Replace all occurrences of the element `old_value' by `new_value'
-  // using operator `=' for comparison.
-  //
-  // See also `replace_all', `move'.
-  ( 
-    deferred;
-  )
-  [
-    +? { count = Old count };
-    +? { (old_value != new_value) ->> {occurrences old_value = 0}};
-  ];  
-  
-  - move lower_index:INTEGER to upper_index:INTEGER by distance:INTEGER <-
-  // Move range `lower_index' .. `upper_index' by `distance'
-  // positions. Negative distance moves towards lower indices.
-  // Free places get default values.
-  //
-  // See also `slice', `replace_all'.
-  [
-    -? { lower_index <= upper_index };
-    -? { valid_index lower_index };
-    -? { valid_index (lower_index + distance) };
-    -? { valid_index upper_index };
-    -? { valid_index (upper_index + distance) };
-  ]
-  ( + default_value:V;
-    
-    (distance != 0).if {
-      (distance < 0).if {      
-	lower_index.to upper_index do { i:INTEGER;
-	  put (item i) to (i + distance);
-	  put default_value to i;
-	}; 
-      } else {
-	upper_index.downto lower_index do { i:INTEGER;
-	  put (item i) to (i + distance);
-	  put default_value to i;
-	}; 
-      };
-    }; 
-  )
-  [
-    +? {count = Old count};
-  ];
-    
-  - slice min:INTEGER to max:INTEGER :SELF <-
-  // New collection consisting of items at indexes in [`min'..`max'].
-  // Result has the same dynamic type as `Current'.
-  // The `lower' index of the `Result' is the same as `lower'.
-  //
-  // See also `from_collection', `move', `replace_all'.
-  [
-    -? { lower <= min   };
-    -? { max <= upper   };
-    -? { min <= max + 1 };
-  ]
-  (    
-    deferred;
-    NULL
-  )
-  [
-    +? { same_dynamic_type Result };
-    +? { Result.count = max - min + 1};
-    +? { Result.lower = lower };
-  ];
-  
-  - reverse <-
-  // Reverse the order of the elements.
-  (
-    deferred;
-  )
-  [    
-    +? { count = Old count };
-  ];
-  
-  //
-  // Invariant.
-  //
-  
-//  [
-//    -? { lower <= upper + 1 };
-//  ];
-  
diff --git a/lib/collection/low_level/collection2.li b/lib/collection/low_level/collection2.li
deleted file mode 100644
index d52c375..0000000
--- a/lib/collection/low_level/collection2.li
+++ /dev/null
@@ -1,474 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := COLLECTION2[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Abstract definition of a 2 dimensional collection of elements of type E.";
-  
-  // The Lisaac standard library provides two implementations of COLLECTION2: 
-  // ARRAY2 and FAST_ARRAY2.
-  // All implementations have exactly the same behavior. Switching from one implementation to
-  // another only change the memory used and the execution time.
-      
-Section Inherit
-  
-  - parent_safe_equal:SAFE_EQUAL[V] := SAFE_EQUAL[V];
-  
-Section Public
-  
-  //
-  // Indexing:
-  //
-  
-  - lower1:INTEGER <-
-  // First Lower index bounds.
-  (
-    deferred;
-    0
-  );
-    
-  - lower2 :INTEGER <-
-  // Second Lower index bounds.
-  (
-    deferred;
-    0
-  );
-  
-  - line_minimum:INTEGER <- lower1;
-  // Equivalent of `lower1'.
-
-  - column_minimum:INTEGER <- lower2;
-  // Equivalent of `lower2'.
-  
-  - upper1:INTEGER <-
-  // First Upper index bounds.
-  (
-    deferred;
-    0
-  );
-    
-  - upper2 :INTEGER <-
-  // Second Upper index bounds.
-  (    
-    deferred;
-    0
-  );
-  
-  - line_maximum:INTEGER <- upper1;
-  // Equivalent of `upper1'.
-
-  - column_maximum:INTEGER <- upper2;
-  // Equivalent of `upper2'.
-  
-  //
-  // Reading:
-  //
-  
-  - item (line, column:INTEGER) :V <-
-  [ -? { valid_index (line,column) }; ]
-  ( + result:V;
-    
-    deferred;
-    result
-  );
-  
-  //
-  // Writing:
-  //
-  
-  - put element:V to (line, column:INTEGER) <-
-  [ -? { valid_index (line,column) }; ]
-  (
-    deferred;
-  )
-  [ +? { item (line,column) = element}; ];
-    
-  - force element:V to (line, column:INTEGER) <-
-  // Put `element' at position (`line',`column'). Collection is
-  // resized first when (`line',`column') is not inside current
-  // bounds. New bounds are initialized with default values.
-  [
-    -? { line >= 0   };
-    -? { column >= 0 };
-  ]
-  (
-    deferred;
-  )
-  [
-    +? { item (line,column) = element };
-    +? { count >= Old count };
-  ];
-  
-  //
-  // Index validity:
-  //
-  
-  - valid_line line:INTEGER :BOOLEAN <- 
-  (
-    (lower1 <= line) && { line <= upper1}
-  )
-  [
-    +? { Result = (lower1 <= line) && { line <= upper1 } };
-  ];
-    
-  - valid_index1 line:INTEGER :BOOLEAN <-
-  (
-    valid_line line
-  );
-    
-  - valid_column column:INTEGER :BOOLEAN <- 
-  (
-    (lower2 <= column) && {column <= upper2}
-  )
-  [
-    +? { Result = (lower2 <= column) && {column <= upper2} };
-  ];
-    
-  - valid_index2 column:INTEGER :BOOLEAN <-
-  (
-    valid_column column
-  );
-    
-  - valid_index (line, column:INTEGER) :BOOLEAN <-
-  (
-    (lower1 <= line  ) && {line <= upper1  } && 
-    {lower2 <= column} && {column <= upper2}
-  )
-  [      
-    +? { Result = (valid_line line) && {valid_column column} };
-  ];
-  
-  //
-  // Counting:
-  //
-  
-  - count1:INTEGER <-
-  // Size of the first dimension.
-  (
-    deferred;
-    0
-  )    
-  [
-    +? { Result = upper1 - lower1 + 1 };
-  ];
-  
-  - line_count:INTEGER <- count1;
-  // Equivalent of `count1'.
-    
-  - count2 :INTEGER <-
-  // Size of the second dimension.
-  (
-    deferred;
-    0
-  )
-  [
-    +? { Result = upper2 - lower2 + 1 };
-  ];
-    
-  - column_count :INTEGER <- count2;
-  // Equivalent of `count2'.
-  
-  - count:INTEGER <-
-  // Total number of elements.
-  (
-    deferred;
-    0
-  )
-  [
-    +? { Result = line_count * column_count };
-  ];
-    
-  - swap (line1, column1:INTEGER) with (line2, column2:INTEGER) <-
-  // Swap the element at index (`line1',`column1') with the
-  // the element at index (`line2',`column2').
-  [
-    -? { valid_index (line1,column1) };
-    -? { valid_index (line2,column2) };
-  ]
-  (
-    deferred;
-  )
-  [
-    +? { item (line1,column1) = Old item (line2,column2) };
-    +? { item (line2,column2) = Old item (line1,column1) };
-    +? { count = Old count };
-  ];
-    
-  - set_all_with v:V <-
-  // Set all item with value `v'.
-  (
-    deferred;
-  )
-  [
-    +? { count = Old count };
-  ];
-    
-  - clear_all <-
-  // Set all items to default values.
-  ( + value:V;
-        
-    set_all_with value;
-  )
-  [
-    +? { count = Old count };
-    +? { all_default };
-  ];
-  
-  //
-  // Creating or initializing:
-  //
-  
-  - from_collection2 model:COLLECTION2[V] <-
-  //  Uses `model' to initialize Current.
-  [ -? { model != NULL }; ]
-  (
-    deferred;
-  )
-  [
-    +? { count1 = model.count1 };
-    +? { count2 = model.count2 };
-  ];
-    
-  - from_model model:COLLECTION[COLLECTION[V]] <-
-  // The `model' is used to fill line by line Current.
-  // Assume all sub-collections of `model' have the same
-  // number of lines.
-  [
-    -? { model.count >= 1 };
-    -? { model.first.count >= 1 };
-  ]
-  (
-    deferred;
-  )
-  [
-    +? { count1 = model.count };
-    +? { count2 = model.first.count };
-  ];
-  
-  //
-  // Looking and comparison:
-  //
-  
-  - all_default:BOOLEAN <-
-  // Do all items have their type's default value?
-  (
-    deferred
-    FALSE
-  );
-  
-  - '==' other:COLLECTION2[V] :BOOLEAN <-
-  // Do both collections have the same `lower1', `lower2', `upper1' and `upper2', and items?
-  // The basic `=' is used for comparison of items.
-  //
-  // See also `is_equal_map'.
-  ( + line, column:INTEGER;
-    + result:BOOLEAN;
-		
-    (
-      (lower1 = other.lower1) && 
-      {upper1 = other.upper1} && 
-      {lower2 = other.lower2} &&
-      {upper2 = other.upper2}
-    ).if {
-      result := TRUE;
-      line := upper1;
-      {(! result) || {line < lower1}}.until_do {
-	column := upper2;
-	{(! result) || {column < lower2}}.until_do {
-	  result := item (line, column) = other.item (line, column);
-	  column := column - 1;
-	};
-	line := line - 1;
-      };
-    };
-    result
-  );
-
-  - is_equal_map (other:COLLECTION2[V]) :BOOLEAN <-
-  // Do both collections have the same `lower1', `lower2', `upper1' and `upper2', and items?
-  // Feature `is_equal' is used for comparison of items.
-  //
-  // See also `is_equal'.
-  ( + line, column:INTEGER;
-    
-    (
-      (lower1 = other.lower1) && 
-      {upper1 = other.upper1} && 
-      {lower2 = other.lower2} &&
-      {upper2 = other.upper2}
-    ).if {
-      result := TRUE;
-      line := upper1;
-      {(! result) || {line < lower1}}.until_do {
-	column := upper2;
-	{(! result) || {column < lower2}}.until_do {
-	  result := safe_equal (item (line,column)) with (other.item (line, column));
-	  column := column - 1;
-	};
-	line := line - 1;
-      };
-    };
-    result
-  );  
-  
-  //
-  // Printing:
-  //
-  
-  - fill_tagged_out_memory <-
-  ( + line:INTEGER;
-    +v:V;
-    
-    tagged_out_memory.append "lower1:";
-    lower1.append_in tagged_out_memory;
-    tagged_out_memory.append " upper1:";
-    upper1.append_in tagged_out_memory;
-    tagged_out_memory.append " lower2:";
-    lower2.append_in tagged_out_memory;
-    tagged_out_memory.append " upper2:";
-    upper2.append_in tagged_out_memory;
-    tagged_out_memory.append " [\n";
-    
-    line := lower1;
-    { (line > upper1) || { tagged_out_memory.count > 4096 }}.until_do {
-      tagged_out_memory.append(once "line ");
-      line.append_in(tagged_out_memory);
-      tagged_out_memory.append(once "\t:");
-      
-      lower2.to upper2 do { column:INTEGER;
-	v := item (line,column);
-	(v = NULL).if {
-	  tagged_out_memory.append(once "NULL");
-	} else {
-	  v.out_in_tagged_out_memory;
-	}; 
-	tagged_out_memory.add_last ' ';
-      }; 
-      tagged_out_memory.add_last '\n';
-      line := line + 1;
-    }; 
-    (valid_line line).if {
-      tagged_out_memory.append(once "......\n");
-    }; 
-  );
-  
-  //
-  // Miscellaneous features:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  // Number of occurrences using `equal'.
-  //
-  // See also `fast_occurrences' to chose the apropriate one.
-  (
-    deferred;
-    0
-  )
-  [ +? { Result >= 0 }; ];
-    
-  - fast_occurrences elt:V :INTEGER <-
-  // Number of occurrences using `='.
-  //
-  // See also `occurrences' to chose the apropriate one.
-  (
-    deferred
-    0
-  )
-  [ +? { Result >= 0 }; ];
-     
-  - has x:V :BOOLEAN <-
-  // Search if a element x is in the array using `equal'.
-  //
-  // See also `fast_has' to chose the apropriate one.
-  (
-    deferred;
-    FALSE
-  );
-    
-  - fast_has x:V :BOOLEAN <-
-  //  Search if a element x is in the array using `='.
-  (
-    deferred;
-    FALSE
-  );
-    
-  - replace_all old_value:V with new_value:V <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using `equal' for comparison.
-  //
-  // See also `fast_replace_all' to choose the apropriate one.
-  (
-    deferred;
-  )
-  [ 
-    +? { count = Old count };
-    +? { occurrences old_value = 0 };
-  ];
-    
-  - fast_replace_all old_value:V with new_value:V <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using operator `=' for comparison.
-  //
-  // See also `replace_all' to choose the apropriate one.
-  (
-    deferred;
-  )
-  [
-    +? { count = Old count };
-    +? { fast_occurrences old_value = 0 };
-  ];
-    
-  - sub_collection2 (line_min,column_min:INTEGER) to (line_max,column_max:INTEGER) :SELF <-
-  // Create a new object using selected area of `Current'.
-  [
-    -? { valid_index (line_min,column_min) };
-    -? { valid_index (line_max,column_max) };
-  ]
-  (    
-    deferred;
-    NULL
-  )
-  [ 
-    +? { result != NULL };
-  ];
-    
-  - set_area (line_min,column_min:INTEGER) to (line_max,column_max:INTEGER) with element:V <-
-  // Set all the elements of the selected area rectangle with `element'.
-  [
-    -? { valid_index (line_min,column_min) };
-    -? { valid_index (line_max,column_max) };
-  ]
-  (       
-    line_min.to line_max do { line:INTEGER;
-      column_min.to column_max do { column:INTEGER;
-	put element to (line,column);
-      }; 
-    }; 
-  )
-  [
-    +? { count = Old count };
-  ];
-  
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/collection3.li b/lib/collection/low_level/collection3.li
deleted file mode 100644
index 3589c2c..0000000
--- a/lib/collection/low_level/collection3.li
+++ /dev/null
@@ -1,518 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COLLECTION3[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Abstract definition of a 3 dimensional collection of elements of type E.";
-  
-  // The Lisaac standard library provides two implementations of COLLECTION3: ARRAY3 
-  // and FAST_ARRAY3. All implementations have exactly the same behavior. 
-  // Switching from one implementation to another only change the memory 
-  // used and the execution time.
-  
-Section Inherit
-  
-  - parent_safe_equal:SAFE_EQUAL[V] := SAFE_EQUAL[V];
-  
-Section Public
-  
-  - lower1:INTEGER <-
-  // Lower index bound for dimension 1.
-  (
-    deferred;
-    0
-  );
-    
-  - lower2:INTEGER <-
-  // Lower index bound for dimension 2.
-  (
-    deferred;
-    0
-  );
-    
-  - lower3:INTEGER <-
-  // Lower index bound for dimension 3.
-  (
-    deferred;
-    0
-  );
-    
-  - line_minimum:INTEGER <- lower1;
-  // Equivalent of `lower1'.
-  
-  - column_minimum:INTEGER <- lower2;
-  // Equivalent of `lower2'.
-  
-  - depth_minimum:INTEGER <- lower3;
-  // Equivalent of `lower3'.
-  
-  - upper1:INTEGER <-
-  // Upper index bound for dimension 1.
-  (
-    deferred;
-    0
-  );
-    
-  - upper2:INTEGER <-
-  // Upper index bound for dimension 2.
-  (
-    deferred;
-    0
-  );
-    
-  - upper3:INTEGER <-
-  // Upper index bound for dimension 3.
-  (
-    deferred;
-    0
-  );
-    
-  - line_maximum:INTEGER <- upper1;
-  // Equivalent of `upper1'.
-  
-  - column_maximum:INTEGER <- upper2;
-  // Equivalent of `upper2'.
-  
-  - depth_maximum:INTEGER <- upper3;
-  // Equivalent of `upper3'.
-  
-  //
-  // Reading:
-  //
-
-  - item (line, column, depth:INTEGER) :V <-
-  [ -? { valid_index (line,column,depth) }; ]
-  ( + result:V;    
-    
-    deferred;
-    result
-  );
-  
-  //
-  // Writing:
-  //
-
-  - put element:V to (line, column, depth:INTEGER) <-
-  [ -? {valid_index (line,column,depth) }; ]
-  (    
-    deferred;
-  )
-  [ +? { item(line,column,depth) = element}; ];
-    
-  - force element:V to (line, column, depth:INTEGER) <-
-  // Put `element' at position (`line',`column',`depth').
-  // Collection is resized first when (`line',`column',`depth')
-  // is not inside current bounds.
-  // New bounds are initialized with default values.
-  [
-    -? { line >= 0  };
-    -? { column >= 0};
-    -? { depth >= 0 };
-  ]
-  (
-    deferred;
-  )
-  [
-    +? { item (line,column,depth) = element };
-    +? { count >= Old count };
-  ];
-  
-  //
-  // Index validity:
-  //
-  
-  - valid_line line:INTEGER :BOOLEAN <-
-  (
-    (lower1 <= line) && {line <= upper1}
-  )
-  [ +? {Result = (lower1 <= line) && {line <= upper1}}; ];
-    
-  - valid_index1 line:INTEGER :BOOLEAN <- valid_line line;
-  
-  - valid_column column:INTEGER :BOOLEAN <-
-  (
-    (lower2 <= column) && {column <= upper2}
-  )
-  [ +? {Result = (lower2 <= column) && {column <= upper2}}; ];
-    
-  - valid_index2 column:INTEGER :BOOLEAN <- valid_column column;
-  
-  - valid_depth depth:INTEGER :BOOLEAN <-
-  (
-    (lower3 <= depth) && {depth <= upper3}
-  )
-  [ +? {Result = (lower3 <= depth) && {depth <= upper3}}; ];
-    
-  - valid_index3 depth:INTEGER :BOOLEAN <- valid_depth depth;
-  
-  - valid_index (line, column, depth:INTEGER) :BOOLEAN <-
-  (
-    (lower1 <= line  ) && {line   <= upper1} && {lower2 <= column} && 
-    {column <= upper2} && {lower3 <= depth } && {depth  <= upper3}
-  )
-  [ +? {Result = (valid_line line) && {valid_column column} && {valid_depth depth}}; ];
-  
-  //
-  // Counting:
-  //
-  
-  - count1:INTEGER <-
-  // Size of the first dimension.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result = upper1 - lower1 + 1}; ];
-  
-  - line_count:INTEGER <- count1;
-  // Equivalent of `count1'.
-  
-  - count2:INTEGER <-
-  // Size of the second dimension.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result = upper2 - lower2 + 1}; ];
-    
-  - column_count:INTEGER <- count2;
-  // Equivalent of `count2'.
-  
-  - count3:INTEGER <-
-  // Size of the third dimension.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result = upper3 - lower3 + 1}; ];
-    
-  - depth_count:INTEGER <- count3;
-  // Equivalent of `count3'.
-    
-  - count:INTEGER <-
-  // Total number of elements.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result = line_count * column_count * depth_count}; ];
-
-  - swap (line1, column1, depth1:INTEGER) with (line2, column2, depth2:INTEGER) <-
-  // Swap the element at index (`line1',`column1',`depth1')
-  // with the element at index (`line2',`column2',`depth2').
-  [
-    -? { valid_index (line1,column1,depth1)};
-    -? { valid_index (line2,column2,depth2)};
-  ]
-  (    
-    deferred;
-  )
-  [
-    +? {item(line1,column1,depth1) = Old item(line2,column2,depth2)};
-    +? {item(line2,column2,depth2) = Old item(line1,column1,depth1)};
-    +? {count = Old count};
-  ];
-    
-  - set_all_with v:V <-
-  // Set all item with value `v'.
-  (
-    deferred;
-  )
-  [ +? {count = Old count}; ];
-
-  - clear_all <-
-  // Set all items to default values.
-  ( + value:V;    
-    
-    set_all_with value;
-  )
-  [ 
-    +? {count = Old count};
-    +? {all_default};
-  ];
-  
-  //
-  // Creating or initializing:
-  //
-  
-  - from_collection3 model:COLLECTION3[V] <-
-  //  Uses `model' to initialize self.
-  [ -? {model != NULL}; ]
-  (        
-    deferred;
-  )
-  [
-    +? {count1 = model.count1};
-    +? {count2 = model.count2};
-    +? {count3 = model.count3};
-  ];
-    
-  - from_model model:COLLECTION[COLLECTION[COLLECTION[V]]] <-
-  // The `model' is used to fill line by line self.
-  // Assume all sub-collections have the same
-  // dimension.
-  [ -? { model != NULL }; ]
-  (        
-    deferred;
-  )
-  [
-    +? {count1 = model.count};
-    +? {count2 > 0 ->> {count2 = model.first.count}};
-    +? {count3 > 0 ->> {count3 = model.first.first.count}};
-  ];
-  
-  //
-  // Looking and comparison:
-  //
-
-  - all_default:BOOLEAN <-
-  // Do all items have their type's default value?
-  (
-    deferred;
-  );
-  
-  - '==' other:COLLECTION3[V] :BOOLEAN <-
-  // Do both collections have the same `lower1', `lower2', `lower3', `upper1', `upper2' and
-  // `upper3', and items?
-  // The basic `=' is used for comparison of items.
-  //
-  // See also `is_equal_map'.
-  ( + line, column, depth: INTEGER;
-    + result:BOOLEAN;
-    
-    (
-      (lower1 = other.lower1) && 
-      {upper1 = other.upper1} && 
-      {lower2 = other.lower2} && 
-      {upper2 = other.upper2} &&
-      {lower3 = other.lower3} && 
-      {upper3 = other.upper3}
-    ).if { 
-      result := TRUE;
-      line := upper1;			
-      {(! result) || {line < lower1}}.until_do {
-	column := upper2;
-	{(! result) || {column < lower2}}.until_do {
-	  depth := upper3;
-	  {(! result) || {depth < lower3}}.until_do {
-	    result := item(line, column, depth) = other.item(line, column, depth);
-	    depth := depth - 1;
-	  };
-	  column := column - 1;
-	};
-	line := line - 1;
-      };
-    };
-    result
-  );
-
-  - is_equal_map other: COLLECTION3[V] :BOOLEAN <-
-  // Do both collections have the same `lower1', `lower2', `lower3', `upper1', `upper2' and `upper3',
-  // and items?  
-  //
-  // See also `=='.
-  ( + line, column, depth:INTEGER;
-    + result:BOOLEAN;
-    
-    (
-      (lower1 = other.lower1) && 
-      {upper1 = other.upper1} && 
-      {lower2 = other.lower2} && 
-      {upper2 = other.upper2} &&
-      {lower3 = other.lower3} && 
-      {upper3 = other.upper3}
-    ).if { 
-      result := TRUE;
-      line := upper1;			
-      {(! result) || {line < lower1}}.until_do {
-	column := upper2;
-	{(! result) || {column < lower2}}.until_do {
-	  depth := upper3;
-	  {(! result) || {depth < lower3}}.until_do {
-	    result := safe_equal (item(line, column, depth)) with (other.item(line, column, depth));
-	    depth := depth - 1;
-	  };
-	  column := column - 1;
-	};
-	line := line - 1;
-      };
-    };
-    result
-  );
-  
-  //
-  // Printing:
-  //
-
-  - fill_tagged_out_memory <-
-  ( + line:INTEGER;
-    + v:V;
-    
-    tagged_out_memory.append "lower1:";
-    lower1.append_in tagged_out_memory;
-    tagged_out_memory.append " upper1:";
-    upper1.append_in tagged_out_memory;
-    tagged_out_memory.append " lower2:";
-    lower2.append_in tagged_out_memory;
-    tagged_out_memory.append " upper2:";
-    upper2.append_in tagged_out_memory;
-    tagged_out_memory.append " lower3:";
-    lower3.append_in tagged_out_memory;
-    tagged_out_memory.append " upper3:";
-    upper3.append_in tagged_out_memory;
-    tagged_out_memory.append " [\n";
-    
-    line := lower1;
-    { (line > upper1) || { tagged_out_memory.count > 4096}}.until_do {
-      tagged_out_memory.append "line ";
-      line.append_in tagged_out_memory;
-      tagged_out_memory.append "\t:";
-      
-      lower2.to upper2 do { column:INTEGER;
-	tagged_out_memory.append "column ";
-	column.append_in tagged_out_memory;
-	tagged_out_memory.append "\t:";
-	
-	lower3.to upper3 do { depth:INTEGER;
-	  tagged_out_memory.append "depth ";
-	  depth.append_in tagged_out_memory;
-	  tagged_out_memory.append "\t:";
-	  v := item (line,column,depth);
-	  (v = NULL).if {
-	    tagged_out_memory.append "NULL";
-	  } else {
-	    v.out_in_tagged_out_memory;
-	  };
-	  tagged_out_memory.extend ' ';
-	};
-	
-	tagged_out_memory.extend '\n';
-      };
-      
-      tagged_out_memory.extend '\n';
-      line := line + 1;
-    };
-    
-    (valid_line line).if {
-      tagged_out_memory.append "......\n";
-    };
-  );
-  
-  //
-  // Miscellaneous features:
-  //
-  
-  - occurrences elt:V :INTEGER <-
-  // Number of occurrences using `equal'.
-  //
-  // See also `fast_occurrences' to choose the apropriate one.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result >= 0}; ];
-
-  - fast_occurrences elt:V :INTEGER <-
-  // Number of occurrences using `='.
-  //
-  // See also `occurrences' to choose the apropriate one.
-  (
-    deferred;
-    0
-  )
-  [ +? {Result >= 0}; ];
-
-  - has x:V :BOOLEAN <-
-  // Search if a element x is in the array using `equal'.
-  //
-  // See also `fast_has' to choose the apropriate one.
-  (
-    deferred;
-    FALSE
-  );
-      
-  - fast_has x:V :BOOLEAN <-
-  // Search if a element x is in the array using `='.
-  (
-    deferred;
-    FALSE
-  );
-      
-  - replace_all old_value:V with new_value:V <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using `equal' for comparison.
-  //
-  // See also `fast_replace_all' to choose the apropriate one.
-  (
-    deferred;
-  )
-  [
-    +? {count = Old count};
-    +? {occurrences old_value = 0};
-  ];
-      
-  - fast_replace_all old_value:V with new_value:V <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using operator `=' for comparison.
-  //
-  // See also `replace_all' to choose the apropriate one.
-  (
-    deferred;
-  )
-  [
-    +? {count = Old count};
-    +? {fast_occurrences old_value = 0};
-  ];
-        
-  - sub_collection3 (line_min, column_min, depth_min:INTEGER) 
-  to (line_max, column_max, depth_max:INTEGER) :SELF <-
-  // Create a new object using selected area of `self'.
-  [
-    -? { valid_index (line_min,column_min,depth_min)};
-    -? { valid_index (line_max,column_max,depth_max)};
-  ]
-  (    
-    deferred;
-  )
-  [ +? {Result != NULL}; ];
-  
-  - set_area (line_min, column_min, depth_min:INTEGER) 
-  to (line_max, column_max, depth_max:INTEGER) with element:V <-
-  // Set all the elements of the selected area rectangle with `element'.
-  [
-    -? { valid_index (line_min,column_min,depth_min)};
-    -? { valid_index (line_max,column_max,depth_max)};
-  ]
-  (
-    line_min.to line_max do { line:INTEGER;
-      column_min.to column_max do { column:INTEGER;
-	depth_min.to depth_max do { depth:INTEGER;
-	  put element to (line,column,depth);
-	};
-      };
-    };
-  )
-  [ +? {count = Old count}; ];
-  
diff --git a/lib/collection/low_level/dictionary.li b/lib/collection/low_level/dictionary.li
deleted file mode 100644
index 0fb39d4..0000000
--- a/lib/collection/low_level/dictionary.li
+++ /dev/null
@@ -1,645 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := DICTIONARY[V, K];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Associative memory. Values of type `V' are stored using Keys of type `K'.";
-  
-  // To make a comparison with the well knowned ARRAY class, with a DICTIONARY, 
-  // index used are not only INTEGER, you can use for example a STRING to access 
-  // to your information.
-  //
-  // Well knowned implementations, see HASHED_DICTIONARY and AVL_DICTIONARY.
-  //
-  // See also BIJECTIVE_DICTIONARY class.
-  
-Section Inherit
-  
-  + parent_traversable:Expanded TRAVERSABLE[V];
-  
-Section Public
-  
-  //
-  // Counting:
-  //
-  
-  - count:INTEGER <-
-  // Actual `count' of stored elements.
-  (
-    deferred;
-    0
-  );
-
-  - is_empty:BOOLEAN <- count = 0;
-  // Is it empty?
-  
-  //
-  // Basic access:
-  //
-  
-  - has k:K :BOOLEAN <-
-  // Is there a value currently associated with key `k'?
-  //
-  // See also `fast_has', `at'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred;
-    FALSE
-  );
-
-  - at k:K :V <-
-  // Return the value associated to key `k'.
-  //
-  // See also `fast_at', `reference_at', `has'.
-  [ ... 
-    -? {has k}; 
-  ]
-  ( + result:V;
-    
-    deferred;
-    result
-  );
-
-  - reference_at k:K :V <-
-  // Return NULL or the value associated with key `k'. Actually, this
-  // feature is useful when the type of values (the type V) is a
-  // reference type, to avoid using `has' just followed by `at' to get
-  // the corresponding value.
-  //
-  // See also `fast_reference_at', `at', `has'.
-  [ ...
-    -? {k != NULL}; 
-    // "Values are expanded." -? {(Result != NULL) -> (! Result.is_expanded_type)};
-  ]
-  ( + result:V;
-    
-    deferred;    
-    result
-  )
-  [ ...
-    +? {(has k) ->> {Result = at k}}; 
-  ];
-
-  - fast_has k:K :BOOLEAN <-
-  // Is there a value currently associated with key `k'?
-  // Using basic `=' for comparison.
-  //
-  // See also `has', `at', `fast_at'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred;
-    FALSE
-  );
-
-  - fast_at k:K :V <-
-  // Return the value associated to key `k' using basic `=' for comparison.
-  //
-  // See also `at', `reference_at', `fast_reference_at'.
-  [ ...
-    -? {fast_has k}; 
-  ]
-  ( + result:V;
-    
-    deferred;
-    result
-  );
-
-  - fast_reference_at k:K :V <-
-  // Same work as `reference_at', but basic `=' is used for comparison.
-  //
-  // See also `reference_at', `at', `has'.
-  [ ...    
-    -? {k != NULL}; 
-    // BSBS: Il faut que tu init Result, sinon ca ne marche pas !!!
-    //"Values are expanded." -? {(Result != NULL) ->> {! Result.is_expanded_type}};    
-  ]
-  ( + result:V; 
-    
-    deferred;
-    result
-  )
-  [ ...
-    +? {fast_has k ->> {Result = fast_at k}}; 
-  ];
-  
-  //
-  // Modification.
-  //
-  
-  - put v:V to k:K <-
-  // Change some existing entry or `add' the new one. If there is as yet 
-  // no key `k' in the dictionary, enter it with item `v'. Otherwise 
-  // overwrite the item associated with key `k'.
-  // As the `put' procedure actually uses `is_equal', you may consider 
-  // to use `fast_put' for expanded objects as well while trying to get
-  // the very best performances.
-  //
-  // See also `fast_put', `add'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    +? {v = at k}; 
-  ];
-
-  - fast_put v:V to k:K <-
-  // Same job as `put', but uses basic `=' for comparison.
-  //
-  // See also `put', `add'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred
-  )
-  [ ...
-    +? {v = at k}; 
-  ];
-
-  - add v:V to k:K <-
-  // To add a new entry `k' with its associated value `v'.
-  // Actually, this is equivalent to call `put', but it may run a little bit faster.
-  //
-  // See also `put', `fast_put'.
-  [ ... 
-    -? {! has k}; 
-  ]
-  (
-    deferred
-  )
-  [ ...
-    +? {count = 1 + Old count};
-    +? {v = at k};
-  ];
-  
-  //
-  // Looking and searching some value:
-  //
-  
-  - occurrences v:V :INTEGER <-
-  // Number of occurrences using `is_equal' for comparison.
-  //
-  // See also `fast_occurrences', `fast_has', `has'.
-  ( + i,result:INTEGER; 
-    + safe_equal:SAFE_EQUAL[V];
-    
-    i := 1;
-    {i > count}.until_do {
-      (safe_equal.test v with (item i)).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result >= 0}; 
-  ];
-  
-  - fast_occurrences v:V :INTEGER <-
-  // Number of occurrences using basic `=' for comparison.
-  //
-  // See also `occurrences', `fast_has', `has'.
-  ( + result,i:INTEGER;
-    
-    i := 1;
-    {i > count}.until_do {
-      (v = item i).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result >= 0}; 
-  ];
-  
-  - key_at v:V :K <-
-  // Retrieve the key used for value `v' using `is_equal' for comparison.
-  //
-  // See also `fast_key_at', `at'.
-  [ ...	
-    -? {occurrences v = 1};
-  ]
-  ( + i:INTEGER; 
-    + safe_equal:SAFE_EQUAL[V];
-    
-    i := 1;
-    {safe_equal.test v with (item i)}.until_do {
-      i := i + 1;
-    };
-    key i
-  )
-  [ ...
-    +? {SAFE_EQUAL[V].test (at Result) with v};
-  ];
-
-  - fast_key_at v:V :K <-
-  // Retrieve the key used for value `v' using `=' for comparison.
-  //
-  // See also `key_at', `at'.
-  [ ...
-    -? {fast_occurrences v = 1};
-  ]
-  ( + i:INTEGER;
-    
-    i := 1;
-    {v = item i}.until_do {
-      i := i + 1;
-    };
-    key i
-  )
-  [ ...
-    +? {at Result = v};
-  ];			
-  
-  //
-  // Removing:
-  //
-  
-  - remove k:K <-
-  // Remove entry `k' (which may exist or not before this call).
-  // As the `remove' procedure actually uses `is_equal', you may 
-  // consider to use `fast_remove' for expanded objects as well 
-  // while trying to get the very best performances.
-  //
-  // See also `fast_remove', `clear_count'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred
-  )
-  [ ...
-    +? {! has k};   
-  ];
-  
-  - fast_remove k:K <-
-  // Same job as `remove', but uses basic `=' for comparison.
-  //
-  // See also `remove', `clear_count'.
-  [ ... 
-    -? {k != NULL}; 
-  ]
-  (
-    deferred
-  )
-  [ ...
-    -? {! has k};   
-  ];
-
-  - clear_count <-
-  // Discard all items (`is_empty' is True after that call). 
-  // The internal `capacity' is not changed by this call.
-  //
-  // See also `clear_count_and_capacity', `remove'.
-  (
-    deferred;
-  )
-  [ ...
-    "Is empty." +? {count = 0};
-    +? {capacity = Old capacity};
-  ];
-
-  - clear_count_and_capacity <-
-  // Discard all items (`is_empty' is True after that call). 
-  // The internal `capacity' may also be reduced after this call.
-  //
-  // See also `clear_count', `remove'.
-  (
-    deferred;
-  )
-  [ ...
-    "Is empty." +? {count = 0};
-    +? {capacity <= Old capacity};
-  ];	
-
-  - capacity:INTEGER <-
-  // Approximation of the actual internal storage `capacity'. 
-  // The `capacity' will grow automatically when needed 
-  // (i.e. `capacity' is not a limit for the number of values stored). 
-  // Also note that the `capacity' value may not be always accurate 
-  // depending of the implementation (anyway, this `capacity' value 
-  // is at least equals to `count').
-  (
-    deferred;
-    0
-  );
-  
-  //
-  // To provide iterating facilities:
-  //
-  
-  - lower:INTEGER := 1;
-
-  - upper:INTEGER <-
-  (
-    count
-  )
-  [ ...
-    +? {Result = count};
-  ];
-
-  - item i:INTEGER :V <-
-  ( + result:V;
-    
-    deferred;
-    result
-  )
-  [ ...
-    //+? {Result = at (key i)}; // PBPB: Recurssive call with `key', `key' use `item' ...
-  ];
-
-  - first:V <- item lower;
-  
-  - last:V  <- item upper;
-
-  - key index:INTEGER :K <-
-  [ ...
-    -? {valid_index index};
-  ]
-  ( + result:K;
-    
-    deferred;
-    result
-  )
-  [ ...
-    +? {(at Result) = item index};
-  ];
-	
-  - key_map_in buffer:COLLECTION[K] <-
-  // Append in `buffer', all available keys (this may be useful to
-  // speed up the traversal).
-  //
-  // See also `item_map_in'.
-  [ ...
-    -? {buffer != NULL};
-  ]
-  ( + i:INTEGER;
-    
-    i := count;
-    {i < lower}.until_do {
-      buffer.add_last (key i);
-      i := i - 1;
-    };
-  )
-  [ ...
-    +? {buffer.count = count + Old buffer.count};
-  ];
-
-  - item_map_in buffer:COLLECTION[V] <-
-  // Append in `buffer', all available items (this may be useful to
-  // speed up the traversal).
-  //
-  // See also `key_map_in'.
-  [
-    -? {buffer != NULL};
-  ]
-  ( + i:INTEGER;
-    
-    i := count;
-    {i < lower}.until_do {
-      buffer.add_last (item i);
-      i := i - 1;
-    };
-  )
-  [
-    +? {buffer.count = count + Old buffer.count};
-  ];
-  
-  //
-  // Comparaison.
-  //
-  
-  - '==' other:SELF :BOOLEAN <-
-  // Do both dictionaries have the same set of associations?
-  // Keys are compared with `is_equal' and values are comnpared
-  // with the basic = operator.
-  //
-  // See also `is_equal_map'.
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {count = other.count} then {
-      result := TRUE;
-      i := 1;
-      {(! result) || {i > count}}.until_do {
-	(other.has (key i)).if {
-	  (other.at (key i) != item i).if {
-	    result := FALSE;
-	  } else {
-	    i := i + 1;
-	  };
-	} else {
-	  result := FALSE;
-	};
-      };
-    };
-    result
-  )
-  [ ...
-    +? {Result -> (count = other.count)};
-  ];
-
-  - is_equal_map other:SELF :BOOLEAN <-
-  // Do both dictionaries have the same set of associations?
-  // Both keys and values are compared with `is_equal'.
-  //
-  // See also `is_equal'.
-  ( + i:INTEGER; 
-    + k:K; 
-    + safe_equal:SAFE_EQUAL[V];
-    + result:BOOLEAN;
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {count = other.count} then {				
-      result := TRUE;
-      i := 1;
-      {(! result) || {i > count}}.until_do {
-	k := key i;
-	(other.has k).if {
-	  (! safe_equal.test (other.at k) with (item i)).if {
-	    result := FALSE;
-	  } else {
-	    i := i + 1;
-	  };
-	} else {
-	  result := FALSE;
-	};	
-      };
-    };
-    result
-  );
-
-  - copy other:SELF <-
-  // Reinitialize by copying all associations of `other'.
-  ( + i:INTEGER;
-    
-    clear_count;
-    i := 1;
-    {i > other.count}.until_do {
-      put (other.item i) to (other.key i);
-      i := i + 1;
-    };
-  );
-
-  //
-  // Agents based features:
-  //
-  
-  - do_all action:BLOCK <-
-  // Apply `action' to every [V, K] associations of `Current'.
-  //
-  // See also `for_all', `exist'.
-  ( + i:INTEGER; 
-    + v:V; 
-    + k:K;
-    
-    i := lower;
-    {i > upper}.until_do {
-      v := item i;
-      k := key i;
-      action.value (v, k);
-      i := i + 1;
-    };
-  );		
-		
-  - for_all test:BLOCK :BOOLEAN <-
-  // Do all [V, K] associations satisfy `test'?
-  //
-  // See also `do_all', `exist'.
-  ( + i:INTEGER; 
-    + v:V; 
-    + k:K;
-    + result:BOOLEAN;
-    
-    result := TRUE;
-    i := lower;
-    {(! result) || {i > upper}}.until_do {			
-      v := item i;
-      k := key i;
-      result := test.value (v, k);
-      i := i + 1;
-    };
-    result
-  );
-
-  - exists test:BLOCK :BOOLEAN <-
-  // Does at least one [V, K] association satisfy `test'?
-  //
-  // See also `for_all', `do_all'.
-  ( + i:INTEGER; 
-    + v:V; 
-    + k:K;
-    + result:BOOLEAN;
-		    
-    i := lower;		
-    {result || {i > upper}}.until_do {
-      v := item i;
-      k := key i;
-      result := test.value (v, k);      
-      i := i + 1;
-    };
-    result
-  );
-  
-  //
-  // Other features:
-  //
-  
-  - internal_key k:K :K <-
-  // Retrieve the internal key object which correspond to the existing
-  // entry `k' (the one memorized into the `Current' dictionary).
-  //
-  // See also `has', `fast_has'.
-  [ ...
-    -? {has k};
-  ]
-  ( + result:K;
-    
-    deferred;
-    result
-  )
-  [ ...
-    +? {Result == k};
-  ];
-
-  //
-  // Creation.
-  //
-  
-  - create:SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-
-  // Creates an empty dictionary.
-  (
-    deferred;
-  )
-  [ ...
-    +? {is_empty};
-  ];
-
-  //
-  //
-  //
-  
-  - key_safe_equal k1:K with k2:K :BOOLEAN <-
-  // Because keys are never NULL, we do not rely on the SAFE_EQUAL class.
-  [ ...
-    -? {k1 != NULL};
-    -? {k2 != NULL};
-  ]
-  ( + result:BOOLEAN;
-    
-    (k1 = k2).if {
-      result := TRUE;
-    }.elseif {k1.same_dynamic_type k2} then {
-      result := k1 == k2;
-    };
-    result
-  );
-
-  //
-  // invariant
-  //
-  
-//  [ -? {capacity >= count}; ]
diff --git a/lib/collection/low_level/hash_table_size.li b/lib/collection/low_level/hash_table_size.li
deleted file mode 100644
index 48933c4..0000000
--- a/lib/collection/low_level/hash_table_size.li
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := HASH_TABLE_SIZE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Prime INTEGER list.";
-
-  // Some useful features to deal with prime INTEGER values in order to select 
-  // an appropriate size for some hash table (used for example by the DICTIONARY 
-  // class as well as by the SET class).
-    
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - prime_number_ceiling integer:INTEGER :INTEGER <-
-  // A good prime number, large enough, and no smaller than `integer'.
-  ( + result:INTEGER;
-    
-    (integer <= 11).if {
-      // This seems to be a good minimum value to start hashing with.
-      result := 11;
-    }.elseif { integer <= 23 } then {
-      result := 23;
-    }.elseif { integer <= 53 } then {      
-      result := 53;      
-    }.elseif { integer <= 97 } then {
-      result := 97;
-    }.elseif { integer <= 193 } then {
-      result := 193;
-    }.elseif { integer <= 389 } then {
-      result := 389;
-    }.elseif { integer <= 769 } then {
-      result := 769;
-    }.elseif { integer <= 1543 } then {
-      result := 1543;
-    }.elseif { integer <= 3079 } then {
-      result := 3079;
-    }.elseif { integer <= 6151 } then {
-      result := 6151;
-    }.elseif { integer <= 12289 } then {
-      result := 12289;
-    }.elseif { integer <= 24593 } then {
-      result := 24593;
-    }.elseif { integer <= 49157 } then {
-      result := 49157;
-    }.elseif { integer <= 98317 } then {
-      result := 98317;
-    }.elseif { integer <= 196613 } then {
-      result := 196613;
-    }.elseif { integer <= 393241 } then {
-      result := 393241;
-    }.elseif { integer <= 786433 } then {
-      result := 786433;
-    }.elseif { integer <= 1572869 } then {
-      result := 1572869;
-    }.elseif { integer <= 3145739 } then {
-      result := 3145739;
-    }.elseif { integer <= 6291469 } then {
-      result := 6291469;
-    }.elseif { integer <= 12582917 } then {
-      result := 12582917;
-    }.elseif { integer <= 25165843 } then {
-      result := 25165843;
-    }.elseif { integer <= 50331653 } then {
-      result := 50331653;
-    }.elseif { integer <= 100663319 } then {
-      result := 100663319;
-    }.elseif { integer <= 201326611 } then {
-      result := 201326611;
-    }.elseif { integer <= 402653189 } then {
-      result := 402653189;
-    }.elseif { integer <= 805306457 } then {
-      result := 805306457;
-    } else {
-      result := 1610612741;
-      // This should be enough !
-    };
-    
-    ? {result >= integer};
-    
-    result
-  );
-  
\ No newline at end of file
diff --git a/lib/collection/low_level/hashed_dictionary_node.li b/lib/collection/low_level/hashed_dictionary_node.li
deleted file mode 100644
index 8a9ca08..0000000
--- a/lib/collection/low_level/hashed_dictionary_node.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := HASHED_DICTIONARY_NODE[V,K];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="Auxilliary class to implement DICTIONARY[V,K].";
-    
-Section Inherit
-  
-  - parent_any_hashed_dictionary_node:ANY_HASHED_DICTIONARY_NODE := ANY_HASHED_DICTIONARY_NODE;
-  
-Section Public
-  
-  + item:V;
-  
-  + key:K;
-  
-  + next:HASHED_DICTIONARY_NODE[V,K];
-  // The `next' one when some clash occurs.
-  
-  - set_item i:V <-
-  (
-    item := i;
-  )
-  [
-    +? {item = i};
-  ];
-    
-  - set_next n:HASHED_DICTIONARY_NODE[V,K] <-
-  (
-    next := n;
-  )
-  [
-    +? {next = n};
-  ];  
-  
-  - create i:V to k:K next n:HASHED_DICTIONARY_NODE[V,K] :SELF<-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i to k next n;
-    result
-  );
-  
-  - make i:V to k:K next n:HASHED_DICTIONARY_NODE[V,K] <-
-  (
-    item := i;
-    key  := k;
-    next := n;
-  )
-  [
-    +? {item = i};
-    +? {key  = k};
-    +? {next = n};
-  ];
-
diff --git a/lib/collection/low_level/hashed_set_node.li b/lib/collection/low_level/hashed_set_node.li
deleted file mode 100644
index d2e6b89..0000000
--- a/lib/collection/low_level/hashed_set_node.li
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := HASHED_SET_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Auxilliary class to implement SET[V].";
-    
-Section Inherit
-  
-  - parent_any_hashed_set_node:ANY_HASHED_SET_NODE := ANY_HASHED_SET_NODE;
-  
-Section Public
-  
-  + item:V;
-  
-  + next:HASHED_SET_NODE[V];
-  // The `next' one when some clash occurs.
-  
-  - set_next n:HASHED_SET_NODE[V] <-
-  (
-    next := n;
-  )
-  [
-    +? {next = n};
-  ];
-  
-Section HASHED_SET
-  
-  - create i:V next n:HASHED_SET_NODE[V] :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i next n;
-    result
-  );
-  
-  - make i:V next n:HASHED_SET_NODE[V] <-
-  (
-    item := i;
-    next := n;
-  )
-  [
-    +? {item = i};
-    +? {next = n};
-  ];
-  
-  
diff --git a/lib/collection/low_level/linked2_list_node.li b/lib/collection/low_level/linked2_list_node.li
deleted file mode 100644
index 95717ee..0000000
--- a/lib/collection/low_level/linked2_list_node.li
+++ /dev/null
@@ -1,98 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED2_LIST_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "To implement LINKED2_LIST[V].";
-    
-Section Inherit
-  
-  - parent_any_two_way_linked_list_node:ANY_TWO_WAY_LINKED_LIST_NODE := ANY_TWO_WAY_LINKED_LIST_NODE;
-  
-Section Public
-  
-  + item:V;
-  
-  + previous:LINKED2_LIST_NODE[V];
-  
-  + next:LINKED2_LIST_NODE[V];
-
-Section LINKED2_LIST
-  
-  - create i:V previous p:SELF next n:SELF :SELF<-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i previous p next n;
-    result
-  );
-    
-  - make i:V previous p:SELF next n:SELF <-
-  (
-    item := i;
-    previous := p;
-    next := n;
-  )
-  [
-    +? {item = i};
-    +? {previous = p};
-    +? {next = n};
-  ];
-
-Section LINKED2_LIST,LINKED2_LIST_NODE
-  
-  - set_item i:V <-
-  (
-    item := i;
-  )
-  [
-    +? {item = i};
-  ];
-    
-  - set_next n:SELF <-
-  (
-    next := n;
-  )
-  [
-    +? {next = n};
-  ];
-  
-  - set_all_with v:V <-
-  ( + lnk:SELF;
-    
-    lnk := Self;    
-    {lnk = NULL}.until_do {
-      lnk.set_item v;
-      lnk := lnk.next;
-    };
-  );
-    
-  - set_previous p:SELF <-
-  (
-    previous := p;
-  )
-  [
-    +? {previous = p};
-  ];
diff --git a/lib/collection/low_level/linked_collection.li b/lib/collection/low_level/linked_collection.li
deleted file mode 100644
index a0e7e83..0000000
--- a/lib/collection/low_level/linked_collection.li
+++ /dev/null
@@ -1,99 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED_COLLECTION[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Common root of LINKED_LIST and TWO_WAY_LINKED_LIST..";
-    
-Section Inherit
-  
-  - parent_collection:COLLECTION[V] := COLLECTION[V];
-  
-Section Public
-  
-  - lower:INTEGER := 1;
-  // Lower index bound is frozen.
-
-  + upper:INTEGER;
-  // Memorized upper index bound.
-  
-  - create:SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-
-  // Make an empty list
-  (
-    deferred;
-  );
-
-  - remove_head n:INTEGER <-
-  ( + i:INTEGER;
-		
-    i := n;
-    {i = 0}.until_do {
-      remove_first;
-      i := i - 1;
-    };
-  );
-
-  - remove_tail n:INTEGER <-
-  ( + i:INTEGER;
-		
-    i := n;		
-    {i = 0}.until_do {			
-      remove_last;
-      i := i - 1;
-    };
-  );
-
-  - first_index_of element:V :INTEGER <-
-  (
-    index_of element start lower
-  );
-			
-  - fast_first_index_of element:V :INTEGER <-
-  (
-    fast_index_of element start lower
-  );
-  
-  //
-  // Implement manifest generic creation.
-  //
-	
-  - manifest_make needed_capacity:INTEGER <-
-  // Manifest creation of a list of items of type E.
-  (
-    create
-  );
-
-  - manifest_put index:INTEGER to element:V <-
-  (
-    add_last element;
-  );
\ No newline at end of file
diff --git a/lib/collection/low_level/linked_list_node.li b/lib/collection/low_level/linked_list_node.li
deleted file mode 100644
index d5fa3a3..0000000
--- a/lib/collection/low_level/linked_list_node.li
+++ /dev/null
@@ -1,88 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED_LIST_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "To implement LINKED_LIST[V]. .";
-    
-Section Inherit
-  
-  - parent_any_linked_list_node:ANY_LINKED_LIST_NODE := ANY_LINKED_LIST_NODE;
-  
-Section Public
-  
-  + item:V;
-  
-  + next:LINKED_LIST_NODE[V];
-  
-Section LINKED_LIST
-  
-  - create i:V next n:LINKED_LIST_NODE[V] :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i next n;
-    result
-  );
-  
-  - make i:V next n:LINKED_LIST_NODE[V] <-
-  (    
-    item := i;
-    next := n;
-  )
-  [
-    +? {item = i};
-    +? {next = n};
-  ];
-  
-  
-Section LINKED_LIST_NODE,LINKED_LIST
-  
-  - set_item i:V <-
-  (
-    item := i;
-  )
-  [
-    +? {item = i};
-  ];
-    
-  - set_next n:LINKED_LIST_NODE[V] <-
-  (
-    next := n;
-  )
-  [
-    +? {next = n};
-  ];
-    
-  - set_all_with v:V <-
-  ( + lnk:SELF;
-    
-    lnk := Self;
-    {lnk = NULL}.until_do {
-      lnk.set_item v;
-      lnk := lnk.next;
-    };
-  );
-
diff --git a/lib/collection/low_level/linked_xor_node.li b/lib/collection/low_level/linked_xor_node.li
deleted file mode 100644
index 42d7264..0000000
--- a/lib/collection/low_level/linked_xor_node.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LINKED_XOR_NODE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "To implement LINKED_XOR_LIST[V].";
-    
-Section Inherit
-  
-  - parent_any_two_way_linked_list_node:ANY_TWO_WAY_LINKED_LIST_NODE := ANY_TWO_WAY_LINKED_LIST_NODE;
-  
-Section Public
-  
-  + item:V;
-  
-  + link:POINTER;
-
-Section LINKED_XOR_LIST
-  
-  - create i:V previous p:SELF next n:SELF :SELF<-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i previous p next n;
-    result
-  );
-    
-  - make i:V previous p:SELF next n:SELF <-
-  (
-    item := i;    
-    link := p.to_pointer ^ n.to_pointer; // BSBS: il faut admettre NULL.to_pointer (perf!)
-  )
-  [
-    +? {item = i};
-  ];
-
-Section LINKED_XOR_LIST,LINKED_XOR_NODE
-  
-  - set_item i:V <-
-  (
-    item := i;
-  )
-  [
-    +? {item = i};
-  ];
-  
-  - next prev:LINKED_XOR_NODE :LINKED_XOR_NODE <-
-  ( 
-    CONVERT[POINTER,LINKED_XOR_NODE].on (link ^ prev.to_pointer)
-  );
-  
-  - previous nex:LINKED_XOR_NODE :LINKED_XOR_NODE <-
-  (
-    CONVERT[POINTER,LINKED_XOR_NODE].on (link ^ nex.to_pointer)
-  );
-    
-  - set_link p:SELF and n:SELF <-
-  (
-    link := p.to_pointer ^ n.to_pointer;
-  );
-  
-    
\ No newline at end of file
diff --git a/lib/collection/low_level/native_array.li b/lib/collection/low_level/native_array.li
deleted file mode 100644
index e14aa97..0000000
--- a/lib/collection/low_level/native_array.li
+++ /dev/null
@@ -1,811 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
- 
-  + name        := Strict NATIVE_ARRAY[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - comment     :="Native array of collection library.";
-  
-  // This class gives access to the lowest level for arrays. As any low level array, you can
-  // get high performances with NATIVE_ARRAYs, but you loose most valid bounds checks (as
-  // you can do in plain C code for example).
-    
-Section Inherit
-  
-  - parent_safe_equal:SAFE_EQUAL[V] := SAFE_EQUAL[V];
-  
-Section Public  
-  
-  //
-  // Basic features:
-  //
-  
-  - object_size:INTEGER := 0; // For detect error.
-  
-  - element_sizeof:INTEGER <- 
-  // The size in number of bytes for type `E'.
-  ( + result:INTEGER;
-    (V.is_expanded_type).if {
-      result := V.object_size;
-    } else {
-      result := POINTER.object_size;
-    };
-    result
-  );
-  
-  - calloc_intern nb_elements:INTEGER :NATIVE_ARRAY[V] <-
-  // Allocate a new array of 'nb_elements' of type `E'.
-  // The new array is initialized with default values.
-  [ ...
-    -? {nb_elements > 0};
-  ]
-  ( + capacity:INTEGER;
-    + p:POINTER;
-    + result  :NATIVE_ARRAY[V];
-    
-    capacity := nb_elements * element_sizeof;    
-    //p := `malloc(@capacity)`:POINTER; 
-    p := SYSTEM.memory.alloc_dynamic (capacity.to_uinteger_32);
-    result := CONVERT[POINTER,NATIVE_ARRAY[V]].on p;
-    result
-  )
-  [ ...
-    +? {Result != NULL};
-  ];
-  
-  - create nb_elements:INTEGER :NATIVE_ARRAY[V] <-
-  // Allocate a new array of `nb_elements' of type `E'.
-  // The new array is initialized with default values.
-  [ ...
-    -? {nb_elements > 0};
-  ]
-  ( + result:NATIVE_ARRAY[V];
-   
-    result:=calloc_intern nb_elements;
-    result.clear_all (nb_elements-1); 
-    result
-  )
-  [ ...
-    +? {Result.all_default (nb_elements-1)};
-  ];
-  
-  - realloc old_nb_elts:INTEGER with new_nb_elts:INTEGER :NATIVE_ARRAY[V] <-
-  // Assume Current is a valid NATIVE_ARRAY in range
-  // [0 .. `old_nb_elts'-1]. Allocate a bigger new array in
-  // range [0 .. `new_nb_elts'-1].
-  // Old range is copied in the new allocated array.
-  // New items are initialized with default values.
-  [ ...
-    -? {Self != NULL};
-    -? {old_nb_elts > 0};
-    -? {old_nb_elts < new_nb_elts};
-  ]
-  ( + new:NATIVE_ARRAY[V];
-    + old_ptr,new_ptr:POINTER;
-    + new_cap:INTEGER;
-    
-    old_ptr := CONVERT[NATIVE_ARRAY[V],POINTER].on Self; 
-    new_cap := new_nb_elts * element_sizeof;
-    //new_ptr := `realloc(@old_ptr, at new_cap)`:POINTER;
-    new_ptr := SYSTEM.memory.realloc_dynamic old_ptr 
-    old_size ((old_nb_elts * element_sizeof).to_uinteger_32) 
-    new_size (new_cap.to_uinteger_32);
-    new := CONVERT[POINTER,NATIVE_ARRAY[V]].on new_ptr;
-    new.clear old_nb_elts to (new_nb_elts - 1);
-    new
-  )
-  [ ...
-    +? {Result != NULL};
-  ];
-  
-  - first:V <- item 0;
-    
-  - item index:INTEGER :V <-
-  // To read an `item'.
-  // Assume that `calloc' is already done and that `index' is 
-  // the range [0 .. `nb_elements'-1].
-  [ ...
-    -? {index >= 0};
-  ]
-  (    
-    `10` 
-  );
-  
-  - put element:V to index:INTEGER <-
-  // To write an item.
-  // Assume that `calloc' is already done and that `index'
-  // is the range [0 .. `nb_elements'-1].
-  [ ...
-    -? {index >= 0};
-  ]
-  (     
-    force_put element to index;        
-  )
-  [ ...
-    +? {element = item index}; 
-  ];
-  
-  //
-  // Displacement
-  //
-  
-  - '+' Left 80 other:INTEGER :NATIVE_ARRAY[V] <- 
-  // other is in element index
-  ( + ptr:POINTER;
-    
-    ptr := to_pointer;
-    ptr := ptr + other * element_sizeof;
-    CONVERT[POINTER, NATIVE_ARRAY[V]].on ptr
-  );
-  
-  //
-  // Comparison:
-  //
-  
-  - memcmp other:NATIVE_ARRAY[V] until capacity:INTEGER :BOOLEAN <-
-  // True if all elements in range [0..capacity-1] are
-  // identical using `equal'. Assume Current and `other'
-  // are big enough.
-  // See also `fast_memcmp'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-       
-    i := capacity - 1;
-    {(i >= 0) && {safe_equal (item i,other.item i)}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - slice_memcmp (at:INTEGER,other:NATIVE_ARRAY[V],other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // True if all elements in range [0 .. `other_upper' - `other_lower'] are identical
-  // to the elements in range [`other_lower' .. `other_upper'] of `other' using
-  // `is_equal'. Assume `Current' and `other' are big enough.
-  // See also `slice_fast_memcmp'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-    	
-    i := other_upper - other_lower;
-    {(i >= 0) && {safe_equal (item (at + i),other.item (other_lower + i))}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - fast_memcmp other:NATIVE_ARRAY[V] until capacity:INTEGER :BOOLEAN <-
-  // Same jobs as `memcmp' but uses infix `=' instead `equal'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-        
-    i := capacity-1;
-    {(i >=0 ) && {item i = other.item i}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - slice_fast_memcmp (at:INTEGER, other:NATIVE_ARRAY[V], other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // Same jobs as `slice_memcmp' but uses infix "=" instead of `is_equal'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;		
-		
-    i := other_upper - other_lower;
-    {(i < 0) || {item (at + i) != other.item (other_lower + i)}}.until_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-			
-  - deep_memcmp other:NATIVE_ARRAY[V] until capacity:INTEGER :BOOLEAN <-
-  // Same jobs as `memcmp' but uses `is_deep_equal' instead `equal'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + result:BOOLEAN;  // BEN : A REVOIR, il y a + efficace...
-    + e1,e2:V;
-    + i:INTEGER;
-    
-    result := TRUE;
-    i := capacity - 1;
-    {(result = FALSE) || {i < 0}}.until_do {
-      e1 := item i;
-      e2 := other.item i;
-      (e1 != e2).if {
-	((e1 != NULL) && {e2 != NULL}).if {
-	  (! e1.is_deep_equal e2).if {
-	    result := FALSE;
-	  };
-	} else {
-	  result := FALSE;
-	};
-      };
-      i := i - 1;
-    };
-    result
-  );
-  
-  - slice_deep_memcmp (at:INTEGER,other:NATIVE_ARRAY[V],other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // Same jobs as `slice_memcmp' but uses `is_deep_equal' instead of `is_equal'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER; 
-    + e1,e2:V;
-    + result:BOOLEAN;
-	
-    i := other_upper - other_lower;
-    result := TRUE;
-    {(! result) || {i < 0}}.until_do {
-      e1 := item i;
-      e2 := other.item i;
-      (e1 = e2).if {
-      }.elseif {e1 != NULL} then {
-	(e2 != NULL).if {
-	  result := e1.is_deep_equal e2;
-	} else {
-	  result := FALSE;
-	};
-      } else {
-	result := FALSE;
-      };
-      i := i - 1;
-    };
-    result
-  );
-  
-  //
-  // Searching:
-  //
-  
-  - first_index_of element:V until upper:INTEGER :INTEGER <-
-  // Give the index of the first occurrence of `element' using
-  // `==' for comparison.
-  // Answer `upper + 1' when `element' is not inside.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-       
-    {(idx > upper) || {safe_equal (element,item idx)}}.until_do	{
-      idx := idx + 1;
-    };
-    idx
-  );
-  
-  - index_of (element:V,start_index:INTEGER) until upper:INTEGER :INTEGER <-
-  // Using `is_equal' for comparison, gives the index of the first occurrence of `element' 
-  // at or after `start_index'. Answer `upper + 1' when the search fail.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {start_index >= 0};
-    -? {start_index <= upper};
-  ]
-  ( + result:INTEGER;
-    
-    result := start_index;
-    {(result > upper) || {safe_equal (element,item result)}}.until_do {
-      result := result + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {(Result <= upper) ->> {safe_equal (element,item Result)}};
-  ];
-  
-  - reverse_index_of element:V from upper:INTEGER :INTEGER <-
-  // Give the index of the first occurrence of `element' using
-  // `==' for comparison, from upper to lower.
-  // Answer -1 when `element' is not inside.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-   
-    idx := upper;
-    {(idx < 0) || {safe_equal (element,item idx)}}.until_do	{
-      idx := idx - 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range (-1) to upper};
-    +? {(Result > 0) ->> {safe_equal (element, item Result)}};
-  ];
-  
-  - fast_index_of (element:V,start_index:INTEGER) until upper:INTEGER :INTEGER <-
-  // Using basic `=' for comparison, gives the index of the first occurrence of 
-  // `element' at or after `start_index'. Answer `upper + 1' when the search fail.
-  // See also `index_of', `reverse_index_of'.
-  [ ...
-    -? {start_index >= 0};
-    -? {start_index <= upper};
-  ]
-  ( + result:INTEGER;
-  
-    result := start_index;
-    {(result > upper) || {element = item result}}.until_do {      
-      result := result + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {(Result <= upper) ->> {element = item Result}};
-  ];
-  
-  - fast_reverse_index_of element:V from upper:INTEGER :INTEGER <-
-  // Same as `reverse_index_of' but use basic `=' for comparison.
-  // Search is done in reverse direction, which means from `upper' down to the
-  // `0'. Answer `-1' when the search fail.
-  // See also `reverse_index_of', `index_of'.
-  [
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-       
-    idx := upper;
-    {(idx < 0) || {element = item idx}}.until_do {
-      idx := idx - 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range (-1) to upper};
-    +? {(Result > 0) ->> {element = item Result}};
-  ];
-
-  - fast_first_index_of element:V until upper:INTEGER :INTEGER <-
-  // Same as `index_of' but use basic `=' for comparison.
-  // `0'. Answer `upper + 1' when the search fail.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-        
-    {(idx > upper) || {element = item idx}}.until_do {
-      idx := idx + 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range 0 to (upper + 1)};
-    +? {(Result <= upper) ->> {element = item Result}};
-  ];    
-  
-  - has element:V until upper:INTEGER :BOOLEAN <-
-  // Look for `element' using `==' for comparison.
-  // Also consider `has' to choose the most appropriate.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + result:BOOLEAN;
-    + i:INTEGER; 
-    
-    i := upper;
-    {(result) || {i < 0}}.until_do {
-      result := safe_equal (element,item i);
-      i := i - 1;
-    };
-    result
-  );
-  
-  - fast_has element:V until upper:INTEGER :BOOLEAN <-
-  // Look for `element' using basic `=' for comparison.
-  // Also consider `has' to choose the most appropriate.
-  [
-    -? {upper >= -1};
-  ]
-  ( + i:INTEGER;
-    
-    i := upper;
-    {(i < 0) || {element = item i}}.until_do {
-      i := i - 1;
-    };
-    i >= 0
-  );
-  
-  //
-  // Removing:
-  //
-  
-  - remove_first upper:INTEGER <-
-  // Assume `upper' is a valid index.
-  // Move range [1 .. `upper'] by 1 position left.
-  [ ...
-    -? {upper >= 0};
-  ]
-  ( + i:INTEGER;
-       
-    {i = upper}.until_do {
-      put (item (i + 1)) to i;
-      i := i + 1;
-    };
-  );
-  
-  - remove index:INTEGER until upper:INTEGER <-
-  // Assume `upper' is a valid index.
-  // Move range [`index' + 1 .. `upper'] by 1 position left.
-  [ ...
-    -? {index >= 0};
-    -? {index <= upper};
-  ]
-  ( + i:INTEGER;
-    
-    i := index;
-    {i = upper}.until_do {
-      put (item (i + 1)) to i;
-      i := i + 1;
-    };
-  );
-  
-  //
-  // Replacing:
-  //
-  
-  - replace_all old_value:V with new_value:V until upper:INTEGER <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using `==' for comparison.
-  // See also `fast_replace_all' to choose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (     
-    upper.downto 0 do { i:INTEGER;
-      (safe_equal (old_value,(item i))).if {
-	put new_value to i;
-      };
-    };
-  );
-  
-  - fast_replace_all old_value:V with new_value:V until upper:INTEGER <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using basic `=' for comparison.
-  // See also `replace_all' to choose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (     
-    upper.downto 0 do { i:INTEGER;
-      (old_value = item i).if {
-	put new_value to i;
-      };
-    };
-  );
-  
-  //
-  // Adding:
-  //
-    
-  - copy src:NATIVE_ARRAY[V] to dest:INTEGER until src_capacity:INTEGER <-
-  // Copy range [0 .. `src_capacity - 1'] of `src' to range
-  // [`dest' .. `dest + src_capacity - 1'] of `Self'.
-  // No subscript checking.
-  [ ...
-    -? {dest >= 0};
-    -? {src_capacity >= 0};
-  ]
-  ( + i1, i2:INTEGER;
-    
-    i1 := dest;
-    {i2 = src_capacity}.until_do {
-      put (src.item i2) to i1;
-      i2 := i2 + 1;
-      i1 := i1 + 1;
-    };
-  );
-  
-  - slice_copy src:NATIVE_ARRAY[V] to dest:INTEGER from src_min:INTEGER to src_max:INTEGER <-
-  // Copy range [`src_min' .. `src_max'] of `src' to range
-  // [`at' .. `at + src_max - src_min - 1'] of `Current'.
-  // No subscript checking.
-  [ ...
-    -? {dest >= 0};
-    -? {src_min <= src_max + 1};
-    -? {(src != Self) | (dest != src_min)};
-  ]
-  ( + i1, i2:INTEGER;    
-    
-    i1 := dest;
-    i2 := src_min;
-    {i2 > src_max}.until_do {
-      put (src.item i2) to i1;
-      i2 := i2 + 1;
-      i1 := i1 + 1;
-    };
-  );
-  
-  //
-  // Other:
-  //
-  
-  - set_all_with v:V until upper:INTEGER <-
-  // Set all elements in range [0 .. upper] with
-  // value `v'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (
-    upper.downto 0 do { i:INTEGER;
-      put v to i;
-    };
-  );
-  
-  - set_slice_with v:V from lower:INTEGER until upper:INTEGER <-
-  // Set all elements in range [`lower' .. `upper'] with value `v'.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      put v to i;
-      i := i + 1;
-    };
-  );
-  
-  - clear_all upper:INTEGER <-
-  // Set all elements in range [0 .. `upper'] with
-  // the default value.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + v:V;
-    
-    upper.downto 0 do { i:INTEGER;      
-      put v to i;
-    };
-  );
-  
-  - clear lower:INTEGER to upper:INTEGER <-
-  // Set all elements in range [`lower' .. `upper'] with
-  // the default value
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower};
-  ]
-  ( + v:V;
-        
-    lower.to upper do { i:INTEGER;
-      put v to i;
-    };
-  );
-  
-  - copy_from model:NATIVE_ARRAY[V] until upper:INTEGER <-
-  // Assume `upper' is a valid index both in Current and `model'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (
-    upper.downto 0 do { i:INTEGER;
-      put (model.item i) to i;
-    };
-  );
-  
-  - deep_twin_from capacity:INTEGER :NATIVE_ARRAY[V] <-
-  // To implement `deep_twin'. Allocate a new array of
-  // `capacity' initialized with `deep_twin'.
-  // Assume `capacity' is valid both in Current and `model'.
-  [ ...
-    -? {capacity >= 0};
-  ]
-  ( + element:V;
-    + result:NATIVE_ARRAY[V];
-       
-    (capacity > 0).if {
-      result := calloc capacity;
-      (capacity - 1).downto 0 do { i:INTEGER;
-	element := item i;
-	(element != NULL).if {
-	  element := element.deep_twin;
-	};
-	result.put element to i;
-      };
-    };
-  );
-  
-  - move lower:INTEGER to upper:INTEGER by offset:INTEGER <-
-  // Move range [`lower' .. `upper'] by `offset' positions.
-  // Freed positions are not initialized to default values.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower};
-    -? {lower + offset >= 0};
-  ]
-  (     
-    (offset != 0).if {
-      (offset < 0).if {
-	lower.to upper do { i:INTEGER;
-	  put (item i) to (i + offset);
-	};
-      } else {
-	upper.downto lower do { i:INTEGER;
-	  put (item i) to (i + offset);
-	};
-      };
-    };
-  );
-  
-  - occurrences element:V until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [0..upper]
-  // using `equal' for comparison.
-  // See also `fast_occurrences' to chose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + count:INTEGER;
-    
-    upper.downto 0 do { i:INTEGER;
-      (safe_equal (element,item i)).if {
-	count := count + 1;
-      };
-    };
-    count
-  );
-  
-  - slice_occurrences element:V from lower:INTEGER until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [`lower' .. `upper'] using 
-  // `is_equal' for comparison.
-  // See also `slice_fast_occurrences' to chose the apropriate one.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i,result:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      (safe_equal (element,item i)).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  );
-
-  - fast_occurrences element:V until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [0..upper]
-  // using basic "=" for comparison.
-  // See also `fast_occurrences' to chose the apropriate one.
-  [
-    -? {upper >= -1};
-  ]
-  ( + count:INTEGER;
-    
-    upper.downto 0 do { i:INTEGER;
-      (element = item i).if {
-	count := count + 1;
-      };
-    };
-    count
-  );
-  
-  - slice_fast_occurrences element:V from lower:INTEGER until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [`lower' .. `upper']
-  // using basic "=" for comparison.
-  // See also `slice_occurrences' to chose the apropriate one.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i,result:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      (element = item i).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  );
-			
-  - all_default upper:INTEGER :BOOLEAN <-
-  // Do all items in range [0 .. `upper'] have their type's
-  // default value?
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + result:BOOLEAN;
-    + model:V;
-    ? {upper >= -1};
-    result := TRUE;
-    upper.downto 0 do { i:INTEGER;
-      (model != item i).if {
-	result := FALSE;
-      };
-    };
-    result
-  );
-  
-  - slice_default lower:INTEGER to upper:INTEGER :BOOLEAN <-
-  // Do all items in range [`lower' .. `upper'] have their type's default value?
-  // Note: for non Void items, the test is performed with the `is_default' predicate.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i:INTEGER; 
-    + v:V;
-    + result:BOOLEAN;
-		
-    result := TRUE;
-    i := lower;
-    {(i > upper) || {! result}}.until_do {
-      v := item i;
-      (v != NULL).if {
-	result := v.is_default;
-      };
-      i := i + 1;
-    };
-    result
-  );
-  
-  //
-  // Interfacing with C:
-  //
-  
-  - to_external:POINTER <- to_pointer;
-  // Gives access to the C pointer on the area of storage.
-  
-  - is_null:BOOLEAN <- to_pointer.is_null;
-  
-  - is_not_null:BOOLEAN <- to_pointer.is_not_null;
-  
-  //
-  // Guru Section
-  //
-  
-  - println <- `puts(@Self)`;
-  
-  - force_put element:V to index:INTEGER <-
-  // Used in Memory count: not to use directly without caution !
-  [ ...
-    -? {index>=0};
-  ]
-  (    
-    `9`;    
-  );
-
diff --git a/lib/collection/low_level/native_array_volatile.li b/lib/collection/low_level/native_array_volatile.li
deleted file mode 100644
index 96ed7e4..0000000
--- a/lib/collection/low_level/native_array_volatile.li
+++ /dev/null
@@ -1,809 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
- 
-  + name        := Strict NATIVE_ARRAY_VOLATILE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - comment     :="Native array of collection library.";
-  
-  // This class gives access to the lowest level for arrays. As any low level array, you can
-  // get high performances with NATIVE_ARRAYs, but you loose most valid bounds checks (as
-  // you can do in plain C code for example).
-    
-Section Inherit
-  
-  - parent_safe_equal:SAFE_EQUAL[V] := SAFE_EQUAL[V];
-  
-Section Public  
-  
-  //
-  // Basic features:
-  //
-  
-  - object_size:INTEGER := 0; // For detect error.
-  
-  - element_sizeof:INTEGER <- 
-  // The size in number of bytes for type `E'.
-  ( + result:INTEGER;
-    (V.is_expanded_type).if {
-      result := V.object_size;
-    } else {
-      result := POINTER.object_size;
-    };
-    result
-  );
-  
-  - calloc_intern nb_elements:INTEGER :NATIVE_ARRAY_VOLATILE[V] <-
-  // Allocate a new array of 'nb_elements' of type `E'.
-  // The new array is initialized with default values.
-  [ ...
-    -? {nb_elements > 0};
-  ]
-  ( + capacity:INTEGER;
-    + p:POINTER;
-    + result  :NATIVE_ARRAY_VOLATILE[V];
-    
-    capacity := nb_elements * element_sizeof;    
-    //p := `malloc(@capacity)`:POINTER; 
-    p := MEMORY.alloc_dynamic (capacity.to_uinteger_32);
-    result := CONVERT[POINTER,NATIVE_ARRAY_VOLATILE[V]].on p;
-    result
-  )
-  [ ...
-    +? {Result != NULL};
-  ];
-  
-  - create nb_elements:INTEGER :NATIVE_ARRAY_VOLATILE[V] <-
-  // Allocate a new array of `nb_elements' of type `E'.
-  // The new array is initialized with default values.
-  [ ...
-    -? {nb_elements > 0};
-  ]
-  ( + result:NATIVE_ARRAY_VOLATILE[V];
-   
-    result:=calloc_intern nb_elements;
-    result.clear_all (nb_elements-1); 
-    result
-  )
-  [ ...
-    +? {Result.all_default (nb_elements-1)};
-  ];
-  
-  - realloc old_nb_elts:INTEGER with new_nb_elts:INTEGER :NATIVE_ARRAY_VOLATILE[V] <-
-  // Assume Current is a valid NATIVE_ARRAY_VOLATILE in range
-  // [0 .. `old_nb_elts'-1]. Allocate a bigger new array in
-  // range [0 .. `new_nb_elts'-1].
-  // Old range is copied in the new allocated array.
-  // New items are initialized with default values.
-  [ ...
-    -? {Self != NULL};
-    -? {old_nb_elts > 0};
-    -? {old_nb_elts < new_nb_elts};
-  ]
-  ( + new:NATIVE_ARRAY_VOLATILE[V];
-    + old_ptr,new_ptr:POINTER;
-    + new_cap:INTEGER;
-    
-    old_ptr := CONVERT[NATIVE_ARRAY_VOLATILE[V],POINTER].on Self; 
-    new_cap := new_nb_elts * element_sizeof;
-    //new_ptr := `realloc(@old_ptr, at new_cap)`:POINTER;
-    new_ptr := MEMORY.realloc_dynamic old_ptr 
-    old_size ((old_nb_elts * element_sizeof).to_uinteger_32) 
-    new_size (new_cap.to_uinteger_32);
-    new := CONVERT[POINTER,NATIVE_ARRAY_VOLATILE[V]].on new_ptr;
-    new.clear old_nb_elts to (new_nb_elts - 1);
-    new
-  )
-  [ ...
-    +? {Result != NULL};
-  ];
-  
-  - first:V <- item 0;
-    
-  - item index:INTEGER :V <-
-  // To read an `item'.
-  // Assume that `calloc' is already done and that `index' is 
-  // the range [0 .. `nb_elements'-1].
-  [ ...
-    -? {index >= 0};
-  ]
-  (    
-    `10` 
-  );
-  
-  - put element:V to index:INTEGER <-
-  // To write an item.
-  // Assume that `calloc' is already done and that `index'
-  // is the range [0 .. `nb_elements'-1].
-  [ ...
-    -? {index >= 0};
-  ]
-  (     
-    force_put element to index;        
-  )
-  [ ...
-    +? {element = item index}; 
-  ];
-  
-  //
-  // Displacement
-  //
-  
-  - '+' Left 80 other:INTEGER :NATIVE_ARRAY_VOLATILE[V] <- 
-  // other is in element index
-  ( + ptr:POINTER;
-    
-    ptr := to_pointer;
-    ptr := ptr + other * element_sizeof;
-    CONVERT[POINTER, NATIVE_ARRAY_VOLATILE[V]].on ptr
-  );
-  
-  //
-  // Comparison:
-  //
-  
-  - memcmp other:NATIVE_ARRAY_VOLATILE[V] until capacity:INTEGER :BOOLEAN <-
-  // True if all elements in range [0..capacity-1] are
-  // identical using `equal'. Assume Current and `other'
-  // are big enough.
-  // See also `fast_memcmp'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-       
-    i := capacity - 1;
-    {(i >= 0) && {safe_equal (item i,other.item i)}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - slice_memcmp (at:INTEGER,other:NATIVE_ARRAY_VOLATILE[V],other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // True if all elements in range [0 .. `other_upper' - `other_lower'] are identical
-  // to the elements in range [`other_lower' .. `other_upper'] of `other' using
-  // `is_equal'. Assume `Current' and `other' are big enough.
-  // See also `slice_fast_memcmp'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-    	
-    i := other_upper - other_lower;
-    {(i >= 0) && {safe_equal (item (at + i),other.item (other_lower + i))}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - fast_memcmp other:NATIVE_ARRAY_VOLATILE[V] until capacity:INTEGER :BOOLEAN <-
-  // Same jobs as `memcmp' but uses infix `=' instead `equal'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;
-        
-    i := capacity-1;
-    {(i >=0 ) && {item i = other.item i}}.while_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-  
-  - slice_fast_memcmp (at:INTEGER, other:NATIVE_ARRAY_VOLATILE[V], other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // Same jobs as `slice_memcmp' but uses infix "=" instead of `is_equal'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER;		
-		
-    i := other_upper - other_lower;
-    {(i < 0) || {item (at + i) != other.item (other_lower + i)}}.until_do {
-      i := i - 1;
-    };
-    i < 0
-  );
-			
-  - deep_memcmp other:NATIVE_ARRAY_VOLATILE[V] until capacity:INTEGER :BOOLEAN <-
-  // Same jobs as `memcmp' but uses `is_deep_equal' instead `equal'.
-  [ ...
-    -? {(capacity > 0) ->> {other.is_not_null}};
-  ]
-  ( + result:BOOLEAN;  // BEN : A REVOIR, il y a + efficace...
-    + e1,e2:V;
-    + i:INTEGER;
-    
-    result := TRUE;
-    i := capacity - 1;
-    {(result = FALSE) || {i < 0}}.until_do {
-      e1 := item i;
-      e2 := other.item i;
-      (e1 != e2).if {
-	((e1 != NULL) && {e2 != NULL}).if {
-	  (! e1.is_deep_equal e2).if {
-	    result := FALSE;
-	  };
-	} else {
-	  result := FALSE;
-	};
-      };
-      i := i - 1;
-    };
-    result
-  );
-  
-  - slice_deep_memcmp (at:INTEGER,other:NATIVE_ARRAY_VOLATILE[V],other_lower,other_upper:INTEGER) :BOOLEAN <-
-  // Same jobs as `slice_memcmp' but uses `is_deep_equal' instead of `is_equal'.
-  [ ...
-    -? {at >= 0};
-    -? {other_lower >= 0};
-    -? {other_upper >= other_lower - 1};
-    -? {(other_upper >= other_lower) ->> {other.is_not_null}};
-  ]
-  ( + i:INTEGER; 
-    + e1,e2:V;
-    + result:BOOLEAN;
-	
-    i := other_upper - other_lower;
-    result := TRUE;
-    {(! result) || {i < 0}}.until_do {
-      e1 := item i;
-      e2 := other.item i;
-      (e1 = e2).if {
-      }.elseif {e1 != NULL} then {
-	(e2 != NULL).if {
-	  result := e1.is_deep_equal e2;
-	} else {
-	  result := FALSE;
-	};
-      } else {
-	result := FALSE;
-      };
-      i := i - 1;
-    };
-    result
-  );
-  
-  //
-  // Searching:
-  //
-  
-  - first_index_of element:V until upper:INTEGER :INTEGER <-
-  // Give the index of the first occurrence of `element' using
-  // `==' for comparison.
-  // Answer `upper + 1' when `element' is not inside.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-       
-    {(idx > upper) || {safe_equal (element,item idx)}}.until_do	{
-      idx := idx + 1;
-    };
-    idx
-  );
-  
-  - index_of (element:V,start_index:INTEGER) until upper:INTEGER :INTEGER <-
-  // Using `is_equal' for comparison, gives the index of the first occurrence of `element' 
-  // at or after `start_index'. Answer `upper + 1' when the search fail.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {start_index >= 0};
-    -? {start_index <= upper};
-  ]
-  ( + result:INTEGER;
-    
-    result := start_index;
-    {(result > upper) || {safe_equal (element,item result)}}.until_do {
-      result := result + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {(Result <= upper) ->> {safe_equal (element,item Result)}};
-  ];
-  
-  - reverse_index_of element:V from upper:INTEGER :INTEGER <-
-  // Give the index of the first occurrence of `element' using
-  // `==' for comparison, from upper to lower.
-  // Answer -1 when `element' is not inside.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-   
-    idx := upper;
-    {(idx < 0) || {safe_equal (element,item idx)}}.until_do	{
-      idx := idx - 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range (-1) to upper};
-    +? {(Result > 0) ->> {safe_equal (element, item Result)}};
-  ];
-  
-  - fast_index_of (element:V,start_index:INTEGER) until upper:INTEGER :INTEGER <-
-  // Using basic `=' for comparison, gives the index of the first occurrence of 
-  // `element' at or after `start_index'. Answer `upper + 1' when the search fail.
-  // See also `index_of', `reverse_index_of'.
-  [ ...
-    -? {start_index >= 0};
-    -? {start_index <= upper};
-  ]
-  ( + result:INTEGER;
-  
-    result := start_index;
-    {(result > upper) || {element = item result}}.until_do {      
-      result := result + 1;
-    };
-    result
-  )
-  [ ...
-    +? {Result.in_range start_index to (upper + 1)};
-    +? {(Result <= upper) ->> {element = item Result}};
-  ];
-  
-  - fast_reverse_index_of element:V from upper:INTEGER :INTEGER <-
-  // Same as `reverse_index_of' but use basic `=' for comparison.
-  // Search is done in reverse direction, which means from `upper' down to the
-  // `0'. Answer `-1' when the search fail.
-  // See also `reverse_index_of', `index_of'.
-  [
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-       
-    idx := upper;
-    {(idx < 0) || {element = item idx}}.until_do {
-      idx := idx - 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range (-1) to upper};
-    +? {(Result > 0) ->> {element = item Result}};
-  ];
-
-  - fast_first_index_of element:V until upper:INTEGER :INTEGER <-
-  // Same as `index_of' but use basic `=' for comparison.
-  // `0'. Answer `upper + 1' when the search fail.
-  // See also `fast_index_of', `reverse_index_of'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + idx:INTEGER;
-        
-    {(idx > upper) || {element = item idx}}.until_do {
-      idx := idx + 1;
-    };
-    idx
-  )
-  [ ...
-    +? {Result.in_range 0 to (upper + 1)};
-    +? {(Result <= upper) ->> {element = item Result}};
-  ];    
-  
-  - has element:V until upper:INTEGER :BOOLEAN <-
-  // Look for `element' using `==' for comparison.
-  // Also consider `has' to choose the most appropriate.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + result:BOOLEAN;
-    + i:INTEGER; 
-    
-    i := upper;
-    {(result) || {i < 0}}.until_do {
-      result := safe_equal (element,item i);
-      i := i - 1;
-    };
-    result
-  );
-  
-  - fast_has element:V until upper:INTEGER :BOOLEAN <-
-  // Look for `element' using basic `=' for comparison.
-  // Also consider `has' to choose the most appropriate.
-  [
-    -? {upper >= -1};
-  ]
-  ( + i:INTEGER;
-    
-    i := upper;
-    {(i < 0) || {element = item i}}.until_do {
-      i := i - 1;
-    };
-    i >= 0
-  );
-  
-  //
-  // Removing:
-  //
-  
-  - remove_first upper:INTEGER <-
-  // Assume `upper' is a valid index.
-  // Move range [1 .. `upper'] by 1 position left.
-  [ ...
-    -? {upper >= 0};
-  ]
-  ( + i:INTEGER;
-       
-    {i = upper}.until_do {
-      put (item (i + 1)) to i;
-      i := i + 1;
-    };
-  );
-  
-  - remove index:INTEGER until upper:INTEGER <-
-  // Assume `upper' is a valid index.
-  // Move range [`index' + 1 .. `upper'] by 1 position left.
-  [ ...
-    -? {index >= 0};
-    -? {index <= upper};
-  ]
-  ( + i:INTEGER;
-    
-    i := index;
-    {i = upper}.until_do {
-      put (item (i + 1)) to i;
-      i := i + 1;
-    };
-  );
-  
-  //
-  // Replacing:
-  //
-  
-  - replace_all old_value:V with new_value:V until upper:INTEGER <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using `==' for comparison.
-  // See also `fast_replace_all' to choose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (     
-    upper.downto 0 do { i:INTEGER;
-      (safe_equal (old_value,(item i))).if {
-	put new_value to i;
-      };
-    };
-  );
-  
-  - fast_replace_all old_value:V with new_value:V until upper:INTEGER <-
-  // Replace all occurences of the element `old_value' by `new_value'
-  // using basic `=' for comparison.
-  // See also `replace_all' to choose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (     
-    upper.downto 0 do { i:INTEGER;
-      (old_value = item i).if {
-	put new_value to i;
-      };
-    };
-  );
-  
-  //
-  // Adding:
-  //
-    
-  - copy src:NATIVE_ARRAY_VOLATILE[V] to dest:INTEGER until src_capacity:INTEGER <-
-  // Copy range [0 .. `src_capacity - 1'] of `src' to range
-  // [`dest' .. `dest + src_capacity - 1'] of `Self'.
-  // No subscript checking.
-  [ ...
-    -? {dest >= 0};
-    -? {src_capacity >= 0};
-  ]
-  ( + i1, i2:INTEGER;
-    
-    i1 := dest;
-    {i2 = src_capacity}.until_do {
-      put (src.item i2) to i1;
-      i2 := i2 + 1;
-      i1 := i1 + 1;
-    };
-  );
-  
-  - slice_copy src:NATIVE_ARRAY_VOLATILE[V] to dest:INTEGER from src_min:INTEGER to src_max:INTEGER <-
-  // Copy range [`src_min' .. `src_max'] of `src' to range
-  // [`at' .. `at + src_max - src_min - 1'] of `Current'.
-  // No subscript checking.
-  [ ...
-    -? {dest >= 0};
-    -? {src_min <= src_max + 1};
-    -? {(src != Self) | (dest != src_min)};
-  ]
-  ( + i1, i2:INTEGER;    
-    
-    i1 := dest;
-    i2 := src_min;
-    {i2 > src_max}.until_do {
-      put (src.item i2) to i1;
-      i2 := i2 + 1;
-      i1 := i1 + 1;
-    };
-  );
-  
-  //
-  // Other:
-  //
-  
-  - set_all_with v:V until upper:INTEGER <-
-  // Set all elements in range [0 .. upper] with
-  // value `v'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (
-    upper.downto 0 do { i:INTEGER;
-      put v to i;
-    };
-  );
-  
-  - set_slice_with v:V from lower:INTEGER until upper:INTEGER <-
-  // Set all elements in range [`lower' .. `upper'] with value `v'.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      put v to i;
-      i := i + 1;
-    };
-  );
-  
-  - clear_all upper:INTEGER <-
-  // Set all elements in range [0 .. `upper'] with
-  // the default value.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + v:V;
-    
-    upper.downto 0 do { i:INTEGER;      
-      put v to i;
-    };
-  );
-  
-  - clear lower:INTEGER to upper:INTEGER <-
-  // Set all elements in range [`lower' .. `upper'] with
-  // the default value
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower};
-  ]
-  ( + v:V;
-        
-    lower.to upper do { i:INTEGER;
-      put v to i;
-    };
-  );
-  
-  - copy_from model:NATIVE_ARRAY_VOLATILE[V] until upper:INTEGER <-
-  // Assume `upper' is a valid index both in Current and `model'.
-  [ ...
-    -? {upper >= -1};
-  ]
-  (
-    upper.downto 0 do { i:INTEGER;
-      put (model.item i) to i;
-    };
-  );
-  
-  - deep_twin_from capacity:INTEGER :NATIVE_ARRAY_VOLATILE[V] <-
-  // To implement `deep_twin'. Allocate a new array of
-  // `capacity' initialized with `deep_twin'.
-  // Assume `capacity' is valid both in Current and `model'.
-  [ ...
-    -? {capacity >= 0};
-  ]
-  ( + element:V;
-    + result:NATIVE_ARRAY_VOLATILE[V];
-       
-    (capacity > 0).if {
-      result := calloc capacity;
-      (capacity - 1).downto 0 do { i:INTEGER;
-	element := item i;
-	(element != NULL).if {
-	  element := element.deep_twin;
-	};
-	result.put element to i;
-      };
-    };
-  );
-  
-  - move lower:INTEGER to upper:INTEGER by offset:INTEGER <-
-  // Move range [`lower' .. `upper'] by `offset' positions.
-  // Freed positions are not initialized to default values.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower};
-    -? {lower + offset >= 0};
-  ]
-  (     
-    (offset != 0).if {
-      (offset < 0).if {
-	lower.to upper do { i:INTEGER;
-	  put (item i) to (i + offset);
-	};
-      } else {
-	upper.downto lower do { i:INTEGER;
-	  put (item i) to (i + offset);
-	};
-      };
-    };
-  );
-  
-  - occurrences element:V until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [0..upper]
-  // using `equal' for comparison.
-  // See also `fast_occurrences' to chose the apropriate one.
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + count:INTEGER;
-    
-    upper.downto 0 do { i:INTEGER;
-      (safe_equal (element,item i)).if {
-	count := count + 1;
-      };
-    };
-    count
-  );
-  
-  - slice_occurrences element:V from lower:INTEGER until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [`lower' .. `upper'] using 
-  // `is_equal' for comparison.
-  // See also `slice_fast_occurrences' to chose the apropriate one.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i,result:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      (safe_equal (element,item i)).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  );
-
-  - fast_occurrences element:V until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [0..upper]
-  // using basic "=" for comparison.
-  // See also `fast_occurrences' to chose the apropriate one.
-  [
-    -? {upper >= -1};
-  ]
-  ( + count:INTEGER;
-    
-    upper.downto 0 do { i:INTEGER;
-      (element = item i).if {
-	count := count + 1;
-      };
-    };
-    count
-  );
-  
-  - slice_fast_occurrences element:V from lower:INTEGER until upper:INTEGER :INTEGER <-
-  // Number of occurrences of `element' in range [`lower' .. `upper']
-  // using basic "=" for comparison.
-  // See also `slice_occurrences' to chose the apropriate one.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i,result:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      (element = item i).if {
-	result := result + 1;
-      };
-      i := i + 1;
-    };
-    result
-  );
-			
-  - all_default upper:INTEGER :BOOLEAN <-
-  // Do all items in range [0 .. `upper'] have their type's
-  // default value?
-  [ ...
-    -? {upper >= -1};
-  ]
-  ( + result:BOOLEAN;
-    + model:V;
-    ? {upper >= -1};
-    result := TRUE;
-    upper.downto 0 do { i:INTEGER;
-      (model != item i).if {
-	result := FALSE;
-      };
-    };
-    result
-  );
-  
-  - slice_default lower:INTEGER to upper:INTEGER :BOOLEAN <-
-  // Do all items in range [`lower' .. `upper'] have their type's default value?
-  // Note: for non Void items, the test is performed with the `is_default' predicate.
-  [ ...
-    -? {lower >= 0};
-    -? {upper >= lower - 1};
-  ]
-  ( + i:INTEGER; 
-    + v:V;
-    + result:BOOLEAN;
-		
-    result := TRUE;
-    i := lower;
-    {(i > upper) || {! result}}.until_do {
-      v := item i;
-      (v != NULL).if {
-	result := v.is_default;
-      };
-      i := i + 1;
-    };
-    result
-  );
-  
-  //
-  // Interfacing with C:
-  //
-  
-  - to_external:POINTER <- to_pointer;
-  // Gives access to the C pointer on the area of storage.
-  
-  - is_null:BOOLEAN <- to_pointer.is_null;
-  
-  - is_not_null:BOOLEAN <- to_pointer.is_not_null;
-  
-  //
-  // Guru Section
-  //
-  
-  - force_put element:V to index:INTEGER <-
-  // Used in Memory count: not to use directly without caution !
-  [ ...
-    -? {index>=0};
-  ]
-  (    
-    `9`;    
-  );
-
diff --git a/lib/collection/low_level/set.li b/lib/collection/low_level/set.li
deleted file mode 100644
index 5a58418..0000000
--- a/lib/collection/low_level/set.li
+++ /dev/null
@@ -1,613 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := SET[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Definition of a mathematical set of objects.";
-
-  // All common operations on mathematical sets are available.
-  // Well knowned implementations are HASHED_SET and AVL_SET.
-  
-Section Inherit
-  
-  + parent_traversable:TRAVERSABLE[V] := TRAVERSABLE[V];
-  
-  + parent_safe_equal:SAFE_EQUAL[V] := SAFE_EQUAL[V];
-  
-Section Public
-  //
-  // Counting:
-  //
-  
-  - count:INTEGER <-
-  // Cardinality of the set (i.e. actual `count' of stored elements).
-  (
-    deferred;
-    0
-  );
-	
-  - is_empty:BOOLEAN <- count = 0;
-  // Is the set empty?
-  
-  //
-  // Adding and removing:
-  //
-  
-  - add e:V <-
-  // Add new item `e' to the set. The mathematical definition of adding 
-  // in a set is followed, i.e. the element `e' is added only and only 
-  // if it is not yet present in the set.
-  // As this `add' feature is actually using `is_equal', you may consider 
-  // to use `fast_add' for expanded objects as well while trying to get 
-  // the very best performances.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    "Added." +? {has e};
-    "Not in then added." +? {(! Old has e) -> (count = Old count + 1)};
-    "In then not added." +? {(Old has e) -> (count = Old count)};
-  ];
-
-  - fast_add e:V <-
-  // Same job as `add', but uses basic `=' for comparison.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    "Added." +? {fast_has e};
-    "Not in then added." +? {(! Old fast_has e) -> (count = Old count + 1)};
-    "In then not added." +? {(Old fast_has e) -> (count = Old count)};
-  ];
-
-  - remove e:V <-
-  // Remove item `e' from the set: the mathematical definition of
-  // removing from a set is followed.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    "Removed." +? {! has e};
-    "Not in not removed." +? {(! Old has e) -> (count = Old count)};
-    "In then removed." +? {(Old has e) -> (count = Old count - 1)};
-  ];
-
-  - fast_remove e:V <-
-  // Same job as `remove', but uses basic `=' for comparison.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    "Removed." +? {! fast_has e};
-    "Not in not removed." +? {(! Old fast_has e) -> (count = Old count)};
-    "In then removed." +? {(Old fast_has e) -> (count = Old count - 1)};
-  ];
-  
-  - clear <- clear_count;
-  
-  - clear_count <-
-  // Empty the current set (`is_empty' is True after that call). 
-  // If possible, the actual implementation is supposed to keep 
-  // its internal storage area in order to refill `Current' in 
-  // an efficient way.
-  //
-  // See also `clear_count_and_capacity' to select the most appropriate.
-  (
-    deferred;
-  )
-  [ ...
-    "Is empty." +? {count = 0}; 
-  ];
-
-  - clear_count_and_capacity <-
-  // Empty the current set (`is_empty' is True after that call). 
-  // If possible, the actual implementation is supposed to release 
-  // its internal storage area for this memory to be used by other objects.
-  //
-  // See also `clear_count' to select the most appropriate.
-  (
-    deferred;
-  )
-  [ ...
-    "Is empty." +? {count = 0}; 
-  ];
-  
-  //
-  // Looking and searching:
-  //
-  
-  - has e:V :BOOLEAN <-
-  // Is element `e' in the set?
-  // As this query is actually using `is_equal', you may consider to use 
-  // `fast_has' for expanded objects as well while trying to get the very 
-  // best performances.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-    FALSE
-  )
-  [ ...
-    +? {Result -> ! is_empty}; 
-  ];
-  
-  - fast_has e:V :BOOLEAN <-
-  // Is element `e' actually stored in the set?
-  // Warning: this query is using basic `=' for comparison. 
-  //
-  // See also `has' when dealing with reference types.
-  [ ...
-    -? {e != NULL}; 
-  ]
-  (
-    deferred;
-  )
-  [ ...
-    //+? {Result ->> {e = reference_at e}}; // BSBS: Pb with '=='
-  ];
-
-  - reference_at e:V :V <-
-  // Non Void when `e' is in the set. In such a situation, `Result' is the 
-  // object which is actually stored in the `Current' set (see ensure assertion).
-  [ ...
-    -? {e != NULL};
-    -? {! e.is_expanded_type};
-  ]
-  (
-    deferred;
-    NULL
-  )
-  [ ...
-    +? {has e ->> {Result == e}}; 
-  ];
-  
-  //
-  // To provide iterating facilities:
-  //
-  
-  - lower:INTEGER := 1;
-
-  - upper:INTEGER <-
-  ( count )
-  [ ...
-    +? {Result = count}; 
-  ];
-
-  - item i:INTEGER :V <-
-  // Item at the corresponding index `i'.
-  //
-  // See also `lower', `upper', `valid_index'.
-  //
-  // SETs are intrinsically unordered, so there is no guarantee that 
-  // `item'(i) after performing an `add' or `remove' operation is related 
-  // in any way to `item'(i) before that operation.
-  ( + result:V;
-    
-    deferred;
-    result
-  )
-  [ ... 
-    +? {fast_has Result}; 
-  ]; 
-
-  - first:V <- item lower;
-  // The very `first' item.
-  //
-  // See also `last', `item'.
-  //
-  // SETs are intrinsically unordered, so there is no guarantee that 
-  // `first' after performing an `add' or `remove' operation is related 
-  // in any way to `first' before that operation.
-
-  - last:V <- item upper;
-  // The `last' item.
-  //
-  // See also `first', `item'.
-  //
-  // SETs are intrinsically unordered, so there is no guarantee that 
-  // `last' after performing an `add' or `remove' operation is related 
-  // in any way to `last' before that operation.
-  
-  //
-  // Mathematical operations:
-  //
-  
-  - union other:SELF <-
-  // Make the union of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    + e:V;
-		
-    i := 1;
-    {i > other.count}.until_do {
-      e := other.item i;
-      (! has e).if {
-	add e;
-      };
-      i := i + 1;
-    };
-  )
-  [ ...
-    +? {count <= Old count + other.count}; 
-  ];
-  
-  - fast_union other:SELF <-
-  // Make the union of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    + e:V;
-		
-    i := 1;
-    {i > other.count}.until_do {
-      e := other.item i;
-      (! fast_has e).if {
-	fast_add e;
-      };
-      i := i + 1;
-    };
-  )
-  [ ...
-    +? {count <= Old count + other.count}; 
-  ];
-	
-  - '+' other:SELF :SELF <-
-  // Return the union of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + result:SELF;
-    
-    result := twin;
-    result.union other;
-    result
-  )
-  [ ...
-    +? {Result.count <= count + other.count};
-    +? {(Self.is_subset_of Result) && {other.is_subset_of Result}};
-  ];
-
-  - intersection other:SELF <-
-  // Make the intersection of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER; 
-    + e:V;
-    
-    i := upper;
-    {i < lower}.until_do {
-      e := item i;
-      (! other.has e).if {
-	remove e;
-      };
-      i := i - 1;
-    };
-  )
-  [ ...
-    +? {count <= other.count.min (Old count)}; 
-  ];
-
-  - fast_intersection other:SELF <-
-  // Make the intersection of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER; 
-    + e:V;
-    
-    i := upper;
-    {i < lower}.until_do {
-      e := item i;
-      (! other.fast_has e).if {
-	fast_remove e;
-      };
-      i := i - 1;
-    };
-  )
-  [ ...
-    +? {count <= other.count.min (Old count)}; 
-  ];
-  
-  - '^' other:SELF :SELF <-
-  // Return the intersection of the `Current' set with `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + result:SELF;
-    
-    result := twin;
-    result.intersection other;
-    result
-  )
-  [ ...
-    +? {Result.count <= other.count.min count};
-    +? {(Result.is_subset_of Self) && {Result.is_subset_of other}};
-  ];
-
-  - minus other:SELF <-
-  // Make the set `Current' - `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    
-    (other = Self).if {
-      clear_count;
-    } else {
-      i := 1;
-      {i > other.count}.until_do {
-	remove (other.item i);
-	i := i + 1;
-      };
-    };
-  )
-  [ ...
-    +? {count <= Old count}; 
-  ];
-
-  - '-' other:SELF :SELF <-
-  // Return  the set `Current' - `other'.
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + result:SELF;
-    
-    result := twin;
-    result.minus other;
-    result
-  )
-  [ ...
-    +? {Result.count <= count};
-    +? {Result.is_subset_of Self}; 
-  ];
-
-  //
-  // Comparison:
-  //
-  
-  - is_subset_of other:SELF :BOOLEAN <-
-  // Is the `Current' set a subset of `other'?
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {count <= other.count} then {
-      result := TRUE;
-      i := 1;
-      {(! result) || {i > count}}.until_do {				
-	result := other.has (item i);
-	i := i + 1;
-      };
-    };
-    result
-  )
-  [ ...
-    +? {Result -> (count <= other.count)}; 
-  ];
-
-  - is_disjoint_from other:SELF :BOOLEAN <-
-  // Is the `Current' set disjoint from `other' ?
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self != other).if {
-      result := TRUE;
-      i := 1;
-      (count <= other.count).if {
-	{(! result) || {i > count}}.until_do {	 
-	  result := ! other.has (item i);
-	  i := i + 1;
-	};
-      } else {
-	{(! result) || {i > other.count}}.until_do {
-	  result := ! has (other.item i);
-	  i := i + 1;
-	};
-      };
-    };
-    result
-  )
-  [ ...
-    +? {Result = (Self ^ other).is_empty}; 
-  ];
-  
-  - fast_is_disjoint_from other:SELF :BOOLEAN <-
-  // Is the `Current' set disjoint from `other' ?
-  [ ...
-    -? {other != NULL}; 
-  ]
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self != other).if {
-      result := TRUE;
-      i := 1;
-      (count <= other.count).if {
-	{(! result) || {i > count}}.until_do {	 
-	  result := ! other.fast_has (item i);
-	  i := i + 1;
-	};
-      } else {
-	{(! result) || {i > other.count}}.until_do {
-	  result := ! fast_has (other.item i);
-	  i := i + 1;
-	};
-      };
-    };
-    result
-  )
-  [ ...
-   // +? {Result = (Self ^ other).is_empty}; 
-  ];
-  
-  - '==' other:SELF :BOOLEAN <-
-  // Is the `Current' set equal to `other'?
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {count = other.count} then {
-      result := TRUE;
-      i := 1;
-      {(! result) || {i > count}}.until_do {				
-	result := other.has (item i);
-	i := i + 1;
-      };
-    };
-    result
-  )
-  [ ...
-    "Double inclusion." +? {Result = (is_subset_of other) & (other.is_subset_of Self)};
-  ];
-
-  //
-  // Duplication.
-  //
-  
-  - copy other:SELF <-
-  // Copy 'other' into the current set
-  ( + i:INTEGER;
-    
-    // Note: this naive implementation is OK because node
-    // recycling is implemented.
-    // BSBS: A revoir.
-    make;
-    i := 1;
-    {i > other.count}.until_do {			
-      add (other.item i);
-      i := i + 1;
-    };
-  );
-
-  - from_collection model:COLLECTION[V] <-
-  // Add all items of `model'.
-  [ ...
-    -? {model != NULL}; 
-  ]
-  ( + i, up:INTEGER;
-    
-    make
-    up := model.upper;
-    i  := model.lower;
-    {i > up}.until_do {
-      add (model.item i);
-      i := i + 1;
-    };
-  );
-
-  //
-  // Agents based features:
-  //
-  
-  - do_all action:BLOCK <-
-  // Apply `action' to every item of `Self'.
-  //
-  // See also `for_all', `exists'.
-  ( + i:INTEGER;
-    
-    i := lower;
-    {i > upper}.until_do {
-      action.value (item i);
-      i := i + 1;
-    };
-  );
-
-  - for_all predicate:BLOCK :BOOLEAN <-
-  // Do all items satisfy `predicate'?
-  //
-  // See also `do_all', `exists'.
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    result := TRUE;
-    i := lower;
-    {(! result) || {i > upper}}.until_do {
-      result := predicate.value (item i);
-      i := i + 1;
-    };
-    result
-  );
-
-  - exists predicate:BLOCK :BOOLEAN <-
-  // Does at least one item satisfy `predicate'?
-  //
-  // See also `do_all', `for_all'.
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    
-    i := lower;
-    {result || {i > upper}}.until_do {
-      result := predicate.value (item i);
-      i := i + 1;
-    };
-    result
-  );
-
-  //
-  // Creation.
-  //
-  
-  - create:SELF <- 
-  ( + result:SELF;
-    
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-
-  // Creation of an empty SET.
-  (
-    deferred;
-  )
-  [ ...
-    +? {is_empty}; 
-  ];
-
diff --git a/lib/collection/low_level/simple_dictionary.li b/lib/collection/low_level/simple_dictionary.li
deleted file mode 100644
index 1b6c315..0000000
--- a/lib/collection/low_level/simple_dictionary.li
+++ /dev/null
@@ -1,33 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := SIMPLE_DICTIONARY[V, K];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  // Basic dictionaries (assymmetry value / key)
-  // (class akin to DOUBLE_DICTIONARY)
-
-Section Inherit
-  
-  + parent_dictionary:Expanded DICTIONARY[V,K];
diff --git a/lib/collection/low_level/traversable.li b/lib/collection/low_level/traversable.li
deleted file mode 100644
index d8122e7..0000000
--- a/lib/collection/low_level/traversable.li
+++ /dev/null
@@ -1,159 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TRAVERSABLE[V];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "A `TRAVERSABLE[E_]' is a finite readable sequence of objects of type E_.";
-  
-  // For instance, `COLLECTION's and `STRING's are `TRAVERSABLE'.
-  //
-  // A good performance should always be obtained by sequentially acessing a 
-  // `TRAVERSABLE' with increasing indexes (from `lower' to `upper'), as 
-  // demonstrated in the following code snippet :
-  //
-  //  i := a_traversable.lower;
-  //  {i > a_traversable.upper}.until_do {
-  //    do_something_with (a_traversable.item i);
-  //    i := i + 1;
-  //  };
-  //
-  // Other accessing methods (including random access and sequential access 
-  // from `upper' to `lower') may or may not lead to acceptable performance, 
-  // depending on the particular implementation of `TRAVERSABLE'.
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  //
-  // Indexing:
-  //
-  
-  - lower:INTEGER <-
-  // Minimum index.
-  //
-  // See also `upper', `valid_index', `item'.
-  (
-    deferred;
-    0
-  );
-
-  - upper:INTEGER <-
-  // Maximum index.
-  //
-  // See also `lower', `valid_index', `item'.
-  (
-    deferred;
-    0
-  );	
-  
-  - valid_index i:INTEGER :BOOLEAN <-
-  // True when `i' is valid (i.e., inside actual bounds).
-  //
-  // See also `lower', `upper', `item'.
-  ( 
-    (lower <= i) && {i <= upper}
-  )
-  [        
-    "Definition." +? {Result = ((lower <= i) & (i <= upper))};
-  ];
-
-  //
-  // Counting:
-  //
-  
-  - count:INTEGER <-
-  // Number of available indices.
-  //
-  // See also `is_empty', `lower', `upper'.
-  (
-    deferred;
-    0
-  )
-  [
-    "Definition." +? {Result = upper - lower + 1};
-  ];
-
-  - is_empty:BOOLEAN <-
-  // Is collection empty ?
-  //
-  // See also `count'.
-  (
-    deferred
-    FALSE
-  )
-  [
-    "Definition." +? {Result = (count = 0)};
-  ];
-  
-  //
-  // Accessing:
-  //
-  
-  - item i:INTEGER :V <-
-  // Item at the corresponding index `i'.
-  //
-  // See also `lower', `upper', `valid_index'.
-  [
-    -? {valid_index i};
-  ]
-  (
-    deferred;
-    V
-  );
-
-  - first:V <-
-  // The very `first' item.
-  //
-  // See also `last', `item'.
-  [
-    -? {! is_empty};
-  ]
-  (
-    deferred;
-    V
-  )
-  [	
-    "Definition." +? {Result = item lower};
-  ];
-
-  - last:V <-
-  // The `last' item.
-  //
-  // See also `first', `item'.
-  [ 
-    -? {! is_empty};
-  ]
-  (
-    deferred;
-    V
-  )
-  [
-    "Definition." +? {Result = item upper};
-  ];
-  
-  
\ No newline at end of file
diff --git a/lib/file_system/abstract_directory.li b/lib/file_system/abstract_directory.li
deleted file mode 100644
index 7ef1136..0000000
--- a/lib/file_system/abstract_directory.li
+++ /dev/null
@@ -1,285 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_DIRECTORY;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Basic Directory management";
-  
-Section Inherit
-  
-  + parent_entry:ENTRY := ENTRY;
-  
-Section ENTRY 
-  
-  + list:LINKED_LIST[ENTRY];
-  
-Section Public
-  
-  //
-  // Update.
-  //
-  
-  - refresh:BOOLEAN <-
-  (
-    physical_refresh
-  );
-  
-  //
-  // Indexing.
-  //
-  
-  - lower:INTEGER := 1;
-  // Minimum index.
-  
-  - upper:INTEGER <- list.upper; 
-  // Maximum index.
-  
-  - valid_index index:INTEGER :BOOLEAN <- 
-  // True when `index' is valid (ie. inside actual
-  // bounds of the collection).
-  ( + result:BOOLEAN;
-    result := (lower <= index) && {upper >= index};
-    ? { result = ((lower <= index) && {upper >= index})};
-    result
-  );
-  
-  //
-  // Counting.
-  //
-  
-  - count:INTEGER <- (upper - lower + 1);
-  // Number of available indices.
-  
-  - is_empty:BOOLEAN <- count = 0;
-  // Is collection empty ?
-  
-  //
-  // Accessing.
-  //
-    
-  - item i:INTEGER :ENTRY <-
-  // Item at the corresponding index `i'. 
-  ( ? {valid_index i};
-    list.item i
-  );
-  
-  - first:ENTRY <- 
-  // The very `first' item.  
-  ( + result:ENTRY;
-    ? {! is_empty};
-    result := item lower;
-    result
-  );
-  
-  - last:ENTRY <-
-  // The `last' item.
-  ( + result:ENTRY;
-    ? {! is_empty};    
-    result = item upper;
-    result
-  );
-  
-  - has e:ENTRY :BOOLEAN <-
-  ( + i:INTEGER;
-    
-    i:= lower;
-    {(i>upper) || {item i = e}}.until_do {
-      i := i + 1;
-    };
-    (i<=upper)
-  );
-  
-  - index_of e:ENTRY :INTEGER <-
-  ( + result:INTEGER;
-   
-    result := lower;
-    {(result > upper) || {e = item result}}.until_do {
-      result := result + 1;
-    };
-    ? { lower <= result };
-    ? { result <= upper + 1 };
-    ? { (result <= upper) ->> {e = item result}};    
-    result
-  );
-
-  + parent:ENTRY;
-  
-  - this:ENTRY <- parent_entry;
-  
-  //
-  // Writing:
-  //
-  
-  - make_directory n:ABSTRACT_STRING :ENTRY <-
-  ( + result:ENTRY;
-    + dir:DIRECTORY;
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append n;        
-    reduce_path string_tmp;        
-    (physical_make_directory string_tmp).if {
-      result := get_entry string_tmp;
-      (result != NULL).if {
-	dir := get_parent_intern (result.path);
-	(dir != NULL).if {
-	  dir.refresh;
-	};
-      };
-    };
-    result
-  );
-  
-  - make_file n:ABSTRACT_STRING :ENTRY <-
-  ( + result:ENTRY;
-    + dir:DIRECTORY;
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append n;
-    reduce_path string_tmp;
-    (physical_make_file string_tmp).if {
-      result := get_entry string_tmp;
-      (result != NULL).if {
-	dir := get_parent_intern (result.path);
-	(dir != NULL).if {
-	  dir.refresh;
-	};
-      };
-    };
-    result
-  );
-  
-  //
-  // Get new Entry.
-  //
-  
-  - get new_path:ABSTRACT_STRING :ENTRY <-
-  ( 
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append new_path;
-    reduce_path string_tmp;    
-    get_entry string_tmp
-  );
-  
-  //
-  // Rename
-  //
-  
-  - no_error:INTEGER          := 0;
-  - error_source:INTEGER      := 1;
-  - error_destination:INTEGER := 2;
-  - error_extern:INTEGER      := 3;
-  
-  - move src:ABSTRACT_STRING with dst:ABSTRACT_STRING :INTEGER <-
-  ( + e:ENTRY;
-    + d:DIRECTORY;
-    + result:INTEGER;
-    // Source path.
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append src;
-    reduce_path string_tmp;
-    // Destination path.
-    string_tmp2.copy path;
-    string_tmp2.add_last '/';
-    string_tmp2.append dst;
-    reduce_path string_tmp2;
-    // Physical remove.
-    not_yet_implemented;
-    /*
-    (physical_rename string_tmp with string_tmp2).if {
-      (alias.has string_tmp).if {
-	e := alias.at string_tmp;
-	alias.remove string_tmp;
-	d := get_parent_intern (e.path);
-	(d != NULL).if {
-	  d.list.remove (d.index_of e);
-	};
-	e.set_path string_tmp2;
-	alias.add (e.this) to (e.path); 
-	d := get_parent_intern (e.path);
-	(d != NULL).if {
-	  d.list.add_last e;
-	};
-      };
-    } else {
-      result := error_extern;
-    };
-    */
-    result
-  );
-  
-  - print <-
-  ( + p:ABSTRACT_STRING;
-    lower.to upper do { j:INTEGER;
-      p := item j.path;
-      p.print;
-      (p.count).to 19 do { i:INTEGER;
-	' '.print;	
-      };            
-    };
-    '\n'.print;
-  );
-  
-Section ENTRY
-  
-  - make e:ENTRY :BOOLEAN <-
-  (
-    parent_entry := e;
-    list := LINKED_LIST[ENTRY].create;    
-    refresh
-  );
-  
-Section Private  
-  
-  //
-  // Physical implementation.
-  //
-  
-  //
-  // Scanning
-  //
-      
-  - physical_refresh:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-    
-  - physical_make_directory new_path:STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-
-  - physical_make_file new_path:STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-
-
-
-  
\ No newline at end of file
diff --git a/lib/file_system/abstract_entry.li b/lib/file_system/abstract_entry.li
deleted file mode 100644
index 30677f0..0000000
--- a/lib/file_system/abstract_entry.li
+++ /dev/null
@@ -1,429 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_ENTRY;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Abstract Entry.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-
-  //
-  // Path.
-  //
-  
-  + path:STRING_CONSTANT;
-  
-  + name:STRING_CONSTANT; 
-  
-  + link_count:INTEGER;
-  
-  //
-  // Date / Time.
-  //
-  
-  + access_time:TIME;
-  + access_date:DATE;
-  
-  + update_time:TIME;
-  + update_date:DATE;
-    
-  //
-  // type.
-  //
-  
-  + is_directory:BOOLEAN;
-  
-  - is_file:BOOLEAN <- ! is_directory;
-  
-  - this:ENTRY <- Self;
-  
-  //
-  // Size.
-  //
-  
-  + size:UINTEGER_32;
-  
-  //
-  // Open / Close
-  //
-  
-  - is_open:BOOLEAN <- (link_count > 0);
-  
-  - open:ENTRY <-
-  // Return FILE or DIRECTORY, NULL:error.
-  (    
-    link_count := link_count + 1;
-    (child = NULL).if { 
-      (is_directory).if {
-	child := DIRECTORY.clone; 
-      } else {
-	child := STD_FILE.clone;
-      };
-    };
-    (child.make this).if_false {
-      child := NULL;
-    };
-    child
-  );
-  
-  - open_read_only:ENTRY <-
-  // Return FILE or DIRECTORY, NULL:error.
-  ( + f:STD_FILE;
-    link_count := link_count + 1;    
-    (is_directory).if {
-      (child = NULL).if { 
-	child := DIRECTORY.clone; 
-      };
-      (child.make this).if_false {
-	child := NULL;
-      };
-    } else {
-      (child = NULL).if {
-	f := STD_FILE.clone;
-      } else {
-	f ?= child;
-      };
-      (f.make_read_only this).if {
-	child := f;
-      };
-    };
-    child
-  );
-
-  - open_bmp:BMP_FILE <-
-  // Return FILE or DIRECTORY, NULL:error.
-  ( + result:BMP_FILE; 
-    link_count := link_count + 1;
-    (child = NULL).if { 
-      result := BMP_FILE.clone;
-      child := result;
-    } else {
-      result ?= child;
-    };
-    (child.make this).if_false {
-      child := result := NULL;
-    };
-    result
-  );
-
-  - open_ai:AI_FILE <-
-  // Return FILE or DIRECTORY, NULL:error.
-  ( + result:AI_FILE; 
-    link_count := link_count + 1;
-    (child = NULL).if { 
-      result := AI_FILE.clone;
-      child := result;
-    } else {
-      result ?= child;
-    };
-    (child.make this).if_false {
-      child := result := NULL;
-    };
-    result
-  );
-  
-  - close:ENTRY <-
-  (
-    ? {is_open};
-    link_count := link_count - 1;
-    ? {link_count >= 0};
-    this
-  );
-  
-  //
-  // Manager.
-  //
-  
-  - remove:BOOLEAN <-
-  // Remove file or directory (WARNING: delete recursive)
-  ( + dir:DIRECTORY;
-    + i:INTEGER;
-    + result:BOOLEAN;
-    
-    (! is_open).if { 
-      (is_directory).if {
-	result := TRUE;
-	dir ?= open;
-	i := dir.lower;
-	{(i > dir.upper) || {! result}}.until_do {
-	  result := dir.item i.remove;	  
-	  i := i + 1;
-	};	
-	result.if {
-	  result := physical_remove_directory;
-	};
-	close;
-      } else {
-	result := physical_remove_file;
-      };
-      (result).if {
-	dir := get_parent_intern path;
-	(dir != NULL).if {
-	  dir.list.remove (dir.index_of this);
-	};
-	// Remove Alias.
-	alias.remove path;
-      };
-    };
-    result
-  );
-  
-  - rename new_name:ABSTRACT_STRING :BOOLEAN <-
-  ( + result:BOOLEAN;
-    //? {new_name.index_of '/' = 0};
-    
-    get_parent_path path in string_tmp;    
-    string_tmp.add_last '/';
-    string_tmp.append new_name;
-    (result := physical_rename path with string_tmp).if {
-      alias.remove path;
-      set_path string_tmp;
-      alias.add this to path;
-    };
-    result
-  );
-  
-Section ENTRY  
-  
-  + child:ENTRY;
-    
-  - make_entry p:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    set_path p; 
-    physical_make
-  );
-  
-  - make e:ENTRY :BOOLEAN <- 
-  // Redefine in DIRECTORY and FILE
-  (
-    deferred;
-    FALSE
-  );
-  
-  - set_path n:ABSTRACT_STRING <-
-  ( + idx:INTEGER;
-    path := STRING_CONSTANT.create_copy n;
-    idx := path.last_index_of '/'; 
-    (name = NULL).if {
-      name := STRING_CONSTANT.clone;
-    };
-    name.set_storage (path.storage + idx) count (path.count - idx);    
-  );
-  
-  - reduce_path st:STRING <-
-  ( + i:INTEGER;
-    + stat:INTEGER;
-    + car:CHARACTER;
-    
-//        "Reduce:{".print; 
-//        st.print;
-//        "}=>\n       {".print;
-
-    st.replace_all '\\' with '/';
-    i := st.lower;
-    {i > st.upper}.until_do {
-      car := st.item i;
-      (car = '/').if {
-	// Separator character.
-	stat.when 0 then {
-	  // foo/bar => foo/bar
-	  //    ^          ^
-	  stat := 1;
-	}.when 1 then {
-	  // foo//bar => /bar
-	  //     ^       ^
-	  st.remove_first (i-1);
-	  i := st.lower;
-	}.when 2 then {
-	  // foo/./bar => foo/bar
-	  //      ^          ^
-	  st.remove_between (i-1) to i;
-	  i := i - 2;
-	  stat := 1;
-	}.when 3 then {
-	  // toto/foo/../bar => toto/bar 
-	  //            ^           ^
-	  + idx:INTEGER;
-	  idx := st.last_index_of '/' since (i-4);
-	  // st.last_index_of '/' since (i-4);
-	  (idx = 0).if {
-	    st.remove_first (i-1);
-	    i := st.lower;
-	  } else {
-	    st.remove_between idx to (i-1);
-	    i := idx;
-	  };
-	  stat := 1;
-	};
-      }.elseif {car = '.'} then {
-	// Point character.
-	(stat)
-	.when 0 then {
-	  // foo.bar => foo.bar
-	}.when 1 then {
-	  // foo/.bar => foo/.bar
-	  stat := 2;
-	}.when 2 then {
-	  // foo/..bar => foo/..bar
-	  stat := 3;
-	}.when 3 then {
-	  // foo/...bar => foo/...bar
-	  stat := 0;
-	};
-      }.elseif {(car = ':') && {i > 2} && 
-	{st.item (i-1).is_letter} && {st.item (i-2) = '/'}
-      } then {
-	st.remove_first (i-2);
-	i := st.lower;	    
-      } else {
-	// Other character.
-	stat := 0;
-      };
-      i := i + 1;
-    };
-    
-    stat.when 0 then {
-      // foo/bar  => foo/bar
-      //        ^           ^
-    }.when 1 then {
-      // foo/  => foo
-      //     ^       ^
-      st.remove_last 1;
-    }.when 2 then {
-      // foo/.  => foo
-      //      ^       ^
-      st.remove_last 2;      
-    }.when 3 then {
-      // toto/foo/..  => toto 
-      //            ^        ^
-      + idx:INTEGER;
-      idx := st.last_index_of '/' since (i-4);
-      (idx = 0).if {
-	st.clear;
-      } else {
-	st.remove_between idx to (i-1);
-      };
-    };
-    (st.is_empty).if {
-      st.add_last '/';
-    };
-    
-//    st.print; "}\n".print;
-  );
-  
-Section Public
-    
-  //
-  // Alias Entry.
-  //
-  
-  - alias:HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING] := 
-  HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING].create;
-  
-  - get_entry p:ABSTRACT_STRING :ENTRY <- 
-  ( + new_entry,result:ENTRY;
-    
-    (alias.has p).if {      
-      result := alias.at p;
-    } else {
-      new_entry := ENTRY.clone;
-      new_entry.make_entry p.if {
-	alias.put new_entry to (new_entry.path);
-	result := new_entry;
-      };
-    };
-    
-    result
-  );
-  
-  - get_parent_path p:ABSTRACT_STRING in tmp:STRING <-
-  ( + i:INTEGER;
-    
-    (tmp != p).if {
-      tmp.copy p;
-    };
-    i := tmp.last_index_of '/';
-    (i = 0).if {
-      tmp.copy "../";
-    } else {
-      tmp.keep_head (i-1);
-      (tmp.is_empty).if {	  
-	tmp.add_last '/';
-      };
-    };
-  );
-  
-  - get_parent_intern p:ABSTRACT_STRING :DIRECTORY <-
-  ( + ent:ENTRY;
-    + result:DIRECTORY;
-    
-    get_parent_path p in string_tmp;
-    (alias.has string_tmp).if {
-      ent := alias.at string_tmp;
-      (ent.child != NULL).if {
-	result ?= ent.child;
-      };
-    };
-    result
-  );
-  
-  //
-  // Physical implementation.
-  //
-
-  - physical_make:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  - physical_remove_directory:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  - physical_remove_file:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  //
-  // Service routine
-  //
-
-  - string_tmp:STRING  := STRING.create 255;
-  - string_tmp2:STRING := STRING.create 255;
\ No newline at end of file
diff --git a/lib/file_system/abstract_file.li b/lib/file_system/abstract_file.li
deleted file mode 100644
index 7349c4d..0000000
--- a/lib/file_system/abstract_file.li
+++ /dev/null
@@ -1,236 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_FILE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Abstract File Management";
-  
-Section Inherit
-  
-  + parent_entry:ENTRY := ENTRY;   
-  
-Section Public
-    
-  + cursor:UINTEGER_32;
-  
-  - set_cursor n:UINTEGER_32 <-
-  (
-    cursor := n;
-  );
-  
-  //
-  // Update.
-  //
-  
-  - refresh:BOOLEAN <-
-  (
-    physical_make
-  );
-    
-  - is_empty:BOOLEAN <- size = 0;
-  // Is collection empty ?
-  
-  - this:ENTRY <- parent_entry;
-  
-  //
-  // Read.
-  //
-  
-  - read dest:OBJECT :INTEGER <- 
-  ( 
-    array_intern.make_with_map_object dest;
-    read_bound array_intern size (dest.object_size)
-  ); 
-  
-  - read dest:ARRAYED size nb_elt:INTEGER :INTEGER <-
-  ( 
-    dest.set_capacity (dest.count + nb_elt);
-    read_bound dest size nb_elt
-  );
-  
-  //
-  // Write.
-  //
-  
-  - write src:ARRAYED from start:INTEGER size nb_elt:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + elt_size,elt_ofs,size_byte:INTEGER;
-    + size_block:INTEGER;
-    + idx_elt:INTEGER;
-    ? {(start + nb_elt - 1) <= src.upper};
-    ? { is_open };
-    ? { nb_elt > 0};
-    ? {src!=NULL};
-
-    elt_size:=src.element_sizeof;
-    size_byte:=nb_elt * elt_size;    
-    basic_seek cursor;
-    cursor := cursor + size_byte.to_uinteger_32;
-    size_block := 2048;
-    idx_elt := start;
-    {size_byte > 0}.while_do {
-      (size_byte < 2048).if {
-	size_block := size_byte;
-      };
-      0.to (size_block - 1) do {i:INTEGER;
-	tmp_buffer.put (src.item_byte idx_elt offset elt_ofs) to i;
-	elt_ofs := elt_ofs+1;
-	(elt_ofs = elt_size).if {
-	  elt_ofs := 0;
-	  idx_elt := idx_elt + 1;
-	};
-      };
-      result := result + basic_write tmp_buffer size size_block;
-      size_byte := size_byte - size_block;
-    };
-    result        
-  );
-  
-  //
-  // Close.
-  //
-  
-  - close:ENTRY <-
-  ( + result:ENTRY;
-    + dir:DIRECTORY;
-    
-    result := parent_entry.close;
-    cursor := 0;
-    (basic_close).if {
-      refresh;
-      dir := get_parent_intern (result.path);
-      (dir != NULL).if {
-	dir.refresh;
-      };
-    } else {
-      result := NULL;
-    };
-    result
-  );
-  
-Section ENTRY
-  
-  - make e:ENTRY :BOOLEAN <-
-  (
-    parent_entry := e;
-    physical_open
-  );
-
-  - make_read_only e:ENTRY :BOOLEAN <-
-  (
-    parent_entry := e;
-    physical_open_read_only
-  );
-  
-Section Private  
-  
-  - read_bound dest:ARRAYED size nb_elt:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-    + elt_size,size_byte:UINTEGER_32;
-    + size_block:UINTEGER_32;
-    
-    ? { is_open };
-    ? { nb_elt > 0};
-    ? { dest!=NULL};
-    
-    elt_size  := dest.element_sizeof.to_uinteger_32;
-    size_byte := nb_elt.to_uinteger_32 * elt_size;
-    
-    ((cursor + size_byte) > size).if {
-      size_byte := size - cursor;
-    };
-    
-    basic_seek cursor;
-    size_block := 2048;
-    
-    array_intern2.make_with_map_object tmp_buffer;
-    {size_byte > 0}.while_do {
-      (size_byte < 2048).if {
-	size_block := size_byte;
-      };
-      result := result + basic_read tmp_buffer size size_block;
-      cursor := cursor + size_block;
-
-      array_intern2.set_upper ((size_block - 1).to_integer);
-      dest.add_last_buffer array_intern2 from 0 to (size_block - 1);
-      size_byte := size_byte - size_block;
-      array_intern2.clear;
-    };
-    result    
-  );
-    
-  + array_intern:FAST_ARRAY[UINTEGER_8] := FAST_ARRAY[UINTEGER_8].clone;
-  
-  + array_intern2:FAST_ARRAY[UINTEGER_8] := FAST_ARRAY[UINTEGER_8].clone;
-  
-  - tmp_buffer:NATIVE_ARRAY[UINTEGER_8] := NATIVE_ARRAY[UINTEGER_8].create 2048; // 512 byte
-  
-  //
-  // Physical implementation.
-  //
-  
-  - physical_open:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  ); 
-
-  - physical_open_read_only:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  ); 
-    
-  - basic_seek pos:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( 
-    ? {is_open};    
-    deferred;
-    0
-  );
-  
-  - basic_read buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( 
-    ? {is_open};
-    deferred;
-    0
-  );
-  
-  - basic_write buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( 
-    ? {is_open};
-    deferred;
-    0
-  );
-  
-  - basic_close:BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  
\ No newline at end of file
diff --git a/lib/file_system/abstract_file_system.li b/lib/file_system/abstract_file_system.li
deleted file mode 100644
index c224957..0000000
--- a/lib/file_system/abstract_file_system.li
+++ /dev/null
@@ -1,137 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_FILE_SYSTEM;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Basic File System manager.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-
-  //
-  // Drives
-  //
-  
-  + current_drive:STRING_CONSTANT;    // Current Drive
-
-  + isaac_drive:STRING_CONSTANT;      // System Drive
-  
-  - set_drive d:STRING_CONSTANT <-
-  (
-    ? {d != NULL};
-    current_drive := d;    
-    current_dir := root;    
-    current_dir.open;
-  );
-  
-  //
-  // Directories
-  //
-  
-  - root:DIRECTORY <- deferred;
-  
-  + current_dir:DIRECTORY;  // Current directory
-  
-  - get_current_directory:DIRECTORY <-
-  (
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir
-  );
-  
-  - get_directory n:ABSTRACT_STRING :DIRECTORY <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.get_directory n    
-  );
-  
-  - change_directory n:ABSTRACT_STRING <-
-  (
-    current_dir := get_directory n;
-  );
-  
-  //
-  // Files
-  //
-  
-  - new_file n:ABSTRACT_STRING :STD_FILE <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.new_file n
-  );
-  
-  - get_file_type n:ABSTRACT_STRING :STD_FILE <-
-  // Return file Type Format
-  ( + result:STD_FILE;
-    ? {n != NULL};
-    (AI_FILE.is_type n).if {
-      result := AI_FILE;
-    }.elseif {BMP_FILE.is_type n} then {
-      result := BMP_FILE;
-    } else {
-      result := STD_FILE;
-    };
-    result
-  );
-  
-  - get_file n:ABSTRACT_STRING :STD_FILE <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.get_file n
-  );
-  
-  - size:INTEGER <-
-  // Size of all files of the file system
-  ( 
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    root.size
-  );
-  
-  //
-  // Init
-  //
-  
-  - physical_init <- deferred;
-  
-  - make <-
-  (
-    physical_init;
-    set_drive isaac_drive;
-  );
diff --git a/lib/file_system/directory.li b/lib/file_system/directory.li
deleted file mode 100644
index db2d13b..0000000
--- a/lib/file_system/directory.li
+++ /dev/null
@@ -1,319 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := DIRECTORY;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Basic Directory management";
-  
-Section Inherit
-  
-  - parent_entry:ENTRY := ENTRY;
-  
-Section DIRECTORY
-  
-  + list:LINKED_LIST[ENTRY];
-
-  - alias:HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING] := 
-  HASHED_DICTIONARY[ENTRY,ABSTRACT_STRING].create;
-  
-Section Public
-  
-  //
-  // Manager.
-  //
-  
-  - remove_me <- remove_path ".";
-  
-  - remove p:ABSTRACT_STRING :BOOLEAN <-
-  // Remove file or directory (WARNING: delete recursive)
-  ( + dir:DIRECTORY;
-    + i:INTEGER;
-    + result:BOOLEAN;
-    + e:ENTRY;
-    
-    e := get_entry p;
-    (e != NULL).if {
-      (e.is_directory).if {
-        dir ?= e;
-        result := dir.open;
-        (result).if {
-          i := dir.lower;        
-          {(i > dir.upper) || {! result}}.until_do {
-            result := remove (dir.item i.path);
-            i := i + 1;
-          };	        
-          result.if {
-            result := physical_remove (e.path);
-          };
-        };
-      } else {
-        result := physical_remove (e.path);
-      };
-      (result).if {
-        // Remove Alias.
-        alias.remove (e.path);        
-      };
-    };
-    result
-  );
-  
-  - move old_path:ABSTRACT_STRING to new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + e:ENTRY;
-    
-    "WARNING : Et les alias des sous répertoires, fichiers, ...\n".print;
-    
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append old_path;    
-    reduce_path string_tmp;
-    string_tmp2.copy path;
-    string_tmp2.add_last '/';
-    string_tmp2.append new_path;    
-    reduce_path string_tmp2;
-    e := alias.reference_at string_tmp;
-    ((result := physical_move string_tmp to string_tmp2) && {e != NULL}).if {
-      alias.remove string_tmp;
-      e.set_path string_tmp2;
-      alias.add e to (e.path);
-    };
-    result
-  );
-  
-  - get_entry p:ABSTRACT_STRING :ENTRY <- 
-  ( + result:ENTRY;
-    + idx:INTEGER;
-    string_tmp2.copy path;
-    string_tmp2.add_last '/';
-    string_tmp2.append p;
-    reduce_path string_tmp2;
-    string_tmp3.copy string_tmp2;
-    {
-      result := alias.reference_at string_tmp2;
-      (result = NULL).if {
-        idx := string_tmp2.fast_last_index_of '/';        
-        (idx > 0).if {
-          string_tmp2.keep_head (idx-1);
-        } else {
-          string_tmp2.clear;
-        };
-      };
-    }.do_while {(result = NULL) && {! string_tmp2.is_empty}};       
-    (result = NULL).if {
-      result := FILE_SYSTEM.physical_get_entry string_tmp3;
-    }.elseif {string_tmp3.count != string_tmp2.count} then {
-      + dir:DIRECTORY;
-
-      dir ?= result;            
-      result := dir.physical_get_entry string_tmp3;      
-    };
-    result
-  );  
-  
-  //
-  // Indexing.
-  //
-  
-  - open:BOOLEAN <-
-  (
-    deferred;
-    FALSE
-  )
-  [
-    +? {list != NULL};
-  ];
-  
-  - is_open:BOOLEAN <- list != NULL;
-  
-  - lower:INTEGER := 1;
-  // Minimum index.
-  
-  - upper:INTEGER <- 
-  [
-    {is_open} -? "Directory not open.";
-  ]
-  (
-    list.upper
-  );    
-    
-  // Maximum index.
-  
-  - valid_index index:INTEGER :BOOLEAN <- 
-  // True when `index' is valid (ie. inside actual
-  // bounds of the collection).
-  [
-    {is_open} -? "Directory not open.";
-  ]
-  ( 
-    index.in_range lower to upper 
-  )
-  [
-    +? {Result = index.in_range lower to upper};
-    +? {list.count = Old list.count};
-  ];
-  
-  //
-  // Counting.
-  //
-  
-  - count:INTEGER <- (upper - lower + 1);
-  // Number of available indices.
-  
-  - is_empty:BOOLEAN <- count = 0;
-  // Is collection empty ?
-  
-  //
-  // Accessing.
-  //
-    
-  - item i:INTEGER :ENTRY <-
-  // Item at the corresponding index `i'. 
-  [
-    -? {valid_index i};
-    {is_open} -? "Directory not open.";
-  ]
-  ( 
-    list.item i
-  );  
-  
-  - first:ENTRY <- 
-  // The very `first' item.  
-  [
-    {is_open} -? "Directory not open.";
-    -? {! is_empty};
-  ]
-  ( 
-    item lower
-  );
-  
-  
-  - last:ENTRY <-
-  // The `last' item.
-  [
-    {is_open} -? "Directory not open.";
-    -? {! is_empty};
-  ]
-  (     
-    item upper
-  );
-  
-  - parent:ENTRY <-
-  (
-    get_entry ".."
-  );
-    
-  //
-  // Writing:
-  //
-  
-  - make_directory p:ABSTRACT_STRING :DIRECTORY <-
-  ( + result:DIRECTORY;    
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append p;        
-    reduce_path string_tmp;        
-    (physical_make_directory string_tmp).if {
-      result ?= get_entry string_tmp;            
-      ? {result != NULL};
-    };
-    result
-  );
-  
-  - make_file p:ABSTRACT_STRING :STD_FILE <-
-  ( + result:STD_FILE;    
-    string_tmp.copy path;
-    string_tmp.add_last '/';
-    string_tmp.append p;
-    reduce_path string_tmp;
-    (physical_make_file string_tmp).if {
-      result ?= get_entry string_tmp;
-      ? {result != NULL};
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - print <-
-  ( 
-    lower.to upper do { j:INTEGER;      
-      string_tmp.copy (item j.path); 
-      (item j.is_directory).if {
-        string_tmp.append " D ";
-      } else {
-        string_tmp.append "   ";
-      };
-      {string_tmp.count % 20 != 0}.while_do {
-        string_tmp.add_last ' ';
-      };
-      string_tmp.print;
-    };    
-    '\n'.print;
-  );
-  
-Section DIRECTORY
-  
-  //
-  // Physical implementation.
-  //
-
-  - physical_get_entry new_path:ABSTRACT_STRING :ENTRY <-
-  ( + result:ENTRY;
-       
-    ((! is_open) && {open}).if {   
-      result := get_entry new_path;
-    };
-    result
-  );
-              
-  - physical_make_directory new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-
-  - physical_make_file new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-
-  - physical_remove p:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-  - physical_move old_path:ABSTRACT_STRING to new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( 
-    deferred;
-    FALSE
-  );
-  
-Section Private
-  
-  - string_tmp3:STRING  := STRING.create 255;
\ No newline at end of file
diff --git a/lib/file_system/entry.li b/lib/file_system/entry.li
deleted file mode 100644
index 6304e0c..0000000
--- a/lib/file_system/entry.li
+++ /dev/null
@@ -1,232 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ENTRY;
-
-  - copyright   := "2003-2007 Benoit Sonntag, Jerome Hilbert";
-  
-  - comment := "Abstract Entry.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-
-  //
-  // Path.
-  //
-  
-  + path:STRING_CONSTANT;
-  
-  + name:STRING_CONSTANT; 
-   
-  //
-  // Date / Time.
-  //
-  
-  - access:UINTEGER_16 <- ( deferred; 0);
-  
-  - access_time:TIME <- ( deferred; TIME);
-  - access_date:DATE <- ( deferred; DATE);
-  
-  - update_time:TIME <- ( deferred; TIME);
-  - update_date:DATE <- ( deferred; DATE);
-  
-  - create_time:TIME <- ( deferred; TIME);
-  - create_date:DATE <- ( deferred; DATE);
-    
-  //
-  // type.
-  //
-  
-  - is_directory:BOOLEAN <-
-  ( + dir:DIRECTORY;
-    + e:ENTRY;
-    
-    e := Self; // Bug Compilo
-    dir ?= e;
-    dir != NULL
-  );
-      
-  - is_file:BOOLEAN <- ! is_directory;
-  
-  //
-  // Open / Close
-  //
-  
-  - open:BOOLEAN <-
-  // Return FILE or DIRECTORY, NULL:error.
-  (    
-    deferred;
-    FALSE
-  );          
-  
-  - is_open:BOOLEAN <- 
-  (
-    deferred;
-    FALSE
-  );
-    
-Section ENTRY
-  
-  //
-  // Service routine
-  //
-
-  - string_tmp:STRING  := STRING.create 255;
-  
-  - string_tmp2:STRING  := STRING.create 255;
-  
-  - set_path n:ABSTRACT_STRING <-
-  ( + idx:INTEGER;
-    path := STRING_CONSTANT.create_copy n;
-    idx := path.last_index_of '/'; 
-    (name = NULL).if {
-      name := STRING_CONSTANT.clone;
-    };
-    name.set_storage (path.storage + idx) count (path.count - idx);    
-  );
-  
-  - reduce_path st:STRING <-
-  ( + i:INTEGER;
-    + stat:INTEGER;
-    + car:CHARACTER;
-    
-    st.replace_all '\\' with '/';
-    i := st.lower;
-
-    {i > st.upper}.until_do {
-      car := st.item i;
-      (car = '/').if {
-	// Separator character.
-	stat.when 0 then {
-	  // foo/bar => foo/bar
-	  //    ^          ^
-	  stat := 1;
-	}.when 1 then {
-	  // foo//bar => /bar
-	  //     ^       ^
-	  st.remove_first (i-1);
-	  i := st.lower;
-	}.when 2 then {
-	  // foo/./bar => foo/bar
-	  //      ^          ^
-	  st.remove_between (i-1) to i;
-	  i := i - 2;
-	  stat := 1;
-	}.when 3 then {
-	  // toto/foo/../bar => toto/bar 
-	  //            ^           ^
-	  + idx:INTEGER;
-	  idx := st.last_index_of '/' since (i-4);
-	  // st.last_index_of '/' since (i-4);
-	  (idx = 0).if {
-	    st.remove_first (i-1);
-	    i := st.lower;
-	  } else {
-	    st.remove_between idx to (i-1);
-	    i := idx;
-	  };
-	  stat := 1;
-	};
-      }.elseif {car = '.'} then {
-	// Point character.
-	(stat)
-	.when 0 then {
-	  // foo.bar => foo.bar
-	}.when 1 then {
-	  // foo/.bar => foo/.bar
-	  stat := 2;
-	}.when 2 then {
-	  // foo/..bar => foo/..bar
-	  stat := 3;
-	}.when 3 then {
-	  // foo/...bar => foo/...bar
-	  stat := 0;
-	};
-      }.elseif {(car = ':') && {i > 2} && 
-	{st.item (i-1).is_letter} && {st.item (i-2) = '/'}
-      } then {
-	st.remove_first (i-2);
-	i := st.lower;	    
-      } else {
-	// Other character.
-	stat := 0;
-      };
-      i := i + 1;
-    };
-    
-    stat.when 0 then {
-      // foo/bar  => foo/bar
-      //        ^           ^
-    }.when 1 then {
-      // foo/  => foo
-      //     ^       ^
-      st.remove_last 1;
-    }.when 2 then {
-      // foo/.  => foo
-      //      ^       ^
-      st.remove_last 2;      
-    }.when 3 then {
-      // toto/foo/..  => toto 
-      //            ^        ^
-      + idx:INTEGER;
-      idx := st.last_index_of '/' since (i-4);
-      (idx = 0).if {
-	st.clear;
-      } else {
-	st.remove_between idx to (i-1);
-      };
-    };
-    
-    (st.is_empty).if {
-      st.add_last '/';
-    };
-  );
-  
-  
-/* obsolete  //
-  // Alias Entry.
-  //
-      
-  - get_parent_path p:ABSTRACT_STRING in tmp:STRING <-
-  [ 
-    -? {p.last != '/'};
-  ]
-  ( + i:INTEGER;
-    
-    (tmp != p).if {
-      tmp.copy p;
-    };
-    i := tmp.last_index_of '/';
-    (i = 0).if {
-      tmp.copy "../";
-    } else {
-      tmp.keep_head (i-1);
-      (tmp.is_empty).if {	  
-	tmp.add_last '/';
-      };
-    };
-  );
-  
-*/
\ No newline at end of file
diff --git a/lib/file_system/fs_min.li b/lib/file_system/fs_min.li
deleted file mode 100644
index a3e37d1..0000000
--- a/lib/file_system/fs_min.li
+++ /dev/null
@@ -1,101 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := FS_MIN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment  := "File system minimum";
-  
-  - external := `#include <unistd.h>`;
-  
-Section Inherit
-  
-  - parent_object:OBJECT <- OBJECT;
-  
-Section Private  
-  
-  - string_tmp:STRING := STRING.create 128;
-  
-Section Public
-  
-  //
-  // Independance File System 
-  //
-  
-  - open_read n:ABSTRACT_STRING :POINTER <- 
-  ( + buf:NATIVE_ARRAY[CHARACTER];
-    string_tmp.copy n;
-    buf := string_tmp.to_external;
-    `fopen((char*)@buf,"rb")`:(POINTER)    
-  );
-
-  - open_write n:ABSTRACT_STRING :POINTER <- 
-  ( + buf:NATIVE_ARRAY[CHARACTER];
-    string_tmp.copy n;
-    buf := string_tmp.to_external;
-    `fopen((char*)@buf,"wb")`:(POINTER)
-  );
-  
-  - read f:POINTER in buf:STRING size sz:INTEGER :INTEGER <-   
-  ( + ptr:NATIVE_ARRAY[CHARACTER];
-    + result:INTEGER;
-    ptr := buf.to_external;    
-    result := `fread((void *)(@ptr),(size_t)(1), (size_t)(@sz),(FILE*)(@f))`:(INTEGER);
-    ptr.put '\0' to sz;
-    buf.from_external ptr;
-    result
-  );
-
-  - write f:POINTER with buf:STRING size sz:INTEGER :INTEGER <-   
-  ( + ptr:NATIVE_ARRAY[CHARACTER];
-    + result:INTEGER;
-    ptr := buf.to_external;    
-    result := `fwrite((void *)(@ptr),(size_t)(1), (size_t)(@sz),(FILE*)(@f))`:(INTEGER);
-    result
-  );
-  
-  - close p:POINTER <- `fclose((FILE*)(@p))`;
-  
-  - file_size p:POINTER :INTEGER <-
-  ( + result:INTEGER;
-    `fseek((FILE*)(@p),0,SEEK_END)`;
-    result := `ftell((FILE *)@p)`:INTEGER;
-    `fseek((FILE*)(@p),0,SEEK_SET)`;
-    result
-  );
-
-  - make_file new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    string_tmp.copy new_path;
-    p := string_tmp.to_external;    
-    stream := `fopen((char*)@p,"w+b")`:POINTER;
-    (result := (stream != NULL)).if {
-      close stream; 
-    };
-    result
-  );
-  
diff --git a/lib/file_system/old/abstract_file_system.li b/lib/file_system/old/abstract_file_system.li
deleted file mode 100644
index c224957..0000000
--- a/lib/file_system/old/abstract_file_system.li
+++ /dev/null
@@ -1,137 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_FILE_SYSTEM;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Basic File System manager.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-
-  //
-  // Drives
-  //
-  
-  + current_drive:STRING_CONSTANT;    // Current Drive
-
-  + isaac_drive:STRING_CONSTANT;      // System Drive
-  
-  - set_drive d:STRING_CONSTANT <-
-  (
-    ? {d != NULL};
-    current_drive := d;    
-    current_dir := root;    
-    current_dir.open;
-  );
-  
-  //
-  // Directories
-  //
-  
-  - root:DIRECTORY <- deferred;
-  
-  + current_dir:DIRECTORY;  // Current directory
-  
-  - get_current_directory:DIRECTORY <-
-  (
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir
-  );
-  
-  - get_directory n:ABSTRACT_STRING :DIRECTORY <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.get_directory n    
-  );
-  
-  - change_directory n:ABSTRACT_STRING <-
-  (
-    current_dir := get_directory n;
-  );
-  
-  //
-  // Files
-  //
-  
-  - new_file n:ABSTRACT_STRING :STD_FILE <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.new_file n
-  );
-  
-  - get_file_type n:ABSTRACT_STRING :STD_FILE <-
-  // Return file Type Format
-  ( + result:STD_FILE;
-    ? {n != NULL};
-    (AI_FILE.is_type n).if {
-      result := AI_FILE;
-    }.elseif {BMP_FILE.is_type n} then {
-      result := BMP_FILE;
-    } else {
-      result := STD_FILE;
-    };
-    result
-  );
-  
-  - get_file n:ABSTRACT_STRING :STD_FILE <-
-  (
-    ? {n != NULL};
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    current_dir.get_file n
-  );
-  
-  - size:INTEGER <-
-  // Size of all files of the file system
-  ( 
-    (current_dir = NULL).if {      // FILE_SYSTEM Not Initialized
-      make;
-    };
-    root.size
-  );
-  
-  //
-  // Init
-  //
-  
-  - physical_init <- deferred;
-  
-  - make <-
-  (
-    physical_init;
-    set_drive isaac_drive;
-  );
diff --git a/lib/file_system/std_file.li b/lib/file_system/std_file.li
deleted file mode 100644
index c79db6d..0000000
--- a/lib/file_system/std_file.li
+++ /dev/null
@@ -1,166 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := STD_FILE;
-
-  - copyright   := "2003-2007 Benoit Sonntag, Jerome Hilbert";
-  
-  - comment := "Abstract File Management";
-  
-Section Inherit
-  
-  - parent_entry:ENTRY := ENTRY;   
-  
-Section Public
-  
-  - cursor:UINTEGER_32 <-
-  [
-    -? {is_open};
-  ]
-  ( 
-    deferred;
-    0
-  );
-  
-  - size:UINTEGER_32 <-
-  ( 
-    deferred;
-    0
-  );
-  
-  - set_cursor n:UINTEGER_32 <-
-  [
-    -? {is_open};
-    -? {n <= size};
-  ]
-  (
-    deferred;    
-  );
-  
-  //
-  // Update.
-  //
-      
-  - is_empty:BOOLEAN <- size = 0;
-  // Is collection empty ?
-    
-  //
-  // Read.
-  //
-  
-  - read dest:OBJECT :INTEGER <- 
-  // WARNING: It's good for Mapping objects, else serializable is necessary.
-  [
-    -? {is_open};
-  ]
-  ( + buf:NATIVE_ARRAY[UINTEGER_8];
-    buf := CONVERT[OBJECT,NATIVE_ARRAY[UINTEGER_8]].on dest;
-    physical_read buf size (dest.object_size)
-  ); 
-  
-  - read dest:ARRAYED size nb_elt:INTEGER :INTEGER <-
-  [
-    -? {is_open};
-  ]
-  ( + buf:NATIVE_ARRAY[UINTEGER_8];
-    + index,s:INTEGER;
-    + result:INTEGER;
-    + new_count:INTEGER;
-    
-    new_count := dest.count + nb_elt;
-    dest.set_capacity new_count;
-    buf := dest.to_native_array_uinteger_8;
-    index := dest.count * dest.element_sizeof;
-    s := nb_elt * dest.element_sizeof;    
-    (buf = NULL).if {"STD_FILE : buf NULL\n".print;};
-    result := physical_read (buf+index) size s;
-    dest.set_count new_count;
-    ? {result % dest.element_sizeof = 0};
-    result / dest.element_sizeof
-  );
-  
-  //
-  // Write.
-  //
-  
-  - write src:ARRAYED from start:INTEGER size nb_elt:INTEGER :INTEGER <-
-  [
-    -? {is_open};
-  ]
-  ( + buf:NATIVE_ARRAY[UINTEGER_8];
-    + index,s:INTEGER;
-    + result:INTEGER;
-       
-    buf := src.to_native_array_uinteger_8;
-    index := (start-src.lower) * src.element_sizeof;
-    s := nb_elt * src.element_sizeof;
-    result := physical_write (buf+index) size s;
-    ? {result % src.element_sizeof = 0};
-    result / src.element_sizeof
-  );
-  
-  //
-  // Close.
-  //
-  
-  - close <-
-  ( 
-    deferred;
-  )
-  [
-    +? {! is_open};
-  ];
-  
-  - open_read_only:BOOLEAN <-
-  (
-    deferred;
-  );
-    
-Section STD_FILE
-  
-  - physical_read buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  [
-    -? {is_open};
-  ]
-  (
-    deferred;
-    0
-  )
-  [
-    +? {cursor = Old cursor + s};
-  ];
-    
-  - physical_write buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  [
-    -? {is_open};
-  ]
-  (     
-    deferred;
-    0
-  )
-  [
-    +? {cursor = Old cursor + s};
-  ];
-            
-  
-    
-  
\ No newline at end of file
diff --git a/lib/format/ai/ai_alias.li b/lib/format/ai/ai_alias.li
deleted file mode 100644
index c14fdcf..0000000
--- a/lib/format/ai/ai_alias.li
+++ /dev/null
@@ -1,139 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := AI_ALIAS;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Alias for Adobe Illustrator format.";
-  
-  - version := 1;  
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - list:HASHED_SET[ABSTRACT_STRING];
-  
-  //
-  // Aliases keywords
-  //
-  
-  // Symbol
-  
-  - start_comment:STRING_CONSTANT      := "%%";
-  
-  - start_comment_more:STRING_CONSTANT := "%%+";
-    
-  - prefix_file:STRING_CONSTANT        := "%!PS-Adobe-2.0 EPSF-1.2";
-
-  - bounding_box:STRING_CONSTANT       := "%%BoundingBox:";
-
-  - end_prolog:STRING_CONSTANT         := "%%EndProlog";
-  
-  - end_comments:STRING_CONSTANT       := "%%EndComments";  
-  
-  - begin_procset:STRING_CONSTANT      := "%%BeginProcset:";
-  
-  - begin_setup:STRING_CONSTANT        := "%%BeginSetup";
-  
-  - end_setup:STRING_CONSTANT          := "%%EndSetup";
-  
-  - adobe_illustrator:STRING_CONSTANT  := "Adobe_Illustrator_";
-  
-  - begin:STRING_CONSTANT              := "begin";
-  
-  - begin_encoding:STRING_CONSTANT     := "%%BeginEncoding:";
-  
-  - end_encoding:STRING_CONSTANT       := "%%EndEncoding";
-  
-  - begin_pattern:STRING_CONSTANT      := "%%BeginPattern";
-  
-  - end_pattern:STRING_CONSTANT        := "%%EndPattern";
-  
-  - note:STRING_CONSTANT               := "%%Note:";
-  
-  - include_file:STRING_CONSTANT       := "%%IncludeFile:";
-  
-  - trailer:STRING_CONSTANT            := "%%Trailer";
-  
-  - initialize:STRING_CONSTANT         := "/initialize get exec";
-  
-  - terminate:STRING_CONSTANT          := "/terminate get exec";
-  
-  - end:STRING_CONSTANT                := "_E end";
-    
-  //
-  // Function
-  //
-  
-  - make <-
-  (
-    list := HASHED_SET[ABSTRACT_STRING].create;
-    // Symbol    
-    list.add start_comment;      
-    list.add start_comment_more; 
-    //
-    list.add prefix_file;
-    list.add bounding_box;    
-    list.add end_prolog;            
-    list.add end_comments;      
-    list.add begin_procset;    
-    list.add begin_setup;      
-    list.add end_setup;        
-    list.add adobe_illustrator;
-    list.add begin;            
-    list.add begin_encoding;   
-    list.add end_encoding;     
-    list.add begin_pattern;    
-    list.add end_pattern;      
-    list.add note;             
-    list.add include_file;     
-    list.add trailer;          
-    list.add initialize;  
-    list.add terminate;        
-    list.add end;
-  );
-  
-  - get str:ABSTRACT_STRING :STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    + tmp:ABSTRACT_STRING;
-    ? {str != NULL};
-    
-    tmp := list.reference_at str;
-    (tmp = NULL).if {
-      result := STRING_CONSTANT.create_copy str;
-      list.add result;
-    } else {
-      result ?= tmp;
-    };
-    result
-  );
-  
-  
-  
-
-
-
diff --git a/lib/format/ai/ai_bezier.li b/lib/format/ai/ai_bezier.li
deleted file mode 100644
index a4acd2c..0000000
--- a/lib/format/ai/ai_bezier.li
+++ /dev/null
@@ -1,121 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_BEZIER;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Operation: bezier";
-  - version := 1;  
-  
-Section Inherit
-  
-  - parent_ai_operation:AI_OPERATION := AI_OPERATION;
-  
-Section Public
-  
-  + wx1:REAL_16_16;
-  + wy1:REAL_16_16;
-  
-  + wx2:REAL_16_16;
-  + wy2:REAL_16_16;
-  
-  + x:REAL_16_16;
-  + y:REAL_16_16;
-  
-  //
-  // Creation.
-  //
-  
-  - create_w1 (lx1,ly1:REAL_16_16) w2 (lx2,ly2:REAL_16_16) to (lx3,ly3:REAL_16_16) :SELF <-
-  (+ result:SELF;
-    result := SELF.clone;
-    result.make_w1 (lx1,ly1) w2 (lx2,ly2) to (lx3,ly3);
-    result    
-  );
-  
-  - make_w1 (lx1,ly1:REAL_16_16) w2 (lx2,ly2:REAL_16_16) to (lx3,ly3:REAL_16_16) <-
-  (
-    wx1 := lx1;
-    wy1 := ly1;
-    wx2 := lx2;
-    wy2 := ly2;
-    x   := lx3;
-    y   := ly3;
-  );
-  
-  //
-  // Draw
-  //
-
-  - draw_stroke b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  ( + i_wx1,i_wy1,i_wx2,i_wy2,i_x,i_y:INTEGER;
-    
-    i_wx1 := (wx1 * s).rounded;
-    i_wy1 := (wy1 * s).rounded;
-    
-    i_wx2 := (wx2 * s).rounded;
-    i_wy2 := (wy2 * s).rounded;
-    
-    i_x   := (x * s).rounded;
-    i_y   := (y * s).rounded;
-    b.spline_w1 (i_wx1,i_wy1) w2 (i_wx2,i_wy2) to (i_x,i_y);
-  ); 
-
-  - draw_fill b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  ( + i_wx1,i_wy1,i_wx2,i_wy2,i_x,i_y:INTEGER;
-    
-    i_wx1 := (wx1 * s).rounded;
-    i_wy1 := (wy1 * s).rounded;
-    
-    i_wx2 := (wx2 * s).rounded;
-    i_wy2 := (wy2 * s).rounded;
-    
-    i_x   := (x * s).rounded;
-    i_y   := (y * s).rounded;
-    b.poly_spline_w1 (i_wx1,i_wy1) w2 (i_wx2,i_wy2) to (i_x,i_y);
-  ); 
-
-  //  
-  // Display.
-  //
-  
-  - display <-
-  (  
-    "poly_spline_w1 ".print;
-    (wx1 *# 8).rounded.print;
-    ','.print;
-    (wy1 *# 8).rounded.print;
-    " w2 ".print;
-    (wx2 *# 8).rounded.print;
-    ','.print;
-    (wy2 *# 8).rounded.print;
-    " to ".print;
-    (x *# 8).rounded.print;
-    ','.print;
-    (y *# 8).rounded.print;
-    ";\n".print;
-  );
-
-
-
diff --git a/lib/format/ai/ai_color.li b/lib/format/ai/ai_color.li
deleted file mode 100644
index 6dc1e80..0000000
--- a/lib/format/ai/ai_color.li
+++ /dev/null
@@ -1,103 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_COLOR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Color of .AI document.";
-
-  - version := 1;  
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private  
-  
-  - gray_to_rgb g:REAL_16_16 :UINTEGER_32 <-
-  ( + tmp:UINTEGER_32;
-    
-    tmp := (g *# 255).to_integer;
-    (tmp << 16) | (tmp << 8) | tmp
-  );
-  
-  - cmyk_to_rgb (c,m,y,k:REAL_16_16) :UINTEGER_32 <-
-  ( + r,g,b:UINTEGER_32;
-    r   := ((- (c + k).min 1 + 1).max 0 *# 255).to_integer;
-    g   := ((- (m + k).min 1 + 1).max 0 *# 255).to_integer;
-    b   := ((- (y + k).min 1 + 1).max 0 *# 255).to_integer;           
-    (r << 16) | (g << 8) | b
-  );
-  
-Section Public
-  
-  + rgbcolor_fill  :UINTEGER_32;
-  + rgbcolor_stroke:UINTEGER_32;
-  
-  //
-  // GRAY
-  //
-    
-  - make_gray_stroke g:REAL_16_16 <-
-  ( 
-    rgbcolor_stroke := gray_to_rgb g;
-  );
-  
-  - make_gray_fill g:REAL_16_16 <-
-  ( 
-    rgbcolor_fill := gray_to_rgb g;
-  );
-  
-  //
-  // CMYK
-  //
-  
-  - make_cmyk_stroke (c,m,y,k:REAL_16_16) <-
-  (
-    rgbcolor_stroke := cmyk_to_rgb (c,m,y,k);
-  );
-  
-  - make_cmyk_fill (c,m,y,k:REAL_16_16) <-
-  ( 
-    rgbcolor_fill := cmyk_to_rgb (c,m,y,k);
-  );
-  
-  //
-  // CMYK + GRAY
-  //
-
-  - make_cmykg_stroke (c,m,y,k,g:REAL_16_16) <-
-  (
-    make_cmyk_stroke (c,m,y,k);
-  );
-  
-  - make_cmykg_fill (c,m,y,k,g:REAL_16_16) <-
-  (
-    make_cmyk_fill (c,m,y,k);
-  );
-
-
-
-
-
diff --git a/lib/format/ai/ai_file.li b/lib/format/ai/ai_file.li
deleted file mode 100644
index 0a73fa9..0000000
--- a/lib/format/ai/ai_file.li
+++ /dev/null
@@ -1,62 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := AI_FILE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Adobe Illustrator File";
-    
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-
-  + width:INTEGER;
-
-  + height:INTEGER;
-
-  - fill_bitmap f:STD_FILE in b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  ( + tmp_buf:FAST_ARRAY[CHARACTER];
-    + ai_parser:AI_PARSER;
-    
-    tmp_buf := FAST_ARRAY[CHARACTER].create_with_capacity (f.size);
-    f.read tmp_buf size (f.size);
-    ai_parser := AI_PARSER.create tmp_buf;
-    width  := ai_parser.width;
-    height := ai_parser.height;
-    ai_parser.draw b scale s;
-  );  
-  
-  - is_type n:ABSTRACT_STRING :BOOLEAN <-
-  // Return true if the file name has '.ai' or '.AI' suffix
-  (
-    ? {n != NULL};
-    ? {! n.is_empty};
-    (n.has_suffix ".ai") || { n.has_suffix ".AI"}
-  );
-  
-
-
-
diff --git a/lib/format/ai/ai_layer.li b/lib/format/ai/ai_layer.li
deleted file mode 100644
index 00eeb7e..0000000
--- a/lib/format/ai/ai_layer.li
+++ /dev/null
@@ -1,96 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_LAYER;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Layer of a AI document.";
-
-  - version := 1;    
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  + color:AI_COLOR;
-  
-  + operation:LINKED_LIST[AI_OPERATION];
-  
-  + is_fill:BOOLEAN;
-  
-  + is_stroke:BOOLEAN;
-      
-  //
-  // Creation.
-  //
-  
-  - create lst_op:LINKED_LIST[AI_OPERATION] color col:AI_COLOR fill f:BOOLEAN stroke s:BOOLEAN :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make lst_op color col fill f stroke s;
-    result
-  );
-  
-  - make lst_op:LINKED_LIST[AI_OPERATION] color col:AI_COLOR fill f:BOOLEAN stroke s:BOOLEAN <-
-  (
-    color     := col;
-    operation := lst_op;
-    is_stroke := s;
-    is_fill   := f;
-  );
-  
-  //
-  // Draw
-  //
-  
-  - draw b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (
-    ? { color != NULL};
-    ? { operation !=  NULL};
-    
-    /*
-    (operation.lower).to (operation.upper) do { i:INTEGER;      
-      operation.item i.display; 
-    };
-    */
-
-    is_fill.if {      
-      b.color (color.rgbcolor_fill);
-      (operation.lower).to (operation.upper) do { i:INTEGER;
-	operation.item i.draw_fill b scale s;
-      };
-      b.poly_trace;
-    };
-    is_stroke.if {
-      b.color (color.rgbcolor_stroke);
-      (operation.lower).to (operation.upper) do { i:INTEGER;
-	operation.item i.draw_stroke b scale s;
-      };
-    };
-
-  );
-  
-
diff --git a/lib/format/ai/ai_line.li b/lib/format/ai/ai_line.li
deleted file mode 100644
index 5407eda..0000000
--- a/lib/format/ai/ai_line.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_LINE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Operation: line.";
-
-  - version := 1;  
-  
-Section Inherit
-  
-  - parent_ai_operation:AI_OPERATION := AI_OPERATION;
-  
-Section Public
-  
-  + x:REAL_16_16;  
-  + y:REAL_16_16;
-  
-  //
-  // Creation.
-  //
-  
-  - create (lx,ly:REAL_16_16) :SELF <-
-  ( + result:SELF;
-    result := SELF.clone;
-    result.make (lx,ly);
-    result
-  );
-  
-  - make (lx,ly:REAL_16_16) <-
-  (
-    x := lx;
-    y := ly;
-  );
-  
-  //
-  // Draw.
-  //
-  
-  - draw_stroke b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (
-    b.line_to (((x * s).rounded),((y * s).rounded));
-  );
-
-  - draw_fill b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (
-    b.poly_line_to (((x * s).rounded),((y * s).rounded));
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display <-
-  (
-    "poly_line_to ".print;
-    (x *# 8).rounded.print;
-    ','.print;
-    (y *# 8).rounded.print;
-    ";\n".print;
-  );
-
-
-
-
diff --git a/lib/format/ai/ai_move.li b/lib/format/ai/ai_move.li
deleted file mode 100644
index 5c1cad7..0000000
--- a/lib/format/ai/ai_move.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_MOVE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Operation: move.";
-  - version := 1;  
-  
-Section Inherit
-  
-  - parent_ai_operation:AI_OPERATION := AI_OPERATION;
-  
-Section Public
-  
-  + x:REAL_16_16;
-  + y:REAL_16_16;
-  
-  //
-  // Creation.
-  //
-  
-  - create (lx,ly:REAL_16_16) :SELF <-
-  ( + result:SELF;
-    result := SELF.clone;
-    result.make (lx,ly);
-    result
-  );
-  
-  - make (lx,ly:REAL_16_16) <-
-  (
-    x := lx;
-    y := ly;
-  );
-  
-  //
-  // Draw.
-  //
-  
-  - draw_stroke b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (    
-    b.move_to (((x * s).rounded),((y * s).rounded));
-  );
-  
-  - draw_fill b:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (    
-    b.poly_move_to (((x * s).rounded),((y * s).rounded));    
-  );
-  
-  //  
-  // Display.
-  //
-  
-  - display <-
-  (
-    "poly_move_to ".print;
-    (x *# 8).rounded.print;
-    ','.print;
-    (y *# 8).rounded.print;
-    ";\n".print;
-  );
-
-  
-
-
-
diff --git a/lib/format/ai/ai_operation.li b/lib/format/ai/ai_operation.li
deleted file mode 100644
index 2145447..0000000
--- a/lib/format/ai/ai_operation.li
+++ /dev/null
@@ -1,52 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := AI_OPERATION;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="Operations of .AI document.";
-
-  - version := 1;  
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  //
-  // Draw.
-  //
-  
-  - draw_stroke b:ABSTRACT_BITMAP scale s:REAL_16_16 <- deferred;
-
-  - draw_fill b:ABSTRACT_BITMAP scale s:REAL_16_16 <- deferred;
-  
-  //
-  // Display.
-  //
-  
-  - display <- deferred;
-
-
diff --git a/lib/format/ai/ai_parser.li b/lib/format/ai/ai_parser.li
deleted file mode 100644
index ada24cd..0000000
--- a/lib/format/ai/ai_parser.li
+++ /dev/null
@@ -1,1709 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := AI_PARSER;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Startup system : First object.";
-  
-  - version := 1;  
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - msg_err:STRING;
-
-  - trace:BOOLEAN;
-  
-  + position:INTEGER;
-  
-  + source:FAST_ARRAY(CHARACTER);
-  
-  - string_tmp:STRING;
-  
-  - last_character:CHARACTER <-
-  ( + result:CHARACTER;
-    (position > source.upper).if {
-      result := 0.to_character;
-    } else {
-      result := source.item position;
-    };
-    result
-  );
-  
-  - end_source:BOOLEAN <-
-  (
-    last_character = 0.to_character
-  );
-  
-  - last_integer:INTEGER;
-  
-  - last_string:STRING_CONSTANT;
-  
-  - last_real_16_16:REAL_16_16;
-  
-  - last_flag:BOOLEAN;
-  
-  - is_new_line:BOOLEAN;
-  
-  - is_space:BOOLEAN <-
-  (
-    { last_character = ' '  } || { last_character = '\n' } ||
-    { last_character = '\t' } || { last_character = '\f' } ||
-    { last_character = '\a' } || { last_character = '\r' } ||
-    { last_character = '\b' } || { last_character = '\v' }
-  );
-  
-  - read_space:BOOLEAN <-
-  ( + old_pos:INTEGER;
-    old_pos := position;
-    { end_source || { ! is_space }}.until_do {
-      ( last_character = '\n' ).if {
-	is_new_line := TRUE;
-      };
-      position := position + 1;
-    };
-    (position < source.upper).if {
-      // Delete Comments except the first (type of the file)
-      (position > 1).if {
-	((last_character = '%') & (source.item (position + 1) != '%')).if {
-	  { end_source || { last_character = '\n' }}.until_do {
-	    position := position + 1;
-	  };
-	};
-      };
-    };
-    ((position != old_pos) | (! end_source ))
-  );
-    
-  - read_keyword s:STRING_CONSTANT :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    + j,old_pos:INTEGER;
-    read_space;
-    j := s.lower;
-    old_pos := position;    
-    { end_source || { j > s.upper } || { last_character != s.item j }}.until_do {
-      j := j + 1;
-      position := position + 1;
-    };
-    (j > s.upper).if {      
-      result := TRUE;
-      
-      trace.if {
-	"\n----> Read Keyword: ".print;
-	s.print;
-	'\n'.print;
-      };
-      
-    } else {
-      position := old_pos;
-    };
-    result
-  );
-  
-  - read_identifier:BOOLEAN <-
-  ( + result:BOOLEAN;
-    read_space;
-    string_tmp.clear;
-    { end_source ||  {! ( last_character.is_letter || {last_character.is_digit} || {last_character = '_'} || {last_character = '-' })}}.until_do {
-      string_tmp.add_last last_character;
-      position := position + 1;
-    };    
-    //string_tmp.print;
-    (! string_tmp.is_empty).if {
-      last_string := AI_ALIAS.get string_tmp;
-      result := TRUE;
-    };
-    
-    trace.if {
-      "\n----> Read_Identifier: ".print;    
-      string_tmp.print;
-      '\n'.print;
-    };
-    
-    result
-  );
-  
-  - read_string:BOOLEAN <-
-  (+ result:BOOLEAN;
-    read_space;
-    string_tmp.clear;
-    { end_source || { last_character = '(' } || { last_character = ')' } || { last_character = '\n'}}.until_do {
-      string_tmp.add_last last_character;
-      position := position + 1;
-    };
-    (! string_tmp.is_empty).if {
-      last_string := AI_ALIAS.get string_tmp; 
-      result := TRUE;
-    };      
-    result    
-  );
-  
-  - read_flag:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    read_space;
-    (last_character = '0').if {
-      last_flag := FALSE;
-      result := TRUE;
-      position := position + 1;
-    }.elseif {last_character = '1' } then {
-      last_flag := TRUE;
-      result := TRUE;
-      position := position + 1;
-    };
-    
-    trace.if {
-      "\n----> Read Flag: ".print;
-      last_flag.to_string.print;
-      '\n'.print;
-    };
-    
-    result  
-  );
-  
-  - read_integer:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;        
-    read_space;
-    old_pos := position;
-    (last_character = '-').if {
-      string_tmp.add_last '-';
-      position := position + 1;
-      read_space;
-    };
-    last_character.is_digit.if {
-      result := TRUE;
-      string_tmp.clear;
-      string_tmp.add_last last_character;
-      position := position + 1;
-      { ! last_character.is_digit }.until_do {
-	string_tmp.add_last last_character;
-	position := position + 1;
-      };      
-      (last_character = '.').if {
-	// Real
-	result := FALSE;
-	position := old_pos;
-      } else {
-	last_integer := string_tmp.to_integer;
-      };
-    };
-    
-    trace.if {
-      "\n----> Read Integer: ".print;
-      last_integer.print;
-      '\n'.print;
-    };
-    
-    result    
-  );
-  
-  - read_real_16_16:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    + find:BOOLEAN;
-    read_space;    
-    old_pos := position;
-    (last_character = '-').if {
-      string_tmp.add_last '-';
-      position := position + 1;
-      read_space;
-    };
-    (last_character = '.').if {
-      string_tmp.add_last '.';
-      position := position + 1;
-      find := TRUE;
-    };
-    last_character.is_digit.if {
-      result := TRUE;
-      string_tmp.clear;
-      string_tmp.add_last last_character;
-      position := position + 1;
-      { ! last_character.is_digit }.until_do {
-	string_tmp.add_last last_character;
-	position := position + 1;
-      };
-      (last_character = '.').if {
-	find.if {
-	  // Already read '.'
-	  result := FALSE;
-	  position := old_pos;
-	} else {
-	  string_tmp.add_last '.';
-	  position := position + 1;
-	  { ! last_character.is_digit }.until_do {
-	    string_tmp.add_last last_character;
-	    position := position + 1;
-	  };
-	};
-      };
-
-      last_real_16_16 := string_tmp.to_real_16_16;
-    };
-    
-    trace.if {
-      "\n----> Real: ".print;
-      last_real_16_16.print;
-      '\n'.print;
-    };
-    
-    result    
-  );
-  
-  - read_comment:BOOLEAN <-
-  (
-    { end_source || { last_character = '\n'} }.until_do {
-      position := position + 1; 
-    };
-    TRUE 
-  );
-
-  - read_character c:CHARACTER :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    read_space;
-    (last_character = c).if {
-      position := position + 1;
-      result := TRUE;
-    };
-    result
-  );
-
-  //
-  // Error Management
-  // 
-  
-  - syntax_error txt:ABSTRACT_STRING <-
-  (
-    msg_err.clear;
-    msg_err.append "\n--SYNTAX-------\n";
-    msg_err.append txt;
-    msg_err.append " Line ";
-    msg_err.append (get_line.to_string);    
-    msg_err.print;
-    die_with_code exit_failure_code;
-  );
-  
-  - missing_keyword txt:ABSTRACT_STRING <-
-  (
-    msg_err.clear;
-    msg_err.append "\n--MISSING KEYWORD-------\n";
-    msg_err.append txt;
-    msg_err.append " Line ";
-    msg_err.append (get_line.to_string);
-    msg_err.print;
-    die_with_code exit_failure_code;
-  );
-  
-  - print_line <-
-  (
-    " Line ".print;
-    get_line.to_string.print;
-  );
-  
-  - get_line:INTEGER <-
-  ( + pos:INTEGER;
-    + line:INTEGER;
-    pos := source.lower;
-    line := 1;
-    {pos = position}.until_do {
-      (source.item pos = '\n').if {
-	line := line + 1;
-      };
-      pos := pos + 1;
-    };
-    line
-  );
-  
-  // Last read coordinates
-  - last_x:REAL_16_16;  
-  - last_y:REAL_16_16;
-    
-  // Current Point
-  - x_cur:REAL_16_16;
-  - y_cur:REAL_16_16;
-  
-Section Public
-  
-  + llx:REAL_16_16; // lower horizontal bound
-  + urx:REAL_16_16; // upper horizontal bound
-  + lly:REAL_16_16; // lower vertical bound
-  + ury:REAL_16_16; // upper vertical bound
-  
-  + width :INTEGER;  
-  + height:INTEGER;
-    
-  //
-  // Results
-  //
-  
-  + list_layer:LINKED_LIST(AI_LAYER);
-  
-  + current_list:LINKED_LIST(AI_OPERATION);
-  
-  + current_color:AI_COLOR;
-  
-  //
-  // Grammar Rules
-  //
-  
-  //++ DOCUMENT          -> PROLOGUE
-  //++                      SCRIPT  
-  - read_document <-
-  (     
-    trace.if {  
-      "\n Read Document".print;
-      print_line;
-    };
-    
-    (! read_prologue).if {
-      syntax_error "Wrong file format";
-    };
-    (! read_script).if {
-      syntax_error "Incorrect Script";            
-    };
-    
-    trace.if {  
-      "\n## End Read Document".print;
-      print_line;
-    };
-  );
-    
-  //++ PROLOGUE          -> '%!PS-Adobe-2.0 EPSF-1.2'
-  //++                      [ comment ]
-  //++                      '%%BoundingBox:'real real real real
-  //++                      [ comment ]
-  //++                      '%%EndProlog'  
-  - read_prologue:BOOLEAN <-
-  ( + result:BOOLEAN;   
-    
-    trace.if {  
-      "\n Read Prologue".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.prefix_file).if {
-      { read_keyword (AI_ALIAS.bounding_box) }.until_do {
-        read_comment;
-      };
-      (! read_real_16_16).if {
-        syntax_error "Missing llx";
-      };
-      llx := last_real_16_16;
-      (! read_real_16_16).if {
-        syntax_error "Missing lly";
-      };
-      lly := last_real_16_16;
-      (! read_real_16_16).if {
-        syntax_error "Missing urx";
-      };
-      urx := last_real_16_16;
-      (! read_real_16_16).if {
-        syntax_error "Missing ury";
-      };
-      ury := last_real_16_16;
-      
-      width  := (urx - llx).to_integer;
-      height := (ury - lly).to_integer + 1;
-      
-      { read_keyword (AI_ALIAS.end_prolog) }.until_do {
-        read_comment;
-      };
-      result := TRUE;
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Prologue".print;
-      print_line;
-    };
-        
-    result
-  );
-  
-  //++ SCRIPT            -> SETUP
-  //++                      SCRIPT_BODY
-  //++                      TRAILER  
-  - read_script:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Script".print;
-      print_line;
-    };
-    
-    read_setup.if {
-      (! read_script_body).if {
-        syntax_error "Incorrect Script Body";
-      };
-      (! read_trailer).if {
-        syntax_error "Incorrect Trailer";
-      };
-      result := TRUE;
-    }; 
-    
-    (trace && {result}).if {  
-      "\n## End Read Script".print;
-      print_line;
-    };   
-    
-    result
-  );
-  
-  //++ SETUP             -> '%%BeginSetup'
-  //++                      ['Adobe_illustrator_' real 'begin']
-  //++                      [PROC_SETS_INIT]
-  //++                      FONT_ENCODING
-  //++                      [PATTERN_DEFS]
-  //++                      '%%EndSetup'  
-  - read_setup:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Setup".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.begin_setup).if {
-      (read_keyword (AI_ALIAS.adobe_illustrator)).if {
-        (! read_real_16_16).if {
-          syntax_error "Wrong num version";
-        };
-        (! read_keyword (AI_ALIAS.begin)).if {
-          missing_keyword (AI_ALIAS.begin);
-        };
-      };
-      read_proc_sets_init;
-      (! read_font_encoding).if {
-        syntax_error "Incorrect font encoding";
-      };
-      read_pattern_defs;
-      (! read_keyword (AI_ALIAS.end_setup)).if {
-        missing_keyword (AI_ALIAS.end_setup);
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Setup".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ PROC_SETS_INIT    -> { INITIALIZE }
-  - read_proc_sets_init:BOOLEAN <-
-  (
-    
-    trace.if {  
-      "\n Read Proc Sets Init".print;
-      print_line;
-    };
-    
-    {read_initialize}.while_do { };
-    
-    trace.if {  
-      "\n## End Read Proc Sets Init".print;
-      print_line;
-    };
-    
-    TRUE
-  );
-  
-  //++ INITIALIZE        -> identifier '/initialize get exec'
-  - read_initialize:BOOLEAN <-
-  (+ result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Initialize".print;
-      print_line;
-    };
-    
-    read_identifier.if {
-      (! read_keyword (AI_ALIAS.initialize)).if {
-        missing_keyword (AI_ALIAS.initialize);
-      };
-      result := TRUE;
-    };
-
-    (trace && {result}).if {  
-      "\n Read Initialize".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ FONT_ENCODING     -> { RE_ENCODING }
-  - read_font_encoding:BOOLEAN <-
-  (    
-    trace.if {  
-      "\n Read Font Encoding".print;
-      print_line;
-    };
-    
-    { read_re_encoding }.while_do { };
-    
-    trace.if {  
-      "\n## End Read Font Encoding".print;
-      print_line;
-    };
-    
-    TRUE
-  );
-  
-  //++ RE_ENCODING       -> '%%BeginEncoding:' newfontname oldfontname
-  //++                      Z
-  //++                      '%%EndEncoding'
-  - read_re_encoding:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read ReEncoding".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.begin_encoding).if {
-      (! read_identifier).if {
-        syntax_error "Missing newfontname identifier";
-      };
-      (! read_identifier).if {
-        syntax_error "Missing oldfontname identifier";
-      };
-      (! read_upper_z).if {
-        syntax_error "Wrong syntax for Z operator";
-      };
-      (! read_keyword (AI_ALIAS.end_encoding)).if {
-        missing_keyword (AI_ALIAS.end_encoding);
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read ReEncoding".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ Z                 -> '['[NEW_ENCODING]']' '/' identifier '/' identifier integer 'Z'
-  - read_upper_z:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read upper Z".print;
-      print_line;
-    };
-    
-    read_character '['.if {
-      read_new_encoding;
-      (! read_character ']').if {
-        syntax_error "Mismatch Bracket";
-      };
-      (!read_character '/').if {
-        missing_keyword "/";
-      };
-      (! read_identifier).if {
-        syntax_error "Missing newfontname identifier";
-      };
-      (! read_character '/').if {
-        missing_keyword "/";
-      };
-      (! read_identifier).if {
-        syntax_error "Missing oldfontname identifier";
-      };
-      read_integer;
-      (! read_character 'Z').if {
-        missing_keyword "Z";
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read upper Z".print;
-      print_line;
-    };
-    
-    result                    
-  );
-  
-  //++ NEW_ENCODING      -> { integer '/' identifier { '/' identifier}}
-  - read_new_encoding:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read New Encoding".print;
-      print_line;
-    };
-    
-    { read_integer }.while_do {
-      (! read_character '/').if {
-        missing_keyword "/";
-      };
-      (! read_identifier).if {
-        syntax_error "Missing name identifier";
-      };
-      { read_character '/' }.while_do {
-        (! read_identifier).if {
-          syntax_error "Missing name identifier";
-        };
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read New Encoding".print;
-      print_line;
-    };
-    
-    result        
-  );  
-  
-  //++ PATTERN_DEFS      -> { PATTERN }
-  - read_pattern_defs:BOOLEAN <-
-  (    
-    trace.if {  
-      "\n Read Pattern Def".print;
-      print_line;
-    };
-    
-    { read_pattern }.while_do { };
-
-    trace.if {  
-      "\n## End Read Pattern Def".print;
-      print_line;
-    };
-    TRUE
-  );
-  
-  //++ PATTERN           -> '%%BeginPattern:' '('patternname')'
-  //++                      E
-  //++                      '%%EndPattern'
-  - read_pattern:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Pattern".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.begin_pattern).if {
-      (! read_character '(').if {
-        syntax_error "Mismatch parentheses";
-      };
-      (! read_identifier).if {
-        syntax_error "Missing pattername identifier";
-      };
-      (! read_character ')').if {
-        syntax_error "Mismatch parentheses";
-      };
-      (! read_upper_e).if {
-        syntax_error "Wrong syntax for E operator";
-      };
-      (! read_keyword (AI_ALIAS.end_pattern)).if {
-        missing_keyword (AI_ALIAS.end_pattern);
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Pattern".print;
-      print_line;
-    };
-    
-    result      
-  );
-  
-  //++ E                 -> '(' patternname ')' real real real real real [LAYER_LIST] 'E'
-  - read_upper_e:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Upper E".print;
-      print_line;
-    };
-    
-    (read_character '(').if {
-      (! read_identifier).if {
-        syntax_error "Missing patternname identifier";
-      };
-      (! read_character ')').if { 
-        syntax_error "Mismatch parentheses";
-      };
-      (! read_real_16_16).if {
-        syntax_error "Missing llx identifier";
-      };
-      (! read_real_16_16).if {
-        syntax_error "Missing lly identifier";
-      };
-      (! read_real_16_16).if {
-        syntax_error "Missing urx identifier";
-      };
-      (! read_real_16_16).if {
-        syntax_error "Missing ury identifier";
-      };
-      read_layer_list;
-      (! read_character 'E').if {
-        missing_keyword "E";
-      };
-      
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Upper E".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ LAYER_LIST        -> { LAYER_COLOR LAYER_TILE }
-  - read_layer_list:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Layer List".print;
-      print_line;
-    };
-    
-    { read_layer_color }.while_do {
-      (! read_layer_tile).if {
-        syntax_error "Incorrect layer tile.";
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## Read Layer List".print;
-      print_line;
-    };
-    
-    TRUE
-  );
-  
-  //++ LAYER_COLOR       -> '(' COLOR ')' '@'
-  - read_layer_color:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Layer Color".print;
-      print_line;
-    };
-    
-    read_character '('.if {
-      (! read_color).if {
-        syntax_error "Incorrect Color";
-      };
-      (! read_character ')').if {
-        missing_keyword ")";
-      };
-      (! read_character '@').if {
-        missing_keyword "@";
-      };      
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Layer Color".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ LAYER_TILE        -> '(' TILE_DEFINITION ')' '&' 
-  //++                    | '_' '&'  
-  - read_layer_tile:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Layer Tile".print;
-      print_line;
-    };
-    
-    (read_character '(').if {
-      (! read_tile_definition).if {
-        syntax_error "Incorrect Tile Definition";        
-      };
-      (! read_character ')').if {
-        syntax_error "Mismatch parentheses";
-      };
-      (! read_character '&').if {
-        missing_keyword "&";
-      };
-      result := TRUE;
-    }.elseif { read_character '_' } then {
-      (! read_character '&').if {
-        missing_keyword "&";
-      };
-      result := TRUE;
-    };     
-    
-    (trace && {result}).if {  
-      "\n## End Read Layer Tile".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ COLOR             -> COLOR_COMPOSITE { COLOR_COMPOSITE }
-  - read_color:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Color".print;
-      print_line;
-    };
-        
-    read_color_composite.if {
-      { read_color_composite }.while_do {
-      };
-      result := TRUE;
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Color".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ COLOR_COMPOSITE   -> flag 'O'
-  //++                    | flag 'R'
-  //++                    | real 'g' 
-  //++                    | real 'G' 
-  //++                    | real real real real 'k' 
-  //++                    | real real real real 'K'  
-  //++                    | real real real real '(' string ')' real 'x' 
-  //++                    | real real real real '(' string ')' real 'X'   
-  - read_color_composite:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + c,m,y,k,g:REAL_16_16;
-    + old_pos:INTEGER;
-    
-    trace.if {  
-      "\n Read Color Composite".print;
-      print_line;
-    };
-    
-    old_pos := position;
-    read_flag.if {
-      (read_character 'O').if {
-        result := TRUE;        
-      }.elseif { read_character 'R'} then {
-        result := TRUE;
-      } else {
-        position := old_pos;
-      };
-    };
-    ((! result) &&  {read_real_16_16}).if {
-      c := last_real_16_16;
-      (read_character 'g').if {
-        result := TRUE;
-        current_color.make_gray_fill last_real_16_16;
-      }.elseif { read_character 'G' } then {
-        result := TRUE;
-        current_color.make_gray_stroke last_real_16_16;
-      }.elseif { read_real_16_16 } then {
-        m := last_real_16_16;
-        (read_real_16_16).if {
-	  y := last_real_16_16;
-	  (! read_real_16_16).if {
-	    syntax_error "Incorrect K color composite.";
-	  };          
-	  k := last_real_16_16;
-	  (read_character 'k').if {
-	    result := TRUE;
-	    current_color.make_cmyk_fill (c,m,y,k);
-	  }.elseif { read_character 'K'} then {
-	    result := TRUE;
-	    current_color.make_cmyk_stroke (c,m,y,k);
-	  }.elseif { read_character '('} then {
-	      (! read_string).if {
-		syntax_error "Incorrect String.";
-	      };
-	    (! read_character ')').if {
-	      syntax_error "Mismatch parentheses";
-	    };        
-	    (! read_real_16_16).if {
-	      syntax_error "Incorrect Gray color composite.";
-	    };
-	    g := last_real_16_16;
-	    (read_character 'x').if {
-	      current_color.make_cmykg_fill (c,m,y,k,g);
-	      result := TRUE;
-	    }.elseif {read_character 'X'} then {
-	      result := TRUE;
-	      current_color.make_cmykg_fill (c,m,y,k,g);
-	    };
-          };                          
-	} else {                    
-	  position := old_pos;
-	};
-      };
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Color Composite".print;
-      print_line;
-    };
-
-    result
-  );
-  
-  //++ TILE_DEFINITION   -> OBJ_WITHOUT_COL
-  - read_tile_definition:BOOLEAN <-
-  ( + result:BOOLEAN;    
-    
-    trace.if {  
-      "\n Read Tile Definition".print;
-      print_line;
-    };
-    
-    result := read_obj_without_col;
-    
-    trace.if {  
-      "\n## End Read Tile Definition".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ OBJECT            -> COLOR { OBJ_WITHOUT_COL }
-  - read_object:BOOLEAN <-
-  ( + result:BOOLEAN;
-    trace.if {  
-      "\n Read Object".print;
-      print_line;
-    };
-    
-    (read_color).if {
-      result := TRUE;
-      { read_obj_without_col }.while_do { };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Object".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ OBJ_WITHOUT_COL   -> [ GRAPHICS_STATE ] { '%%Note:' comment } ( GRAPHIC | TEXT )   
-  - read_obj_without_col:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Obj Without col".print;
-      print_line;
-    };
-    
-    read_graphics_state;
-    { read_keyword (AI_ALIAS.note)}.while_do {
-      read_comment;
-    };
-    (read_graphic || {read_text}).if {
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Obj Without col".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ GRAPHICS_STATE    -> GRAPH_COMPOSITE { GRAPH_COMPOSITE } 
-  - read_graphics_state:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Graphics State".print;
-      print_line;
-    };
-    
-    read_graph_composite.if {
-      { read_graph_composite }.while_do { };
-      result := TRUE;
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Graphics State".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ GRAPH_COMPOSITE   -> '[' { real } ']' integer 'd'
-  //++                    | integer  ( 'j' | 'J' | 'M' ) 
-  //++                    | real ( 'i' | 'w' )
-  - read_graph_composite:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    
-    trace.if {  
-      "\n Read Graph Composite".print;
-      print_line;
-    };
-    
-    old_pos := position;
-    (read_character '[').if {
-      { read_real_16_16 }.while_do {
-      };
-      (! read_character ']').if {
-        syntax_error "Incorrect Graph Composite";
-      };
-      (! read_integer).if {
-        syntax_error "Incorrect Graph Composite";
-      };
-      (! read_character 'd').if {
-        missing_keyword "d";
-      };
-      result := TRUE;
-    }.elseif {read_integer} then {
-      (read_character 'j').if {
-        result := TRUE;
-      }.elseif {read_character 'J'} then {
-        result := TRUE;
-      }.elseif {read_character 'M'} then {
-        result := TRUE;
-      } else {                      
-        position := old_pos;        
-      };
-    };
-    ((! result) && { read_real_16_16}).if { 
-      (read_character 'i').if {
-        result := TRUE;
-      }.elseif {read_character 'w'} then {
-        result := TRUE; 
-      } else {
-        position := old_pos;
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Graph Composite".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ GRAPHIC           -> PATH PAINT_OPERATOR
-  - read_graphic:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Graphic".print;
-      print_line;
-    };
-    
-    read_path.if {
-      (! read_paint_operator).if {
-        syntax_error "Incorrect Paint operator";
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Graphic".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ PATH              -> COORD 'm' {PATH_COMPOSITE}
-  - read_path:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + op:AI_OPERATION;
-    
-    trace.if {  
-      "\n Read Path".print;
-      print_line;
-    };
-    
-    read_coord.if {
-      (! read_character 'm').if {        
-        missing_keyword "m";
-      };
-      op := AI_MOVE.create (last_x,last_y);
-      current_list.add_last op;
-      x_cur := last_x;
-      y_cur := last_y;
-      
-      {read_path_composite}.while_do { };
-      
-      result := TRUE;      
-    };    
-    
-    (trace && {result}).if {  
-      "\n## End Read Path".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ PATH_COMPOSITE    -> COORD ( 'l' | 'L' )
-  //++                    | COORD COORD ( 'v' | 'V' | 'y' | 'Y' )
-  //++                    | COORD COORD COORD ( 'c' | 'C' )
-  - read_path_composite:BOOLEAN <-
-  ( + result:BOOLEAN;    
-    + x1,y1,x2,y2,x3,y3:REAL_16_16;
-    + op:AI_OPERATION;
-    
-    trace.if {  
-      "\n Read Path Composite".print;
-      print_line;
-    };
-    
-    read_coord.if {
-      x1 := last_x;
-      y1 := last_y;
-      ((read_character 'l') || {read_character 'L'}).if {
-	result := TRUE;
-	op := AI_LINE.create (x1,y1);
-        x_cur := x1;
-        y_cur := y1;
-      }.elseif {read_coord} then {
-        x2 := last_x;
-        y2 := last_y;
-        ((read_character 'v') || {read_character 'V'}).if {
-	  result := TRUE;          
-	  op := AI_BEZIER.create_w1 (x_cur,y_cur) w2 (x1,y1) to (x2,y2); 
-          x_cur := x2;
-          y_cur := y2;
-        }.elseif {(read_character 'y') || {read_character 'Y'}} then {
-	  result := TRUE;
-	  op := AI_BEZIER.create_w1 (x1,y1) w2 (x2,y2) to (x2,y2); 
-          x_cur := x2;
-          y_cur := y2;
-        }.elseif {read_coord} then {  
-          x3 := last_x;
-          y3 := last_y;
-          ((read_character 'c') || {read_character 'C'}).if {
-	    result := TRUE;
-	    op := AI_BEZIER.create_w1 (x1,y1) w2 (x2,y2) to (x3,y3);
-            x_cur := x3;
-            y_cur := y3;
-          } else {
-            syntax_error "Incorrect Path Composite";
-          };
-        } else {
-          syntax_error "Incorrect Path Composite";
-        };
-      } else {
-        syntax_error "Incorrect Path Composite";
-      };        
-    };
-    (op != NULL).if {
-      current_list.add_last op;
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Path Composite".print;
-      print_line;
-    };
-    
-    result
-  );  
-  
-  //++ PAINT_OPERATOR    -> 'N' | 'n' | 'F' | 'f' | 'S' | 's' | 'B' | 'b' | 'H' | 'h' | 'W'
-  - read_paint_operator:BOOLEAN <-
-  ( + result,is_fill,is_stroke:BOOLEAN;
-    + new_layer:AI_LAYER;
-    
-    trace.if {  
-      "\n Read Paint Operator".print;
-      print_line;
-    };
-    
-    result := TRUE;
-    (read_character 'N').if {
-      // Nothing.
-    }.elseif {read_character 'n'} then {  
-      // Nothing.      
-    }.elseif {read_character 'F'} then {        
-      // Fill.      
-      is_fill := TRUE;
-    }.elseif {read_character 'f'} then {
-      // Fill.
-      is_fill := TRUE;
-    }.elseif {read_character 'S'} then {
-      // Stroke.
-      is_stroke := TRUE;
-    }.elseif {read_character 's'} then {
-      // Stroke.
-      is_stroke := TRUE;
-    }.elseif {read_character 'B'} then {
-      // Fill + Stroke.
-      is_stroke := TRUE;
-      is_fill   := TRUE;
-    }.elseif {read_character 'b'} then {
-      // Fill + Stroke.
-      is_stroke := TRUE;
-      is_fill   := TRUE;
-    }.elseif {read_character 'H'} then {
-      // ??
-    }.elseif {read_character 'h'} then {
-      // ??
-    }.elseif {read_character 'W'} then {
-      // ??
-    } else {      
-      syntax_error "Incorrect Paint Operator";
-      result := FALSE;
-    };
-    result.if {
-      new_layer := AI_LAYER.create current_list color current_color fill is_fill stroke is_stroke;
-      current_list := LINKED_LIST(AI_OPERATION).create;
-      current_color:= current_color.clone;
-      list_layer.add_last new_layer;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Paint Operator".print;
-      print_line;
-    };
-    
-    result    
-  );
-  
-  //++ TEXT              -> '/' identifier real real real integer 'z' TEXT_COMPOSITE { TEXT_CONTENT } 'T'
-  - read_text:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Text".print;
-      print_line;
-    };
-    
-    (read_character '/').if {
-      read_identifier.if {
-        read_real_16_16.if {
-          read_real_16_16.if {
-            read_real_16_16.if {
-              read_integer.if {
-                read_character 'z'.if {
-                  read_text_composite.if {
-                    { read_text_content }.while_do { };
-                    read_character 'T'.if {
-                      result := TRUE;
-                    };
-                  };
-                };
-              };
-            };
-          };
-        };
-      };
-      (! result).if {
-        syntax_error "Incorrect text";
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Text".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ TEXT_CONTENT      -> [ integer ] '(' string ')' 't' 
-  - read_text_content:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Text Content".print;
-      print_line;
-    };
-    
-    read_integer;
-    read_character '('.if {
-      read_string.if {
-        read_character ')'.if {
-          read_character 't'.if {
-            result := TRUE;
-          };
-        };
-      };
-      (! result).if {
-        syntax_error "Incorrect Text content";
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Text Content".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ TEXT_COMPOSITE    -> '[' real real real real real real ']' ( 'a' | 'e' | 'I' | 'o' | 'r' )
-  - read_text_composite:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Text Composite".print;
-      print_line;
-    };
-    
-    read_character '['.if {
-      read_real_16_16.if {
-        read_real_16_16.if {
-          read_real_16_16.if {
-            read_real_16_16.if {  
-              read_real_16_16.if {
-                read_real_16_16.if {
-                  read_character ']'.if { 
-                    read_character 'a'.if {
-                      result := TRUE;
-                    }.elseif {read_character 'e'} then {
-                      result := TRUE;
-                    }.elseif {read_character 'I'} then {
-                      result := TRUE;
-                    }.elseif {read_character 'o'} then {
-                      result := TRUE;
-                    }.elseif {read_character 'r'} then {
-                      result := TRUE;
-                    };
-                  };
-                };
-              };
-            };
-          };
-        };
-      };
-      (! result).if {
-        syntax_error "Incorrect Text Composite";
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Text Composite".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ COORD             -> real real 
-  - read_coord:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    
-    trace.if {  
-      "\n Read Coord".print;
-      print_line;
-    };
-    
-    old_pos := position;
-    read_real_16_16.if {
-      last_x := last_real_16_16 - llx;
-      (! read_real_16_16).if {
-        position := old_pos;
-      } else {
-	last_y := (- (last_real_16_16 +# 1 - lly) +# height);
-	result := TRUE;
-      };
-    };
-
-    (trace && {result}).if {  
-      "\n## End Read Coord".print;
-      print_line;
-    };
-    
-    result    
-  );
-  
-  //++ SCRIPT_BODY       -> { ELEMENT | IMPORT_DOC }
-  - read_script_body:BOOLEAN <-
-  (
-    
-    trace.if {  
-      "\n Read Script Body".print;
-      print_line;
-    };
-    
-    { read_element || { read_import_doc } }.while_do {      
-    };
-    
-    trace.if {  
-      "\n## End Read Script Body".print;
-      print_line;
-    };
-    
-    TRUE
-  );
-  
-  //++ ELEMENT           -> { A }
-  //++                      GROUP | OBJECT
-  - read_element:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Element".print;
-      print_line;
-    };
-    
-    { read_upper_a }.while_do { };
-    (read_group || { read_object }).if {
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Element".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ A                 -> flag 'A'
-  - read_upper_a:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;    
-    
-    trace.if {  
-      "\n Read A".print;
-      print_line;
-    };
-    
-    old_pos := position;
-    read_flag.if {
-      (! read_character 'A').if {
-        position := old_pos;
-      } else {
-        result := TRUE;
-      };
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read A".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ GROUP             -> ['*'] 'u'
-  //++                      OBJECT_SEQ
-  //++                      ['*'] 'U'
-  //++                    | 'q'
-  //++                      OBJECT_SEQ
-  //++                      'Q'
-  - read_group:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Group".print;
-      print_line;
-    };
-    
-    read_character '*';
-    (read_character 'u').if {
-      (! read_object_seq).if {
-        syntax_error "Incorrect Object Seq";
-      };
-      read_character '*';
-      (! read_character 'U').if {
-        missing_keyword "U";
-      };
-      result := TRUE;
-    }.elseif { read_character 'q' } then {
-      (! read_object_seq).if {
-        syntax_error "Incorrect Object Seq";
-      };
-      (! read_character 'Q').if {
-        missing_keyword "Q";
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Group".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ OBJECT_SEQ        -> { ELEMENT }
-  - read_object_seq:BOOLEAN <-
-  (
-    
-    trace.if {  
-      "\n Read Object Seq".print;
-      print_line;
-    };
-    
-    { read_element }.while_do { };
-    
-    trace.if {  
-      "\n## End Read Object Seq".print;
-      print_line;
-    };
-    
-    TRUE
-  );
-  
-  //++ IMPORT_DOC        -> '''
-  //++                      '%%IncludeFile:' filename
-  //++                      '~'
-  - read_import_doc:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Import Doc".print;
-      print_line;
-    };
-    
-    read_character '\''.if {
-      (! read_keyword (AI_ALIAS.include_file)).if {
-        missing_keyword (AI_ALIAS.include_file);
-      };
-      (! read_identifier).if {
-        syntax_error "Missing filename identifier";
-      };
-      (! read_character '~').if {
-        missing_keyword "~";
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Import Doc".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //++ TRAILER           -> '%%Trailer'
-  //++                      { TERMINATE }
-  - read_trailer:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Trailer".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.trailer).if {
-      { read_terminate }.while_do { };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Trailer".print;
-      print_line;
-    };
-    
-    result    
-  );
-  
-  //++ TERMINATE         -> (identifier '/terminate get exec' | '_E end')
-  - read_terminate:BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    trace.if {  
-      "\n Read Terminate".print;
-      print_line;
-    };
-    
-    read_keyword (AI_ALIAS.end).if {
-      result := TRUE;
-    }.elseif {read_identifier} then {
-      (! read_keyword (AI_ALIAS.terminate)).if {
-        syntax_error "Incorrect terminate.";
-      };
-      result := TRUE;
-    };
-    
-    (trace && {result}).if {  
-      "\n## End Read Terminate".print;
-      print_line;
-    };
-    
-    result
-  );
-  
-  //
-  // Parser
-  //
-  
-  - create s:FAST_ARRAY(CHARACTER) :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make s;
-    result
-  );    
-  
-  - make s:FAST_ARRAY(CHARACTER) <-
-  (
-    AI_ALIAS.make;
-    source := s;
-    position := 0;
-    msg_err := STRING.create 80;
-    string_tmp := STRING.create 250;
-    list_layer := LINKED_LIST(AI_LAYER).create;
-    current_color := AI_COLOR.clone;
-    current_list  := LINKED_LIST(AI_OPERATION).create;
-    trace := FALSE;
-    read_document;    
-  );
-  
-  - draw b:ABSTRACT_BITMAP scale coef:REAL_16_16 <-
-  ( + s:REAL_16_16;
-    ? {list_layer != NULL};
-    ? {b != NULL};
-    s := coef;
-    width  := (s *# width).ceiling;
-    height := (s *# height).ceiling;
-    // BSBS: Avec b.make tu reallou de la mémoire, c'est à revoir ...
-    ((width != b.width) || {height != b.height}).if {
-      b.make (width,height);
-      b.rectangle_fill (0,0) to ((width -1),(height - 1)) color 083AAD3h;
-    };    
-    (s <= 0).if {
-      s := 1;
-    };
-    (list_layer.lower).to (list_layer.upper) do { i:INTEGER;
-      list_layer.item i.draw b scale s;
-    };          
-  );
-
-
-
diff --git a/lib/format/bmp/bmp_file.li b/lib/format/bmp/bmp_file.li
deleted file mode 100644
index a7e55ad..0000000
--- a/lib/format/bmp/bmp_file.li
+++ /dev/null
@@ -1,190 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BMP_FILE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Mapping BMP Image File (V < 4.0)";
-    
-Section Inherit
-  
-  + parent_std_file:Expanded STD_FILE;
-  
-Section Public
-  
-  - pos_buffer:INTEGER;
-
-  - bmp_buffer:FAST_ARRAY[UINTEGER_8];
-  
-  //
-  
-  - header:BMP_HEADER;
-
-  - color_map:FAST_ARRAY[Expanded PIXEL_24];
-  
-  //
-  
-  - read_header <-
-  (     
-    (bmp_buffer = NULL).if {
-      bmp_buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity size;
-    }.elseif {bmp_buffer.capacity < size.to_integer} then {
-      bmp_buffer.set_capacity (size.to_integer);
-      bmp_buffer.clear;
-    } else {
-      bmp_buffer.clear;
-    };
-    read bmp_buffer size size;    
-    header := CONVERT[NATIVE_ARRAY[UINTEGER_8],BMP_HEADER].on (bmp_buffer.storage);
-    pos_buffer := BMP_HEADER.object_size;
-  );
-
-  - init_color_map <-
-  ( + code,nb_colors:INTEGER;    
-    ? {header != NULL};
-    //
-    // Init Color Table
-    // 
-    header.is_bgr_format.if {
-      code := 3;
-    } else {
-      code := 4;
-    };
-    nb_colors := header.get_nb_colors;
-    (color_map = NULL).if {
-      color_map := FAST_ARRAY[PIXEL_24].create 256;
-    };            
-    0.to (nb_colors-1) do { j:INTEGER; 
-      color_map.item j
-      .make_rgb (
-	bmp_buffer.item (pos_buffer + 2),
-	bmp_buffer.item (pos_buffer + 1),
-	bmp_buffer.item pos_buffer
-      );
-      pos_buffer := pos_buffer + code;
-    };
-  );
-          
-  - buf_item :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    result := bmp_buffer.item pos_buffer;
-    pos_buffer := pos_buffer + 1;
-    result
-  );
-  
-  // JBJB POUR AFFICHAGE EN MODE TEXTE
-  - fill_bitmap b:ABSTRACT_BITMAP <-
-  ( + end:BOOLEAN;
-    + x,y:INTEGER;
-    + line_24:BMP_LINE[PIXEL_24];
-    //+ line_ascii:BMP_LINE_ASCII;
-    + tmp_pix:PIXEL_24;
-    + escape,cmd:UINTEGER_8;
-    + align:UINTEGER_32;
-    ? {header != NULL};
-    
-    is_valid_bmp.if {
-      ? {(b.width = header.width) && {b.height = header.height}};
-      	
-      //line_ascii := BMP_LINE_ASCII.create (header.width);
-      header.is_8bit.if {
-	//
-	// 8 Bit
-	// 	  
-	line_24 := BMP_LINE[PIXEL_24].create (header.width);
-	init_color_map;
-	
-	header.is_rle8_compressed.if {	  
-	  pos_buffer := header.bitmap_offset.to_integer;
-	  y := header.height;
-	  {end}.until_do {
-	    escape := buf_item;
-	    ? { x <= header.width};
-	    ? { y >= 0};
-	    (escape = 00h).if {
-	      cmd := buf_item;
-	      (cmd = 00h).if {
-		b.line_h (0,y) until (header.width - 1) image line_24;	
-		x := 0;
-		y := y - 1;
-	      }.elseif {cmd = 01h} then {
-		// End of file
-		b.line_h (0,y) until (header.width - 1) image line_24;	
-		end := TRUE;
-	      }.elseif {cmd = 02h} then {
-		// Move cursor: usually not used except for MS icons
-		buf_item;
-		buf_item;		  
-	      } else {
-		// Pixel not compressed
-		1.to cmd do { j:INTEGER;
-		  line_24.item_24 x.make (color_map.item buf_item.get_color);
-		  x := x + 1;
-		};
-		cmd.is_odd.if {
-		  buf_item;
-		};
-	      };				
-	    } else {
-	      // Pixel compressed
-	      tmp_pix := color_map.item buf_item;
-	      1.to escape do { j:INTEGER;
-		line_24.item_24 x.make (tmp_pix.get_color);
-		x := x + 1;
-	      };
-	    };
-	  }; 	  	  	  
-	};		
-      }.elseif {header.is_24bit} then {	
-	//
-	// 24 Bit
-	//	
-	line_24 := BMP_LINE[PIXEL_24].create_with_capacity (header.width);
-	align   := ((header.width * -3) & 011b).to_uinteger_32;
-	set_cursor (header.bitmap_offset);
-	// No compression
-	0.to (header.height - 1) do { i:INTEGER;
-	  read line_24 size (header.width);	  
-	  set_cursor (cursor + align);
-	  b.line_h (0,(header.height - i - 1)) until (header.width - 1) image line_24;
-	  line_24.clear;
-	};	    
-      };
-    };
-  );
- 
-  - is_type n:ABSTRACT_STRING :BOOLEAN <-
-  // Return true if the file name has '.bmp' or '.BMP' suffix
-  (
-    ? {n != NULL};
-    ? {! n.is_empty};
-    (n.has_suffix ".bmp") || { n.has_suffix ".BMP"}
-  );
-  
-  - is_valid_bmp:BOOLEAN <-
-  (
-    ? {header != NULL};
-    header.is_valid_bmp
-  );
-  
diff --git a/lib/format/bmp/bmp_header.li b/lib/format/bmp/bmp_header.li
deleted file mode 100644
index 1f9fa93..0000000
--- a/lib/format/bmp/bmp_header.li
+++ /dev/null
@@ -1,159 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BMP_HEADER;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Mapping BMP Image File Header structure";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Mapping
-  
-  //
-  // File Header
-  //
-  
-  + file_type1:CHARACTER;     //00h  Must be 'B'
-  + file_type2:CHARACTER;     //01h  Must be 'M'  
-  + file_size:UINTEGER_32;       //02h  Size of file
-  + reserved:UINTEGER_32;        //06h
-  + map_bitmap_offset:UINTEGER_32;   //0Ah   Offset of the data section  
-  
-  //
-  // Bitmap Header
-  //
-  
-  + header_size:UINTEGER_32;     //0Eh  Size of this header
-  + map_width:INTEGER;            //12h  width (in pixel) of the image
-  + map_height:INTEGER;           //16h  height (in pixel)
-  + planes:UINTEGER_16;         //1Ah  number of planes use (always 1)
-  + map_bits_per_pixel:UINTEGER_16; //1Ch  number of bits per pixel (1,4,8,16,24,32)
-  + compression:UINTEGER_32;     //1Eh  compression method:
-  // 0: no compression
-  // 1: 8-bit run length encoding
-  // 2: 4-bit run length encoding
-  // 3: bitfields encoding
-
-  + size_of_bitmap:UINTEGER_32;  //22h  size of image (in octet), useful for compression
-  + h_resolution:UINTEGER_32;    //26h  horizontal resolution (in pixel per meter)
-  + v_resolution:UINTEGER_32;    //2Ah  vertical resolution (in pixel per meter)
-  + colors_used:UINTEGER_32;     //2Eh  number of colors 
-  + colors_important:UINTEGER_32;//32h  number of important colors
-
-Section Public  
-  
-  - bits_per_pixel:UINTEGER_16 <- map_bits_per_pixel;
-  
-  - width :INTEGER <- map_width;
-  - height:INTEGER <- map_height;   
-  - bitmap_offset:UINTEGER_32 <- map_bitmap_offset;
-
-  - file_type:STRING <-
-  ( + result:STRING;
-    result := STRING.create 0;
-    result.add_last file_type1;
-    result.add_last file_type2;
-    result
-  );
-  
-  - is_valid:BOOLEAN <-
-  (
-    (file_type1 = 'B') && {file_type2 = 'M'}
-  );
-  
-  - is_bgr_format:BOOLEAN <-
-  (
-    header_size = object_size + get_nb_colors * 3
-  );
-  
-  - get_nb_colors:INTEGER <-
-  ( + result:INTEGER;
-    (colors_used = 0).if {
-      is_8bit.if {
-	result := 256;
-      }.elseif {is_4bit} then {
-	result := 16;
-      } else {
-	result := 2;
-      };
-    } else {
-      result := colors_used.to_integer;
-    };
-    result
-  );
-  
-  - is_1bit:BOOLEAN <-
-  (
-    bits_per_pixel = 1
-  );
-  
-  - is_4bit:BOOLEAN <-
-  (
-    bits_per_pixel = 4
-  );
-  
-  - is_8bit:BOOLEAN <-
-  (
-    bits_per_pixel = 8
-  );
-  
-  - is_24bit:BOOLEAN <-
-  (
-    bits_per_pixel = 24
-  );
-  
-  - is_rle8_compressed:BOOLEAN <-
-  (
-    compression = 1
-  );
-  
-  - print <-
-  (
-    "\nFile size: ".print;
-    file_size.print;
-    "\nHeader size: ".print;
-    header_size.print;
-    "\nOffset: ".print;
-    bitmap_offset.print;
-    "\nBitmap size (w x h): ".print;
-    width.print;
-    " x ".print;
-    height.print;
-    "\nBits per pixel: ".print;
-    bits_per_pixel.print;
-    "\nCompression: ".print;
-    compression
-    .when 0 then {"None".print;} 
-    .when 1 then {"8-bit RLE".print;}
-    .when 2 then {"4-bit RLE".print;}
-    .when 3 then {"Bitfield".print;};    
-    "\nSize of bitmap: ".print;
-    size_of_bitmap.print;
-    "\nColors used: ".print;
-    colors_used.print;   
-    '\n'.print;
-  );
diff --git a/lib/format/bmp/format_bmp.li b/lib/format/bmp/format_bmp.li
deleted file mode 100644
index a527f40..0000000
--- a/lib/format/bmp/format_bmp.li
+++ /dev/null
@@ -1,249 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := FORMAT_BMP;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Mapping BMP Image File (V < 4.0)";
-    
-Section Inherit
-  
-  + parent_format_img:Expanded FORMAT_IMG;
-  
-Section Public
-    
-  - name:STRING_CONSTANT := "Bitmap format by Microboft & IBM.";
-      
-  - extension:STRING_CONSTANT := "bmp";
-  
-  - is_bitmap:BOOLEAN := TRUE;
-    
-  - height:INTEGER <- header.height;
-  - width:INTEGER  <- header.width;
-  
-  //
-  // Creation.
-  //
-
-  - create_with_file f:STD_FILE :SELF <-
-  [
-    -? {f.is_open};
-  ]
-  ( 
-    clone.make_with_file f
-  );
-
-  - make_with_file f:STD_FILE :SELF <-
-  ( + result:SELF;    
-    file := f;
-    (read_header).if {
-      result := Self;
-      pos_buffer := BMP_HEADER.object_size;
-    };
-    result
-  );
-  
-  - create_with buf:FAST_ARRAY[UINTEGER_8] :SELF <-
-  ( 
-    clone.make_with buf
-  );
-
-  - make_with buf:FAST_ARRAY[UINTEGER_8] :SELF <-
-  ( + result:SELF;
-    buffer := buf;
-    (read_header).if {
-      result := Self;
-      pos_buffer := BMP_HEADER.object_size;
-    };
-    result
-  );
-  
-  //
-  // Put image.
-  //
-  
-  - put_image_in bmp:ABSTRACT_BITMAP <-
-  [
-    -? {header != NULL};
-    -? {(bmp.width = header.width) && {bmp.height = header.height}};
-  ]
-  ( + end:BOOLEAN;
-    + x,y:INTEGER;
-    + line_24:BMP_LINE[PIXEL_24];    
-    + tmp_pix:PIXEL_24;
-    + escape,cmd:UINTEGER_8;
-    + align:UINTEGER_32;
-    + pos:INTEGER;
-    
-    line_24 := BMP_LINE[PIXEL_24].create (header.width);
-    
-    header.is_8bit.if {
-      //
-      // 8 Bit
-      // 	        
-      init_color_map;      
-      header.is_rle8_compressed.if {	  
-        pos := header.bitmap_offset.to_integer;
-        y := header.height;
-        {end}.until_do {
-          escape := buffer_item pos;
-          pos := pos + 1;
-          ? { x <= header.width};
-          ? { y >= 0};
-          (escape = 00h).if {
-            cmd := buffer_item pos;
-            pos := pos + 1;
-            (cmd = 00h).if {
-              bmp.line_h (0,y) until (header.width - 1) image line_24;	
-              x := 0;
-              y := y - 1;
-            }.elseif {cmd = 01h} then {
-              // End of file
-              bmp.line_h (0,y) until (header.width - 1) image line_24;	
-              end := TRUE;
-            }.elseif {cmd = 02h} then {
-              // Move cursor: usually not used except for MS icons
-              pos := pos + 2;
-            } else {
-              // Pixel not compressed
-              1.to cmd do { j:INTEGER;
-                line_24.item_24 x.make (color_map.item (buffer_item pos).get_color);
-                pos := pos + 1;
-                x := x + 1;
-              };
-              cmd.is_odd.if {
-                pos := pos + 1;
-              };
-            };				
-          } else {
-            // Pixel compressed
-            tmp_pix := color_map.item (buffer_item pos);
-            pos := pos + 1;
-            1.to escape do { j:INTEGER;
-              line_24.item_24 x.make (tmp_pix.get_color);
-              x := x + 1;
-            };
-          };          
-        }; 	  	  	  
-      };		
-    }.elseif {header.is_24bit} then {	
-      //
-      // 24 Bit
-      //	                  
-      align := ((header.width * -3) & 011b).to_uinteger_32;
-      pos := header.bitmap_offset;
-      // No compression
-      0.to (header.height - 1) do { i:INTEGER;
-        1.to (header.width) do { j:INTEGER;                             
-          line_24.item_24 (j-1).make_rgb (
-            buffer_item (pos + 2),
-            buffer_item (pos + 1),
-            buffer_item pos
-          );          
-          pos := pos + 3;
-        };
-        pos := pos + align;                                         
-        bmp.line_h (0,header.height - i - 1) 
-        until (header.width - 1) image line_24;
-      };	    
-    };
-  );
-  
-  - put_image_in bmp:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (
-    not_yet_implemented;
-  );
-  
-Section Private
-  
-  + file:STD_FILE;
-  + buffer:FAST_ARRAY[UINTEGER_8];
-  + header:BMP_HEADER;
-      
-  - read_header:BOOLEAN <-
-  (     
-    (file != NULL).if {
-      header := BMP_HEADER.clone;      
-      file.read header;
-    } else {
-      header := CONVERT[NATIVE_ARRAY[UINTEGER_8],BMP_HEADER].on (buffer.storage);
-    };
-    header.is_valid
-  );
-  
-  - buffer_item p:INTEGER :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    (buffer != NULL).if {
-      result := buffer.item p;
-    } else {
-      buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity (file.size);
-      file.set_cursor 0;
-      file.read buffer size (file.size);      
-      result := buffer.item p;
-    };
-    result
-  );
-  
-  //
-  
-  - color_map:FAST_ARRAY[Expanded PIXEL_24];
-
-  
-  - init_color_map <-
-  ( + code,nb_colors:INTEGER;    
-    ? {header != NULL};
-    //
-    // Init Color Table
-    // 
-    header.is_bgr_format.if {
-      code := 3;
-    } else {
-      code := 4;
-    };
-    nb_colors := header.get_nb_colors;
-    (color_map = NULL).if {
-      color_map := FAST_ARRAY[PIXEL_24].create 256;
-    };            
-    0.to (nb_colors-1) do { j:INTEGER; 
-      color_map.item j
-      .make_rgb (
-	buffer_item (pos_buffer + 2),
-	buffer_item (pos_buffer + 1),
-	buffer_item pos_buffer
-      );
-      pos_buffer := pos_buffer + code;
-    };
-  );
-          
-  - buf_item :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    result := bmp_buffer.item pos_buffer;
-    pos_buffer := pos_buffer + 1;
-    result
-  );
-  
-
-  
-
-  
diff --git a/lib/format/bmp/old/bmp_file.li b/lib/format/bmp/old/bmp_file.li
deleted file mode 100644
index a7e55ad..0000000
--- a/lib/format/bmp/old/bmp_file.li
+++ /dev/null
@@ -1,190 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BMP_FILE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Mapping BMP Image File (V < 4.0)";
-    
-Section Inherit
-  
-  + parent_std_file:Expanded STD_FILE;
-  
-Section Public
-  
-  - pos_buffer:INTEGER;
-
-  - bmp_buffer:FAST_ARRAY[UINTEGER_8];
-  
-  //
-  
-  - header:BMP_HEADER;
-
-  - color_map:FAST_ARRAY[Expanded PIXEL_24];
-  
-  //
-  
-  - read_header <-
-  (     
-    (bmp_buffer = NULL).if {
-      bmp_buffer := FAST_ARRAY[UINTEGER_8].create_with_capacity size;
-    }.elseif {bmp_buffer.capacity < size.to_integer} then {
-      bmp_buffer.set_capacity (size.to_integer);
-      bmp_buffer.clear;
-    } else {
-      bmp_buffer.clear;
-    };
-    read bmp_buffer size size;    
-    header := CONVERT[NATIVE_ARRAY[UINTEGER_8],BMP_HEADER].on (bmp_buffer.storage);
-    pos_buffer := BMP_HEADER.object_size;
-  );
-
-  - init_color_map <-
-  ( + code,nb_colors:INTEGER;    
-    ? {header != NULL};
-    //
-    // Init Color Table
-    // 
-    header.is_bgr_format.if {
-      code := 3;
-    } else {
-      code := 4;
-    };
-    nb_colors := header.get_nb_colors;
-    (color_map = NULL).if {
-      color_map := FAST_ARRAY[PIXEL_24].create 256;
-    };            
-    0.to (nb_colors-1) do { j:INTEGER; 
-      color_map.item j
-      .make_rgb (
-	bmp_buffer.item (pos_buffer + 2),
-	bmp_buffer.item (pos_buffer + 1),
-	bmp_buffer.item pos_buffer
-      );
-      pos_buffer := pos_buffer + code;
-    };
-  );
-          
-  - buf_item :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    result := bmp_buffer.item pos_buffer;
-    pos_buffer := pos_buffer + 1;
-    result
-  );
-  
-  // JBJB POUR AFFICHAGE EN MODE TEXTE
-  - fill_bitmap b:ABSTRACT_BITMAP <-
-  ( + end:BOOLEAN;
-    + x,y:INTEGER;
-    + line_24:BMP_LINE[PIXEL_24];
-    //+ line_ascii:BMP_LINE_ASCII;
-    + tmp_pix:PIXEL_24;
-    + escape,cmd:UINTEGER_8;
-    + align:UINTEGER_32;
-    ? {header != NULL};
-    
-    is_valid_bmp.if {
-      ? {(b.width = header.width) && {b.height = header.height}};
-      	
-      //line_ascii := BMP_LINE_ASCII.create (header.width);
-      header.is_8bit.if {
-	//
-	// 8 Bit
-	// 	  
-	line_24 := BMP_LINE[PIXEL_24].create (header.width);
-	init_color_map;
-	
-	header.is_rle8_compressed.if {	  
-	  pos_buffer := header.bitmap_offset.to_integer;
-	  y := header.height;
-	  {end}.until_do {
-	    escape := buf_item;
-	    ? { x <= header.width};
-	    ? { y >= 0};
-	    (escape = 00h).if {
-	      cmd := buf_item;
-	      (cmd = 00h).if {
-		b.line_h (0,y) until (header.width - 1) image line_24;	
-		x := 0;
-		y := y - 1;
-	      }.elseif {cmd = 01h} then {
-		// End of file
-		b.line_h (0,y) until (header.width - 1) image line_24;	
-		end := TRUE;
-	      }.elseif {cmd = 02h} then {
-		// Move cursor: usually not used except for MS icons
-		buf_item;
-		buf_item;		  
-	      } else {
-		// Pixel not compressed
-		1.to cmd do { j:INTEGER;
-		  line_24.item_24 x.make (color_map.item buf_item.get_color);
-		  x := x + 1;
-		};
-		cmd.is_odd.if {
-		  buf_item;
-		};
-	      };				
-	    } else {
-	      // Pixel compressed
-	      tmp_pix := color_map.item buf_item;
-	      1.to escape do { j:INTEGER;
-		line_24.item_24 x.make (tmp_pix.get_color);
-		x := x + 1;
-	      };
-	    };
-	  }; 	  	  	  
-	};		
-      }.elseif {header.is_24bit} then {	
-	//
-	// 24 Bit
-	//	
-	line_24 := BMP_LINE[PIXEL_24].create_with_capacity (header.width);
-	align   := ((header.width * -3) & 011b).to_uinteger_32;
-	set_cursor (header.bitmap_offset);
-	// No compression
-	0.to (header.height - 1) do { i:INTEGER;
-	  read line_24 size (header.width);	  
-	  set_cursor (cursor + align);
-	  b.line_h (0,(header.height - i - 1)) until (header.width - 1) image line_24;
-	  line_24.clear;
-	};	    
-      };
-    };
-  );
- 
-  - is_type n:ABSTRACT_STRING :BOOLEAN <-
-  // Return true if the file name has '.bmp' or '.BMP' suffix
-  (
-    ? {n != NULL};
-    ? {! n.is_empty};
-    (n.has_suffix ".bmp") || { n.has_suffix ".BMP"}
-  );
-  
-  - is_valid_bmp:BOOLEAN <-
-  (
-    ? {header != NULL};
-    header.is_valid_bmp
-  );
-  
diff --git a/lib/format/format_img.li b/lib/format/format_img.li
deleted file mode 100644
index 191f87c..0000000
--- a/lib/format/format_img.li
+++ /dev/null
@@ -1,104 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := FORMAT_IMG;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "Format image generic";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-  
-  - name:STRING_CONSTANT <- 
-  (
-    deferred; 
-    NULL
-  );
-      
-  - extension:STRING_CONSTANT <-
-  (
-    deferred;
-    NULL
-  );
-  
-  - is_bitmap:BOOLEAN <-
-  (
-    deferred;
-    FALSE
-  );
-  
-  - is_vectorial:BOOLEAN <- ! is_bitmap;
-  
-  - height:INTEGER <- ( deferred; 0);
-  - width:INTEGER  <- ( deferred; 0);
-  
-  //
-  // Creation.
-  //
-
-  - create_with_file file:STD_FILE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make_with_file file;
-    result
-  );
-
-  - make_with_file file:STD_FILE <-
-  ( 
-    deferred;
-  );
-  
-  - create_with buf:FAST_ARRAY[UINTEGER_8] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make_with buf;
-    result
-  );
-
-  - make_with buf:FAST_ARRAY[UINTEGER_8] <-
-  ( 
-    deferred;
-  );
-  
-  //
-  // Put image.
-  //
-  
-  - put_image_in bmp:ABSTRACT_BITMAP <-
-  (
-    deferred;
-  );
-  
-  - put_image_in bmp:ABSTRACT_BITMAP scale s:REAL_16_16 <-
-  (
-    deferred;
-  );
-  
-Section FORMAT_IMG
-  
-  + pos_buffer:INTEGER;
-  
\ No newline at end of file
diff --git a/lib/graphics/bitmap.li b/lib/graphics/bitmap.li
deleted file mode 100644
index f694aae..0000000
--- a/lib/graphics/bitmap.li
+++ /dev/null
@@ -1,168 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BITMAP[E];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic Bitmap.";
-
-Section Inherit
-  
-  + parent_abstract_bitmap:Expanded ABSTRACT_BITMAP;
-  
-Section Private  
-  
-  + image:FAST_ARRAY[BMP_LINE[E]];
-  
-Section Public
-  
-  - get_y_line y:INTEGER :ABSTRACT_BMP_LINE <-
-  (
-    image.item y
-  );
-  
-  //
-  // Data.
-  //
-  
-  - pixel_geometry:PIXEL <- E;
-  
-  //
-  // Creation. 
-  //
-
-  - make (w,h:INTEGER) <-
-  (
-    width  := w;
-    height := h;
-    //bytes_per_line:=(w * PIXEL_16.size + 7)>>3;
-    image := FAST_ARRAY[BMP_LINE[E]].create h;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE[E].create w) to y;
-    };
-    clipping_off;
-  );
-  
-  - make (w,h:INTEGER) at offset_begin:UINTEGER_32 bytes_per_line lx:INTEGER <-
-  ( + offset:UINTEGER_32;
-    
-    width  := w;
-    height := h;    
-    image := FAST_ARRAY[BMP_LINE[E]].create h;
-    offset:=offset_begin;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE[E].create w at offset) to y;
-      offset:=offset+lx;
-    };
-    clipping_off;
-  );
-
-  
-  //****************************************************************************
-  //*                               PutImage                                   *
-  //****************************************************************************
-  
-  - put_bitmap bmp:ABSTRACT_BITMAP to (x,y:INTEGER) <-
-  ( + x1,y1,x0,y0:INTEGER;
-    + y_src,x_src:INTEGER;
-    + line:ABSTRACT_BMP_LINE;
-
-    // JBJB A VOIR: SI H/W RECEVEUR < H/W BMP --> PLANTAGE !!!
-    x0 := x.max clip_x0;
-    y0 := y.max clip_y0;
-    x1 := (x + bmp.width -1).min clip_x1; 
-    y1 := (y + bmp.height-1).min clip_y1;
-    ((x0<=x1) && {y0<=y1}).if {
-      y_src := y0 - y;
-      x_src := x0 - x;
-      y0.to y1 do { y_dst:INTEGER;
-	line := bmp.get_y_line y_src;
-	line_h_hard (x0,y_dst) until x1 image line offset x_src;
-	y_src := y_src + 1;
-      };  
-    };
-  );
-
-  - put_bitmap bmp:ABSTRACT_BITMAP to (x,y:INTEGER) scale (scale_x,scale_y:REAL_16_16) <-
-  ( + x1,y1,x0,y0:INTEGER;
-    + y_src,x_src,x_tmp:REAL_16_16;
-    + line:ABSTRACT_BMP_LINE;
-    + col:UINTEGER_32;
-
-    x0 := x.max clip_x0;
-    y0 := y.max clip_y0;
-    x1 := (x + (bmp.width.to_real_16_16  / scale_x).to_integer -1).min clip_x1;
-    y1 := (y + (bmp.height.to_real_16_16 / scale_y).to_integer -1).min clip_y1;
-    ((x0<=x1) && {y0<=y1}).if {
-      x_src := (x0 - x).to_real_16_16 * scale_x;
-      y_src := (y0 - y).to_real_16_16 * scale_y;      
-      y0.to y1 do { y_dst:INTEGER;
-	line := bmp.get_y_line (y_src.to_integer);
-	x_tmp := x_src;
-	x0.to x1 do { x_dst:INTEGER;
-	  col := line.get_color (x_tmp.to_integer);
-	  pixel_hard (x_dst,y_dst) color col;
-	  x_tmp := x_tmp + scale_x;
-	};	
-	y_src := y_src + scale_y;
-      };  
-    };
-  );
-
-Section Public
-  
-  //
-  // Low level.
-  //   
-    
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( 
-    //image.item y.put col to x;    
-    get_y_line y.put col to x;
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( 
-    //image.item y.put col from x to x1;
-    get_y_line y.put col from x to x1;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  (     
-    //image.item y.put line offset ofs from x to x1;
-    get_y_line y.put line offset ofs from x to x1;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    //image.item y.item x
-    get_y_line y.item x
-  );
-
-  - get_color_hard (x,y:INTEGER) :UINTEGER_32 <-
-  (
-    //image.item y.item x
-    get_y_line y.get_color x
-  );
-  
\ No newline at end of file
diff --git a/lib/graphics/bmp_line.li b/lib/graphics/bmp_line.li
deleted file mode 100644
index d1cbd62..0000000
--- a/lib/graphics/bmp_line.li
+++ /dev/null
@@ -1,211 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := BMP_LINE[E];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Generic bitmap line";
-  
-Section Inherit
-  
-  + parent_abstract_bmp_line:Expanded ABSTRACT_BMP_LINE;
-  
-Section Private
-  
-  + storage:NATIVE_ARRAY[E];
-  
-Section Public
-  
-  //  
-  // Creation.
-  //
-  
-  - create n:INTEGER :SELF <-
-  ( + result:SELF;
-    ? {n>0};
-    
-    result:=clone;
-    result.make n;
-    
-    ? {result.count    = n};
-    ? {result.capacity = n};
-    result
-  );
-  
-  - make n:INTEGER <-
-  (
-    (n > capacity).if {
-      capacity := n;      
-      storage := NATIVE_ARRAY[E].create n;
-    };
-    upper := n - 1;
-  );
-
-  - create_with_capacity n:INTEGER :SELF <- 
-  // Warning : Not storage copy.
-  ( + result:SELF;
-    
-    result:=clone;
-    result.make_with_capacity n;
-    
-    ? {result.count    = 0};
-    ? {result.capacity = n};
-    result
-  );
-  
-  - make_with_capacity n:INTEGER <-
-  (
-    (n > capacity).if {
-      storage := NATIVE_ARRAY[E].create n;
-      capacity := n;
-    };
-    upper := -1;
-  );
-    
-  - create n:INTEGER at offset:UINTEGER_32 :SELF <- 
-  // Warning : Not storage copy.
-  ( + result:SELF;
-    
-    result:=clone;
-    result.make n at offset;
-    
-    ? {result.count    = n};
-    ? {result.capacity = n};
-    result
-  );
-  
-  - make n:INTEGER at offset:UINTEGER_32 <-
-  ( 
-    capacity := n;
-    upper    := n - 1;    
-    storage  := CONVERT[UINTEGER_32,NATIVE_ARRAY[E]].on offset;    
-  );
-  
-  - pixel_geometry:E;
-   
-  //
-  // Put.
-  //
-  
-  - put col:UINTEGER_32 to n:INTEGER <-
-  ( ? {n.in_range 0 to upper};    
-    item n.make col;    
-  );
-  
-  - put col:UINTEGER_32 from idx_begin:INTEGER to idx_end:INTEGER <-   
-  (  
-    E.make col;    
-    idx_begin.to idx_end do { n:INTEGER;
-      storage.put E to n;
-    };
-  );
-  
-  - put bmp:ABSTRACT_BMP_LINE offset ofs:INTEGER from idx_begin:INTEGER to idx_end:INTEGER <-
-  ( + offset:INTEGER;    
-    + bmp_self:SELF;
-    + col:UINTEGER_32;
-    ? {idx_begin <= idx_end};
-    ? {idx_begin >= 0};
-    ? {idx_end.in_range 0 to upper};
-    ? {ofs >= 0};    
-    ? {(ofs + (idx_end - idx_begin)) <= bmp.upper}; 
-        
-    offset := ofs;
-    bmp_self ?= bmp;
-    (bmp_self != NULL).if {
-      // Speed version.      
-      idx_begin.to idx_end do { n:INTEGER;
-	storage.put (bmp_self.item offset) to n;	
-	offset := offset + 1;
-      };
-    } else {
-      // Slow version (because conversion for each pixel)
-      idx_begin.to idx_end do { n:INTEGER;
-	col := bmp.get_color offset;				
-	item n.make col;	
-	offset := offset + 1;
-      };
-    };
-  );
-  
-  //
-  // Get.
-  //
-  
-  - get_color n:INTEGER :UINTEGER_32 <-
-  ( ? {n.in_range 0 to upper};    
-    item n.rgbcolor
-  );
-  
-  - item n:INTEGER :E <- storage.item n;
-  
-  - item_8  n:INTEGER :PIXEL_8  <- item n.to_pixel_8;
-  
-  - item_15 n:INTEGER :PIXEL_15 <- item n.to_pixel_15;
-
-  - item_16 n:INTEGER :PIXEL_16 <- item n.to_pixel_16;
-
-  - item_24 n:INTEGER :PIXEL_24 <- item n.to_pixel_24;
-
-  - item_32 n:INTEGER :PIXEL_32 <- item n.to_pixel_32;
-  
-  //
-  // Arrayed consideration.
-  //
-  
-  - get_storage:NATIVE_ARRAY[UINTEGER_8] <- 
-  CONVERT[NATIVE_ARRAY[E],NATIVE_ARRAY[UINTEGER_8]].on storage;
-  
-  - element_sizeof:INTEGER <- pixel_geometry.object_size;
-
-  - valid_stream s:INTEGER :BOOLEAN <- (s % element_sizeof)=0;
-  
-  + ofs_buf:INTEGER;
-  
-  - add_last_buffer buf:FAST_ARRAY[UINTEGER_8] from beg:INTEGER to end:INTEGER <-
-  ( + pos:INTEGER;
-    
-    // BSBS: Peu faire mieux directement avec les storages...
-    pos := count * element_sizeof + ofs_buf;
-    beg.to end do { j:UINTEGER_32;
-      get_storage.put (buf.item j) to pos;
-      ofs_buf := (ofs_buf + 1) % element_sizeof;
-      (ofs_buf=0).if {
-	? {count < capacity};
-	upper := upper + 1;	
-      };
-      pos := pos + 1;
-    };
-  );
-  
-  //
-  // Arrayed consideration.
-  //
-  
-  - set_capacity new_capacity:INTEGER <-  
-  (
-    make_with_capacity new_capacity;
-  );
-
-  
\ No newline at end of file
diff --git a/lib/graphics/edge.li b/lib/graphics/edge.li
deleted file mode 100644
index e6a3059..0000000
--- a/lib/graphics/edge.li
+++ /dev/null
@@ -1,232 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EDGE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Sub prototype for BITMAP.polygone";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;  
-  
-Section Public
-  
-  // Make.
-  
-  + y:INTEGER;
-  + x:INTEGER;   
-  
-  + width:INTEGER;
-  + dx:INTEGER;  // REAL_24_8
-  
-  + is_down:BOOLEAN;
-  + is_point:BOOLEAN;
-  
-  - x0:INTEGER <- x;
-  - y0:INTEGER <- y;
-  - x1:INTEGER <- dx;
-  - y1:INTEGER <- width;
-  
-  + next_y:EDGE;
-    
-  + prev_x:EDGE;  // doubly linked list
-  + next_x:EDGE;
-  
-  //
-  // Function.
-  // 
-  
-  - make (xx,yy:INTEGER) add inc:INTEGER <-
-  // Flat.
-  (    
-    next_y   := NULL;
-    is_point := TRUE;
-    dx       := inc;    
-    width    := 0;
-    x := xx;
-    y := yy;
-  );
-  
-  - make (xx,yy:INTEGER) to (xx1,yy1:INTEGER) <-
-  // Line.
-  ( 
-    next_y   := NULL;
-    is_point := FALSE;
-    (is_down := yy < yy1).if {
-      // Down.
-      y  := yy;
-      x  := xx;            
-      dx := xx1;
-      width := yy1;
-    } else {
-      // up.
-      y  := yy1;
-      x  := xx1;            
-      dx := xx;
-      width := yy;
-    };
-  );
-      
-  - set_next_x new:EDGE <-
-  (
-    next_x:=new;
-  );
-
-  - set_prev_x new:EDGE <-
-  (
-    prev_x:=new;
-  );
-  
-  - set_next_y new:EDGE <-
-  (
-    next_y := new;
-  );
-  
-  - add old_root:EDGE :EDGE <-
-  // Double link and sort with X.
-  ( + pos,prv:EDGE;
-    + new_root:EDGE;    
-    
-    to_run;
-    pos:=old_root;
-    {(pos!=NULL) && {(pos.x<x) || {(pos.x=x) && {pos.dx<dx}} } }.while_do {
-      prv := pos;
-      pos := pos.next_x;
-    };
-    next_x := pos;
-    prev_x := prv;
-    (next_x != NULL).if {
-      next_x.set_prev_x Self;
-    };
-    (prev_x!=NULL).if {
-      prev_x.set_next_x Self;
-      new_root:=old_root;
-    } else {
-      new_root:=Self;
-    };
-    
-    new_root
-  );
-    
-  - next_line old_root:EDGE :EDGE <-
-  // Remove double link.
-  ( + new_root:EDGE;
-    
-    (next_y = NULL).if {
-      // Remove
-      (next_x!=NULL).if {
-	next_x.set_prev_x prev_x;
-      };
-      (prev_x!=NULL).if {
-	prev_x.set_next_x next_x;
-	new_root:=old_root;
-      } else {
-	new_root:=next_x;
-      };
-    } else {
-      // Replace next_y
-      next_y.to_run;
-      next_y.set_next_x next_x;
-      next_y.set_prev_x prev_x;
-      (next_x!=NULL).if {
-	next_x.set_prev_x next_y;
-      };
-      (prev_x!=NULL).if {
-	prev_x.set_next_x next_y;
-	new_root:=old_root;
-      } else {
-	new_root:=next_y;
-      };
-    };
-    new_root
-  );
-  
-  - new_step <-
-  (
-    width:=width-1;
-    x:=x+dx;
-  );
-  
-Section Private  
-  
-  - to_run <-
-  ( + dy:INTEGER; 
-    
-    (is_point).if {
-      // Point (Flat)
-      x := x0 << 8;
-    } else {
-      // Line
-      dy := y1 - y0;
-      dx := ((x1 - x0)<<8) / dy;
-      x  := x0 << 8; 
-        
-      (next_y = NULL).if {
-	width := dy;
-      } else {
-	width := dy - 1;
-      };      
-    };
-  );
-  
-  - display <-
-  (
-    '{'.print;
-    x0.print;
-    ','.print;
-    y0.print;
-    '-'.print;
-    x1.print;
-    ','.print;
-    y1.print;    
-    '}'.print;
-  );
-
-  - display_2 <-
-  (
-    '{'.print;      
-    (x>>8).print;
-    ','.print;
-    y.print;
-    'W'.print;
-    width.print;
-    'D'.print;
-    dx.print;    
-    'N'.print;
-    (next_y=NULL).if {
-      "null".print;
-    } else {
-      "=>".print;
-    };
-    '@'.print;
-    INTEGER.force_conversion Self .print;
-    '}'.print;
-  );
-
-
-
-
-
-
diff --git a/lib/graphics/low_level/abstract_bitmap.li b/lib/graphics/low_level/abstract_bitmap.li
deleted file mode 100644
index 7f365ff..0000000
--- a/lib/graphics/low_level/abstract_bitmap.li
+++ /dev/null
@@ -1,1592 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ABSTRACT_BITMAP;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic Bitmap.";
-    
-  - external    := `
-//
-// Font System 1250 bytes.
-//
-unsigned short __index_font[96]={
-0x000,0x007,0x008,0x00B,0x012,0x017,0x021,0x028,0x029,0x02C,0x02F,0x034,
-0x039,0x03B,0x03F,0x040,0x044,0x049,0x04C,0x051,0x056,0x05B,0x060,0x065,
-0x06A,0x06F,0x074,0x075,0x077,0x07C,0x081,0x086,0x08B,0x097,0x0A0,0x0A7,
-0x0AF,0x0B7,0x0BE,0x0C5,0x0CD,0x0D5,0x0D6,0x0DB,0x0E2,0x0E8,0x0F1,0x0F9,
-0x101,0x109,0x111,0x11A,0x121,0x12A,0x132,0x13B,0x148,0x150,0x159,0x15F,
-0x162,0x166,0x169,0x16E,0x175,0x177,0x17E,0x184,0x18A,0x190,0x196,0x199,
-0x19F,0x1A4,0x1A5,0x1A7,0x1AD,0x1AE,0x1B7,0x1BC,0x1C2,0x1C8,0x1CE,0x1D1,
-0x1D6,0x1D9,0x1DE,0x1E5,0x1EE,0x1F4,0x1FB,0x1FF,0x204,0x205,0x20A,0x211};
-
-unsigned short __graph_font[0x211]={
-0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x17F8,0x0078,0x0000,
-0x0078,0x0200,0x1E40,0x03C0,0x1E78,0x03C0,0x0278,0x0040,0x08E0,0x1110,
-0x3FF8,0x1110,0x0E60,0x0030,0x0848,0x0448,0x0230,0x0100,0x0080,0x0C40,
-0x1220,0x1210,0x0C00,0x0E00,0x1170,0x1088,0x1188,0x1670,0x0800,0x1400,
-0x0078,0x1FC0,0x6030,0x8008,0x8008,0x6030,0x1FC0,0x0050,0x0060,0x0038,
-0x0060,0x0050,0x0100,0x0100,0x07C0,0x0100,0x0100,0x2000,0x1000,0x0100,
-0x0100,0x0100,0x0100,0x1000,0x7000,0x0E00,0x01C0,0x0038,0x0FF0,0x1008,
-0x1008,0x1008,0x0FF0,0x0010,0x0010,0x1FF8,0x1C30,0x1208,0x1108,0x1088,
-0x1070,0x0810,0x1008,0x1088,0x1088,0x0F70,0x0300,0x0280,0x0260,0x0210,
-0x1FF8,0x09F8,0x1088,0x1088,0x1088,0x0F08,0x0FF0,0x1108,0x1088,0x1088,
-0x0F10,0x0008,0x1C08,0x0308,0x00C8,0x0038,0x0F70,0x1088,0x1088,0x1088,
-0x0F70,0x08F0,0x1108,0x1108,0x1088,0x0FF0,0x1040,0x2000,0x1040,0x0100,
-0x0380,0x06C0,0x0C60,0x0820,0x0280,0x0280,0x0280,0x0280,0x0280,0x0820,
-0x0C60,0x06C0,0x0380,0x0100,0x0030,0x0008,0x1708,0x0088,0x0070,0x03C0,
-0x0C30,0x1008,0x1008,0x2384,0x2444,0x2444,0x2244,0x25C8,0x1408,0x1430,
-0x03C0,0x1800,0x0600,0x0380,0x0260,0x0218,0x0260,0x0380,0x0600,0x1800,
-0x1FF8,0x1088,0x1088,0x1088,0x1088,0x1088,0x0F70,0x07E0,0x0810,0x1008,
-0x1008,0x1008,0x1008,0x0810,0x0420,0x1FF8,0x1008,0x1008,0x1008,0x1008,
-0x1008,0x0810,0x07E0,0x1FF8,0x1088,0x1088,0x1088,0x1088,0x1088,0x1008,
-0x1FF8,0x0088,0x0088,0x0088,0x0088,0x0088,0x0008,0x07E0,0x0810,0x1008,
-0x1008,0x1008,0x1108,0x0910,0x1F20,0x1FF8,0x0080,0x0080,0x0080,0x0080,
-0x0080,0x0080,0x1FF8,0x1FF8,0x0C00,0x1000,0x1000,0x1000,0x0FF8,0x1FF8,
-0x0080,0x0140,0x0220,0x0410,0x0808,0x1000,0x1FF8,0x1000,0x1000,0x1000,
-0x1000,0x1000,0x1FF8,0x0060,0x0180,0x0600,0x1800,0x0600,0x0180,0x0060,
-0x1FF8,0x1FF8,0x0010,0x0060,0x0080,0x0100,0x0600,0x0800,0x1FF8,0x07E0,
-0x0810,0x1008,0x1008,0x1008,0x1008,0x0810,0x07E0,0x1FF8,0x0108,0x0108,
-0x0108,0x0108,0x0108,0x0090,0x0060,0x07E0,0x0810,0x1008,0x1008,0x1008,
-0x1408,0x0810,0x17E0,0x1FF8,0x0108,0x0108,0x0108,0x0108,0x0108,0x0190,
-0x0E60,0x1000,0x0C70,0x1088,0x1088,0x1088,0x1108,0x1108,0x0E30,0x0008,
-0x0008,0x0008,0x0008,0x1FF8,0x0008,0x0008,0x0008,0x0008,0x07F8,0x0800,
-0x1000,0x1000,0x1000,0x1000,0x0800,0x07F8,0x0018,0x0060,0x0180,0x0600,
-0x1800,0x0600,0x0180,0x0060,0x0018,0x0038,0x00C0,0x0700,0x1800,0x0700,
-0x00C0,0x0038,0x00C0,0x0700,0x1800,0x0700,0x00C0,0x0038,0x1818,0x0420,
-0x0240,0x0180,0x0180,0x0240,0x0420,0x1818,0x0018,0x0020,0x0040,0x0080,
-0x1F00,0x0080,0x0040,0x0020,0x0018,0x1808,0x1608,0x1108,0x1088,0x1068,
-0x1018,0xFFF8,0x8008,0x8008,0x0038,0x01C0,0x0E00,0x7000,0x8008,0x8008,
-0xFFF8,0x0010,0x0008,0x0004,0x0008,0x0010,0x4000,0x4000,0x4000,0x4000,
-0x4000,0x4000,0x4000,0x0008,0x0010,0x0E80,0x1140,0x1140,0x1140,0x1140,
-0x0F80,0x1000,0x1FF8,0x0880,0x1040,0x1040,0x1040,0x0F80,0x0F80,0x1040,
-0x1040,0x1040,0x1040,0x0880,0x0F80,0x1040,0x1040,0x1040,0x0880,0x1FF8,
-0x0F80,0x1240,0x1240,0x1240,0x1240,0x0B80,0x0040,0x1FF0,0x0048,0x0F80,
-0x9040,0x9040,0x9040,0x8880,0x7FC0,0x1FF8,0x0080,0x0040,0x0040,0x1F80,
-0x1FC8,0x8000,0x7FC8,0x1FF8,0x0200,0x0300,0x0480,0x0840,0x1000,0x1FF8,
-0x1FC0,0x0080,0x0040,0x0040,0x1F80,0x0080,0x0040,0x0040,0x1F80,0x1FC0,
-0x0080,0x0040,0x0040,0x1F80,0x0F80,0x1040,0x1040,0x1040,0x1040,0x0F80,
-0xFFC0,0x0880,0x1040,0x1040,0x1040,0x0F80,0x0F80,0x1040,0x1040,0x1040,
-0x0880,0xFFC0,0x1FC0,0x0080,0x0040,0x0980,0x1240,0x1240,0x1240,0x0C80,
-0x0040,0x0FF0,0x1040,0x0FC0,0x1000,0x1000,0x0800,0x1FC0,0x00C0,0x0300,
-0x0C00,0x1000,0x0C00,0x0300,0x00C0,0x00C0,0x0700,0x1800,0x0700,0x00C0,
-0x0700,0x1800,0x0700,0x00C0,0x1040,0x0880,0x0700,0x0700,0x0880,0x1040,
-0x80C0,0x8300,0x4C00,0x3000,0x0C00,0x0300,0x00C0,0x1840,0x1640,0x1140,
-0x10C0,0x0200,0x0200,0x7DF0,0x8008,0x8008,0xFFF8,0x8008,0x8008,0x7DF0,
-0x0200,0x0200,0x0030,0x0008,0x0008,0x0010,0x0020,0x0020,0x0018};
-`;
-
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - get_abstract_bitmap:ABSTRACT_BITMAP <- Self;
-  
-  - get_y_line y:INTEGER :ABSTRACT_BMP_LINE <-
-  (
-    deferred;
-    NULL
-  );
-  
-  //
-  // Data.
-  //
-  
-  // Image size.
-  + height:INTEGER;       
-  + width:INTEGER;        
-  
-  - x_max:INTEGER <- width  - 1;
-  - y_max:INTEGER <- height - 1;
-    
-  // Clipping :
-  + clip_x0:INTEGER; 
-  + clip_y0:INTEGER;
-  + clip_x1:INTEGER;
-  + clip_y1:INTEGER;
-  
-  // Current position.
-  + spot_x:INTEGER;  
-  + spot_y:INTEGER;
-  
-  // Current color.
-  + rgbcolor    :UINTEGER_32; // Format: RRGGBB in hexadecimal
-  + rgbbackcolor:UINTEGER_32;
-  + transparent :BOOLEAN;
-  
-  + mode:UINTEGER_8 := mode_copy; // Set mode. 
-  
-  // Ref. `X.h'
-  - mode_copy:UINTEGER_8 := 03h;
-  - mode_xor :UINTEGER_8 := 06h;
-  
-  - set_mode m:UINTEGER_8 <-
-  (
-    mode := m;
-  );
-  
-  // Macro colors
-  
-  - black:UINTEGER_32 := 0000000h;
-  - white:UINTEGER_32 := 0FFFFFFh;
-  - red:UINTEGER_32   := 0FF0000h;
-  - green:UINTEGER_32 := 000FF00h;
-  - blue:UINTEGER_32  := 00000FFh;
-  - yellow:UINTEGER_32:= 0FFFF00h;
-  - purple:UINTEGER_32:= 0FF00FFh;
-  - cyan:UINTEGER_32  := 000FFFFh;
-  - gray:UINTEGER_32  := 0808080h;
-  - brown:UINTEGER_32 := 0400000h;  
-  
-  
-  - pixel_geometry:PIXEL <- (deferred; NULL);
-  
-  //
-  // Creation. 
-  //
-
-  - create (w,h:INTEGER) :SELF <-
-  ( + result:SELF;
-        
-    result:=clone;
-    result.make (w,h);
-    result
-  );
-  
-  - make (w,h:INTEGER) <-
-  (
-    deferred;
-  );
-  
-  - create (w,h:INTEGER) at offset_begin:UINTEGER_32 bytes_per_line lx:INTEGER :SELF <-   
-  ( + result:SELF;
-        
-    result:=clone;
-    result.make (w,h) at offset_begin bytes_per_line lx;
-    result
-  );
-  
-  - make (w,h:INTEGER) at offset_begin:UINTEGER_32 bytes_per_line lx:INTEGER <-
-  ( 
-    deferred;
-  );
-
-Section Public
-  
-  //
-  // Low level.
-  //   
-    
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( 
-    deferred;
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( 
-    deferred;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  (     
-    deferred;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    deferred;
-  );
-
-  - get_color_hard (x,y:INTEGER) :UINTEGER_32 <-
-  (
-    deferred;
-  );
-  
-Section Public  
-  
-  - color col:UINTEGER_32 <-
-  (
-    rgbcolor := col;
-  );
-
-  - backcolor col:UINTEGER_32 <-
-  (
-    rgbbackcolor := col;
-  );
-  
-  - transparent_on <-
-  (
-    transparent := TRUE;
-  );
-  
-  - transparent_off <-
-  (
-    transparent := FALSE;
-  );
-  
-  - clipping (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + lx,ly:INTEGER;
-    
-    lx := width - 1;
-    ly := height - 1;
-    clip_x0 := x0.max 0.min lx;
-    clip_x1 := x1.max 0.min lx;
-    clip_y0 := y0.max 0.min ly;
-    clip_y1 := y1.max 0.min ly;
-  );
-  
-  - clipping_off <-
-  (
-    clip_x0 := 0;
-    clip_x1 := width - 1;
-    clip_y0 := 0;
-    clip_y1 := height - 1;
-  );
-  
-  - move_to (pos_x,pos_y:INTEGER) <-
-  (
-    spot_x := pos_x;
-    spot_y := pos_y;
-  );
-  
-  //
-  // GetPixel
-  //
-  
-  - get_pixel:BOOLEAN <-
-  // Load Spot pixel.
-  ( + result:BOOLEAN;
-    + pix:PIXEL;
-    
-    ((spot_x.in_range clip_x0 to clip_x1) && {spot_y.in_range clip_y0 to clip_y1}).if {
-      result:=TRUE;
-      pix:=get_pixel_hard (spot_x,spot_y);
-      pix.is_transparent.if {
-	// Transparent.
-	rgbcolor := black;
-	transparent=TRUE;
-      } else {
-	// Read color.
-	transparent:= FALSE;
-	rgbcolor := pix.rgbcolor;
-      };
-    } else {
-      rgbcolor := black;
-      transparent := FALSE;
-    };
-    
-    result
-  );
-  
-  - get_pixel_to (x,y:INTEGER) :BOOLEAN<-
-  (
-    move_to (x,y);
-    get_pixel
-  );
-  
-  //
-  // PutPixel
-  //
-  
-  - pixel:BOOLEAN <-
-  ( + result:BOOLEAN;
-   
-    // Test Clipping;
-    ((spot_x.in_range clip_x0 to clip_x1) && {spot_y.in_range clip_y0 to clip_y1 }).if {
-      result:=TRUE;
-      pixel_hard (spot_x,spot_y) color rgbcolor;
-    };  
-    result
-  );
-  
-  - pixel_to (x,y:INTEGER) :BOOLEAN <-
-  (
-    move_to (x,y);
-    pixel
-  );
-  
-  - pixel_color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    pixel
-  );
-  
-  - pixel_to (x,y:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    pixel_to (x,y)
-  );
-  
-  //
-  // Line
-  //
-  
-  - line_h (x,y:INTEGER) until x_end:INTEGER image line:ABSTRACT_BMP_LINE :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    + x02,x1,x0:INTEGER;
-    ? {x >= 0};
-    ? {y >= 0};
-    ? {x_end >= 0};
-    ? {line != NULL};
-    
-    x0 := x;
-    x1 := x_end;
-    spot_x := x1;        
-    (y.in_range clip_y0 to clip_y1).if {
-      result := TRUE;
-      ( x0 > x1 ).if {
-	x02 := x0;
-	x0 := x1;
-	x1 := x02;
-      };
-      ( clip_x1 < x1 ).if {
-	x1 := clip_x1;
-	result := FALSE;
-      };
-      
-      ( clip_x0 > x0 ).if {
-	x02 := clip_x0;
-	result := FALSE;
-      } else {
-	x02 := x0;
-      };
-      
-      ( x0 <= x1 ).if {
-	line_h_hard (x02,y) until x1 image line offset (x02-x0);
-      };
-    };
-    result
-  );
-  
-  - line_h_until x:INTEGER :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + x0,x1:INTEGER;
-
-    x0 := spot_x;
-    x1 := x;
-    spot_x := x1;
-    
-    (spot_y.in_range clip_y0 to clip_y1).if {
-      result := TRUE;
-      
-      ( x0 > x1).if {
-	+ swap:INTEGER;
-	swap := x0;
-	x0 := x1;
-	x1 := swap;
-      };
-      
-      ( clip_x1 < x1 ).if {
-	x1 := clip_x1;
-	result := FALSE;
-      };
-      
-      ( clip_x0 > x0 ).if {
-	x0 := clip_x0;
-	result := FALSE;
-      };
-      
-      (x0 <= x1).if {
-	line_h_hard (x0,spot_y) until x1 color rgbcolor;
-      };
-    };
-    result
-  );
-    
-  - line_h_until x1:INTEGER color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line_h_until x1
-  );
-  
-  - line_h (x0,y0:INTEGER) until x1:INTEGER :BOOLEAN <-
-  (
-    move_to (x0,y0);
-    line_h_until x1
-  );
-  
-  
-  - line_h (x0,y0:INTEGER) until x1:INTEGER color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line_h (x0,y0) until x1
-  );
-  
-  - line_v_until y:INTEGER :BOOLEAN <-
-  ( + y0,y1:INTEGER;
-    + result:BOOLEAN;
-    
-    y0 := spot_y;
-    y1 := y;
-    spot_y := y1;
-    
-    (spot_x.in_range clip_x0 to clip_x1).if {
-      result := TRUE;
-      
-      ( y0 > y1 ).if {
-	+ swap:INTEGER;
-	swap := y0;
-	y0 := y1;
-	y1 := swap;
-      };
-      
-      ( clip_y1 < y1).if {
-	y1 := clip_y1;
-	result := FALSE;
-      };
-      
-      ( clip_y0 > y0 ).if {
-	y0 := clip_y0;
-	result := FALSE;
-      };
-      
-      ( y0 <=y1 ).if {
-	y0.to y1 do { j:INTEGER;
-	  pixel_hard (spot_x,j) color rgbcolor;
-	};
-      };
-    };    
-    
-    result
-  );
-  
-  - line_v_until y1:INTEGER color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line_v_until y1
-  );
-  
-  - line_v (x0,y0:INTEGER) until y1:INTEGER :BOOLEAN <-
-  (
-    move_to (x0,y0);
-    line_v_until y1
-  );
-  
-  - line_v (x0,y0:INTEGER) until y1:INTEGER color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line_v (x0,y0) until y1
-  );
-  
-  
-  //:UINTEGER_8 CalculCode(:INTEGER_64 X,:INTEGER_64 Y,:INTEGER_64 Xmin,:INTEGER_64 Ymin,:INTEGER_64 Xmax,:INTEGER_64 Ymax)
-  //{ return( (X<Xmin)|((X>Xmax)<<1)|((Y<Ymin)<<2)|((Y>Ymax)<<3) );
-  //};
-  
-  //************************
-  //* CLIPPING DE LINE BUGGE -> Blocage !!!
-  //************************
-  
-/*  
-  char ClipLine(:INTEGER_64 x0,:INTEGER_64 y0,:INTEGER_64 x1,:INTEGER_64 y1,:INTEGER_64 Xmin,:INTEGER_64 Ymin,:INTEGER_64 Xmax,:INTEGER_64 Ymax)
-  { :UINTEGER_8 Bool=0; // Accepte=Faux , Fin=Vrai
-    :UINTEGER_8 cod0,cod1,codExt;
-    short x,y;
-    char tst;
-    cod0=CalculCode(x0,y0,Xmin,Ymin,Xmax,Ymax);
-    cod1=CalculCode(x1,y1,Xmin,Ymin,Xmax,Ymax);
-    tst=((cod0==0) && (cod1==0));
-    do {
-      if ((cod0==0) && (cod1==0)) { // Interieur de la fenetre.
-	Bool=3;  // Accepte=Vrai et Fin=Vrai.
-      } else if ((cod0&cod1)!=0)
-      Bool|=2; // Fin=Vrai
-      else {                        // Segment ni accepte ni rejete.
-	if (cod0!=0) codExt=cod0; else codExt=cod1;
-	if (codExt&8) {
-	  x=x0+(x1-x0)*(float)(Ymax-y0)/(float)(y1-y0);
-	  y=Ymax;
-	} else if (codExt&4) {
-	  x=x0+(x1-x0)*(float)(Ymin-y0)/(float)(y1-y0);
-	  y=Ymin;
-	} else if (codExt&2) {
-	  x=Xmax;
-	  y=y0+(y1-y0)*(float)(Xmax-x0)/(float)(x1-x0);
-	} else if (codExt&1) {
-	  x=Xmin;
-	  y=y0+(y1-y0)*(float)(Xmin-x0)/(float)(x1-x0);
-	};
-	if (codExt==cod0) {
-	  x0=x; y0=y;
-	  cod0=CalculCode(x0,y0,Xmin,Ymin,Xmax,Ymax);
-	} else {
-	  x1=x; y1=y;
-	  cod1=CalculCode(x1,y1,Xmin,Ymin,Xmax,Ymax);
-	};
-      };
-    } while (!(Bool&2));
-    if (Bool&1) TraceLine(x0,y0,x1,y1);
-    return(tst);
-  };*/
-    
-  - line_to (x2,y2:INTEGER) :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    + x1,y1:INTEGER;
-    + dx,dy:INTEGER;
-    + i1,i2:INTEGER;
-    + x,y:INTEGER;
-    + dd:INTEGER;
-    
-    x1 := spot_x;
-    y1 := spot_y;
-    dx := x2 - x1;
-    dy := y2 - y1;
-    
-    ( dy = 0).if {
-      result := line_h_until x2;
-    }.elseif {dx = 0} then {
-      result := line_v_until y2;
-    } else {
-      spot_x := x2;
-      spot_y := y2;
-      
-      (dx >= 0).if {
-	(dy >= 0).if {
-	  (dx >= dy).if {	    	    	    
-	    i1 := 2 * dy;
-	    dd := i1 - dx;
-	    i2 := dd - dx;
-	    x := x1; 
-	    y := y1;
-	    {x <= x2}.while_do {
-	      pixel_to (x,y);
-	      (dd >= 0).if { 
-		y := y+1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      x := x+1;
-	    };	    
-	  } else {
-	    i1 := 2 * dx;
-	    dd := i1 - dy;
-	    i2 := dd - dy;
-	    x := x1; 
-	    y := y1;
-	    {y <= y2}.while_do {
-	      pixel_to (x,y);
-	      (dd >= 0).if { 
-		x := x+1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      y := y+1;
-	    };	    
-	  };
-	} else {
-	  (dx >= -dy).if {	    
-	    i1 := 2 * dy;
-	    dd := i1 + dx;
-	    i2 := dd + dx;
-	    x := x1; 
-	    y := y1;
-	    {x <= x2}.while_do {
-	      pixel_to (x,y);
-	      (dd <= 0).if { 
-		y := y - 1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      x := x+1;
-	    };
-	  } else {
-	    i1 := 2 * dx;
-	    dd := i1 + dy;
-	    i2 := dd + dy;
-	    x := x1; 
-	    y := y1;
-	    {y >= y2}.while_do {
-	      pixel_to (x,y);
-	      (dd >= 0).if { 
-		x := x+1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      y := y-1;
-	    };	    
-	  };	 
-	};
-      } else {
-	(dy >= 0).if {
-	  (-dx >= dy).if {
-	    i1 := 2 * dy;
-	    dd := i1 + dx;
-	    i2 := dd + dx;
-	    x := x1; 
-	    y := y1;
-	    {x >= x2}.while_do {
-	      pixel_to (x,y);
-	      (dd >= 0).if { 
-		y := y + 1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      x := x - 1;
-	    };
-	  } else {
-	    i1 := 2 * dx;
-	    dd := i1 + dy;
-	    i2 := dd + dy;
-	    x := x1; 
-	    y := y1;
-	    {y <= y2}.while_do {
-	      pixel_to (x,y);
-	      (dd <= 0).if { 
-		x := x - 1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      y := y + 1;
-	    };
-	  };
-	} else {
-	  (-dx >= -dy).if {
-	    i1 := 2 * dy;
-	    dd := i1 - dx;
-	    i2 := dd - dx;
-	    x := x1; 
-	    y := y1;
-	    {x >= x2}.while_do {
-	      pixel_to (x,y);
-	      (dd <= 0).if { 
-		y := y-1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      x := x-1;
-	    };
-	  } else {
-	    i1 := 2 * dx;
-	    dd := i1 - dy;
-	    i2 := dd - dy;
-	    x := x1; 
-	    y := y1;
-	    {y >= y2}.while_do {
-	      pixel_to (x,y);
-	      (dd <= 0).if { 
-		x := x-1; 
-		dd := dd+i2; 
-	      } else {
-		dd := dd+i1;
-	      };
-	      y := y - 1;
-	    };
-	  };
-	};	 
-      };      
-      result:=TRUE;
-    };
-    
-    result
-  );
-  
-  - line_to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line_to (x1,y1)
-  );
-  
-  
-  - line (x1,y1:INTEGER) to (x2,y2:INTEGER) :BOOLEAN <-
-  (
-    move_to (x1,y1);
-    line_to (x2,y2)
-  );
-  
-  
-  - line (x1,y1:INTEGER) to (x2,y2:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    line (x1,y1) to (x2,y2)
-  );
-      
-  //
-  // Rectangle
-  //
-  
-  - rectangle_to (x1,y1:INTEGER) :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    + x0,y0:INTEGER;
-    x0 := spot_x;
-    y0 := spot_y;
-    (y0 = y1).if {
-      result := line_h_until x1;
-    }.elseif {x0 = x1} then {
-      result := line_v_until y1;
-    } else {
-      result := line_h (x0,y0) until x1 | line_h (x0,y1) until x1;
-      ( y0 < y1 ).if {
-	result := result | (line_v  (x0,(y0 + 1)) until (y1 - 1)) | (line_v (x1,(y0 + 1)) until (y1 - 1));
-      } else {
-	result := result | (line_v (x0,(y1 + 1)) until (y0 - 1)) | (line_v (x1,(y1 + 1)) until (y0 - 1));
-      };
-    };
-    result
-  );
-    
-  - rectangle_to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    rectangle_to (x1,y1)
-  );
-  
-  - rectangle (x0,y0:INTEGER) to (x1,y1:INTEGER) :BOOLEAN <-
-  (
-    move_to (x0,y0);
-    rectangle_to (x1,y1)
-  );
-  
-  - rectangle (x0,y0:INTEGER) to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    rectangle (x0,y0) to (x1,y1)
-  );
-  
-  - rectangle_fill_to (x,y:INTEGER) :BOOLEAN <-
-  ( + x0,y0,x1,y1,tmp:INTEGER;
-    + col:UINTEGER_32;
-    + result:BOOLEAN;
-    
-    x0 := spot_x;
-    y0 := spot_y;
-    x1 := x;
-    y1 := y;
-    ( x0 > x1).if {
-      tmp := x0;
-      x0 := x1;
-      x1 := tmp;
-    };
-    
-    ( y0 > y1).if {
-      tmp := y0;
-      y0 := y1;
-      y1 := tmp;
-    };
-    
-    (( x0 > clip_x1 ) || { x1 < clip_x0 } || { y0 > clip_y1 } || { y1 < clip_y0 }).if {
-      result := FALSE;
-    } else {
-      result := TRUE;
-      
-      (clip_x0 > x0).if {
-	x0 := clip_x0;
-	result := FALSE;
-      };
-      (clip_y0 > y0).if { 
-	y0 := clip_y0;
-	result := FALSE;
-      };
-      ( clip_x1 < x1 ).if {
-	x1 := clip_x1;
-	result := FALSE;
-      };
-      (clip_y1 < y1).if {
-	y1 := clip_y1;
-	result := FALSE;
-      };            
-      col := rgbcolor;
-      y0.to y1 do { j:INTEGER;
-	line_h_hard (x0,j) until x1 color col;
-      };
-    };
-    result
-  );
-    
-  - rectangle_fill (x0,y0:INTEGER) to (x1,y1:INTEGER) :BOOLEAN <-
-  (
-    move_to (x0,y0);
-    rectangle_fill_to (x1,y1)
-  );
-  
-  - rectangle_fill (x0,y0:INTEGER) to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    rectangle_fill (x0,y0) to (x1,y1)
-  );
-  
-  //
-  // Circle
-  //
-  
-Section Private  
-  
-  - circle_points (x,y:INTEGER) centre (cx,cy:INTEGER) <-
-  (     
-    pixel_to ((cx+x),(cy+y));
-    pixel_to ((cx+x),(cy-y));
-    pixel_to ((cx+y),(cy+x));
-    pixel_to ((cx+y),(cy-x));
-    pixel_to ((cx-x),(cy+y));
-    pixel_to ((cx-x),(cy-y));
-    pixel_to ((cx-y),(cy+x));
-    pixel_to ((cx-y),(cy-x));
-  );
-  
-Section Public  
-  
-  - circle_fill_rayon r:INTEGER <-
-  ( + cx,cy,x,y,d,de,dse:INTEGER;
-    
-    cx := spot_x;
-    cy := spot_y;
-    x   := 0;
-    y   := r;
-    d   := 1 - r;
-    de  := 3;
-    dse := 5 - (r << 1);    
-    line_h ((cx-y),cy) until (cx+y);
-    {y > x}.while_do {
-      (d < 0).if {
-	d   := d   + de;
-	de  := de  + 2;
-	dse := dse + 2;
-	x   := x   + 1;
-	
-	line_h ((cx-y),(cy+x)) until (cx+y);
-	line_h ((cx-y),(cy-x)) until (cx+y);
-      } else {
-	d   := d + dse;
-	de  := de  + 2;
-	dse := dse + 4;
-	x   := x   + 1;
-	y   := y   - 1;
-	line_h ((cx-x),(cy+y)) until (cx+x);
-	line_h ((cx-x),(cy-y)) until (cx+x);
-	
-	line_h ((cx-y),(cy+x)) until (cx+y);
-	line_h ((cx-y),(cy-x)) until (cx+y);
-      };      
-    };
-  );
-  
-  - circle_fill (x,y:INTEGER) rayon r:INTEGER <-
-  (
-    move_to (x,y);
-    circle_fill_rayon r;
-  );
-  
-  - circle_fill (x,y:INTEGER) rayon r:INTEGER color col:UINTEGER_32 <-
-  (
-    color col;
-    circle_fill (x,y) rayon r;
-  );
-
-  - circle_rayon r:INTEGER <-
-  ( + cx,cy,x,y,d,de,dse:INTEGER;
-    
-    cx := spot_x;
-    cy := spot_y;
-    x   := 0;
-    y   := r;
-    d   := 1 - r;
-    de  := 3;
-    dse := 5 - (r << 1);
-    circle_points (x,y) centre (cx,cy);
-    {y > x}.while_do {
-      (d < 0).if {
-	d   := d   + de;
-	de  := de  + 2;
-	dse := dse + 2;
-	x   := x   + 1;
-      } else {
-	d   := d + dse;
-	de  := de  + 2;
-	dse := dse + 4;
-	x   := x   + 1;
-	y   := y   - 1;
-      };
-      circle_points (x,y) centre (cx,cy);
-    };
-  );
-  
-  - circle (x,y:INTEGER) rayon r:INTEGER <-
-  (
-    move_to (x,y);
-    circle_rayon r;
-  );
-  
-  - circle (x,y:INTEGER) rayon r:INTEGER color col:UINTEGER_32 <-
-  (
-    color col;
-    circle (x,y) rayon r;
-  );
-  
-  //
-  // Spline
-  //
-  
-Section Private  
-  
-  - delta_spline:REAL_16_16 := 32768.to_raw_real_16_16;
-  
-Section Public  
-  
-  - spline_w1 (px0,py0:INTEGER) w2 (px1,py1:INTEGER) to (x1,y1:INTEGER) :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + x0,y0,d_x,d_y:INTEGER;
-    + num_points:INTEGER;
-    // Derivatives of x(t) and y(t).
-    + x, dx, ddx, dddx:REAL_16_16; 
-    + y, dy, ddy, dddy:REAL_16_16;
-    // Temp variables used in the setup.
-    + dt, dt2, dt3:REAL_16_16;
-    + xdt2_term, xdt3_term:REAL_16_16;
-    + ydt2_term, ydt3_term:REAL_16_16;
-    
-    x0 := spot_x;
-    y0 := spot_y;
-        
-    d_x := px0 - x0;
-    d_y := py0 - y0;
-    num_points := (d_x*d_x + d_y*d_y).sqrt;      
-    
-    d_x := px1 - px0;
-    d_y := py1 - py0;
-    num_points := num_points + (d_x*d_x + d_y*d_y).sqrt; 
-    
-    d_x := x1 - px1;
-    d_y := y1 - py1;
-    num_points := (num_points + (d_x*d_x + d_y*d_y).sqrt).sqrt;
-    num_points := num_points + (num_points >> 2); // * 1.25 .sqrt
-    
-    
-    (num_points > 128).if {
-      num_points := 128; // Max points
-    };
-    
-    (num_points < 2).if {
-      num_points := 2;   // Min points
-    };
-    
-    dt := 1.to_real_16_16 /# (num_points - 1);
-    dt2 := dt * dt;
-    dt3 := dt2 * dt;
-    
-    // x coordinates.
-    xdt2_term := dt2 *# ((px1 - px0 * 2 + x0) * 3);
-    xdt3_term := dt3 *# (x1 + ((px0 - px1) * 3) -x0);
-    
-    dddx := xdt3_term *# 6;
-    ddx  := xdt3_term *# -6 + xdt2_term *# 2;
-    dx   := xdt3_term - xdt2_term + dt *# ((px0 - x0)*3);  
-    x    := x0.to_real_16_16;
-    
-    // y coordinates.
-    ydt2_term := dt2 *# ((py1 - py0 * 2 + y0) * 3);
-    ydt3_term := dt3 *# (y1 + ((py0 - py1) * 3) - y0);
-    
-    dddy := ydt3_term *# 6;
-    ddy  := ydt3_term *# -6 + ydt2_term *# 2;
-    dy   := ydt3_term - ydt2_term + dt *# ((py0 - y0)*3); 
-    y    := y0.to_real_16_16;
-        
-    x := x + delta_spline;
-    y := y + delta_spline;
-    
-    1.to (num_points - 1) do { i:INTEGER;
-      ddx := ddx + dddx;
-      dx := dx + ddx;
-      x := x + dx;
-      ddy := ddy + dddy;
-      dy := dy + ddy;
-      y := y + dy;
-      result:= result | line_to ((x.to_integer),(y.to_integer)); 
-    };    
-    result    
-  );
-  
-  - spline_w1 (px0,py0:INTEGER) w2 (px1,py1:INTEGER) to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    spline_w1 (px0,py0) w2 (px1,py1) to (x1,y1)
-  );
-  
-  
-  - spline (x0,y0:INTEGER) w1 (px0,py0:INTEGER) w2 (px1,py1:INTEGER) to (x1,y1:INTEGER) :BOOLEAN <-
-  (
-    move_to (x0,y0);
-    spline_w1 (px0,py0) w2 (px1,py1) to (x1,y1)
-  );
-  
-  
-  - spline (x0,y0:INTEGER) w1 (px0,py0:INTEGER) w2 (px1,py1:INTEGER) to (x1,y1:INTEGER) color col:UINTEGER_32 :BOOLEAN <-
-  (
-    color col;
-    spline (x0,y0) w1 (px0,py0) w2 (px1,py1) to (x1,y1)
-  );
-  
-  //*****************************************************************************
-  //*                         POLYGONE COMPLEXE                                 *
-  //* V.4.0 : Il n'y a plus de contrainte de sens comme dans la version 3.0     *
-  //*         Nouvelle algo made in `moi'...                                    *
-  //*         Il faut juste faire attention à appeler dans l'ordre suivant :    *
-  //*         => poly_move_to poly_line_to ... poly_trace                       *
-  //*                                                                           *
-  //* Rmq. : Il reste des optimisations à faire pour le tri (qsort) et utiliser *
-  //*        des MAP_FAST_ARRAY capable de s'agrandir dynamiquement ...        *
-  //*                                                                           *
-  //*                                                           BeN inside      *
-  //*****************************************************************************
-  
-Section Private  
-  
-  + edges:FAST_ARRAY[EDGE]; // BSBS: A optimiser avec un MAP_FAST_ARRAY ... quand il y aura add_last, resize...
-
-  + edges_upper:INTEGER;
-  + poly_ymax:INTEGER := INTEGER.minimum.to_integer;
-  
-  + poly_list_y:FAST_ARRAY[EDGE];
-    
-  + begin_y:EDGE;  
-  + begin_idx:INTEGER;
-  
-  + last_y:EDGE;  
-  + last_idx:INTEGER;
-  
-  + x_origin:INTEGER;
-  + y_origin:INTEGER;
-  
-Section Private  
-  
-  - display_poly <-
-  ( + edge:EDGE;
-    
-    0.to (poly_list_y.upper) do { i:INTEGER;
-      edge := poly_list_y.item i;
-      {edge != NULL}.while_do {
-	edge.display;
-	';'.print;
-	edge := edge.next_y;
-      };
-      '\n'.print;
-    };
-  );
-  
-Section Private  
-  
-  - connect_first <-
-  (
-    poly_line_to (x_origin,y_origin);
-    ((begin_y!=NULL) && {begin_y.is_down = last_y.is_down}).if {
-      // Connecting.
-      (begin_y.is_down).if {
-	// Add first list. 
-	last_y.set_next_y begin_y;	
-	poly_list_y.put (poly_list_y.item last_idx) to begin_idx;
-      } else {
-	// Add last list.
-	begin_y.set_next_y last_y;
-      };
-      poly_list_y.remove last_idx;
-    };
-  );    
-  
-  - sort_list_y <-
-  // Bubble sort :-( => BSBS: Optmize with Quick sort...
-  ( + low,up,idx,upper:INTEGER;
-    + swap:BOOLEAN;
-    
-    upper := poly_list_y.upper-1;
-    
-    low := 0;
-    up  := upper;
-    {
-      swap:=FALSE;
-      low.to up do { i:INTEGER;	
-	(poly_list_y.item i.y0 > poly_list_y.item (i+1).y0).if {
-	  poly_list_y.swap i with (i+1);
-	  swap := TRUE;
-	};
-	
-	idx := upper - i;
-	(poly_list_y.item idx.y0 > poly_list_y.item (idx+1).y0).if {
-	  poly_list_y.swap idx with (idx+1);
-	  swap := TRUE;
-	};		
-      };
-      up  := up - 1;
-      low := low + 1;
-    }.do_while {swap};
-  );
-
-Section Public  
-  
-  - poly_move_to (x,y:INTEGER) <-
-  (     
-    
-    (edges = NULL).if {
-      poly_list_y := FAST_ARRAY[EDGE].create_with_capacity 16;
-      edges := FAST_ARRAY[EDGE].create 64;      
-      0.to 63 do { n:INTEGER;
-	edges.put (EDGE.clone) to n;
-      };
-    };
-  
-    (edges_upper != 0).if {      
-      connect_first;
-    };
-    move_to (x,y); 
-    x_origin := x;
-    y_origin := y;
-    begin_y  := NULL;
-    last_y   := NULL;
-    
-    poly_ymax := poly_ymax.max y;
-  );
-  
-  - poly_line_to (x1,y1:INTEGER) <-
-  ( + edge,edge2:EDGE;
-    + x0,y0:INTEGER;
-    
-    x0:=spot_x; 
-    y0:=spot_y; 
-    
-    ((x0!=x1) || {y0!=y1}).if {
-      
-      move_to (x1,y1); 
-            
-      (edges_upper >= (edges.upper-4)).if { // BSBS: A optimiser avec MAP_ARRAY ...
-	// Append 16 Edges.	
-	0.to 15 do { j:INTEGER;
-	  edges.add_last (EDGE.clone);
-	};
-      };
-            
-      (y0=y1).if { 
-	// Flat.
-	edge  := edges.item edges_upper;	
-	edges_upper := edges_upper + 1;
-	poly_list_y.add_last edge;
-	edge2 := edges.item edges_upper;
-	edges_upper := edges_upper + 1;
-	poly_list_y.add_last edge2;
-	
-	(x0 < x1).if {
-	  edge .make (x0,y0) add 1;
-	  edge2.make (x1,y1) add (-1);
-	} else {
-	  edge .make (x0,y0) add (-1);
-	  edge2.make (x1,y1) add 1;
-	};
-      } else { 
-	// Line.	
-	edge  := edges.item edges_upper;
-	edges_upper := edges_upper + 1;
-	edge.make (x0,y0) to (x1,y1);
-	
-	(begin_y=NULL).if {
-	  begin_idx := poly_list_y.count;
-	  begin_y   := edge;
-	};
-	
-	((last_y=NULL) || {last_y.is_down != edge.is_down}).if {
-	  // New line_y.
-	  poly_list_y.add_last edge;
-	  last_idx := poly_list_y.upper;
-	  last_y   := edge;
-	  poly_ymax := poly_ymax.max y1;
-	} else {
-	  // Continue line_y.
-	  (edge.is_down).if {
-	    // Add last.
-	    last_y.set_next_y edge;
-	    poly_ymax := poly_ymax.max y1;
-	  } else {
-	    // Add first.
-	    poly_list_y.put edge to last_idx;
-	    edge.set_next_y last_y;	    
-	  };
-	  last_y := edge;
-	};
-      };
-    };    
-  );
-  
-  - poly_rectangle (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    poly_move_to (x0,y0);
-    poly_line_to (x1,y0);
-    poly_line_to (x1,y1);
-    poly_line_to (x0,y1);
-    poly_line_to (x0,y0);
-  );
-
-  - poly_spline_w1 (px0,py0:INTEGER) w2 (px1,py1:INTEGER) to (x1,y1:INTEGER) <-
-  ( + x0,y0,d_x,d_y:INTEGER;
-    + num_points:INTEGER;
-    // Derivatives of x(t) and y(t).
-    + x, dx, ddx, dddx:REAL_16_16; 
-    + y, dy, ddy, dddy:REAL_16_16;
-    // Temp variables used in the setup.
-    + dt, dt2, dt3:REAL_16_16;
-    + xdt2_term, xdt3_term:REAL_16_16;
-    + ydt2_term, ydt3_term:REAL_16_16;
-    
-    x0 := spot_x;
-    y0 := spot_y;
-    
-    d_x := px0 - x0;
-    d_y := py0 - y0;
-    num_points := (d_x*d_x + d_y*d_y).sqrt;  
-    
-    d_x := px1 - px0;
-    d_y := py1 - py0;
-    num_points := num_points + (d_x*d_x + d_y*d_y).sqrt; 
-    
-    d_x := x1 - px1;
-    d_y := y1 - py1;
-    num_points := (num_points + (d_x*d_x + d_y*d_y).sqrt).sqrt;
-    num_points := num_points + (num_points >> 2); // * 1.25 .sqrt
-    
-    num_points := num_points.min 128.max 2;
-    
-    dt := 1.to_real_16_16 /# (num_points - 1);
-    dt2 := dt * dt;
-    dt3 := dt2 * dt;
-    
-    // x coordinates.
-    xdt2_term := dt2 *# ((px1 - px0 * 2 + x0) * 3);
-    xdt3_term := dt3 *# (x1 + ((px0 - px1) * 3) -x0);
-    
-    dddx := xdt3_term *# 6;
-    ddx  := xdt3_term *# -6 + xdt2_term *# 2;
-    dx   := xdt3_term - xdt2_term + dt *# ((px0 - x0)*3);  
-    x    := x0.to_real_16_16;
-    
-    // y coordinates.
-    ydt2_term := dt2 *# ((py1 - py0 * 2 + y0) * 3);
-    ydt3_term := dt3 *# (y1 + ((py0 - py1) * 3) - y0);
-    
-    dddy := ydt3_term *# 6;
-    ddy  := ydt3_term *# -6 + ydt2_term *# 2;
-    dy   := ydt3_term - ydt2_term + dt *# ((py0 - y0)*3); 
-    y    := y0.to_real_16_16;
-        
-    x := x + delta_spline;
-    y := y + delta_spline;
-    
-    1.to (num_points - 1) do { i:INTEGER;
-      ddx := ddx + dddx;
-      dx  := dx + ddx;
-      x   := x + dx;
-      ddy := ddy + dddy;
-      dy  := dy + ddy;
-      y   := y + dy;
-      poly_line_to (x.to_integer,y.to_integer); 
-    };    
-  );
-  
-  - poly_ellipse (x,y:INTEGER) rays (ray_x,ray_y:INTEGER) <-
-  ( + x0,y0,x1,y1,dx,dy:INTEGER;
-    x0 := x - ray_x;
-    x1 := x + ray_x;
-    y0 := y - ray_y;
-    y1 := y + ray_y;
-    dx := (ray_x * 5) / 9;
-    dy := (ray_y * 5) / 9;
-    
-    poly_move_to (x,y0);    
-    poly_spline_w1 (x+dx,y0) w2 (x1,y-dy) to (x1,y) ;
-    poly_spline_w1 (x1,y+dy) w2 (x+dx,y1) to (x ,y1);
-    poly_spline_w1 (x-dx,y1) w2 (x0,y+dy) to (x0,y) ;
-    poly_spline_w1 (x0,y-dy) w2 (x-dx,y0) to (x ,y0);     
-  );
-  
-  - poly_trace <-
-  ( + edge,next_edge,edgep:EDGE;
-    + x_edges:EDGE;
-    + x0,x1,new_x:INTEGER;
-    + idx_y:INTEGER;
-    + trace:INTEGER;
-    + line :INTEGER;    
-    
-    (edges_upper != 0).if {
-      (poly_ymax >= clip_y0).if {
-        // Connexion with first point.    
-        connect_first;
-        
-        // Optimize clip_y0
-        (poly_list_y.upper).downto 0 do { j:INTEGER;
-          edge := poly_list_y.item j;
-          {(edge != NULL) && {edge.y1 < clip_y0}}.while_do {
-            edge := edge.next_y;
-          };
-          (edge = NULL).if {
-            poly_list_y.remove j;	  
-          } else {
-            poly_list_y.put edge to j;	  
-          };
-        };
-        
-        // Sort on Y.    
-        sort_list_y;
-        
-        poly_ymax := poly_ymax.min clip_y1;
-        line := 1;
-        // for each scanline in the polygon.
-        (poly_list_y.first.y0).to poly_ymax do { y:INTEGER;
-          // Active edges.
-          {(idx_y <= poly_list_y.upper) && {poly_list_y.item idx_y.y0 = y}}.while_do {
-            x_edges := poly_list_y.item idx_y.add x_edges;
-            idx_y   := idx_y + 1;
-          };
-          
-          // Draw horizontal line. 
-          x1:=INTEGER.minimum.to_integer;
-          edge:=x_edges;
-          {edge!=NULL}.while_do {
-            next_edge:=edge.next_x;	
-            // Trace.
-            (y >= clip_y0).if { 
-              
-              (trace = 0).if {
-                // Begin point.    
-                new_x := (edge.x+127)>>8;
-                ((new_x != x1) && {new_x != (x1 + 1)}).if {
-                  ((x0 <= clip_x1) && {x1 >= clip_x0}).if { 
-                    x0:=x0.max clip_x0;
-                    x1:=x1.min clip_x1;
-                    line_h_hard (x0,y) until x1 color rgbcolor; 
-                  };  
-                  x0 := new_x;
-                };
-              };
-              
-              (edge.is_point).if {
-                trace := trace + edge.dx; 
-              } else {
-                trace := trace + line;
-                line  := - line;
-              };
-              
-              (trace = 0).if {
-                // End point.
-                x1 := (edge.x+128)>>8;	    
-              };	  
-            };
-            
-            // Inc edges.	  
-            (edge.width!=0).if { 	    
-              edge.new_step;
-              
-              // Sort with X :
-              edgep:=edge.prev_x;
-              {(edgep!=NULL) && {edge.x<edgep.x}}.while_do {
-                edgep:=edgep.prev_x;
-              };
-              (edgep!=edge.prev_x).if {
-                edge.prev_x.set_next_x (edge.next_x);
-                (edge.next_x!=NULL).if {
-                  edge.next_x.set_prev_x (edge.prev_x);
-                };
-                edge.set_prev_x edgep;
-                (edgep!=NULL).if {
-                  edge.set_next_x (edgep.next_x);
-                  edgep.set_next_x edge;
-                } else {
-                  edge.set_next_x x_edges;
-                  x_edges:=edge;
-                };
-                (edge.next_x!=NULL).if {
-                  edge.next_x.set_prev_x edge;
-                };
-              };
-            } else {
-              // Next line.
-              x_edges:=edge.next_line x_edges; 
-            };
-            edge := next_edge;
-          };
-          ((x0 <= clip_x1) && {x1 >= clip_x0}).if { 
-            x0:=x0.max clip_x0;
-            x1:=x1.min clip_x1;
-            line_h_hard (x0,y) until x1 color rgbcolor; 
-          };
-        };
-      };
-    };
-    // Init structure for next.
-    edges_upper:=0;
-    poly_list_y.clear;
-    begin_y:=NULL;
-    poly_ymax:=INTEGER.minimum.to_integer;
-  );
-  
-  - poly_trace_color col:UINTEGER_32 <-
-  ( 
-    color col;
-    poly_trace;
-  );
-  
-  - put_bitmap bmp:ABSTRACT_BITMAP to (x,y:INTEGER) <-
-  (
-    deferred;
-  );
-
-  - put_bitmap bmp:ABSTRACT_BITMAP to (x,y:INTEGER) scale (scale_x,scale_y:REAL_16_16) <-  
-  (
-    deferred;
-  );
-  
-Section Public
-  
-  // For demo ... :-)
-  
-  - font_width string:ABSTRACT_STRING :INTEGER <-
-  ( 
-    font_width string size (string.upper)
-  );
-  
-  - font_width_letter char:CHARACTER :INTEGER <-
-  ( + offset_begin,offset_end:INTEGER;
-    + car:INTEGER;
-
-    car := char.to_integer;
-    ((car < 32) || {car >= 127}).if {
-      car := 0;
-    } else {
-      car := car-32;
-    };
-    offset_begin:=`__index_font[@car]`:INTEGER;
-    offset_end  :=`__index_font[@car+1]`:INTEGER;
-    offset_end - offset_begin + 1
-  );
-
-  - font_width string:ABSTRACT_STRING size n:INTEGER :INTEGER <-
-  (     
-    font_width string at (string.lower) to n
-  );
-  
-  - font_width string:ABSTRACT_STRING at beg:INTEGER to end:INTEGER :INTEGER <-
-  ( + result:INTEGER;
-
-    beg.to end do { j:INTEGER;
-      result:=result + font_width_letter (string.item j);
-    };
-    result
-  );
-  
-  - print_char c:CHARACTER to (x,y:INTEGER) :INTEGER <-
-  ( + pix_x,pix_y,offset_begin,offset_end:INTEGER;
-    + bit_count:UINTEGER_16;
-    + sz_letter:INTEGER;
-    + car:UINTEGER_8;
-    
-    car := c.to_uinteger_8;
-    ((y <= clip_y1) && {(y+15) >= clip_y0} && {x <= clip_x1}).if {
-      pix_x:=x;      	
-      ((car<32) || {car>=127}).if {
-	car:=0;
-      } else {
-	car:=car-32;
-      };
-      offset_begin:=`__index_font[@car]`:INTEGER;
-      offset_end  :=`__index_font[@car+1]`:INTEGER;
-      sz_letter := offset_end-offset_begin + 1;
-      ((pix_x + sz_letter) > clip_x0).if {
-	{offset_begin != offset_end}.while_do {
-	  (pix_x.in_range clip_x0 to clip_x1).if {
-	    pix_y:=y;
-	    bit_count:=1;
-	    {bit_count != 0}.while_do {
-	      (pix_y.in_range clip_y0 to clip_y1).if {
-		((`__graph_font[@offset_begin]`:UINTEGER_16 & bit_count)!=0).if {
-		  pixel_hard (pix_x,pix_y) color rgbcolor;
-		};		
-	      };
-	      pix_y:=pix_y+1;
-	      bit_count:=bit_count << 1;
-	    };
-	  };
-	  pix_x:=pix_x+1;
-	  offset_begin:=offset_begin+1;
-	};
-	pix_x := pix_x + 1;
-      } else {
-	pix_x := pix_x + sz_letter;
-      };    
-    };    
-    pix_x
-  );
-  
-  - print string:ABSTRACT_STRING at b:INTEGER to e:INTEGER to (x,y:INTEGER) :INTEGER <-
-  ( + pix_x,pix_y,offset_begin,offset_end:INTEGER;
-    + bit_count:UINTEGER_16;
-    + car,sz_letter:INTEGER;
-    
-    ((y <= clip_y1) && {(y+15) >= clip_y0} && {x <= clip_x1}).if {
-      pix_x:=x;
-      b.to e do { j:INTEGER;
-	car:=string.item j.to_integer;
-	((car<32) || {car>=127}).if {
-	  car:=0;
-	} else {
-	  car:=car-32;
-	};
-	offset_begin:=`__index_font[@car]`:INTEGER;
-	offset_end  :=`__index_font[@car+1]`:INTEGER;
-	sz_letter := offset_end-offset_begin + 1;
-	((pix_x + sz_letter) > clip_x0).if {
-	  {offset_begin != offset_end}.while_do {
-	    (pix_x.in_range clip_x0 to clip_x1).if {
-	      pix_y:=y;
-	      bit_count:=1;
-	      {bit_count != 0}.while_do {
-		(pix_y.in_range clip_y0 to clip_y1).if {
-		  ((`__graph_font[@offset_begin]`:UINTEGER_16 & bit_count)!=0).if {
-		    pixel_hard (pix_x,pix_y) color rgbcolor;
-		  };		
-		};
-		pix_y:=pix_y+1;
-		bit_count:=bit_count << 1;
-	      };
-	    };
-	    pix_x:=pix_x+1;
-	    offset_begin:=offset_begin+1;
-	  };
-	  pix_x := pix_x + 1;
-	} else {
-	  pix_x := pix_x + sz_letter;
-	};	
-      };
-    };
-    pix_x
-  );
-
-  - print string:ABSTRACT_STRING to (x,y:INTEGER) :INTEGER <-
-  ( 
-    print string at (string.lower) to (string.upper) to (x,y)
-  );
diff --git a/lib/graphics/low_level/abstract_bmp_line.li b/lib/graphics/low_level/abstract_bmp_line.li
deleted file mode 100644
index 01ff2e5..0000000
--- a/lib/graphics/low_level/abstract_bmp_line.li
+++ /dev/null
@@ -1,95 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ABSTRACT_BMP_LINE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic bitmap line";
-  
-Section Inherit
-  
-  - parent_arrayed:ARRAYED := ARRAYED;
-    
-Section Public
-  
-  - lower:INTEGER := 0;
-  
-  + upper:INTEGER;
-  
-  + capacity:INTEGER;
-  
-  - count:INTEGER <- (upper + 1);
-    
-  //
-  // Modification
-  //
-  
-  - clear <-
-  (
-    upper := -1;
-  );
-   
-  //
-  // Put.
-  //
-  
-  - put col:UINTEGER_32 to n:INTEGER <-
-  ( 
-    deferred;
-  );
-  
-  - put col:UINTEGER_32 from idx_begin:INTEGER to idx_end:INTEGER <-   
-  (  
-    deferred;
-  );
-  
-  - put bmp:ABSTRACT_BMP_LINE offset ofs:INTEGER from idx_begin:INTEGER to idx_end:INTEGER <-
-  ( 
-    deferred;
-  );
-  
-  //
-  // Get.
-  //
-  
-  - get_color n:INTEGER :UINTEGER_32 <-
-  ( 
-    deferred;
-  );
-  
-  - item_8  n:INTEGER :PIXEL_8  <- ( deferred; PIXEL_8);
-  
-  - item_15 n:INTEGER :PIXEL_15 <- ( deferred; PIXEL_15);
-
-  - item_16 n:INTEGER :PIXEL_16 <- ( deferred; PIXEL_16);
-
-  - item_24 n:INTEGER :PIXEL_24 <- ( deferred; PIXEL_24);
-
-  - item_32 n:INTEGER :PIXEL_32 <- ( deferred; PIXEL_32);
-  
-  //
-  // Arrayed consideration.
-  //
-  
-  - get_storage:NATIVE_ARRAY[UINTEGER_8] <- ( deferred; NULL); 
diff --git a/lib/graphics/low_level/pixel.li b/lib/graphics/low_level/pixel.li
deleted file mode 100644
index 3c908d1..0000000
--- a/lib/graphics/low_level/pixel.li
+++ /dev/null
@@ -1,114 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := PIXEL;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Generic Pixel.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - red:UINTEGER_8   <- (deferred; 0);
-  // Abstracted red component on 8 bits.
-
-  - green:UINTEGER_8 <- (deferred; 0);
-  // Abstracted green component on 8 bits.
-
-  - blue:UINTEGER_8  <- (deferred; 0);
-  // Abstracted blue component on 8 bits.
-  
-  - get_raw col:UINTEGER_32 :UINTEGER_32 <- (deferred; 0);
-  
-  //
-  // Access color 32 bits.
-  //
-  
-  - rgbcolor:UINTEGER_32 <-
-  (
-    (red.to_uinteger_32 << 16) | (green.to_uinteger_32 << 8) | blue
-  );
-  
-  //
-  // Modification 32bits.
-  //
-  
-  - make col:UINTEGER_32 <- deferred;
-  
-  - make_rgb (r,g,b:UINTEGER_8) <- deferred;  // For speed conversion between pixels
-  
-  //
-  // Consultation geometry.
-  //
-  
-  - size:UINTEGER_8 <- ( deferred; 0); 
-  - red_size:UINTEGER_8 <- ( deferred; 0);      
-  - red_pos:UINTEGER_8 <- ( deferred; 0);
-  - green_size:UINTEGER_8 <- ( deferred; 0);
-  - green_pos:UINTEGER_8 <- ( deferred; 0);
-  - blue_size:UINTEGER_8 <- ( deferred; 0);
-  - blue_pos:UINTEGER_8 <- ( deferred; 0);
-  - reserved_size:UINTEGER_8 <- ( deferred; 0);
-  - reserved_pos:UINTEGER_8 <- ( deferred; 0);
-  
-  //
-  // Conversion.
-  //
-  
-  - to_pixel_8:PIXEL_8 <- 
-  (     
-    PIXEL_8.create_rgb (red,green,blue)        
-  );
-
-  - to_pixel_15:PIXEL_15 <-
-  ( 
-    PIXEL_15.color_rgb (red,green,blue)
-  );
-  
-  - to_pixel_16:PIXEL_16 <-
-  (     
-    PIXEL_16.color_rgb (red,green,blue)
-  );
-
-  - to_pixel_24:PIXEL_24 <-
-  (     
-    PIXEL_24.color_rgb (red,green,blue)
-  );
-
-  - to_pixel_32:PIXEL_32 <-
-  (     
-    PIXEL_32.color_rgb (red,green,blue)
-  );
-  
-  //
-  // Display.
-  //
-  
-  - print <- deferred;
-
-
-
diff --git a/lib/graphics/pixel_15.li b/lib/graphics/pixel_15.li
deleted file mode 100644
index 673b0d5..0000000
--- a/lib/graphics/pixel_15.li
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded PIXEL_15;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Pixel on 15 bits";
-    
-Section Insert
-  
-  + parent_pixel:Expanded PIXEL;
-  
-Section Mapping  
-  
-  + real_color:UINTEGER_16;
-  
-Section Private
-      
-  - convert_5_to_8:FAST_ARRAY[UINTEGER_8] :=
-  ( + result:FAST_ARRAY[UINTEGER_8];
-    + value:UINTEGER_8;
-    
-    result:=FAST_ARRAY[UINTEGER_8].create 32;
-    0.to 31 do { j:INTEGER;
-      result.put value to j;
-      value := value + 8;      
-    };
-    result
-  );
-        
-Section Public
-  
-  - red:UINTEGER_8 <- 
-  (
-    convert_5_to_8.item (real_color >> 10)
-  );
-  
-  - green:UINTEGER_8 <- 
-  (
-    convert_5_to_8.item ((real_color >> 5) & 01Fh)
-  );
-
-  - blue:UINTEGER_8 <- 
-  (
-    convert_5_to_8.item (real_color & 01Fh)
-  );
-  
-  - get_raw col:UINTEGER_32 :UINTEGER_32 <- 
-  (
-    ((col & 0F80000h) >> 9) |
-    ((col & 000F800h) >> 6) |
-    ((col & 00000F8h) >> 3)
-  );
-  
-  - make col:UINTEGER_32 <-
-  (   
-    real_color := (
-      ((col & 0F80000h) >> 9) |
-      ((col & 000F800h) >> 6) |
-      ((col & 00000F8h) >> 3)
-    ).to_uinteger_16;
-  );
-  
-  - make_rgb (r,g,b:UINTEGER_8) <-
-  (
-    real_color := (
-      ((r & 0F8h).to_uinteger_16 << 7) |
-      ((g & 0F8h).to_uinteger_16 << 2) |
-      ((b & 0F8h).to_uinteger_16 >> 3)
-    );
-  );
-    
-  - size:UINTEGER_8          := 16; 
-  - red_size:UINTEGER_8      := 5;
-  - red_pos:UINTEGER_8       := 10;
-  - green_size:UINTEGER_8    := 5;
-  - green_pos:UINTEGER_8     := 5;
-  - blue_size:UINTEGER_8     := 5;
-  - blue_pos:UINTEGER_8      := 0;
-  - reserved_size:UINTEGER_8 := 1;
-  - reserved_pos:UINTEGER_8  :=15;
-    
-  - to_pixel_15:PIXEL_15 <- Self;
-  
-
-  
-
diff --git a/lib/graphics/pixel_16.li b/lib/graphics/pixel_16.li
deleted file mode 100644
index 99b2415..0000000
--- a/lib/graphics/pixel_16.li
+++ /dev/null
@@ -1,123 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded PIXEL_16;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Pixel on 16 bits.";
-    
-Section Insert
-  
-  + parent_pixel:Expanded PIXEL;
-  
-Section Mapping  
-  
-  + real_color:UINTEGER_16;
-  
-Section Private  
-    
-  - convert_5_to_8:FAST_ARRAY[UINTEGER_8] :=
-  ( + result:FAST_ARRAY[UINTEGER_8];
-    + value:UINTEGER_8;
-    
-    result:=FAST_ARRAY[UINTEGER_8].create 32;    
-    0.to 31 do { j:INTEGER;
-      result.put value to j;
-      value := value + 8;
-    };
-    result
-  );
-  
-  - convert_6_to_8:FAST_ARRAY[UINTEGER_8] :=
-  ( + result:FAST_ARRAY[UINTEGER_8];
-    + value:UINTEGER_8;
-    
-    result:=FAST_ARRAY[UINTEGER_8].create 64;    
-    0.to 63 do { j:INTEGER;
-      result.put value to j;
-      value := value + 4;
-    };
-    result
-  );
-      
-Section Public
-    
-  - red:UINTEGER_8 <- 
-  (
-    (((real_color >> 11) & 1Fh)  << 3).to_uinteger_8
-    //convert_5_to_8.item (real_color >> 11)
-  );
-  
-  - green:UINTEGER_8 <- 
-  (
-    (((real_color >> 5) & 3Fh) << 2).to_uinteger_8
-    //convert_6_to_8.item ((real_color >> 5) & 03Fh)
-  );
-
-  - blue:UINTEGER_8 <- 
-  (
-    ((real_color & 1Fh) << 3).to_uinteger_8
-//    convert_5_to_8.item (real_color & 01Fh)
-  );
-  
-  - get_raw col:UINTEGER_32 :UINTEGER_32 <-
-  (
-    ((col & 0F80000h) >> 8) |
-    ((col & 000FC00h) >> 5) |
-    ((col & 00000F8h) >> 3)
-  );
-  
-  - make col:UINTEGER_32 <-
-  (     
-    real_color := (
-      ((col & 0F80000h) >> 8) |
-      ((col & 000FC00h) >> 5) |
-      ((col & 00000F8h) >> 3)
-    ).to_uinteger_16;
-  );
-  
-  - color_rgb (r,g,b:UINTEGER_8) <-
-  ( 
-    real_color := (
-      ((r & 0F8h).to_uinteger_16 << 8) |
-      ((g & 0FCh).to_uinteger_16 << 3) |
-      ((b & 0F8h).to_uinteger_16 >> 3)
-    );
-  );
-  
-  - size:UINTEGER_8       := 16; 
-  - red_size:UINTEGER_8   := 5;
-  - red_pos:UINTEGER_8    := 11;
-  - green_size:UINTEGER_8 := 6;
-  - green_pos:UINTEGER_8  := 5;
-  - blue_size:UINTEGER_8  := 5;
-  - blue_pos:UINTEGER_8   := 0;
-  - reserved_size:UINTEGER_8 :=0;
-  - reserved_pos:UINTEGER_8  :=0;
-    
-  - to_pixel_16:PIXEL_16 <- Self;
-
-
-
-
diff --git a/lib/graphics/pixel_24.li b/lib/graphics/pixel_24.li
deleted file mode 100644
index 4e9ad8e..0000000
--- a/lib/graphics/pixel_24.li
+++ /dev/null
@@ -1,101 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded PIXEL_24;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Pixel on 24 bits.";
-    
-Section Insert
-  
-  - parent_pixel:PIXEL := PIXEL;
-  
-Section Mapping
-  
-  + map_blue:UINTEGER_8;
-  
-  + map_green:UINTEGER_8;
-
-  + map_red:UINTEGER_8;
-  
-Section Public
-  
-  - blue:UINTEGER_8 <- map_blue;
-  
-  - green:UINTEGER_8 <- map_green;
-
-  - red:UINTEGER_8 <- map_red;
-  
-  - get_raw col:UINTEGER_32 :UINTEGER_32 <-
-  (
-    col
-  );
-  
-  - get_color:UINTEGER_32 <-
-  ( + result:UINTEGER_32;
-    result := map_red;
-    result := (result << 8) | map_green;
-    result := (result << 8) | map_blue;
-    result
-  );
-    
-  - make col:UINTEGER_32 <-
-  (
-    map_red   :=  (col >> 16).to_uinteger_8;
-    map_green := ((col & 00FF00h) >> 8).to_uinteger_8;
-    map_blue  :=  (col & 0000FFh).to_uinteger_8;
-  );  
-  
-  - make_rgb (r,g,b:UINTEGER_8) <-
-  (
-    map_red := r;
-    map_green := g;
-    map_blue := b;
-  );
-  
-  - size:UINTEGER_8       := 24; 
-  - red_size:UINTEGER_8   := 8;
-  - red_pos:UINTEGER_8    := 16;
-  - green_size:UINTEGER_8 := 8;
-  - green_pos:UINTEGER_8  := 8;
-  - blue_size:UINTEGER_8  := 8;
-  - blue_pos:UINTEGER_8   := 0;
-  - reserved_size:UINTEGER_8 :=0;
-  - reserved_pos:UINTEGER_8  :=0;
-        
-  - to_pixel_24:PIXEL_24 <- Self;
-  
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/graphics/pixel_32.li b/lib/graphics/pixel_32.li
deleted file mode 100644
index 9d64d21..0000000
--- a/lib/graphics/pixel_32.li
+++ /dev/null
@@ -1,89 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded PIXEL_32;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Pixel on 32 bits.";
-  
-Section Insert
-  
-  + parent_pixel:Expanded PIXEL;
-  
-Section Mapping
-  
-  + map_blue:UINTEGER_8;
-
-  + map_green:UINTEGER_8;
-
-  + map_red:UINTEGER_8;
-    
-  + map_alpha:UINTEGER_8;
-  
-Section Public
-  
-  - blue:UINTEGER_8 <- map_blue;
-  
-  - green:UINTEGER_8 <- map_green;
-
-  - red:UINTEGER_8 <- map_red;
-  
-  - get_raw col:UINTEGER_32 :UINTEGER_32 <-
-  (
-    col
-  );
-  
-  - make col:UINTEGER_32 <-
-  (
-    map_alpha := ((col & 0FF000000h) >> 24).to_uinteger_8;
-    map_red   := ((col & 000FF0000h) >> 16).to_uinteger_8;
-    map_green := ((col & 00000FF00h) >>  8).to_uinteger_8;
-    map_blue  :=  (col & 0000000FFh).to_uinteger_8;    
-  );
-  
-  - make_rgb (r,g,b:UINTEGER_8) <-
-  (
-    map_red   := r;
-    map_green := g;
-    map_blue  := b;
-  );
-  
-  - size:UINTEGER_8       := 32; 
-  - red_size:UINTEGER_8   := 8;
-  - red_pos:UINTEGER_8    := 16;
-  - green_size:UINTEGER_8 := 8;
-  - green_pos:UINTEGER_8  := 8;
-  - blue_size:UINTEGER_8  := 8;
-  - blue_pos:UINTEGER_8   := 0;
-  - reserved_size:UINTEGER_8 :=8;
-  - reserved_pos:UINTEGER_8  :=24;
-    
-  - to_pixel_32:PIXEL_32 <- Self;
-  
-
-
-
-
-
-
diff --git a/lib/gui/clipping/area.li b/lib/gui/clipping/area.li
deleted file mode 100644
index d5f9e09..0000000
--- a/lib/gui/clipping/area.li
+++ /dev/null
@@ -1,1227 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := AREA;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Window Clipping. (Algorithm by Benoit Sonntag)";
-    
-  - version     := 5;
-  
-Section Inherit
-  
-  - parent_video:ABSTRACT_BITMAP := ABSTRACT_BITMAP;
-  
-  - parent_inbox:INBOX := INBOX;
-  
-Section INTERFACE  
-  
-  - set_video_support bmp:ABSTRACT_BITMAP <-
-  (
-    parent_video := bmp;
-  );
-  
-Section Public  
-  
-  //
-  // Redefine BITMAP.
-  //
-  
-  // Size zone.
-  + height:INTEGER;
-  + width :INTEGER;	
-  
-  - x_min:INTEGER := 0;
-  - y_min:INTEGER := 0;
-  - x_max:INTEGER <- width  - 1;
-  - y_max:INTEGER <- height - 1;
-  
-  // Simple clipping.
-  + clip_x0:INTEGER; 
-  + clip_y0:INTEGER;
-  + clip_x1:INTEGER;
-  + clip_y1:INTEGER;
-  
-  // Current position.
-  + spot_x:INTEGER;  
-  + spot_y:INTEGER;
-    
-  // Current color.
-  
-  // Slave display.
-  - slave_pixel_hard  (x,y:INTEGER) color col:UINTEGER_32; 
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32; 
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER; 
-  
-  // Master / Normal display.
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + c:CLIP;
-    + win:AREA;
-    + xx,yy:INTEGER;
-    
-    xx := x + x_window; 
-    yy := y + y_window;
-    
-    c:=get_clip (xx,yy);
-    (c!=NULL).if {
-      win := c.window;
-      (win=Self).if {	
-	parent_video.pixel_hard (xx,yy) color col; 
-      } else {
-	win.slave_pixel_hard ((xx-win.x_window),(yy-win.y_window)) color col;
-      };
-    };
-  );
-  
-  - line_h_hard (x0,y0:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + xw,tmp,xb,y,xe:INTEGER;
-    + c:CLIP;
-    + win:AREA;
-       
-    (plan != NULL).if { 
-      xb := x0 + x_window;
-      y  := y0 + y_window; 
-      xe := x1 + x_window;
-      ((y < plan.y1.value) && {y >= plan.y0.value}).if {
-	xb:=xb.max (plan.x0.value);
-	xe:=xe.min (plan.x1.value);	
-	(xb <= xe).if {
-	  {	    
-	    c:=get_clip (xb,y);
-	    ? {c!=NULL};
-	    /*
-	    (c=NULL).if {
-	      VIDEO.rectangle_fill 0,0 to 800,600 color black;
-	      INTERFACE.physical_screen.debug_display;
-	      KEYBOARD.wait_key;
-	      
-	      VIDEO.rectangle_fill 0,0 to 800,600 color black;
-	      INTERFACE.screen.debug_display;
-	      KEYBOARD.wait_key;
-	      
-	      VIDEO.rectangle_fill 0,0 to 800,600 color black;
-	      PANEL.win.debug_display;
-	      KEYBOARD.wait_key;
-	      
-	      VIDEO.rectangle_fill 0,0 to 800,600 color black;
-	      MOUSE.debug_display;
-	      KEYBOARD.wait_key;
-	      
-	      VIDEO.rectangle_fill 0,0 to 800,600 color black;
-	      debug_display;
-	      KEYBOARD.wait_key;
-	      
-	      VIDEO.pixel_to xb,y color 64FF64h;
-	      debug:=TRUE;
-	      c:=get_clip xb,y;
-	      KEYBOARD.wait_key;
-	      
-	      xb.print; ','.print; y.print; '\n'.print;
-	      crash;
-	    };
-	    */
-	    tmp:=xe.min (c.x_max);  
-	    win:=c.window;
-	    (win=Self).if {
-	      parent_video.line_h_hard (xb,y) until tmp color col; 
-	    } else {
-	      xw:=win.x_window;
-	      win.slave_line_h_hard ((xb-xw),(y-win.y_window)) until (tmp-xw) color col;
-	    };
-	    xb:=tmp+1;
-	  }.do_while {xb<=xe};
-	};
-      };
-    };
-  );
-  
-  - line_h_hard (x0,y0:INTEGER) until x1:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + xb,y,xe,tmp,xw,tmp_offset:INTEGER;
-    + c:CLIP;
-    + win:AREA;
-    
-    (plan != NULL).if {
-      xb := x0 + x_window; 
-      y  := y0 + y_window; 
-      xe := x1 + x_window;
-      ((y < plan.y1.value) && {y >= plan.y0.value}).if {
-	tmp:=plan.x0.value;
-	(xb < tmp).if { 
-	  tmp_offset := ofs + tmp - xb;
-	  xb:=tmp; 
-	} else {
-	  tmp_offset := ofs;
-	};	  
-	xe:=xe.min (plan.x1.value);
-	(xb<=xe).if {
-	  {
-	    c   := get_clip (xb,y);
-	    tmp := xe.min (c.x_max);
-	    win := c.window;
-	    (win = Self).if {
-	      parent_video.line_h_hard (xb,y) until tmp image line offset tmp_offset;
-	    } else {
-	      xw := win.x_window;
-	      win.slave_line_h_hard (xb-xw, y-win.y_window) 
-	      until (tmp-xw) image line offset tmp_offset;
-	    };
-	    tmp_offset := tmp_offset + tmp-xb + 1;
-	    xb := tmp+1;
-	  }.do_while {xb <= xe};
-	};
-      };
-    };
-  );
-  
-Section Public
-  
-  // Window links.
-  + parent:AREA;  // Englobe window.
-  + child :AREA;  // First children.
-  + prev  :AREA;  // Previous window.
-  + next  :AREA;  // Next window.
-  
-  // +-parent---------------------+
-  // |           +-self-----------|
-  // |  +-next---|                |
-  // |  |        |    +-child--+  |
-  // |  |        |    |        |  |
-  // |  |        |    +--------+  |
-  // |  |        |  +-prev--------|
-  // |  |        +--|             |
-  // |  +-----------|             |
-  // |              |             |
-  // +----------------------------+
-  
-  + plan:PLAN;
-  + clip:CLIP; // Cash clip zone.
-
-  // Current window absolute position.
-  + x_window:INTEGER;
-  + y_window:INTEGER; 
-
-  - set_next new:AREA <-
-  (
-    next:=new;
-  );
-  
-  - set_prev new:AREA <-
-  (
-    prev:=new;
-  );
-  
-  - set_child new:AREA <-
-  (
-    child:=new;
-  );
-  
-Section Public  
-  
-  - debug_display <-
-  (
-    (clip!=NULL).if {
-      clip.display Self;
-    } else {
-      //"Clip null!".print;
-    };
-  );
-  
-Section Public  
-  
-  - get_x_window:INTEGER <-
-  ( + result:INTEGER;
-    
-    (parent=NULL).if {
-      result:=x_window;
-    } else {
-      result:=x_window-parent.x_window;
-    };
-    result
-  );
-  
-  - get_y_window:INTEGER <-
-  ( + result:INTEGER;
-    
-    (parent=NULL).if {
-      result:=y_window;
-    } else {
-      result:=y_window-parent.y_window;
-    };
-    result
-  );
-  
-  //
-  // New window
-  //
-  
-  - make father:AREA from (x0,y0:INTEGER) size (w,h:INTEGER) <-
-  ( ? {w > 0};
-    ? {h > 0};
-
-    parent := father;
-    (father = NULL).if {
-      x_window := x0;
-      y_window := y0;
-      next := NULL;
-    } else {      
-      x_window := father.x_window+x0;
-      y_window := father.y_window+y0;
-      next := father.child;
-      (next != NULL).if {
-	next.set_prev Self;
-      };
-      parent.set_child Self;
-    };
-    child := prev := NULL;
-    clip := NULL;
-    plan := NULL;
-    
-    height:=h;
-    width :=w;
-    clipping_off;
-    
-    // Build clipping.
-    append_plan;
-    clip_type1;
-    refresh;
-  );
-  
-  - create (x,y:INTEGER) size (w,h:INTEGER) :AREA <-
-  ( + result:AREA;
-    ? {w > 0};
-    ? {h > 0};
-    
-    result:=AREA.clone;
-    result.make Self from (x,y) size (w,h);
-    result
-  );
-  
-  //
-  // Delete window
-  //
-  
-  - delete <-
-  ( + x0,y0,x1,y1:INTEGER;
-    + is_draw:BOOLEAN;
-    + old_parent, old_next:AREA;
-    ? {parent != NULL};
-    
-    old_parent := parent;
-    old_next   := next;
-    (plan != NULL).if {
-      x0:=plan.x0.value; 
-      x1:=plan.x1.value;
-      y0:=plan.y0.value; 
-      y1:=plan.y1.value-1;
-      is_draw:=TRUE;
-    };
-    sub_delete;
-    (old_next = NULL).if {
-      old_parent.creat_clip;
-    } else {
-      old_next.clip_type1;
-    };
-    (is_draw).if {
-      redraw (x0,y0) to (x1,y1);
-    };
-  );
-  
-  //
-  // Moving window
-  // 
-  
-  - update father:AREA from (x0,y0:INTEGER) size (w,h:INTEGER) <-
-  (
-    (father != parent).if {
-      make father from (x0,y0) size (w,h);
-    } else {
-      set_position (x0,y0);
-      resize (w,h);
-    };
-  );
-      
-  - move (x,y:INTEGER) <-
-  ( + x0,y0,x1,y1,x2,y2,x3,y3:INTEGER;
-    + old_plan:PLAN;
-    ? {parent!=NULL};
-    
-    ((x != 0) || {y != 0}).if {
-      old_plan:=plan;
-      (plan!=NULL).if {
-        x0:=plan.x0.value; 
-        x1:=plan.x1.value;
-        y0:=plan.y0.value; 
-        y1:=plan.y1.value-1;
-      };
-      sub_move (x,y);
-      clip_type1;
-      (plan!=NULL).if {
-        x2:=plan.x0.value; 
-        x3:=plan.x1.value;
-        y2:=plan.y0.value; 
-        y3:=plan.y1.value-1;
-      };
-      ((old_plan!=NULL) && {plan!=NULL}).if {
-        (((x.abs)>width) || {(y.abs)>height}).if {
-          redraw (x0,y0) to (x1,y1);
-          redraw (x2,y2) to (x3,y3);
-        } else {	
-          redraw ((x0.min x2),(y0.min y2)) to ((x1.max x3),(y1.max y3));
-        };
-      } else {
-        (old_plan!=NULL).if {
-          redraw (x0,y0) to (x1,y1); 
-        }.elseif {plan!=NULL} then {
-          redraw (x2,y2) to (x3,y3);
-        };
-      };    
-    };
-  );
-  
-  - set_position (x,y:INTEGER) <-
-  ( + dx,dy:INTEGER;
-    ? {parent!=NULL};    
-    
-    dx:=x-(x_window-parent.x_window); 
-    dy:=y-(y_window-parent.y_window);    
-    move (dx,dy);
-  );
-  
-  //
-  // Resize window.
-  //
-  
-  - resize (lx,ly:INTEGER) <-
-  // Resize window.
-  ( + x0,y0,x1,y1:INTEGER;
-    //? {parent!=NULL};
-
-    ((lx != width) || {ly != height}).if {
-      (plan=NULL).if {
-	y0:=x0:=INTEGER.maximum.to_integer;
-	y1:=x1:=INTEGER.minimum.to_integer;
-      } else {
-	x0:=plan.x0.value;    
-	x1:=plan.x1.value;
-	y0:=plan.y0.value;    
-	y1:=plan.y1.value;
-      };
-      width :=lx;
-      height:=ly;
-      sub_resize;
-      clip_type1;
-      clipping_off;
-      (plan!=NULL).if {
-	x0:=x0.min (plan.x0.value);
-	x1:=x1.max (plan.x1.value);
-	y0:=y0.min (plan.y0.value);
-	y1:=y1.max (plan.y1.value);
-      };
-      (x0<=x1).if {
-	redraw (x0,y0) to (x1,(y1-1));
-      };
-    };
-  );
-  
-  //
-  // First window
-  //
-  
-  - first <-
-  // put first plan window.
-  ( + x0,y0,x1,y1,plan_value:INTEGER;
-    + pl_begin,pl_end,pl:PLAN;
-    + is_draw:BOOLEAN;
-    + win,win2:AREA;
-    ? {parent!=NULL};
-    
-    (prev!=NULL).if {
-      (plan!=NULL).if {
-	// Modification des Plans : Les EltPs sont classé en plan croissant.
-	// Recherche du dernier plan du groupe :
-	win:=prev;
-	{(win!=NULL) && {win.plan=NULL}}.while_do {
-	  win:=win.prev;
-	};
-	(win!=NULL).if {
-	  is_draw:=TRUE;
-	  x0:=plan.x0.value; 
-	  x1:=plan.x1.value;
-	  y0:=plan.y0.value; 
-	  y1:=plan.y1.value-1;
-	  pl_begin:=win.plan.next;
-	  pl_end:=plan.next;
-	  
-	  // On décroche le Groupe :
-	  pl:=pl_begin.prev;
-	  pl.set_next pl_end;	  	  
-	  pl_end.set_prev pl; 
-	  // On cherche la nouvelle Position du Groupe :
-	  win:=parent;
-	  {
-	    win2:=win.prev;
-	    {(win2!=NULL) && {win2.plan=NULL}}.while_do {
-	      win2:=win2.prev;
-	    };
-	    win:=win.parent;
-	  }.do_while {(win!=NULL) && {win2=NULL}};
-	  (win2!=NULL).if {
-	    pl:=win2.plan; 
-	  } else {
-	    pl:=NULL;
-	  };    
-	  // On attache le groupe :
-	  pl_begin.set_prev pl;
-	  (pl=NULL).if { 
-	    plan.set_next list_plan; 
-	    list_plan:=pl_begin; 
-	    plan_value:=1; 
-	  } else {
-	    plan.set_next (pl.next); 
-	    pl.set_next pl_begin; 
-	    plan_value:=pl.level+1; 
-	  };
-	  (plan.next!=NULL).if {
-	    plan.next.set_prev plan;
-	  };
-	  // On réaffecte les plans :
-	  {pl_begin!=pl_end}.while_do { 
-	    pl_begin.set_level plan_value; 
-	    plan_value:=plan_value+1;
-	    pl_begin:=pl_begin.next; 
-	  };
-	};
-      };
-      
-      // Delete link.
-      prev.set_next next;
-      (next!=NULL).if {
-	next.set_prev prev;
-      };
-      
-      // Creation new link.
-      prev:=NULL;
-      next:=parent.child;
-      next.set_prev Self;
-      parent.set_child Self;
-      
-      (is_draw).if {
-	clip_type1;
-	redraw (x0,y0) to (x1,y1);
-      };
-    };
-  );
-  
-  - get_window (x,y:INTEGER) :AREA <-
-  // Get object pointer by (X,Y).
-  ( + c:CLIP;
-    + result,win:AREA;
-    + xx,yy:INTEGER;
-    
-    xx := x + x_window; 
-    yy := y + y_window;    
-    c:=get_clip (xx,yy);
-    (c!=NULL).if { 
-      (c.window=Self).if {
-	result:=Self;
-      } else {
-	win:=c.window;
-	result:=win.get_window ((xx-win.x_window),(yy-win.y_window));
-	(result=NULL).if {
-	  result:=Self;
-	};
-      };
-    };
-    result
-  );
-  
-  //////////////////////////////////////////////////////////////
-  //                         AREA                           //
-  //////////////////////////////////////////////////////////////
-  
-Section AREA
-  
-  - list_plan:PLAN;
-  - list_x:LIMIT_X;
-  - list_y:LIMIT_Y;
-  
-  - display_list_x <-
-  ( + elt_x:LIMIT_X;
-    
-    "list_x=".print;
-    elt_x:=list_x;
-    {elt_x!=NULL}.while_do {
-      elt_x.value.print;
-      '('.print;
-	elt_x.plan.level.print;
-      ')'.print;
-      ','.print;
-      elt_x:=elt_x.next;
-    };    
-    '\n'.print;
-  );
-  
-  //  list_plan={plan1,plan2}
-  //                       
-  //                       .
-  //  plan1+---------------Y---------+
-  //       |               .         |
-  //       |     plan2+----Y-----------------+
-  //       |          |    .         :       |
-  //       |          |    .         :       |
-  //       |          |    .         :       |
-  //  .....X..........X..............X.......X.....list_x
-  //       |          |    .         :       |
-  //       |          |    .         :       |
-  //       |          +----Y-----------------+
-  //       |               .         | 
-  //       +---------------Y---------+
-  //                       .
-  //                     list_y
-  
-  - stack_plan:FAST_ARRAY[PLAN]:= FAST_ARRAY[PLAN].create 16;
-  
-  - last_clip :CLIP;
-  - first_clip:CLIP;
-  - top_clip  :CLIP;
-  
-  //                                   |           |
-  //                                   | top_clip  |
-  //                                   |           |
-  //                                   +-----------+
-  //+------------+       +-----------+ +-----------+
-  //|            |       |           | |           |
-  //| first_clip |  ...  | last_clip | |    NEW    |
-  //|            |       |           | |           |
-  //+------------+       +-----------+ +-----------+
-  
-  - add_clip win:AREA from (xmin,ymin:INTEGER) to (xmax,ymax:INTEGER) <-
-  ( + new_clip:CLIP;
-    /*    
-    '['.print;
-    INTEGER.force_conversion self.print;
-    ':'.print;
-    x_min.print; ','.print; y_min.print; 
-    ';'.print;
-    x_max.print; ','.print; y_max.print; 
-    ']'.print;
-    */    
-    
-    ((top_clip!=NULL) && {top_clip.x_min==xmin} && {top_clip.x_max==xmax} && {top_clip.window=win}).if {
-      // Stick clip.
-      new_clip:=top_clip; 
-      top_clip:=new_clip.right;
-      new_clip.set_y_max ymax;
-      new_clip.set_right NULL;
-    } else {
-      // Creation.
-      new_clip:=CLIP.create win at (xmin,ymin) to (xmax,ymax);
-      new_clip.set_left last_clip; 
-      new_clip.set_top  top_clip;
-      {(top_clip!=NULL) && {top_clip.x_max<=xmax}}.while_do {
-	top_clip.set_bottom new_clip;
-	top_clip:=top_clip.right;
-      };
-      ((new_clip.left=NULL) && {new_clip.top=NULL}).if {
-	clip:=new_clip; 
-      };
-    };
-    (last_clip=NULL).if {
-      first_clip:=new_clip;
-    } else {
-      last_clip.set_right new_clip;
-    };
-    last_clip:=new_clip;
-  );
-  
-  - remove_plan <-
-  (     
-    (plan!=NULL).if {
-      // Remove in list_x :
-      plan.x1.remove (plan.x0);
-      list_x:=plan.x0.remove list_x;
-      // Remove in list_y :
-      plan.y1.remove (plan.y0);
-      list_y:=plan.y0.remove list_y;
-      // Remove plan in list_plan :
-      list_plan:=plan.remove list_plan;
-      // plan == NULL
-      plan:=NULL;
-    };
-  );
-  
-  - append_plan <-
-  ( + elt_x:LIMIT_X;
-    + elt_y:LIMIT_Y;        
-    + xw0,yw0,xw1,yw1,x0,y0,x1,y1:INTEGER;
-    + is_return:BOOLEAN;
-    + pl:PLAN;
-    + win,winp:AREA;
-    
-    (parent!=NULL).if { 
-      // Clipping with parent.
-      pl:=parent.plan;
-      (pl=NULL).if {
-	is_return:=TRUE;
-      } else {
-	xw0:=pl.x0.value; 
-	xw1:=pl.x1.value;
-	yw0:=pl.y0.value; 
-	yw1:=pl.y1.value-1;
-      };
-    } else { 
-      // Clipping with bitmap.
-      xw0:=yw0:=0; 
-      xw1:=parent_video.width-1;
-      yw1:=parent_video.height-1;
-    };
-    (! is_return).if {
-      // Clipping current window.
-      x0:=x_window; 
-      x1:=x0+width-1;
-      y0:=y_window; 
-      y1:=y0+height-1;
-      ((x1>=xw0) && {x0<=xw1} && 
-      {y1>=yw0} && {y0<=yw1}).if {
-	// First clip (current -> parent).
-	x0:=x0.max xw0;
-	x1:=x1.min xw1;
-	y0:=y0.max yw0;
-	y1:=y1.min yw1;
-	
-	// Append one Plan.
-	plan:=PLAN.create Self;
-	win:=Self;
-	{
-	  winp:=win.prev;
-	  {(winp!=NULL) && {winp.plan=NULL}}.while_do {
-	    winp:=winp.prev;
-	  };
-	  win:=win.parent;
-	}.do_while {(win!=NULL) && {winp=NULL}};
-	(winp!=NULL).if { 
-	  pl:=winp.plan;
-	  plan.set_prev pl; 
-	  plan.set_next (pl.next); 
-	  pl.set_next plan;
-	  plan.set_level (pl.level+1); 
-	} else {
-	  plan.set_next list_plan; 
-	  list_plan:=plan;
-	  plan.set_level 1; 
-	};
-	
-	pl:=plan.next;
-	(pl!=NULL).if {
-	  pl.set_prev plan;
-	  pl.inc_level;
-	};	
-	
-	y1:=y1+1;
-	// On positionne les X : Décroissant Plan...
-	elt_x:=LIMIT_X.create x0 plan plan;
-	plan.set_x0 elt_x;
-	list_x:=elt_x.append list_x;
-	
-	elt_x:=LIMIT_X.create x1 plan plan;
-	plan.set_x1 elt_x;
-	elt_x.append (plan.x0);
-	
-	// On positionne les Y :
-	elt_y:=LIMIT_Y.create_top y0 plan plan;
-	plan.set_y0 elt_y;
-	list_y:=elt_y.append list_y;
-	
-	elt_y:=LIMIT_Y.create_bottom y1 plan plan;
-	plan.set_y1 elt_y;
-	elt_y.append (plan.y0);
-      };
-    };
-  );
-  
-  - update_plan <-
-  ( + pl:PLAN;
-    + xw0,yw0,xw1,yw1,x0,y0,x1,y1:INTEGER;
-    + is_return:BOOLEAN;
-    
-    (plan=NULL).if { 
-      append_plan; 
-    } else {
-      (parent!=NULL).if { 
-	// Clipping with parent.
-	pl:=parent.plan;
-	(pl=NULL).if {
-	  remove_plan; 
-	  is_return:=TRUE;
-	} else {
-	  xw0:=pl.x0.value; 
-	  xw1:=pl.x1.value;
-	  yw0:=pl.y0.value; 
-	  yw1:=pl.y1.value-1;
-	};
-      } else { 
-	// Clipping with bitmap.
-	xw0:=yw0:=0; 
-	xw1:=parent_video.width-1;
-	yw1:=parent_video.height-1;
-      };
-      
-      (! is_return).if {
-	// Clipping current window.
-	x0:=x_window; 
-	x1:=x0+width-1;
-	y0:=y_window; 
-	y1:=y0+height-1;
-	((x1<xw0) || {x0>xw1} || {y1<yw0} || {y0>yw1}).if {
-	  remove_plan;
-	} else {
-	  // First clip (current -> parent).
-	  x0:=x0.max xw0;
-	  x1:=x1.min xw1;
-	  y0:=y0.max yw0;
-	  y1:=y1.min yw1;
-	  
-	  y1:=y1+1; 
-	  
-	  // On positionne les X :
-	  plan.x1.set_value x1;            // update x1
-	  plan.x1.remove (plan.x0);        // delete X1
-	  (x0!=plan.x0.value).if {
-	    plan.x0.set_value x0;          // update x0
-	    list_x:=plan.x0.remove list_x; // delete X0	  
-	    list_x:=plan.x0.append list_x; // Append X0  
-	  };
-	  plan.x1.append (plan.x0);        // Append X1
-	  
-	  // On positionne les Y :	  
-	  plan.y1.set_value y1;
-	  plan.y1.remove (plan.y0);
-	  (y0!=plan.y0.value).if {
-	    plan.y0.set_value y0;
-	    list_y:=plan.y0.remove list_y;	  
-	    list_y:=plan.y0.append list_y;	  
-	  };
-	  plan.y1.append (plan.y0);
-	};
-      };
-    };
-  );
-  
-  - creat_clip <-
-  ( + x0,x1,y0,y1,tmp:INTEGER;
-    + elt_x:LIMIT_X;
-    + elt_y:LIMIT_Y;
-    + plan_value:INTEGER;
-    + cx0,cy0,cx1,cy1:INTEGER;
-    + win,winp:AREA;
-    + pl:PLAN;
-    
-    clip:=NULL; // Remove old Clip (carbadge collector :-)
-    (plan!=NULL).if {
-      x0:=plan.x0.value; 
-      x1:=plan.x1.value;
-      y0:=plan.y0.value; 
-      y1:=plan.y1.value;
-      
-      // On active les fenêtres concerné :
-      // Tous ses fils.
-      win:=child;
-      {win!=NULL}.while_do {
-	pl:=win.plan;
-	(pl!=NULL).if {
-	  pl.active_y;
-	};
-	win:=win.next;
-      };
-      // Tous les prec et les prec des parents.
-      win:=Self;
-      {
-	winp:=win.prev;
-	{winp!=NULL}.while_do {
-	  pl:=winp.plan;
-	  ((pl!=NULL) && {pl.x0.value<=x1} && {pl.x1.value>=x0} &&
-	  {pl.y0.value<y1}  && {pl.y1.value>y0}).if {
-	    pl.active_y;
-	  };
-	  winp:=winp.prev;
-	};
-	win:=win.parent;
-      }.do_while {win!=NULL};            
-      stack_plan.force plan to 0;
-            
-      first_clip:=NULL; // New clip
-      
-      elt_y:=list_y; // A Optimiser !
-      cy0:=y0;
-      {elt_y!=NULL}.while_do {
-	// On active ou désactive des fenêtres :
-	{(elt_y!=NULL) && {! elt_y.plan.is_y}}.while_do {
-	  elt_y:=elt_y.next;
-	};
-	
-	(elt_y=NULL).if {
-	  cy1:=y1-1;
-	} else {
-	  tmp:=elt_y.value;	  
-	  cy1:=(tmp.min y1)-1;
-	};
-	
-	(cy0<=cy1).if {
-	  // New clip line.
-	  last_clip:=NULL; 
-	  top_clip:=first_clip; 
-	  
-	  elt_x:=list_x; // A Optimiser !	  	  
-	  plan_value:=0; 
-	  cx0:=x0; 
-	  win:=Self;
-	  {	    
-	    pl:=elt_x.plan;
-	    (pl.is_x).if {      	      
-	      ((stack_plan.upper < pl.level) || {stack_plan.item (pl.level)=NULL}).if {
-		// Begin Window
-		stack_plan.force pl to (pl.level);
-		(pl.level>plan_value).if {
-		  // Limit
-		  cx1:=(elt_x.value-1).min x1;
-		  (cx0<=cx1).if {
-		    add_clip win from (cx0,cy0) to (cx1,cy1);
-		    cx0:=cx1+1;
-		  };
-		  plan_value:=pl.level;
-		  win:=pl.window;
-		};
-	      } else {
-		// End Window
-		stack_plan.force NULL to (pl.level);
-		(pl.level==plan_value).if {
-		  // Limit
-		  cx1:=(elt_x.value).min x1;
-		  (cx0<=cx1).if {
-		    add_clip win from (cx0,cy0) to (cx1,cy1);
-		    cx0:=cx1+1;
-		  };
-		  //cx0:=cx1+1;
-		  { 
-		    plan_value:=plan_value-1;
-		  }.do_while {(stack_plan.item plan_value)=NULL};
-		  win:=stack_plan.item plan_value.window;
-		};
-	      };
-	    };
-	    elt_x:=elt_x.next;
-	  }.do_while {elt_x!=NULL};	  
-	  (cx0<=x1).if {
-	    add_clip win from (cx0,cy0) to (x1,cy1);
-	  };
-	  cy0:=cy1+1;
-	};
-	
-	(elt_y!=NULL).if {
-	  {
-	    pl:=elt_y.plan;
-	    (pl.is_y).if {
-	      (elt_y.is_top).if {
-		pl.active_x;
-	      } else {
-		pl.desactive_y;
-		pl.desactive_x;
-	      };
-	    };
-	    elt_y:=elt_y.next;
-	  }.do_while {(elt_y!=NULL) && {elt_y.value==tmp}};
-	};
-      };
-    };
-  );
-  
-  - clip_next_child <-
-  ( 
-    creat_clip;
-    (next!=NULL).if {
-      next.clip_next_child;
-    };
-    (child!=NULL).if {
-      child.clip_next_child;
-    };
-  );
-  
-  - clip_type1 <-
-  ( 
-    clip_next_child;
-    (parent!=NULL).if {
-      parent.creat_clip;
-    };
-  );
-  
-  - sub_delete <-
-  (
-    // On supprime les liens dans la chaine des fenetres :
-    (prev = NULL).if {
-      parent.set_child next;
-    } else {
-      prev.set_next next;
-    };
-    (next != NULL).if {
-      next.set_prev prev;
-    };
-    parent := prev := next := NULL;
-    remove_plan;
-    clip := NULL; // Delete Clip (GC).
-    {child != NULL}.while_do {
-      child.sub_delete;
-    };
-  );
-  
-  - sub_move (x,y:INTEGER) <-
-  ( + win:AREA;
-    
-    x_window:=x_window+x; 
-    y_window:=y_window+y;
-    update_plan; 
-    win:=child;
-    {win!=NULL}.while_do {
-      win.sub_move (x,y);
-      win:=win.next;
-    };
-  );
-  
-  - sub_resize <-
-  ( + win:AREA;
-    
-    update_plan; //modif_for_clip;
-    win:=child;
-    {win!=NULL}.while_do {
-      win.sub_resize;
-      win:=win.next;
-    };
-  );
-  
-  // get_clip x,y :
-  // 
-  // [clip]
-  //   X#####+-------++-------+
-  //   |    #|       ||       |
-  //   |    #|       ||       |
-  //   +----#######--++-------+
-  //   +---------+#-----------+
-  //   |         |#           |
-  //   |         |####>X(x,y) |
-  //   |         ||           |
-  //   +---------++-----------+
-  
-  - debug:BOOLEAN;
-  
-  - get_clip (x,y:INTEGER) :CLIP <-
-  // Find clip `(x,y)', begin search is `clip'.
-  ( + fg_t,fg_b,fg_r,fg_l,fg_p:BOOLEAN;
-    + c:CLIP;
-    
-    c:=clip;
-    ((c!=NULL) && {
-	(! (x.in_range (c.x_min) to (c.x_max))) || 
-	{! (y.in_range (c.y_min) to (c.y_max))}
-    }).if {
-      
-      //      ((c!=NULL) && {debug}).if { VIDEO.rectangle (c.x_min),(c.y_min) to (c.x_max),(c.y_max) color 6464FFh; KEYBOARD.wait_key; };
-      
-      // Top or Bottom Limit.
-      ((y<c.y_min) && {x<c.x_min}).if {
-	{(c!=NULL) && {y<c.y_min}}.while_do {
-	  c:=c.top; 
-	};
-      } else {
-	((y>c.y_max) && {x>c.x_max}).if {
-	  {(c!=NULL) && {y>c.y_max}}.while_do {
-	    c:=c.bottom;
-	  };
-	};
-      };
-      
-      //                   X
-      //      
-      // .....+-^---+
-      //      |     |
-      //      |     >
-      //      +-----+
-      //            :
-      //            :
-      
-      {(c!=NULL) && { 
-	  (fg_t:=(c.y_min>y)) |
-	  (fg_r:=(c.x_max<x)) 
-      }}.while_do {
-	(fg_p).if {
-	  (fg_t).if {
-	    c:=c.top; 
-	  }.elseif {fg_r} then {
-	    c:=c.right;
-	  };
-	} else {
-	  (fg_r).if {
-	    c:=c.right; 
-	  }.elseif {fg_t} then {
-	    c:=c.top;
-	  };
-	};
-	fg_p:=! fg_p;
-      };
-      
-      //        :
-      //        :
-      //        +-----+
-      //        <     |
-      //        |     |
-      //        +---v-+.....
-      //  X           
-      //                   
-      
-      {(c!=NULL) && {
-	  (fg_b:=(c.y_max<y)) | 
-	  (fg_l:=(c.x_min>x))
-      }}.while_do {
-	(fg_p).if {
-	  (fg_b).if {
-	    c:=c.bottom; 
-	  }.elseif {fg_l} then {
-	    c:=c.left;
-	  };
-	} else {
-	  (fg_l).if {
-	    c:=c.left;   
-	  }.elseif {fg_b} then {
-	    c:=c.bottom;
-	  };
-	};
-	fg_p:=! fg_p;
-      };
-      
-      (c!=NULL).if {
-	clip:=c;
-      };
-    };
-    c
-  );
-  
-Section Public  
-  
-  - margin_clip_x0:INTEGER;
-  - margin_clip_y0:INTEGER;
-  - margin_clip_x1:INTEGER;
-  - margin_clip_y1:INTEGER;
-  
-  - redraw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + elt_p:PLAN;
-    + lev,xb0,yb0,xb1,yb1:INTEGER;
-    + win2,win3:AREA;
-    
-    // With Previous :
-    win3:=Self;
-    {
-      win2 := win3.prev;
-      {(lev = 0) && {win2 != NULL}}.while_do {
-	elt_p := win2.plan;
-	(elt_p != NULL).if { 
-	  lev := elt_p.level+1;
-	} else {
-	  win2 := win2.prev;
-	};
-      };
-      win3 := win3.parent;
-    }.do_while {(win3 != NULL) && {lev = 0}};
-    (lev = 0).if { 
-      lev := 1;
-    };
-    
-    // Search elt_p for begin :
-    elt_p := list_plan;
-    {(elt_p != NULL) && {elt_p.level != lev}}.while_do {
-      elt_p := elt_p.next;
-    };
-    
-    // Display :
-    {elt_p != NULL}.while_do {
-      xb0 := elt_p .x0.value   .max (x0 - margin_clip_x0); 
-      xb1 := elt_p .x1.value   .min (x1 + margin_clip_x1);
-      yb0 := elt_p .y0.value   .max (y0 - margin_clip_y0); 
-      yb1 := (elt_p.y1.value-1).min (y1 + margin_clip_y1);
-      
-      ((xb0<=xb1) && {yb0<=yb1}).if {
-	win2 := elt_p.window;
-	xb0 := xb0 - win2.x_window; 
-	xb1 := xb1 - win2.x_window;  
-	yb0 := yb0 - win2.y_window; 
-	yb1 := yb1 - win2.y_window;
-	win2.draw (xb0,yb0) to (xb1,yb1);
-      };
-      elt_p := elt_p.next;
-    };
-    margin_clip_x0 := margin_clip_x1 :=
-    margin_clip_y0 := margin_clip_y1 := 0;
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    // Nothing.    
-  );
-  
-  - refresh <-
-  (
-    (clip != NULL).if {
-      draw (0,0) to (width-1,height-1);
-    };
-  );
-  
-  - get_object (x,y:INTEGER) :AREA <-
-  ( + c:CLIP;
-    + result,win:AREA;
-    
-    c := get_clip (x,y);
-    (c != NULL).if {
-      win := c.window;
-      (win = Self).if {
-	result := Self;
-      } else {
-	result := win.get_object (x,y);
-	(result = NULL).if {
-	  result := Self;
-	};
-      };
-    };
-    result
-  );
-    
-  - receive msg:EVENT <-
-  // Default.
-  (
-    (parent != NULL).if {
-      msg.set_destination parent;
-      parent.receive msg;
-    };
-  );
-
-
-
-
diff --git a/lib/gui/clipping/area_mask.li b/lib/gui/clipping/area_mask.li
deleted file mode 100644
index b8e0218..0000000
--- a/lib/gui/clipping/area_mask.li
+++ /dev/null
@@ -1,427 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := AREA_MASK;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Mask Window Clipping.";
-    
-  - version     := 2;
-  
-Section Inherit
-  
-  + parent_area:Expanded AREA;
-    
-Section Public  
-
-  + mask:FAST_ARRAY[FAST_ARRAY[UINTEGER_16]];
-  
-  - clear_mask <-
-  ( 
-    (mask.lower).to (mask.upper) do { y:INTEGER;
-      mask.item y.clear;
-    };
-  );
-  
-  //
-  // Creation
-  //
-  
-  - make father:AREA from (x0,y0:INTEGER) size (w,h:INTEGER) <-
-  (
-    mask := FAST_ARRAY[FAST_ARRAY[UINTEGER_16]].create_with_capacity h;
-    0.to (h-1) do { y:INTEGER;
-      mask.add_last (FAST_ARRAY[UINTEGER_16].create_with_capacity 2);
-    };
-    parent_area.make father from (x0,y0) size (w,h);    
-  );
-  
-  - resize (lx,ly:INTEGER) <-
-  (
-    mask.resize ly;
-    height.to (ly-1) do { y:INTEGER;
-      mask.put (FAST_ARRAY[UINTEGER_16].create_with_capacity 2) to y;
-    };
-    parent_area.resize (lx,ly);
-  );
-  
-  //
-  // Master display
-  // (Build mask)
-  //
-
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( 
-    add_mask (x,y) until x;
-    parent_area.pixel_hard (x,y) color col;
-  );
-  
-  - line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( 
-    add_mask (x1,y) until x2;
-    parent_area.line_h_hard (x1,y) until x2 color col;
-  );
-
-  - line_h_hard (x1,y:INTEGER) until x2:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( 
-    add_mask (x1,y) until x2;
-    parent_area.line_h_hard (x1,y) until x2 image line offset ofs;
-  );
-  
-  //
-  // Slave display
-  // (Use Mask)
-  //
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    + idx:INTEGER;
-    
-    line := mask.item y;
-    ((line.is_empty) || {x < line.first} || {x > line.last}).if {
-      parent_area.pixel_hard (x,y) color col;
-    } else {
-      idx := search (x.to_uinteger_16) in line low (line.lower);
-      (idx.is_odd).if {
-	parent_area.pixel_hard (x,y) color col;
-      };
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    + idx,xb,xe,xx2:INTEGER;
-        
-    line := mask.item y;
-    ((line.is_empty) || {x2 < line.first} || {x1 > line.last}).if { 
-      parent_area.line_h_hard (x1,y) until x2 color col;
-    } else {
-      (x1 < line.first).if {
-	parent_area.line_h_hard (x1,y) until (line.first-1) color col;
-	idx := 2;
-	xb := line.item 1 + 1;
-      } else {
-	idx := search (x1.to_uinteger_16) in line low (line.lower);
-	(idx.is_even).if {
-	  xb  := line.item (idx + 1) + 1;
-	  idx := idx + 2;
-	} else {
-	  xb  := x1;
-	  idx := idx + 1;
-	};
-      };
-      (x2 > line.last).if {	
-	parent_area.line_h_hard ((line.last+1),y) until x2 color col;
-	xx2 := line.last; 
-      } else {
-	xx2 := x2;
-      };
-      {xb <= xx2}.while_do {
-	xe  := line.item idx - 1;
-	parent_area.line_h_hard (xb,y) until (xe.min xx2) color col;
-	xb  := line.item (idx + 1) + 1;
-	idx := idx + 2;
-      };
-    };
-  );
-
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + l:FAST_ARRAY[UINTEGER_16];
-    + idx,xb,xe,xx2:INTEGER;
-    
-    l := mask.item y;
-    ((l.is_empty) || {x2 < l.first} || {x1 > l.last}).if { 
-      parent_area.line_h_hard (x1,y) until x2 image line offset ofs;
-    } else {
-      (x1 < l.first).if {
-	parent_area.line_h_hard (x1,y) until (l.first-1) image line offset ofs;
-	idx := 2;
-	xb  := l.item 1 + 1;
-      } else {
-	idx := search (x1.to_uinteger_16) in l low (l.lower);
-	(idx.is_even).if {
-	  xb  := l.item (idx + 1) + 1;
-	  idx := idx + 2;
-	} else {
-	  xb  := x1;
-	  idx := idx + 1;
-	};
-      };
-      (x2 > l.last).if {
-	parent_area.line_h_hard ((l.last+1),y) until x2 image line offset 
-	(ofs + (l.last+1) - x1);
-	xx2 := l.last;
-      } else {
-	xx2 := x2;
-      };
-      {xb <= xx2}.while_do {
-	xe  := l.item idx - 1;
-	parent_area.line_h_hard (xb,y) until (xe.min xx2) image line offset
-	(ofs + (xb - x1));
-	xb   := l.item (idx + 1) + 1;
-	idx  := idx + 2;
-      };
-    };
-  );
-  
-  - mask_draw (x0,y0:INTEGER) to (x1,y1:INTEGER) color col:UINTEGER_32 <-
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    + xb,xe,lower,upper,idx:INTEGER;
-    + xx0,xx1:UINTEGER_16;
-    
-    xx0 := x0.to_uinteger_16;
-    xx1 := x1.to_uinteger_16;    
-    y0.to y1 do { y:INTEGER;
-      line := mask.item y;
-      (! line.is_empty).if {
-	((xx0 <= line.last) && {xx1 >= line.first}).if {
-	  (xx0 <= line.first).if {	    
-	    lower := idx := 0;	  
-	  } else {
-	    idx := search xx0 in line low 0;
-	    (idx.is_odd).if {
-	      lower := idx + 1;
-	    } else {	      
-	      xe := line.item (idx + 1).min xx1;
-	      parent_area.line_h_hard (xx0,y) until xe color col;
-	      lower := idx + 2;	      
-	    };
-	  };
-	  (xx1 >= line.last).if {
-	    upper := line.upper;	    
-	  } else {
-	    upper := search xx1 in line low idx;
-	    (upper.is_even).if {
-	      (upper != idx).if {
-		xb := line.item upper;
-		parent_area.line_h_hard (xb,y) until xx1 color col;
-	      };
-	      upper := upper - 1;	      
-	    };
-	  };	  
-	  // Other segment.
-	  (lower).to (upper) by 2 do { x:INTEGER;
-	    xb := line.item x;
-	    xe := line.item (x+1);	  
-	    parent_area.line_h_hard (xb,y) until xe color col;
-	  };
-	};
-      };
-    };
-    
-    //display_mask;
-  );
-  
-Section Private
-  
-  - add_mask (x_beg,y:INTEGER) until x_end:INTEGER <-
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    + i1,i2:INTEGER;
-    + x1,x2:UINTEGER_16;
-    + is_right,is_left:BOOLEAN;
-    
-    x1 := x_beg.to_uinteger_16;
-    x2 := x_end.to_uinteger_16;
-    line := mask.item y;
-    (line.is_empty).if {      
-      line.add_last x1;
-      line.add_last x2;
-    }.elseif {x1 > (line.last+1)} then {
-      line.add_last x1;
-      line.add_last x2;
-    }.elseif {(x2+1) < line.first} then {
-      line.add_first x1; 
-      line.add x2 to 1;
-    } else {
-      (x1 <= line.first).if { 
-	i1 := line.lower;
-	line.put x1 to i1;
-      } else {
-	i1 := search x1 in line low (line.lower);
-      };
-      (x2 >= line.last).if {
-	i2 := line.upper;
-	line.put x2 to i2;
-      } else {
-	i2 := search x2 in line low i1;
-      };      
-      (i1 = i2).if {
-	((i1.is_odd) && {i1 != line.upper}).if {
-	  // free space
-	  is_left  := (x1-1) = line.item i1;
-	  is_right := (x2+1) = line.item (i2+1); 
-	  (is_left).if {
-	    (is_right).if {
-	      line.remove i1 to (i1+1);	      
-	    } else {
-	      line.put x2 to i1;
-	    };
-	  } else {
-	    (is_right).if {
-	      line.put x1 to (i1+1);
-	    } else {
-	      line.add x1 to (i1+1);
-	      line.add x2 to (i1+2);  
-	    };
-	  };
-	};
-      } else {
-	// i1 != i2
-	(i1.is_odd).if {
-	  is_left  := (x1-1) = line.item i1;
-	  (is_left).if {
-	    //
-	  } else {
-	    line.put x1 to (i1+1); 
-	    i1 := i1 + 2;
-	  };
-	} else {
-	  i1 := i1 + 1;
-	};
-	(i2.is_odd).if {
-	  is_right := (x2+1) = line.item (i2+1);
-	  (is_right).if {
-	    i2 := i2 + 1;
-	  } else {
-	    line.put x2 to i2;
-	    i2 := i2 - 1;
-	  };
-	} else {
-	  // Nothing.
-	};
-	line.remove i1 to i2;
-      };
-    };
-    //check_mask;
-  );
-
-  //
-  // Debug.
-  //
-  
-  - print_line line:FAST_ARRAY[UINTEGER_16] <-
-  (
-    0.to (line.upper) by 2 do { j:INTEGER;
-      '['.print;
-      line.item j.print;
-      '-'.print;
-      line.item (j+1).print;
-      ']'.print;
-      ' '.print;
-    };
-    '\n'.print;
-  );
-  
-  - check_mask <-
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    (mask.lower).to (mask.upper) do { y:INTEGER;
-      line := mask.item y;
-      (! line.is_empty).if {
-	(line.count.is_odd).if {
-	  bug_mask (y,"Line odd");
-	};
-	(line.lower).to (line.upper-1) do { x:INTEGER;
-	  (line.item x <= line.item (x+1)).if {
-	    (
-	      (x != 0) && {x.is_even} && 
-	      {line.item x - 1 = line.item (x-1)}
-	    ).if {
-	      bug_mask (y,"Disconnect");
-	    };
-	    (
-	      (x != 0) && {x.is_even} && 
-	      {line.item x <= line.item (x-1)}
-	    ).if {
-	      bug_mask (y,"Order / Disconnect");
-	    };
-	  } else {
-	    bug_mask (y,"Order");
-	  };
-	};
-      };
-    };
-  );
-  
-  - bug_mask (y:INTEGER,msg:ABSTRACT_STRING) <-
-  (
-    "\nERROR MASK: Line #".print;
-    y.print;
-    " Type: ".print;
-    msg.print;
-    '\n'.print;
-    print_line (mask.item y);
-    die_with_code 0;
-  );
-  
-  - display_mask <-
-  ( + line:FAST_ARRAY[UINTEGER_16];
-    + x1,x2:UINTEGER_16;
-    parent.parent.clipping_off;
-    parent.parent.rectangle_fill (0,0) to (width,height) color black;
-    (mask.lower).to (mask.upper) do { y:INTEGER;
-      line := mask.item y;
-      (! line.is_empty).if {
-	(line.lower).to (line.upper) by 2 do { x:INTEGER;
-	  x1 := line.item x;
-	  x2 := line.item (x+1);	  
-	  parent.parent.pixel_to (x1,y) color white;
-	  parent.parent.pixel_to (x2,y) color blue;
-	  //parent.parent.line_h x1,y until x2 color red;
-	  //'['.print; 
-	  //x1.print; ','.print; x2.print;
-	  //']'.print;
-	  // IO.read_line;
-	};
-	//'\n'.print;
-      };
-    };
-  );
-  
-  //
-  // Sub routine
-  //
-    
-  - search x:UINTEGER_16 in line:FAST_ARRAY[UINTEGER_16] low l:INTEGER :INTEGER <-
-  ( + low,up:INTEGER;
-    + med,result:INTEGER;
-    low := l; 
-    up  := line.upper + 1;    
-    {(up - low) > 2}.while_do {
-      med := ((up + low) >> 1) & 0FFFEh;
-      (x >= line.item med).if {
-	low := med;
-      } else {
-	up := med;
-      };
-    };
-    (x > line.item (low+1)).if {
-      result := low + 1;
-    } else {
-      result := low;
-    };
-    result
-  );
-
-    
\ No newline at end of file
diff --git a/lib/gui/clipping/clip.li b/lib/gui/clipping/clip.li
deleted file mode 100644
index 799b66f..0000000
--- a/lib/gui/clipping/clip.li
+++ /dev/null
@@ -1,184 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := CLIP;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Clip structure (Use for AREA).";
-  
-  - version := 1;
-  
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-  
-  //                 top
-  //                  /\ 
-  // (x_min,y_min) X--||----------+
-  //               |              |
-  //         left <=              |
-  //               |              |
-  //               |     CLIP     |
-  //               |              |
-  //               |              => right
-  //               |              |
-  //               +----------||--X (x_max,y_max)
-  //                          \/
-  //                        bottom
-    
-  // Coord. abs clip.
-  + x_min:INTEGER;
-  + y_min:INTEGER;
-  + x_max:INTEGER;
-  + y_max:INTEGER;
-  
-  + window:AREA;
-  
-  // Four clip links. 
-  + left:CLIP;
-  + right:CLIP;
-  + top:CLIP;
-  + bottom:CLIP;
-  
-Section Public  
-  
-  - make win:AREA at (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    window:=win;
-    x_min:=x0;
-    y_min:=y0;
-    x_max:=x1;
-    y_max:=y1;
-  );
-    
-  - create win:AREA at (x0,y0:INTEGER) to (x1,y1:INTEGER) :CLIP <-
-  ( + result:CLIP;
-    
-    result:=CLIP.clone;
-    result.make win at (x0,y0) to (x1,y1);
-    result
-  );
-    
-  - set_left new_link:CLIP <-
-  (
-    left:=new_link;
-  );
-
-  - set_right new_link:CLIP <-
-  (
-    right:=new_link;
-  );
-  
-  - set_top new_link:CLIP <-
-  (
-    top:=new_link;
-  );
-
-  - set_bottom new_link:CLIP <-
-  (
-    bottom:=new_link;
-  );
-
-  - set_x_min new:INTEGER <-
-  (
-    x_min:=new;
-  );
-
-  - set_x_max new:INTEGER <-
-  (
-    x_max:=new;
-  );
-  
-  - set_y_min new:INTEGER <-
-  (
-    y_min:=new;
-  );
-
-  - set_y_max new:INTEGER <-
-  (
-    y_max:=new;
-  );
-
-  - display win:AREA <-
-  (
-    sub_display ((! flag), win);
-  );
-  
-Section Private
-
-  // Mark display flag.
-  + flag:BOOLEAN;
-
-  - sub_display (val:BOOLEAN, win:AREA) <-
-  // Display recurssive clipping. 
-  ( 
-    (window=win).if {
-      VIDEO.color white;
-    } else {
-      VIDEO.color gray;
-    };
-    //x_min.print; ','.print; y_min.print; " to ".print; 
-    //x_max.print; ','.print; y_max.print; '\n'.print;
-    VIDEO.rectangle (x_min,y_min) to (x_max,y_max);
-    
-    (top=NULL).if {
-      VIDEO.line_h (x_min,y_min) until x_max color 0FF6464h;
-    };
-    (bottom=NULL).if {
-      VIDEO.line_h (x_min,y_max) until x_max color 0FF6464h;
-    };
-    (left=NULL).if {
-      VIDEO.line_v (x_min,y_min) until y_max color 0FF6464h;
-    };
-    (right=NULL).if {
-      VIDEO.line_v (x_max,y_min) until y_max color 0FF6464h;
-    }; 
-       
-//    VIDEO.display_screen;
-//    IO.read_character;
-    //KEYBOARD.get_key;
-    flag:=val;
-    ((top!=NULL) && {top.flag!=val}).if { 
-      top.sub_display (val,win); 
-    };
-    ((bottom!=NULL) && {bottom.flag!=val}).if { 
-      bottom.sub_display (val,win); 
-    };
-    ((right!=NULL) && {right.flag!=val}).if { 
-      right.sub_display (val,win); 
-    };
-    ((left!=NULL) && {left.flag!=val}).if { 
-      left.sub_display (val,win); 
-    };
-  );
-
-
-
-
-
-
-
-
diff --git a/lib/gui/clipping/limit_x.li b/lib/gui/clipping/limit_x.li
deleted file mode 100644
index ea448df..0000000
--- a/lib/gui/clipping/limit_x.li
+++ /dev/null
@@ -1,125 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LIMIT_X;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Sub structure for AREA.";
-    
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-  - version    := 1;
-  
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-
-  + value:INTEGER;
-  
-  + plan:PLAN;
-  
-  + next:LIMIT_X;
-  + prev:LIMIT_X;
-  
-Section Public 
-  
-  - make x:INTEGER plan p:PLAN <- 
-  (
-    plan:=p;
-    value:=x;
-  );
-  
-  - create x:INTEGER plan p:PLAN :LIMIT_X <- 
-  ( + result:LIMIT_X;
-    
-    result:=LIMIT_X.clone;
-    result.make x plan p;
-    result
-  );
-  
-  - append old_root:LIMIT_X :LIMIT_X <-
-  ( + new_root:LIMIT_X;
-    + n,p:LIMIT_X;
-    
-    n:=old_root;   
-    (n!=NULL).if {
-      p:=n.prev;
-    };
-    {(n!=NULL) && {n.value<=value} && {(n.value!=value) || {n.plan.level>plan.level}}}.while_do {
-      p:=n; 
-      n:=n.next; 
-    };
-    next:=n; 
-    prev:=p;
-    (prev=NULL).if {
-      new_root:=Self; 
-    } else {
-      new_root:=old_root;
-      p.set_next Self;
-    };
-    (n!=NULL).if {
-      n.set_prev Self;
-    };
-    new_root
-  );
-  
-  - remove old_root:LIMIT_X :LIMIT_X <-
-  ( + new_root:LIMIT_X;
-    
-    (prev=NULL).if {
-      new_root:=next;
-    } else {
-      prev.set_next next;
-      new_root:=old_root;
-    };
-    (next!=NULL).if {
-      next.set_prev prev;
-    };
-    new_root
-  );
-  
-  - set_value v:INTEGER <-
-  (
-    value:=v;
-  );
-  
-  - set_next new:LIMIT_X <-
-  (
-    next:=new;
-  );
-
-  - set_prev new:LIMIT_X <-
-  (
-    prev:=new;
-  );
-
-
-
-
-
-
-
diff --git a/lib/gui/clipping/limit_y.li b/lib/gui/clipping/limit_y.li
deleted file mode 100644
index ebaca9a..0000000
--- a/lib/gui/clipping/limit_y.li
+++ /dev/null
@@ -1,126 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LIMIT_Y;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Sub structure for AREA.";
-    
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-  - version     := 1;
-  
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-
-  + value:INTEGER;
-  
-  + plan:PLAN;
-  + is_top:BOOLEAN;  
-  
-  + next:LIMIT_Y;
-  + prev:LIMIT_Y;
-  
-Section Public 
-
-  - make y:INTEGER plan p:PLAN is_top b:BOOLEAN <- 
-  (
-    is_top:=b;
-    plan  :=p;
-    value :=y;
-  );
-  
-  - create_top y:INTEGER plan p:PLAN :LIMIT_Y <- 
-  ( + result:LIMIT_Y;
-    
-    result:=LIMIT_Y.clone;
-    result.make y plan p is_top TRUE;
-    result
-  );
-
-  - create_bottom y:INTEGER plan p:PLAN :LIMIT_Y <- 
-  ( + result:LIMIT_Y;
-    
-    result:=LIMIT_Y.clone;
-    result.make y plan p is_top FALSE;
-    result
-  );
-  
-  - append old_root:LIMIT_Y :LIMIT_Y <-
-  ( + new_root:LIMIT_Y;
-    + n,p:LIMIT_Y;
-    
-    n:=old_root;
-    {(n!=NULL) && {n.value<value}}.while_do {
-      p:=n; 
-      n:=n.next; 
-    };
-    next:=n; 
-    prev:=p;
-    (prev=NULL).if {
-      new_root:=Self; 
-    } else {
-      new_root:=old_root;
-      p.set_next Self;
-    };
-    (n!=NULL).if {
-      n.set_prev Self;
-    };
-    new_root
-  );
-
-  - remove old_root:LIMIT_Y :LIMIT_Y <-
-  ( + new_root:LIMIT_Y;
-    
-    (prev=NULL).if {
-      new_root:=next;
-    } else {
-      prev.set_next next;
-      new_root:=old_root;
-    };
-    (next!=NULL).if {
-      next.set_prev prev;
-    };
-    new_root
-  );
-
-  - set_value v:INTEGER <-
-  (
-    value:=v;
-  );
-  
-  - set_next new:LIMIT_Y <-
-  (
-    next:=new;
-  );
-
-  - set_prev new:LIMIT_Y <-
-  (
-    prev:=new;
-  );
-
-
diff --git a/lib/gui/clipping/plan.li b/lib/gui/clipping/plan.li
deleted file mode 100644
index b11340f..0000000
--- a/lib/gui/clipping/plan.li
+++ /dev/null
@@ -1,184 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := PLAN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Sub structure for WINDOW.";
-  
-  - version := 1;
-  
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-  
-  // +--------------------+
-  // |    (x0,y0)         |
-  // |       X------------|.........+
-  // |       | / / / / / /|         :
-  // |       |/ / / / / / |         :
-  // |       | /  PLAN / /|         :
-  // |       |/ / / / / / |         :
-  // |       | / / / / / /|         :
-  // |       +------------X.........+
-  // |                 (x1,y1)
-  // |                    |
-  // +--------------------+
-  
-  + is_x:BOOLEAN;
-  + is_y:BOOLEAN;
-  
-  + level:INTEGER;
-  + window:AREA;
-  
-  // Limit.
-  + x0:LIMIT_X;
-  + x1:LIMIT_X;
-  + y0:LIMIT_Y;
-  + y1:LIMIT_Y;
-  
-  // Link.
-  + next:PLAN;
-  + prev:PLAN;
-  
-Section Public 
-  
-  - make win:AREA <-
-  (
-    window:=win;
-  );
-  
-  - create win:AREA :PLAN <- 
-  ( + result:PLAN;
-    
-    result:=PLAN.clone;
-    result.make win;
-    result
-  );
-  
-  - remove old_root:PLAN :PLAN <-
-  ( + new_root:PLAN;
-    
-    (prev=NULL).if {
-      new_root:=next;
-    } else {
-      prev.set_next next;
-      new_root:=old_root;
-    };
-    (next!=NULL).if {
-      next.set_prev prev;
-    };
-    // Update level:
-    (next!=NULL).if {
-      next.dec_level;
-    };
-    new_root
-  );
-
-  - display <-
-  (
-    '['.print;
-    level.print;
-    ']'.print;
-  );
-  
-  - dec_level <-
-  (
-    level:=level-1;
-    (next!=NULL).if {
-      next.dec_level; // Terminal recursivity
-    };
-  );
-
-  - inc_level <-
-  (
-    level:=level+1;
-    (next!=NULL).if {
-      next.inc_level; // Terminal recursivity
-    };
-  );
-  
-  - set_x0 new:LIMIT_X <-
-  (
-    x0:=new;
-  );
-
-  - set_y0 new:LIMIT_Y <-
-  (
-    y0:=new;
-  );
-
-  - set_x1 new:LIMIT_X <-
-  (
-    x1:=new;
-  );
-
-  - set_y1 new:LIMIT_Y <-
-  (
-    y1:=new;
-  );
-  
-  - set_level new:INTEGER <-
-  (
-    level:=new;
-  );
-  
-  - set_next new:PLAN <-
-  (
-    next:=new;
-  );
-
-  - set_prev new:PLAN <-
-  (
-    prev:=new;
-  );
-
-  - active_y <-
-  (
-    is_y:=TRUE;
-  );
-
-  - desactive_y <-
-  (
-    is_y:=FALSE;
-  );
-
-  - active_x <-
-  (
-    is_x:=TRUE;
-  );
-
-  - desactive_x <-
-  (
-    is_x:=FALSE;
-  );
-
-
-
-
-
-
-
diff --git a/lib/gui/desk.li b/lib/gui/desk.li
deleted file mode 100644
index cb877c6..0000000
--- a/lib/gui/desk.li
+++ /dev/null
@@ -1,168 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := DESK;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="User Interface and Events managment.";
-
-  - version := 1;  
-  - date    := "2003/04";
-  
-Section Inherit  
-  
-  + parent_g_raw:Expanded G_GROUP;
-        
-Section Public
-  
-  - physical_screen:AREA; 
-  
-  - virtual_screen:VIRTUAL_SCREEN;
-  
-  //   Video.width
-  // +----------+
-  // | Physical |
-  // |  Screen  | Video.height
-  // +----------+
-  //   /      \
-  // |\     +----------+
-  //  L     |   Desk   |
-  // Mouse  |          |
-  //        +----------+
-  //             |
-  //             |  Video.width * w
-  //        +-----------------------+
-  //        |   Virtual Screen      | Video.height * h
-  //        |                       |
-  //        +-----------------------+
-  
-  - make bmp:ABSTRACT_BITMAP with elt:G_EXPR <-
-  (
-    make bmp scale (1,1) with elt;
-  );
-    
-  - make bmp:ABSTRACT_BITMAP scale (w,h:INTEGER) with elt:G_EXPR <-
-  [
-    -? {w > 0};
-    -? {h > 0};
-  ]
-  ( + msg:EVENT;    
-    + input:INPUT;
-
-    set_video_support bmp;
-    physical_screen := AREA.clone;
-    physical_screen.make NULL from (0,0) size (bmp.width,bmp.height);    
-    //
-    root := elt;
-    //
-    EVENT_SYSTEM.make;
-    focus := Self;    
-    //    
-    set_position physical_screen at (0,0) 
-    size (physical_screen.width,physical_screen.height);
-    
-    virtual_screen := VIRTUAL_SCREEN.create Self scale (w,h);
-    connect_to MOUSE;
-    connect_to KEYBOARD;
-    connect_to TIMER;
-    {
-      EVENT_SYSTEM.get_event;
-      {storage_message.is_empty}.until_do {
-	msg := storage_message.first;
-	storage_message.remove_first;
-        msg.set_destination focus;
-        focus.receive msg;	
-	input ?= msg.source;
-        input.acknowledge;
-      };      
-    }.do_while {`1`:BOOLEAN(TRUE,FALSE)}; // Infinity Loop     
-  );
-  
-  //
-  // Display.
-  //
-
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (     
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back; 
-  );
-
-  //
-  // Connect.
-  //    
-  
-  - connect_to obj:INPUT <-
-  (
-    obj.make;
-    obj.add_client Self;
-  );
-  
-  - focus:INBOX;
-  
-  - set_focus f:INBOX <-
-  (
-    focus := f;
-  );
-  
-  - resize_window (w,h:INTEGER) <-
-  (    
-    VIDEO.resize (w,h);
-    physical_screen.resize (w,h);    
-    set_position physical_screen at (0,0) size (w,h);
-    virtual_screen.update_size;
-  );
-  
-  //
-  // Message Server.
-  //
-  
-Section Private
-  
-  - storage_message:LINKED_LIST[EVENT] := LINKED_LIST[EVENT].create;
-  
-Section Public  
-  
-  - receive msg:EVENT <-
-  ( + mouse:EVENT_MOUSE;
-    + win:AREA;
-        
-    (msg.destination = NULL).if {
-      // Hardware Message.      
-      storage_message.add_last msg;
-    } else {
-      // Other message.
-      mouse ?= msg;
-      (mouse != NULL).if {
-	win := get_object (mouse.x_current,mouse.y_current);
-	((win != focus) && {win != NULL}).if {
-	  focus := win;
-          msg.set_destination focus;
-	  focus.receive msg;		  
-	};
-      };
-    };
-  );
-  
\ No newline at end of file
diff --git a/lib/gui/event/event.li b/lib/gui/event/event.li
deleted file mode 100644
index ac33268..0000000
--- a/lib/gui/event/event.li
+++ /dev/null
@@ -1,51 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := EVENT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Event generic";
-    
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  + destination:INBOX; // If null, Broad cast message.
-  
-  - source:INBOX <- (deferred; INBOX);  
-      
-  - set_destination evt:INBOX <-
-  (
-    destination := evt;
-  );
-  
-  - display <- deferred;
-
-Section EVENT  
-  
-  - string_msg:STRING := STRING.create 250;
-  
-
diff --git a/lib/gui/event/event_gui.li b/lib/gui/event/event_gui.li
deleted file mode 100644
index 4a48e4c..0000000
--- a/lib/gui/event/event_gui.li
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := EVENT_GUI;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Keyboard event.";
-  
-Section Inherit
-
-  + parent_event:Expanded EVENT;
-  
-Section Public
-  
-  + source:INBOX;
-      
-  - make src:INBOX at dst:INBOX <-
-  (
-    source      := src;
-    destination := dst;
-  );
-  
-  //
-  // Display.
-  // 
-  
-  - display <-
-  ( + item:ITEM;
-    string_msg.copy "GUI event";
-    item ?= source;
-    (item != NULL).if {
-      string_msg.append " item ";
-      string_msg.append item.name;
-    };
-    string_msg.add_last '\n'.print;
-    VIDEO.message string_msg;
-  );
-  
-  
-    
-
-
-
diff --git a/lib/gui/event/event_keyboard.li b/lib/gui/event/event_keyboard.li
deleted file mode 100644
index d0633d7..0000000
--- a/lib/gui/event/event_keyboard.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := EVENT_KEYBOARD;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :="Keyboard event.";
-  
-Section Inherit
-
-  + parent_event:Expanded EVENT;
-  
-Section Public
-  
-  - source:INBOX := KEYBOARD;
-  
-  + key:UINTEGER_16;
-    
-  + prev:EVENT_KEYBOARD;
-  
-  - set_prev new_prev:EVENT_KEYBOARD <-
-  (
-    prev := new_prev;
-  );
-  
-  - make c:UINTEGER_16 <-
-  (
-    key := c;
-    destination := NULL;
-  );
-  
-  //
-  // Display.
-  // 
-  
-  - display <-
-  (
-    string_msg.copy "Keyb event: ";
-    string_msg.append ((key>>8).to_binary);
-    string_msg.add_last ' ';
-    string_msg.add_last ((key & 0FFh).to_character);
-    string_msg.add_last '\n';
-    VIDEO.message string_msg;
-  );
-  
-  - copy_from evt:EVENT_KEYBOARD <-
-  (
-    ? {evt != NULL};
-    key := evt.key;
-    destination := NULL;
-  );
-  
-    
-
-
-
diff --git a/lib/gui/event/event_mouse.li b/lib/gui/event/event_mouse.li
deleted file mode 100644
index a917f4d..0000000
--- a/lib/gui/event/event_mouse.li
+++ /dev/null
@@ -1,141 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := EVENT_MOUSE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Mouse event.";
-  
-Section Inherit
-
-  + parent_event:Expanded EVENT;
-  
-Section Public
-  
-  - source:INBOX := MOUSE;
-    
-  + x_current:INTEGER;
-  + y_current:INTEGER;
-    
-  + right:BOOLEAN;
-  + left:BOOLEAN;
-  
-  + prev:EVENT_MOUSE;
-  
-  - set_prev new_prev:EVENT_MOUSE <-
-  (
-    prev := new_prev;
-  );
-  
-  - make (xn,yn:INTEGER) button (l,r:BOOLEAN) <-
-  (
-    x_current:=xn;
-    y_current:=yn;
-    left :=l;
-    right:=r;
-    destination := NULL;
-  );
-  
-  - copy_from evt:EVENT_MOUSE <-
-  (
-    ? {evt != NULL};
-    x_current := evt.x_current;
-    y_current := evt.y_current;
-    left := evt.left;
-    right := evt.right;
-    destination := NULL;
-  );
-   
-  - dx:INTEGER <- (x_current - prev.x_current);
-  
-  - dy:INTEGER <- (y_current - prev.y_current);
-  
-  - left_up:BOOLEAN    <- ((! prev.left) && {left});
-
-  - left_down:BOOLEAN  <- (prev.left && {! left});
-  
-  - right_up:BOOLEAN   <- ((! prev.right) && {right});
-  
-  - right_down:BOOLEAN <- (prev.right && {! right});
-    
-  - is_pressed:BOOLEAN <- ((left!=prev.left) || {right!=prev.right});
-  
-  - is_moving:BOOLEAN  <- ((x_current!=prev.x_current) || {y_current!=prev.y_current});
-
-  - is_moving_only:BOOLEAN <- ((! is_pressed) && {is_moving});
-  
-  //
-  // Window consideration.
-  //
-  
-  - window:AREA <- 
-  ( + result:AREA;
-    result ?= destination;
-    ? {result != NULL};
-    result
-  );
-  
-  - x_relative:INTEGER <-
-  ( 
-    x_current - window.x_window    
-  );
-  
-  - y_relative:INTEGER <-
-  ( 
-    y_current - window.y_window
-  );
-  
-  - is_in:BOOLEAN <-
-  ( + area:AREA;
-    area ?= destination;
-    (x_current.in_range (area.x_window) to (area.x_window + area.width  - 1)) &&
-    {y_current.in_range (area.y_window) to (area.y_window + area.height - 1)}
-  );
-  
-  - in_up:BOOLEAN <- (! prev.is_in) && {is_in};
-  
-  - is_out:BOOLEAN <- ! is_in;
-  
-  - out_up:BOOLEAN <- (prev.is_in) && {! is_in};
-  
-  //
-  // Display.
-  //  
-
-  - display <-
-  (
-    string_msg.copy "Mouse event";
-    left.if {
-      string_msg.append " Left";
-    };
-    right.if {
-      string_msg.append " Right";
-    };
-    string_msg.add_last '\n';
-    VIDEO.message string_msg;
-  );
-  
-  
\ No newline at end of file
diff --git a/lib/gui/event/event_timer.li b/lib/gui/event/event_timer.li
deleted file mode 100644
index 7baa6b7..0000000
--- a/lib/gui/event/event_timer.li
+++ /dev/null
@@ -1,70 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := EVENT_TIMER;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Timer event.";
-  
-Section Inherit
-
-  + parent_event:Expanded EVENT;
-  
-Section Public
-  
-  - source:INBOX := TIMER;
-  
-  + count:UINTEGER_32;
-  
-  + prev:EVENT_TIMER;
-  
-  - set_prev new_prev:EVENT_TIMER <-
-  (
-    prev := new_prev;
-  );
-  
-  - make new_count:UINTEGER_32 <-
-  (
-    count := new_count;
-    destination := NULL;
-  );
-  
-  - delay:UINTEGER_32 <- count - prev.count;
-  
-  //
-  // Display.
-  //
-  
-  - display <-
-  (
-     "Timer Event: ".print;
-     count.print; 
-     " delay: ".print;
-     delay.print;
-    '\n'.print;
-  );
-
-
-
-
diff --git a/lib/gui/g_button.li b/lib/gui/g_button.li
deleted file mode 100644
index 0487358..0000000
--- a/lib/gui/g_button.li
+++ /dev/null
@@ -1,212 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_BUTTON;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-  
-  // BSBS: Fusion a faire avec G_CHECK
-  
-Section Inherit  
-
-  + parent_g_group:Expanded G_GROUP;
-  
-Section Public  
-  
-  + auto_action:G_WIN_OUT;
-  
-  + stat:INTEGER_8;
-  
-  + action:BLOCK := 
-  { b:G_BUTTON; 
-    // Nothing.
-  };
-  
-  //
-  // Creation
-  //
-  
-  - create elt:G_EXPR connect a:G_WIN_OUT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect a;
-    result
-  );
-  
-  - make elt:G_EXPR connect a:G_WIN_OUT <-
-  (
-    make elt;
-    auto_action := a;
-  );
-  
-  - create elt:G_EXPR action b:BLOCK :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt action b;
-    result
-  );
-  
-  - make elt:G_EXPR action b:BLOCK <-
-  (
-    make elt;
-    action := b;
-  );
- 
-  //
-  // Size.
-  //
-  
-  - predict_size (w,h:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    w + 4, h + 4
-  );
-
-  - width_min:INTEGER <-
-  (
-    parent_g_group.width_min + 4
-  );
-  
-  - height_min:INTEGER <-
-  (
-    parent_g_group.height_min + 4
-  );
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + px,py,nw,nh:INTEGER;
-    update rac from (x,y) size (w,h);
-    ((w-4) > root.width_max).if {      
-      nw := root.width_max;
-      px := ((w-4 - nw) / 2) + 2;
-    } else {
-      nw := w - 4;
-      px := 2;
-    };
-    ((h-4) > root.height_max).if {      
-      nh := root.height_max;
-      py := ((h-4 - nh) / 2) + 2;
-    } else {
-      nh := h - 4;
-      py := 2;
-    };    
-    root.set_position Self at (px,py) size (nw,nh);
-  );
-  
-  //
-  // Display.
-  //
-
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + col:UINTEGER_32;
-    
-    ((stat & 1) = 0).if {
-      col := color_back;
-    } else {
-      col := color_back_light;
-    };    
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color col;
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( 
-    clipping (x0,y0) to (x1,y1);
-    (stat = 0).if {
-      draw_slave Self from (x0,y0) to (x1,y1);
-    } else {
-      (stat = 1).if {
-	draw_border_out (x_min  ,y_min  ) to (x_max  ,y_max  );
-	draw_border_out (x_min+1,y_min+1) to (x_max-1,y_max-1);	
-      } else {
-	draw_border_in (x_min  ,y_min  ) to (x_max  ,y_max  );
-	draw_border_in (x_min+1,y_min+1) to (x_max-1,y_max-1);
-      };    
-      draw_slave Self from (x_min+2,y_min+2) to (x_max-2,y_max-2);
-    };
-  );
-  
-  //
-  // Event manager.
-  //
-  
-  - receive msg:EVENT <-
-  // stat :
-  // -1 = Not actif
-  //  0 = out & off
-  //  1 = in  & off
-  //  2 = out & on
-  //  3 = in  & on
-  ( + mouse:EVENT_MOUSE;  
-    + gui:EVENT_GUI;
-    + new_stat:INTEGER;
-    + cur:AREA;
-    + win_out:G_WIN_OUT;
-    
-    mouse ?= msg;
-    gui ?= msg;
-    (mouse != NULL).if {                  
-      new_stat := (mouse.is_in).to_integer | (mouse.left.to_integer << 1);      
-      (new_stat != stat).if {	
-	stat := new_stat;
-	((stat & 1) != 0).if {
-	  // In.	    	    
-	  (mouse.left_down).if {
-	    (auto_action != NULL).if {	    
-	      (auto_action.is_open).if {
-		auto_action.close;
-	      } else {
-		auto_action.open_by Self;				
-	      };
-	      cur := parent;
-	      (cur != NULL).if {
-		{
-		  win_out ?= cur;
-		  cur := cur.parent;
-		}.do_while {(cur != NULL) && {win_out = NULL}};
-		((win_out != NULL) && {win_out.title = NULL}).if {
-		  win_out.close;
-		};
-	      };		
-	    } else {
-	      action.value Self;
-	    };
-	    stat := 0;
-	  };
-	} else {
-	  // Out.	  
-	  ((stat & 10b) = 0).if {
-	    stat := 0;	  
-	    DESK.receive msg;
-	  };
-	};
-	refresh;	
-      };
-    };
-  );
diff --git a/lib/gui/g_check.li b/lib/gui/g_check.li
deleted file mode 100644
index 05626b0..0000000
--- a/lib/gui/g_check.li
+++ /dev/null
@@ -1,340 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_CHECK;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-
-  + parent_g_group:Expanded G_GROUP;
-  
-Section Public  
-  
-  + auto_action:G_WIN_OUT;
-  
-  + stat:INTEGER_8;
-  
-  - is_on:BOOLEAN    <- (stat & 0100b) != 0;
-  - is_check:BOOLEAN <- (stat & 1000b) != 0;
-  
-  - set_stat s:INTEGER_8 <-
-  (
-    stat := s;
-    (stat != Old stat).if {
-      refresh;
-    };
-  );
-  
-  + action:BLOCK := 
-  { b:G_CHECK; 
-    // Nothing.
-  };
-  
-  + next_check:G_CHECK;
-  + previous_check:G_CHECK;
-  
-  - set_previous_check p:G_CHECK <-
-  (
-    previous_check := p;
-  );
-  
-  //
-  // Operator position.
-  //
-  
-  - '^' Left 40 other:G_CHECK :G_CHECK <-
-  (
-    next_check := other;
-    other.set_previous_check Self;
-    other
-  );
-    
-  //
-  // Creation
-  //
-  
-  - create_with_check elt:G_EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect NULL action NULL check TRUE;
-    result
-  );
-
-  - create_with_check elt:G_EXPR connect a:G_WIN_OUT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect a action NULL check TRUE;
-    result
-  );
-
-  - create elt:G_EXPR connect a:G_WIN_OUT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect a action NULL check FALSE;
-    result
-  );
-  
-  - create_with_check elt:G_EXPR action b:BLOCK :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect NULL action b check TRUE;
-    result
-  );
-
-  - create elt:G_EXPR action b:BLOCK :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt connect NULL action b check FALSE;
-    result
-  );
-  
-  - make elt:G_EXPR connect a:G_WIN_OUT action b:BLOCK check c:BOOLEAN <-
-  (
-    make elt;
-    auto_action := a;
-    action := b;
-    stat := c.to_integer << 3;
-  );
-     
-  //
-  // Size.
-  //
-  
-  - predict_size (w,h:INTEGER) :(INTEGER,INTEGER) <-
-  ( + rw:INTEGER;
-    
-    (is_check).if {
-      rw := w + 24;
-    } else {
-      rw := w + 4;
-    };
-    rw , h + 4
-  );  
-  
-  - width_min:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_check).if {
-      result := parent_g_group.width_min + 24;
-    } else {
-      result := parent_g_group.width_min + 4;
-    };
-    result
-  );
-  
-  - height_min:INTEGER <-
-  (
-    parent_g_group.height_min + 4
-  );
-  
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + px,py,nw,nh,p:INTEGER;   
-    update rac from (x,y) size (w,h);
-    (is_check).if {
-      p := 20;
-    };
-    ((w-(p+4)) > root.width_max).if {      
-      nw := root.width_max;
-      px := ((w-(p+4) - nw) / 2) + (p+2);
-    } else {
-      nw := w - (p+4);
-      px := (p+2);
-    };
-    ((h-4) > root.height_max).if {      
-      nh := root.height_max;
-      py := ((h-4 - nh) / 2) + 2;
-    } else {
-      nh := h - 4;
-      py := 2;
-    };    
-    root.set_position Self at (px,py) size (nw,nh);
-  );
-  
-  //
-  // Display.
-  //
-
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + col:UINTEGER_32;
-    
-    ((stat & 01b) = 0).if {
-      col := color_back;
-    } else {
-      col := color_back_light;
-    };    
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color col;
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + style:INTEGER_8;
-    clipping (x0,y0) to (x1,y1);
-    ((is_on) && {! is_check}).if {
-      style := 1; // In
-    } else {        
-      ((stat & 11b) = 01b).if {
-        style := 2; // Out
-      } else {
-        ((stat & 11b) != 00b).if {
-          style := 1; // In
-        };
-      };
-    };
-    (style)
-    .when 0 then {
-      draw_slave Self from (x0,y0) to (x1,y1);
-    }
-    .when 1 then {
-      draw_border_in (x_min  ,y_min  ) to (x_max  ,y_max  );
-      draw_border_in (x_min+1,y_min+1) to (x_max-1,y_max-1);
-      draw_slave Self from (x_min+2,y_min+2) to (x_max-2,y_max-2);
-    }
-    .when 2 then {
-      draw_border_out (x_min  ,y_min  ) to (x_max  ,y_max  );
-      draw_border_out (x_min+1,y_min+1) to (x_max-1,y_max-1);	
-      draw_slave Self from (x_min+2,y_min+2) to (x_max-2,y_max-2);
-    };
-    
-    (is_check).if {
-      draw_check;
-    };
-  );
-  
-  //
-  // Event manager.
-  //
-  
-  - receive msg:EVENT <-
-  // stat :
-  // -1 = Not actif
-  //  0 = out & off
-  //  1 = in  & off
-  //  2 = out & on
-  //  3 = in  & on
-  ( + mouse:EVENT_MOUSE;  
-    + gui:EVENT_GUI;
-    + new_stat:INTEGER;
-    + cur:G_CHECK;
-    
-    mouse ?= msg;
-    gui ?= msg;
-    (mouse != NULL).if {                  
-      new_stat := (stat & 1100b) | (mouse.is_in).to_integer | (mouse.left.to_integer << 1);      
-      (new_stat != stat).if {	
-	stat := new_stat;
-	((stat & 1) != 0).if {
-	  // In.	    	    
-	  (mouse.left_down).if {
-	    (auto_action != NULL).if {	    
-	      (auto_action.is_open).if {
-		auto_action.close;
-	      } else {
-		auto_action.open_by Self;		
-	      };
-	    } else {
-	      action.value Self;
-	    };
-	    stat := stat ^ 0100b;
-	    ((stat & 0100b) != 0).if {
-	      cur := next_check;
-	      {cur != NULL}.while_do {
-		cur.set_stat (cur.stat & 1000b);
-		cur := cur.next_check;
-	      };
-	      cur := previous_check;
-	      {cur != NULL}.while_do {
-		cur.set_stat (cur.stat & 1000b);
-		cur := cur.previous_check;
-	      };
-	    };
-	  };
-	} else {
-	  // Out.	  
-	  ((stat & 10b) = 0).if {
-	    stat := stat & 1100b;	  
-	    DESK.receive msg;
-	  };
-	};
-	refresh;	
-      };
-    };
-  );
-  
-  //
-  // Check draw.
-  //
-  
-  - draw_check <-
-  ( + py:INTEGER;
-    
-    py := (height - 14) >> 1;
-    ((next_check = NULL) && {previous_check = NULL}).if {
-      // Check.
-      draw_border_in (3,py) to (16,py+13);
-      rectangle_fill (4,py+1) to (15,py+12) color color_back_light;
-      ((stat & 100b) != 0).if {
-	color black;
-	line  (5,(py+2)) to (14,(py+11));
-	line  (5,(py+3)) to (13,(py+11));
-	line  (6,(py+2)) to (14,(py+10));
-	
-	line (14,(py+2)) to  (5,(py+11));
-	line (13,(py+2)) to  (5,(py+10));
-	line (14,(py+3)) to  (6,(py+11));
-      };
-    } else {
-      // Check list
-      color color_dark;
-      move_to (3,(py+6));
-      line_to (9,py);
-      line_to (15,(py+6));
-      color color_light;
-      line_to (9,(py+12));
-      line_to (3,(py+6));
-      
-      color color_back_light;
-      poly_move_to (9,(py+1));
-      poly_line_to (14,(py+6));
-      poly_line_to (9,(py+11));
-      poly_line_to (4,(py+6));
-      poly_trace;
-      
-      ((stat & 100b) != 0).if {
-	color black;
-	circle_fill (9,(py+6)) rayon 2 color black;
-      };
-    };
-  );
-  
\ No newline at end of file
diff --git a/lib/gui/g_img.li b/lib/gui/g_img.li
deleted file mode 100644
index 8d68ecd..0000000
--- a/lib/gui/g_img.li
+++ /dev/null
@@ -1,168 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_IMG;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Output text for GUI.";
-
-Section Inherit  
-  
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-          
-Section Public
-  
-  + bitmap:ABSTRACT_BITMAP;
-    
-  //
-  // Width / Height
-  //
-  
-  - predict_size filename:ABSTRACT_STRING :(INTEGER,INTEGER) <-
-  ( + entry:ENTRY;
-    + f:STD_FILE;
-    + bmp:FORMAT_BMP;
-    //+ ai_file:AI_FILE;
-    + w,h:INTEGER;
-    
-    entry := FILE_SYSTEM.get_entry filename;
-    ((entry = NULL) || {! entry.is_file}).if {
-      VIDEO.message ("ERROR: File '" + filename + "' not found.\n");
-      die_with_code exit_failure_code;
-    };    
-    (entry.path.has_suffix ".bmp").if {
-      f ?= entry;
-      bmp := FORMAT_BMP.create_with_file f;      
-      (bmp = NULL).if {
-        VIDEO.message "Error: BMP format invalid.\n";
-        die_with_code exit_failure_code;      
-      };
-      w := bmp.width;
-      h := bmp.height;      
-      bmp.close;
-    }.elseif {entry.path.has_suffix ".ai"} then {
-      not_yet_implemented;
-    };
-    //
-    w,h
-  );
-
-  - width_min :INTEGER <- bitmap.width;
-  
-  - height_min:INTEGER <- bitmap.height;
-
-  - width_max :INTEGER <- width_min;
-  
-  - height_max:INTEGER <- height_min;
-  
-  //
-  // Creation.
-  //
-  
-  - create_with bmp:ABSTRACT_BITMAP :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make bmp;
-    result
-  );    
-  
-  - create filename:ABSTRACT_STRING :SELF <-
-  ( + result:SELF;
-    + entry:ENTRY;
-    + fmt:FORMAT_IMG;
-    + f:STD_FILE;
-    + ai_file:AI_FILE;
-    + w,h:INTEGER;
-    + bmp:BITMAP[PIXEL_24];
-    
-    entry := FILE_SYSTEM.get_entry filename;
-    ((entry = NULL) || {! entry.is_file}).if {
-      VIDEO.message ("ERROR: File '" + filename + "' not found.\n");
-      die_with_code exit_failure_code;
-    };    
-    (entry.path.has_suffix ".bmp").if {
-      entry.open;    
-      f ?= entry;
-      fmt := FORMAT_BMP.create_with_file f;
-      (fmt = NULL).if {
-        VIDEO.message "Error: BMP format invalid.\n";
-        die_with_code exit_failure_code;      
-      };
-      w := fmt.width;
-      h := fmt.height;
-      bmp := BITMAP[PIXEL_24].create (w,h);
-      fmt.put_image_in bmp;          
-      f.close;      
-    }.elseif {entry.path.has_suffix ".ai"} then {      
-      entry.open;      
-      f ?= entry;
-      bmp := BITMAP[PIXEL_24].create (10,10);	
-      ai_file := AI_FILE.clone;
-      ai_file.fill_bitmap f in bmp scale 3;	
-      f.close;
-    };
-    //
-    result := clone;
-    result.make bmp;
-    result
-  );
-    
-  - make bmp:ABSTRACT_BITMAP <-
-  (
-    bitmap := bmp;    
-  ); 
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( //+ g_grp:G_GROUP;    
-    clipping (x0,y0) to (x1,y1);    
-    //    
-        
-    put_bitmap bitmap to (0,0);
-    //    
-    //g_grp ?= parent;
-    //(width > width_min).if {
-    //  g_grp.draw_in Self from (width_min,0) to (x_max,height_min-1);
-    //};
-    //(height > height_min).if {
-    //  g_grp.draw_in Self from (0,height_min) to (x_max,y_max);    
-    //};
-  );
-  
\ No newline at end of file
diff --git a/lib/gui/g_in.li b/lib/gui/g_in.li
deleted file mode 100644
index 1277a70..0000000
--- a/lib/gui/g_in.li
+++ /dev/null
@@ -1,338 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_IN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Output text for GUI.";
-
-Section Inherit  
-
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-          
-Section Public
-  
-  + action:BLOCK := 
-  { in:G_IN; 
-    // Nothing.
-  };
-  
-  + stat:INTEGER_8;
-  
-  + text:STRING;
-  
-  + justify:UINTEGER_8;
-  
-  + cursor:INTEGER;
-  
-  - left  :UINTEGER_8 := 0;
-  - right :UINTEGER_8 := 1;
-  - center:UINTEGER_8 := 2;
-  
-  //
-  // Width / Height
-  //
-  
-  - predict_size (car,line:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    car * 8, line * 16
-  );  
-  
-  + width_min:INTEGER;
-  
-  + height_min:INTEGER;  
-  
-  - height_max:INTEGER <- height_min;
-  
-  //
-  // Creation.
-  //
-  
-  - create (car,line:INTEGER) :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (car,line) justify 0 action NULL;
-    result
-  );
-
-  - create (car,line:INTEGER) action a:BLOCK :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (car,line) justify 0 action a;
-    result
-  );
-  
-  - create (car,line:INTEGER) justify j:UINTEGER_8 :SELF <-
-  [
-    -? {j.in_range 0 to 2};
-  ]
-  ( + result:SELF;
-        
-    result := clone;
-    result.make (car,line) justify j action NULL;
-    result
-  );
-
-  - create (car,line:INTEGER) justify j:UINTEGER_8 action a:BLOCK :SELF <-
-  [
-    -? {j.in_range 0 to 2};
-  ]
-  ( + result:SELF;
-        
-    result := clone;
-    result.make (car,line) justify j action a;
-    result
-  );
-  
-  - make (car,line:INTEGER) justify j:UINTEGER_8 action a:BLOCK <-
-  [
-    -? {car > 1}; 
-    -? {line > 0};
-  ]
-  (
-    text    := STRING.create (car*line);
-    width_min  := car  * 8;
-    height_min := line * 16;
-    justify := j;
-    action  := a;
-  ); 
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-  );
-  
-  //
-  // Display.
-  //
-    
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + beg,idx,siz,px,py,idx2:INTEGER;
-        
-    clipping (x0,y0) to (x1,y1);    
-    //    
-    rectangle_fill (x_min,y_min) to (x_max,y_max) color white;
-    //    
-    ((stat & 11b) = 2).if {
-      (cursor > text.upper).if {
-        cursor := text.upper;
-      };
-      text.insert '|' to cursor;
-    };
-    ((stat & 11b) = 0).if {
-      color black;
-    } else {    
-      color red;
-    };
-    beg := text.lower;
-    py := (height - height_min) / 2;
-    {
-      idx := text.index_of '\n' since beg;
-      {
-	siz := font_width text at beg to (idx-1);
-	(siz > width).if {	
-	  idx2 := text.last_index_of ' ' since (idx-1);
-	  (idx2 > beg).if {
-	    idx := idx2;
-	  } else {
-	    idx := idx - 1;
-	  };
-	};
-      }.do_while {siz > width};      
-      (justify != left).if {	
-	(justify = right).if {
-	  // Right
-	  px := width - siz;
-	} else {
-	  // Center
-	  px := (width - siz) >> 1;
-	};
-      };
-      print text at beg to (idx-1) to (px,py); 
-      py  := py + 16;
-      beg := idx + 1;      
-    }.do_until {(idx > text.count) || {py > height}};    
-    ((stat & 11b) = 2).if {
-      text.remove (cursor+1);
-    };
-    //(py > height).if {
-      //text.remove_last (text.upper - idx + 2);
-      //cursor := cursor.min (text.upper);
-      //stat := stat | 4;
-    //};
-    //
-  );
-  
-  //
-  // Event manager.
-  //
-  
-  - receive msg:EVENT <-
-  // 0 : Out
-  // 1 : in
-  // 2 : input
-  // 4 : End of buffer.
-  ( + mouse:EVENT_MOUSE;
-    + keyb:EVENT_KEYBOARD;
-    + win:AREA;    
-    + cmd:UINTEGER_8;
-    + key:CHARACTER;
-        
-    mouse ?= msg;
-    (mouse != NULL).if {
-      win := DESK.get_object (mouse.x_current,mouse.y_current);
-      (stat = -1).if {
-	(win != Self).if {
-	  DESK.receive msg;
-	};
-      } else {
-	(stat & 11b)
-	.when 0 then {
-	  (win = Self).if {
-	    stat := 1;
-	    refresh;
-	  } else {
-	    DESK.receive msg;
-	  };
-	}
-	.when 1 then {
-	  (win = Self).if {
-	    (MOUSE.left).if {
-	      stat := 2;
-	      cursor := text.count;
-	      refresh;
-	    };
-	  } else {
-	    stat := 0;
-	    refresh;
-	  };
-	}
-	.when 2 then {
-	  ((win != Self) && {MOUSE.left}).if {
-	    stat := 0;	  
-	    refresh;
-	    // Action.
-	    (action != NULL).if {
-	      action.value Self;
-	      (cursor > text.count).if {
-		cursor := text.count;
-	      };
-	    };
-	    DESK.receive msg;
-	  };
-	};
-      };
-    };
-    
-    keyb ?= msg;
-    ((keyb != NULL) && {(stat & 11b) = 2}).if {      
-      cmd := (keyb.key >> 8).to_uinteger_8;
-      key := (keyb.key & 0FFh).to_character;
-      ((cmd & 8) != 0).if {
-	key
-	// Enter
-	.when '\13\' or '\20h\' then {	  
-	  text.add_last '\n';
-	  cursor := cursor + 1;
-	  refresh;
-	  // Action.
-	  (action != NULL).if {
-	    action.value Self;
-	    (cursor > text.count).if {
-	      cursor := text.count;
-	    };
-	  };	  
-	  ((stat & 100b) != 0).if {	    
-	    stat := 0;
-	    DESK.receive msg;
-	  };
-	}
-	// Move cursor.	
-	.when 'L' then { 
-	  (cursor != 0).if {
-	    cursor := cursor - 1;
-	  };
-	}
-	.when 'R' then {
-	  (cursor != text.count).if {
-	    cursor := cursor + 1;
-	  };
-	}
-	.when 'B' then {
-	  cursor := 0;
-	}
-	.when 'E' then {
-	  cursor := text.count;
-	}
-	// Suppr.
-	.when '\8\' then {
-	  (cursor != 0).if {
-	    text.remove cursor;
-	    cursor := cursor - 1;
-	  };
-	}
-	.when 'S' then {
-	  (cursor != text.count).if {
-	    text.remove (cursor+1);
-	  };
-	};
-      } else {
-	text.insert key to cursor;
-	cursor := cursor + 1;
-      };
-      stat := stat & 11b;
-      refresh;      
-    };
-  );
-
-Section Private
-  
-  //
-  // Obsolete (A revoir)
-  //
-  
-  - what_letter pos_x:INTEGER :INTEGER <-
-  // Return cursor position under `pos_x' coord.
-  ( + result:INTEGER; 
-    + x,x_cur:INTEGER; // la position x de la souris moins la taille du label
-    
-    x := pos_x - (font_width name + 4); // 4 for border
-        
-    result := text.lower;    
-    {(result <= text.upper) && {x_cur < x}}.while_do {
-      x_cur := x_cur + font_width_letter (text.item result);
-      result := result + 1;
-    };
-        
-    result-1
-  );
diff --git a/lib/gui/g_out.li b/lib/gui/g_out.li
deleted file mode 100644
index 8c308a8..0000000
--- a/lib/gui/g_out.li
+++ /dev/null
@@ -1,158 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_OUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Output text for GUI.";
-
-Section Inherit  
-
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-          
-Section Public
-  
-  + text:STRING;
-  
-  + justify:UINTEGER_8;
-  
-  - left  :UINTEGER_8 := 0;
-  - right :UINTEGER_8 := 1;
-  - center:UINTEGER_8 := 2;
-  
-  //
-  // Width / Height
-  //
-  
-  - predict_size txt:ABSTRACT_STRING :(INTEGER,INTEGER) <-
-  ( 
-    width_min_on txt, height_min_on txt
-  );
-  
-  - width_min:INTEGER <-
-  ( 
-    width_min_on text
-  );
-  
-  - height_min:INTEGER <-
-  (
-    height_min_on text
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create txt:ABSTRACT_STRING :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make txt justify left;
-    result
-  );
-  
-  - create txt:ABSTRACT_STRING justify j:UINTEGER_8 :SELF <-
-  [
-    -? {j.in_range 0 to 2};
-  ]
-  ( + result:SELF;
-        
-    result := clone;
-    result.make txt justify j;
-    result
-  );
-  
-  - make txt:ABSTRACT_STRING justify j:UINTEGER_8 <-
-  (
-    text := STRING.create (txt.count.max 8);
-    text.copy txt;
-    justify := j;
-  ); 
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + beg,idx,siz,px,py:INTEGER;
-    + g_grp:G_GROUP;
-    
-    clipping (x0,y0) to (x1,y1);    
-    //    
-    g_grp ?= parent;
-    g_grp.draw_slave Self from (x0,y0) to (x1,y1);
-    //
-    color black;
-    beg := text.lower;
-    py := (height - height_min) / 2;
-    {
-      idx := text.index_of '\n' since beg;
-      (justify != left).if {
-	siz := font_width text at beg to (idx-1);
-	(justify = right).if {
-	  // Right
-	  px := width - siz;
-	} else {
-	  // Center
-	  px := (width - siz) >> 1;
-	};
-      };
-      print text at beg to (idx-1) to (px,py); 
-      py  := py + 16;
-      beg := idx + 1;
-    }.do_until {idx > text.count};
-  );
-  
-Section Private
-  
-  - width_min_on txt:ABSTRACT_STRING :INTEGER <-
-  ( + beg,idx,siz:INTEGER;
-    + result:INTEGER;
-    
-    beg := txt.lower;
-    {
-      idx    := txt.index_of '\n' since beg;
-      siz    := font_width txt at beg to (idx-1);
-      result := result.max siz;      
-      beg    := idx + 1;
-    }.do_until {idx > txt.count};
-    result
-  );
-  
-  - height_min_on txt:ABSTRACT_STRING :INTEGER <-
-  (
-    (txt.occurrences '\n' + 1) * 16
-  );
\ No newline at end of file
diff --git a/lib/gui/g_raw.li b/lib/gui/g_raw.li
deleted file mode 100644
index 6ceb091..0000000
--- a/lib/gui/g_raw.li
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_RAW;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-  
-  + parent_g_group:Expanded G_GROUP;
-  
-Section Public  
-  
-  //
-  // Size.
-  //
-
-  - predict_size (w,h:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    w + 4, h + 4
-  );
-  
-  - width_min:INTEGER <-
-  (
-    parent_g_group.width_min + 4
-  );
-  
-  - height_min:INTEGER <-
-  (
-    parent_g_group.height_min + 4
-  );
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + px,py,nw,nh:INTEGER;   
-    update rac from (x,y) size (w,h);
-    ((w-4) > root.width_max).if {      
-      nw := root.width_max;
-      px := ((w-4 - nw) / 2) + 2;
-    } else {
-      nw := w - 4;
-      px := 2;
-    };
-    ((h-4) > root.height_max).if {      
-      nh := root.height_max;
-      py := ((h-4 - nh) / 2) + 2;
-    } else {
-      nh := h - 4;
-      py := 2;
-    };    
-    root.set_position Self at (px,py) size (nw,nh);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( 
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back;
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( 
-    clipping (x0,y0) to (x1,y1);
-    draw_border_out (x_min,y_min) to (x_max,y_max);
-    draw_slave Self from (x_min+1,y_min+1) to (x_max-1,y_max-1);
-  );
-
-  //
-  // Event manager.
-  //
-  
-  - receive msg:EVENT <-
-  ( + mouse:EVENT_MOUSE;  
-    + win:AREA;
-        
-    mouse ?= msg;
-    (mouse != NULL).if {                  
-      win := DESK.get_object (mouse.x_current,mouse.y_current);
-      (win != Self).if {
-	DESK.receive msg;	
-      };
-    };    
-  );
diff --git a/lib/gui/g_win_in.li b/lib/gui/g_win_in.li
deleted file mode 100644
index c28ab91..0000000
--- a/lib/gui/g_win_in.li
+++ /dev/null
@@ -1,155 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_WIN_IN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-  
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-  
-Section Public  
-  
-  + win_in:G_WIN_IN_INTERN;
-  
-  //
-  // Creation.
-  //
-  
-  - create (w,h:INTEGER) with elt:G_EXPR :G_WIN_IN <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (w,h) with elt;
-    result
-  );
-  
-  - make (w,h:INTEGER) with elt:G_EXPR <-
-  (
-    width_min  := w;
-    height_min := h;
-    win_in := G_WIN_IN_INTERN.create elt;
-  );
-  
-  //
-  // Fix position.
-  //
-  
-  - set_top <- 
-  (
-    win_in.set_top;
-    refresh_in;
-  );
-    
-  - set_bottom <- 
-  (
-    win_in.set_bottom;
-    refresh_in;
-  );
-    
-  - set_right <-
-  (
-    win_in.set_right;
-    refresh_in;
-  );
-
-  - set_left <-
-  (
-    win_in.set_left;
-    refresh_in;
-  );
-
-  //
-  // Size.
-  //
-  
-  - predict_size (w,h:INTEGER) :(INTEGER,INTEGER) <-
-  ( 
-    w, h
-  );
-
-  + width_min:INTEGER;
-  
-  + height_min:INTEGER;
-    
-  //
-  // Update position.
-  //
-  
-  - refresh_in <-
-  ( // BSBS: Pas TOP !!!
-    win_in.set_position Self at (2,2) size (width-4,height-4); 
-    win_in.refresh;
-    (win_in.elevator_v.parent != NULL).if { 
-      win_in.elevator_v.refresh;
-    };
-    (win_in.elevator_h.parent != NULL).if { 
-      win_in.elevator_h.refresh;
-    };
-  );
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-    win_in.set_position Self at (2,2) size (w-4,h-4); 
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( 
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back;
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (     
-    clipping (x0,y0) to (x1,y1);       
-    draw_border_in (x_min,y_min) to (x_max,y_max);    
-    draw_border_in (x_min+1,y_min+1) to (x_max-1,y_max-1);
-    draw_slave Self from (x_min+2,y_min+2) to (x_max-2,y_max-2);
-  );
-
-  //
-  // Event manager.
-  //
-  
-  - receive msg:EVENT <-
-  ( + mouse:EVENT_MOUSE;  
-    + win:AREA;
-        
-    mouse ?= msg;
-    (mouse != NULL).if {                  
-      win := DESK.get_object (mouse.x_current,mouse.y_current);
-      (win != Self).if {
-	DESK.receive msg;	
-      };
-    };    
-  );
diff --git a/lib/gui/g_win_out.li b/lib/gui/g_win_out.li
deleted file mode 100644
index 4b5ddfe..0000000
--- a/lib/gui/g_win_out.li
+++ /dev/null
@@ -1,494 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_WIN_OUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-  
-  + parent_g_group:Expanded G_GROUP;
-  
-Section Public  
-  
-  - margin_resize_button:INTEGER := 4;
-  - length_resize_button:INTEGER := 12;
-  
-  - is_resizable:BOOLEAN <- (! root.is_fix_width) || {! root.is_fix_height};
-  
-  + title_len:INTEGER;
-  
-  + title:ABSTRACT_STRING;
-  
-  + stat:INTEGER_8;
-    
-  - is_open:BOOLEAN <- (stat & 1) != 0;
-  
-  - open_by src:G_GROUP <-
-  ( + px,py,w,h:INTEGER;
-    + p:AREA;
-    
-    (stat = 0).if {	
-      ((title = NULL) && {src != NULL}).if {	
-	w := width_min;
-	h := height_min;
-	(src.is_horizontal).if {
-	  px := src.x_window;
-	  py := src.y_window + src.height;
-	  ((px + w) > DESK.x_max).if {
-	    px := DESK.x_max - w;
-	  };
-	  ((py + h) > DESK.y_max).if {
-	    py := src.y_window - h;
-	  };
-	} else {
-	  px := src.x_window + src.width;
-	  py := src.y_window;
-	  ((px + w) > DESK.x_max).if {
-	    px := src.x_window - w;
-	  };
-	  ((py + h) > DESK.y_max).if {
-	    py := DESK.y_max - h;
-	  };
-        };	  	  
-        p := src.parent;
-        {(p != NULL) && {p != DESK.virtual_screen}}.while_do {
-          p := p.parent;
-        };
-        (p = NULL).if {
-          set_position DESK at (px,py);
-        } else {
-          set_position (DESK.virtual_screen) at 
-          (px-DESK.virtual_screen.x_window,py-DESK.virtual_screen.y_window);
-        };
-      } else {
-	px := (DESK.width  - width_min ) / 2;
-        py := (DESK.height - height_min) / 2;
-        set_position (DESK.virtual_screen) at 
-        (px-DESK.virtual_screen.x_window,py-DESK.virtual_screen.y_window);
-      };      
-      stat := 01b;	
-    };       
-  );
-    
-  - close <-
-  (
-    delete;
-    stat := 0;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create t:ABSTRACT_STRING with elt:G_EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make t with elt;
-    result
-  );
-  
-  - make t:ABSTRACT_STRING with elt:G_EXPR <-
-  (
-    title_len := BITMAP[PIXEL_32].font_width t + 2 + 12;
-    title := t;
-    root := elt;
-  );
-  
-  //
-  // Size.
-  //
-  
-  - predict_size (w,h:INTEGER) with_title t:BOOLEAN :(INTEGER,INTEGER) <-
-  ( + rw,rh:INTEGER;
-    
-    (t).if {
-      rw := w +  2 + margin_resize_button;
-      rh := h + 18 + margin_resize_button;
-    } else {
-      rw := w + 2;
-      rh := h + 2;
-    };
-    rw , rh
-  );  
-  
-  - width_min:INTEGER <-
-  ( + result:INTEGER;
-    
-    result := parent_g_group.width_min + 2;
-    ((title != NULL) && {is_resizable}).if {
-      result := result + margin_resize_button;
-    };
-    result
-  );
-  
-  - height_min:INTEGER <-
-  ( + result:INTEGER;
-    
-    result := parent_g_group.height_min;
-    (title = NULL).if {
-      result := result + 2;
-    } else {
-      result := result + 17 + 1;
-      (is_resizable).if {
-        result := result + margin_resize_button;
-      };
-    };    
-    result
-  );
-
-  //
-  // Update position.
-  //
-    
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + px,py,pw,ph:INTEGER;
-    update rac from (x,y) size (w,h);
-    px := 1;
-    pw := w-2;
-    (title = NULL).if {
-      py := 1;      
-      ph := h-2;      
-    } else {
-      py := 17;
-      ph := h-18;
-      (is_resizable).if {
-        pw := pw - margin_resize_button;
-        ph := ph - margin_resize_button;
-      };
-    };    
-    root.set_position Self at (px,py) size (pw,ph);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (    
-    // Nothing.
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + xm,ym:INTEGER;
-    clipping (x0,y0) to (x1,y1);    
-    
-    (title = NULL).if {      
-      rectangle (0,0) to (x_max,y_max) color black;
-      draw_slave Self from (1,1) to (x_max-1,y_max-1);      
-    } else {
-      color 646496h;
-      line_v (0,15) until 0;
-      line_h_until (title_len+1);
-      line_to (title_len+1+15,15);
-        
-      // Border out.
-      (is_resizable).if {
-        xm := x_max - margin_resize_button;        
-        ym := y_max - margin_resize_button;
-        color 646496h;                
-        line_v (xm-length_resize_button,ym+1) until y_max;
-        line_h_until x_max;
-        line_v_until (ym-length_resize_button);
-        line_h_until (xm+1);
-        rectangle_fill (xm-length_resize_button+1,ym+1) to (x_max-1,y_max-1) color 0C8C8FFh;
-        rectangle_fill (xm+1,ym-length_resize_button+1) to (x_max-1,ym);
-      } else {
-        xm := x_max;
-        ym := y_max;
-      };      
-      rectangle (0,16) to (xm,ym) color black;      
-                        
-      // Title background.
-      color 0C8C8FFh;
-      poly_move_to (1,1);
-      poly_line_to ((title_len+1),1);
-      poly_line_to ((title_len+15),15);
-      poly_line_to (1,15);
-      poly_line_to (1,1);
-      poly_rectangle (2,3) to (4+9,3+9);      
-      poly_trace;
-            
-      draw_border_in (3,3) to (3+9,3+9);
-      rectangle_fill (4,4) to (3+8,3+8) color color_back;
-      
-      // Title.
-      //((stat & 10b) = 0).if {
-      color black;
-      //} else {
-	//color red;
-      //};    
-      print title to (3+12,(-1));    
-    };
-  );
-  
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + xm,ym:INTEGER;
-    (title != NULL).if {
-      (y < 16).if {
-        (x > (title_len+1+y)).if {
-          pixel_hard (x,y) color col;
-        };
-      } else {
-        (is_resizable).if {
-          xm := x_max - margin_resize_button;
-          ym := y_max - margin_resize_button;
-          (
-            (
-              (y.in_range 17 to (ym-1)) && 
-              {x.in_range  1 to (xm-1)}
-            ) || {
-              (y > ym) &&
-              {x < xm-length_resize_button}
-            } || {
-              (y < ym-length_resize_button) &&
-              {x > xm}
-            }
-          ).if {
-            pixel_hard (x,y) color col;
-          };
-        } else {
-          ((y != 16) && {y != y_max} && {x != 0} && {x != x_max}).if {
-            pixel_hard (x,y) color col;
-          };
-        };
-      };
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + new_x1,new_x2,xm,ym:INTEGER;
-    
-    (title != NULL).if {            
-      (y < 16).if {
-        (x2 > (title_len+1+y)).if {
-          new_x1:=x1.max (title_len+2+y);
-          line_h_hard (new_x1,y) until x2 color col;
-        };
-      } else {
-        (is_resizable).if {
-          xm := x_max - margin_resize_button;
-          ym := y_max - margin_resize_button;
-          (y = 16).if {              
-            (x2 > xm).if {
-              new_x1 := x1.max (xm+1);
-              line_h_hard (new_x1,y) until x2 color col;
-            };
-          }.elseif {y < ym - length_resize_button} then {            
-            (x2 > xm).if {
-              new_x1 := x1.max (xm+1);
-              line_h_hard (new_x1,y) until x2 color col;              
-            };
-            (x1 < xm).if {
-              new_x1 := x1.max 1;
-              new_x2 := x2.min (xm-1);
-              (new_x1 <= new_x2).if {
-                line_h_hard (new_x1,y) until new_x2 color col;
-              };
-            };
-          }.elseif {y < ym} then {
-            new_x1 := x1.max 1;
-            new_x2 := x2.min (xm-1);
-            (new_x1 <= new_x2).if {
-              line_h_hard (new_x1,y) until new_x2 color col;
-            };
-          }.elseif {y > ym} then {
-            (x1 < xm-length_resize_button).if {
-              new_x2 := x2.min (xm-length_resize_button-1);
-              line_h_hard (x1,y) until new_x2 color col;
-            };
-          };            
-        } else {
-          ((y != 16) && {y != y_max} && {x2 > 0} && {x1 < x_max}).if {
-            new_x1:=x1.max 1;
-            new_x2:=x2.min (x_max-1);            
-            line_h_hard (new_x1,y) until new_x2 color col;
-          };
-        };
-      };
-    };
-  );
-
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + new_x1,new_x2,new_ofs,xm,ym:INTEGER;
-    
-    (title != NULL).if {            
-      (y < 16).if {
-        (x2 > (title_len+1+y)).if {
-          new_x1:=x1.max (title_len+2+y);
-          new_ofs := ofs + new_x1 - x1;
-          line_h_hard (new_x1,y) until x2 image line offset new_ofs;
-        };
-      } else {
-        (is_resizable).if {
-          xm := x_max - margin_resize_button;
-          ym := y_max - margin_resize_button;
-          (y = 16).if {              
-            (x2 > xm).if {
-              new_x1 := x1.max (xm+1);
-              new_ofs := ofs + new_x1 - x1;
-              line_h_hard (new_x1,y) until x2 image line offset new_ofs;
-            };
-          }.elseif {y < ym - length_resize_button} then {            
-            (x2 > xm).if {
-              new_x1 := x1.max (xm+1);
-              new_ofs := ofs + new_x1 - x1;
-              line_h_hard (new_x1,y) until x2 image line offset new_ofs;
-            };
-            (x1 < xm).if {
-              new_x1 := x1.max 1;
-              new_x2 := x2.min (xm-1);
-              (new_x1 <= new_x2).if {
-                new_ofs := ofs + new_x1 - x1;
-                line_h_hard (new_x1,y) until new_x2 image line offset new_ofs;
-              };
-            };
-          }.elseif {y < ym} then {
-            new_x1 := x1.max 1;
-            new_x2 := x2.min (xm-1);
-            (new_x1 <= new_x2).if {
-              new_ofs := ofs + new_x1 - x1;
-              line_h_hard (new_x1,y) until new_x2 image line offset new_ofs;
-            };
-          }.elseif {y > ym} then {
-            (x1 < xm-length_resize_button).if {
-              new_x2 := x2.min (xm-length_resize_button-1);
-              line_h_hard (x1,y) until new_x2 image line offset ofs;
-            };
-          };            
-        } else {
-          ((y != 16) && {y != y_max} && {x2 > 0} && {x1 < x_max}).if {
-            new_x1:=x1.max 1;
-            new_x2:=x2.min (x_max-1);            
-            new_ofs := ofs + new_x1 - x1;
-            line_h_hard (new_x1,y) until new_x2 image line offset new_ofs;
-          };
-        };
-      };
-    };    
-  );
-
-  //
-  // Event.
-  //
-    
-  - receive msg:EVENT <-  
-  ( + mouse:EVENT_MOUSE;
-    + timer:EVENT_TIMER;
-    + win:AREA;    
-    + xr,yr,new_width,new_height:INTEGER;
-    + new_stat:INTEGER_8;
-
-    mouse ?= msg;        
-    timer ?= msg;
-    (mouse != NULL).if {             
-      xr := mouse.x_relative;
-      yr := mouse.y_relative;
-      (
-        (xr.in_range 4 to (3+8)) &&
-        {yr.in_range 4 to (3+8)}
-      ).if {
-        // Cancel.
-        new_stat := 0011b;
-      }.elseif {yr < 16} then {
-        // Move / First.
-        new_stat := 0101b;
-      } else {
-        // Resize.
-        new_stat := 1001b;
-      };
-      (mouse.left_up).if {
-        stat := new_stat;
-      }.elseif {mouse.left_down} then {
-        ((stat = new_stat) && {new_stat = 0011b}).if {
-          close;
-        } else {
-          (stat = 1001b).if {
-            set_position parent at (get_x_window,get_y_window) size (width,height);
-          };
-          stat := 0001b;        
-        };
-      }.elseif {(mouse.left) && {mouse.is_moving_only}} then {
-        (stat = 0101b).if {
-          move (mouse.dx,mouse.dy);
-        }.elseif {stat = 1001b} then {          
-          (root.is_fix_width).if {
-            new_width := width;
-          } else {
-            new_width  := (xr+1).max width_min;
-          };
-          (root.is_fix_height).if {
-            new_height := height;
-          } else {
-            new_height := (yr+1).max height_min;
-          };
-          resize (new_width,new_height);
-          //
-        };
-      }.elseif {(mouse.right_down) && {new_stat = 0101b}} then {
-        first;
-      } else {
-        win := DESK.get_object ((mouse.x_current),(mouse.y_current));
-        (win != Self).if {	  
-          DESK.receive msg;
-        };
-      };      
-    }.elseif {timer != NULL} then {
-      (stat = 1001b).if {
-        set_position parent at (get_x_window,get_y_window) size (width,height);
-      };
-    };
-  );
-    
-  - get_object (x,y:INTEGER) :AREA <-
-  ( + result:AREA;
-    + rel_x,rel_y:INTEGER;
-    
-    result := parent_g_group.get_object (x,y);
-    
-    (result = Self).if {
-      (title != NULL).if {
-	rel_x := x - x_window;
-        rel_y := y - y_window;
-        ((rel_y >= 16) || {rel_x > (title_len+1+rel_y)}).if {
-          (is_resizable).if {
-            (
-              (rel_y < y_max-margin_resize_button-length_resize_button) ||
-              {rel_x < x_max-margin_resize_button-length_resize_button}
-            ).if {
-              result := NULL;
-            };            
-          } else {
-            result := NULL;
-          };	  
-	};
-      };
-    };
-    result
-  );
-
diff --git a/lib/gui/g_win_out_trans_test.li b/lib/gui/g_win_out_trans_test.li
deleted file mode 100644
index 72ed0b0..0000000
--- a/lib/gui/g_win_out_trans_test.li
+++ /dev/null
@@ -1,361 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_WIN_OUT_TRANS_TEST;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  //
-  // ****** WARNING : JUST TEST ***********
-  //
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-  
-  + parent_window:Expanded AREA_MASK;
-  
-  + parent_g_expr:Expanded G_EXPR;
-  
-Section Private
-  
-  //
-  // ***** APPEND *****
-  // 
-  
-  - depth:INTEGER := 4;
-  
-  - color_4_to_8 n:INTEGER :UINTEGER_32 <-
-  (
-    `(unsigned int)((255. / 15) * @n)`:UINTEGER_32
-  );
-  
-  - color_table:NATIVE_ARRAY[UINTEGER_32] :=
-  ( + result:NATIVE_ARRAY[UINTEGER_32];
-    + r,g,b,col:UINTEGER_32;
-    
-    result := NATIVE_ARRAY[UINTEGER_32].create 4096;
-    0.to 4095 do { c:INTEGER;      
-      r := color_4_to_8 ((c & 0F00h) >> 8);
-      g := color_4_to_8 ((c & 00F0h) >> 4);
-      b := color_4_to_8  (c & 000Fh);
-      // Begin color effect
-      r := (r >> 1) + (r >> 2);
-      b := (b >> 1) + (b >> 2);
-      g := (g >> 1) + (g >> 2);
-      // End.
-      col := (r << 16) | (g << 8) | b;
-      result.put col to c;
-    };
-    result
-  );
-  
-  - col_trans col:UINTEGER_32 :UINTEGER_32 <-
-  ( + idx:UINTEGER_32;
-    
-    idx := 
-    ((col >> 12) & 0F00h) | // Red
-    ((col >>  8) & 00F0h) | // Green
-    ((col >>  4) & 000Fh);  // Blue
-    color_table.item idx
-  );
-  
-  + line_tmp:BMP_LINE[PIXEL_32];
-    
-Section Public  
-  
-  + title_len:INTEGER;
-  
-  + title:ABSTRACT_STRING;
-  
-  + stat:INTEGER_8;
-    
-  - is_open:BOOLEAN <- (stat & 1) != 0;
-  
-  - open_by src:G_GROUP <-
-  ( + px,py,w,h:INTEGER;
-    
-    (stat = 0).if {	
-      ((title = NULL) && {src != NULL}).if {	
-	w := width_min;
-	h := height_min;
-	(src.is_horizontal).if {
-	  px := src.x_window;
-	  py := src.y_window + src.height;
-	  ((px + w) > DESK.x_max).if {
-	    px := DESK.x_max - w;
-	  };
-	  ((py + h) > DESK.y_max).if {
-	    py := src.y_window - h;
-	  };
-	} else {
-	  px := src.x_window + src.width;
-	  py := src.y_window;
-	  ((px + w) > DESK.x_max).if {
-	    px := src.x_window - w;
-	  };
-	  ((py + h) > DESK.y_max).if {
-	    py := DESK.y_max - h;
-	  };
-	};	  	  
-      } else {
-	px := (DESK.width  - width_min ) / 2;
-	py := (DESK.height - height_min) / 2;
-      };
-      set_position DESK at (px,py);
-      stat := 01b;	
-    };       
-  );
-    
-  - close <-
-  (
-    delete;
-    stat := 0;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create t:ABSTRACT_STRING with elt:G_EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make t with elt;
-    result
-  );
-  
-  - make t:ABSTRACT_STRING with elt:G_EXPR <-
-  (
-    title_len := BITMAP[PIXEL_32].font_width t + 2; //+ 25;
-    title := t;
-    //root := elt;
-    
-    // ***** APPEND ****
-    line_tmp  := BMP_LINE[PIXEL_32].create 2048;
-  );
-  
-  //
-  // Size.
-  //
-  /*
-  - width_min:INTEGER <-
-  (
-    parent_g_group.width_min + 2
-  );
-  
-  - height_min:INTEGER <-
-  ( + result:INTEGER;
-    
-    result := parent_g_group.height_min;
-    (title = NULL).if {
-      result := result + 2;
-    } else {
-      result := result + 17 + 1
-    };
-    result
-  );
-*/
-  //
-  // Update position.
-  //
-    
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  (
-    update rac from (x,y) size (w,h);
-    
-    // ******* ESSAI *******
-    stat := 01b;
-    
-    //(title = NULL).if {
-    //  root.set_position Self at (1, 1) size (w-2,h-2);
-    //} else {
-    //  root.set_position Self at (1,17) size (w-2,h-18);
-    //};
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back; 
-  );
-  
-  //
-  // ********** UPDATE ********
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-
-    clipping (x0,y0) to (x1,y1);    
-    
-    color green; //008000h;
-    line_h (0,0) until (title_len+1);
-    line_to ((title_len+1+15),15);
-    line_h_until (x_max-depth);
-    
-    line_h (0,19) until (x_max-depth);
-    line_h (0,(y_max-depth-3)) until (x_max-depth);
-    
-    line_v (3,20) until (y_max-depth-4);
-    line_v ((x_max-depth-3),20) until (y_max-depth-4);
-    
-    poly_move_to (0,1);
-    poly_line_to ((title_len+1),1);
-    poly_line_to ((title_len+16),16);
-    poly_line_to ((x_max-depth),16);
-    poly_line_to ((x_max-depth),18);
-    poly_line_to (0,18);
-    poly_trace_color blue;
-    
-    // Title.
-    color white;
-    print title to (3,(-1));
-    //display_mask;
-    
-    margin_clip_x1 := margin_clip_x1 + (x_max - x1).min depth;
-    margin_clip_y1 := margin_clip_y1 + (y_max - y1).min depth;
-  );
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + new_x,new_y:INTEGER;
-    
-    ((y < 16) && {x > (title_len+1+y)}).if {
-      parent_window.slave_pixel_hard (x,y) color col;
-    } else {      
-      new_x := x - depth;
-      new_y := y - depth;
-      ((new_x >= 0) && {new_y >= 20}).if { 	
-	parent_window.slave_pixel_hard (new_x,new_y) color (col_trans col); 
-      };
-      ((x > (x_max-depth)) || {y > (y_max-depth)}).if {
-	parent_window.slave_pixel_hard (x,y) color col; 
-      };
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + new_x1,new_y,new_x2:INTEGER;
-    
-    ((y < 16) && {x2 > (title_len+1+y)}).if {
-      new_x1 := x1.max (title_len+2+y);	
-      parent_window.slave_line_h_hard (new_x1,y) until x2 color col;
-    } else {
-      new_x1 := 0.max (x1 - depth);
-      new_x2 := x2 - depth;
-      new_y  := y  - depth;
-      ((new_x2 >= 0) && {new_y >= 20}).if {
-	parent_window.slave_line_h_hard (new_x1,new_y) until new_x2 color (col_trans col);
-      };
-      (y > (y_max-depth)).if {
-	parent_window.slave_line_h_hard (x1,y) until x2 color col; 
-      }.elseif {x2 > (x_max-depth)} then {
-	new_x1 := x1.max (x_max-depth+1);
-	parent_window.slave_line_h_hard (new_x1,y) until x2 color col; 
-      };
-    };    
-  );
-
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + new_x1,new_y,new_x2,ofs2:INTEGER;
-    + ofsd:INTEGER;
-    + col:UINTEGER_32;
-        
-    ((y < 16) && {x2 > (title_len+1+y)}).if {
-      new_x1 := x1.max (title_len+2+y);	
-      parent_window.slave_line_h_hard (new_x1,y) until x2 image line offset (ofs+new_x1-x1);
-    } else {
-      new_x1 := x1 - depth;
-      new_x2 := x2 - depth;
-      new_y  := y  - depth;
-      ((new_x2 >= 0) && {new_y >= 20}).if {
-	(new_x1 < 0).if {
-	  ofs2   := ofs - new_x1;
-	  new_x1 := 0;
-	} else {
-	  ofs2 := ofs;
-	};
-	ofs2.to (ofs2+new_x2-new_x1) do { o:INTEGER;
-	  col := line.get_color o;
-	  line_tmp.put (col_trans col) to ofsd;
-	  ofsd := ofsd + 1;
-	};
-	parent_window.slave_line_h_hard (new_x1,new_y) until new_x2 image line_tmp offset 0;
-	//color (col_trans col);
-      };
-      (y > (y_max-depth)).if {
-	parent_window.slave_line_h_hard (x1,y) until x2 image line offset ofs;
-      }.elseif {x2 > (x_max-depth)} then {
-	new_x1 := x1.max (x_max-depth+1);
-	parent_window.slave_line_h_hard (new_x1,y) until x2 image line offset (ofs+new_x1-x1);
-      };
-    };        
-  );
-
-  //
-  // Event.
-  //
-    
-  - receive msg:EVENT <-  
-  ( + mouse:EVENT_MOUSE;
-    + win:AREA;    
-
-    mouse ?= msg;        
-    (mouse != NULL).if {       
-      (mouse.right_down).if {
-	first;
-      };
-      ((mouse.is_moving_only) && {mouse.left}).if {
-	move ((mouse.dx),(mouse.dy));
-      } else {	
-	win := DESK.get_object ((mouse.x_current),(mouse.y_current));
-	(win != Self).if {	  
-	  DESK.receive msg;
-	};
-      };
-    };
-  );
-    
-  - get_object (x,y:INTEGER) :AREA <-
-  ( + result:AREA;
-    + rel_x,rel_y:INTEGER;
-    
-    result := parent_window.get_object (x,y);
-    
-    (result = Self).if {
-      (title != NULL).if {
-	rel_x := x - x_window;
-	rel_y := y - y_window;
-	((rel_y >= 16) || {rel_x > (title_len+1+rel_y)}).if {
-	  result := NULL;
-	};
-      };
-    };
-    result
-  );
-
diff --git a/lib/gui/input/input.li b/lib/gui/input/input.li
deleted file mode 100644
index 3a8c728..0000000
--- a/lib/gui/input/input.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := INPUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
- 
-  
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Message.";
-
-  - version :=1;  
-  - date    :="2003/04";
-  
-Section Inherit  
-  
-  - parent_inbox:INBOX := INBOX;
-  
-Section SELF
-  
-  + list_client:LINKED_LIST[INBOX];
-  
-Section Public
-  
-  - is_actif:BOOLEAN;
-  
-  - add_client obj:INBOX <-
-  ( + idx:INTEGER;
-    (list_client = NULL).if {
-      list_client := LINKED_LIST[INBOX].create;      
-    };
-    idx := list_client.fast_index_of obj start (list_client.lower);    
-    (idx > list_client.upper).if {
-      list_client.add_last obj;
-    };
-  );
-
-  - sub_client obj:INBOX <-
-  ( + idx:INTEGER;
-    
-    idx := list_client.fast_index_of obj start (list_client.lower);    
-    (idx <= list_client.upper).if {
-      list_client.remove idx;
-    };
-  );
-  
-  - make <-
-  (
-    deferred;
-  );
-  
-  - acknowledge <-
-  (
-    deferred;
-  );
diff --git a/lib/gui/input/input_keyboard.li b/lib/gui/input/input_keyboard.li
deleted file mode 100644
index 7db8548..0000000
--- a/lib/gui/input/input_keyboard.li
+++ /dev/null
@@ -1,168 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := INPUT_KEYBOARD;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :="X11 - Keyboard Driver";
-
-  - version := 1;  
-  - date    :="2003/04";
-  
-Section Inherit
-
-  + parent_input:Expanded INPUT;
-
-Section Private
-  
-  - buffer_event:FAST_ARRAY[EVENT_KEYBOARD]; 
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-  - bin_code:FAST_ARRAY[UINTEGER_8]; // Binary array of keys (102+7)/8
-
-  - cmd:UINTEGER_8;    // 0:CTRL 1:AltGr 2:Alt 3:Cmd 4:Shift 5:Cap 6:NumLock 7:Scrolllock
-
-  - ascii_code:UINTEGER_8; // For <Alt>+<NbAscII>
-      
-Section Public
-  
-  //
-  // Get Character (Interrupt #21)
-  //
-  
-  - key key:UINTEGER_8 press p:BOOLEAN <-
-  ( + cu,tmp:UINTEGER_8;
-    
-    p.if {
-      cu := keydown key;
-    } else {
-      cu := keyup key;
-    };
-    (cu != 0).if {
-      // Routine Pour Reboot Violant : CTRL+(ALT | ALT Gr)+Suppr
-      ((cu = 'S'.to_uinteger_8) && { ((cmd&0Fh) = 0Dh) || {(cmd&0Fh) = 0Bh} }).if {
-	"Reboot ...\n".print;
-	die_with_code exit_failure_code;
-      };
-      
-      tmp:=(p_end+1)&003h;
-      buffer_event.item p_end.make ((cmd.to_uinteger_16<<8)|cu);
-      (((tmp+2)&3)!=p_beg).if {
-	p_end:=tmp;
-      };      
-      get_event;
-    };
-  );
-   
-Section Private
-  
-  - keyup cu:UINTEGER_8 :UINTEGER_8 <-
-  ( 
-    deferred;
-    0
-  );
-
-  - keydown cu:UINTEGER_8 :UINTEGER_8 <-
-  ( 
-    deferred;
-    0
-  );
-    
-Section Public   
-  
-  - make <-
-  // Install keyboard.
-  ( + new_event:EVENT_KEYBOARD;
-    is_actif := TRUE;
-    bin_code := FAST_ARRAY[UINTEGER_8].create 14;
-    
-    buffer_event := FAST_ARRAY[EVENT_KEYBOARD].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_KEYBOARD.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-    cmd := 40h;
-  );
-    
-  - get_event <-
-  ( + p:INTEGER;
-    p := p_beg;
-    { p != p_end }.while_do {
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-	list_client.item j.receive (buffer_event.item p);
-      };
-      p := (p + 1) & 03h;
-    };    
-  );
-  
-  - get_key:UINTEGER_16 <-
-  // Use without interface running: text mode
-  ( + result:UINTEGER_16;
-    {p_beg = p_end}.while_do {};
-    result := buffer_event.item p_beg.key;
-    p_beg := (p_beg + 1) & 03h;
-    result
-  );
-  
-  //
-  // Guru section.
-  //
-
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  //
-  // Key code generate.
-  //
-  
-  // 0:CTRL 1:AltGr 2:Alt 3:Cmd 4:Shift 5:Cap 6:NumLock 7:Scrolllock
-
-  - key_ctrl  :UINTEGER_16 := 0100h;
-  - key_alt_gr:UINTEGER_16 := 0200h;
-  - key_alt   :UINTEGER_16 := 0400h;
-  - key_of c:CHARACTER :UINTEGER_16 <- c.to_uinteger_8;
-  
-  - key_to_string k:UINTEGER_16 :STRING <-
-  ( + result:STRING;
-    
-    result := STRING.create 10;
-    ((k & key_ctrl) != 0).if {
-      result.append "Ctrl+";
-    };
-    ((k & key_alt_gr) != 0).if {
-      result.append "AltGr+";
-    };
-    ((k & key_alt) != 0).if {
-      result.append "Alt+";
-    };
-    result.add_last ((k & 0FFh).to_character);
-    result
-  );
diff --git a/lib/gui/interface.li b/lib/gui/interface.li
deleted file mode 100644
index 598bafc..0000000
--- a/lib/gui/interface.li
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := INTERFACE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="User Interface and Events managment.";
-
-  - version := 1;  
-  - date    := "2003/04";
-  
-Section Inherit  
-  
-  + parent_g_raw:Expanded G_GROUP;
-        
-Section Public
-  
-  - screen:AREA; // Physical screen.
-  
-  - make bmp:ABSTRACT_BITMAP size (w,h:INTEGER) with elt:G_EXPR <-
-  (
-    set_video_support bmp;
-    screen := AREA.clone;
-    screen.make NULL from (0,0) size (bmp.width,bmp.height);    
-    make screen from (0,0) size (w,h);
-    EVENT_SYSTEM.make;
-    focus := Self;
-    root := elt;
-    //
-    connect_to MOUSE;
-    connect_to KEYBOARD;    
-    connect_to TIMER;
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (     
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back; 
-  );
-     
-  //
-  // Connect.
-  //    
-  
-  - connect_to obj:INPUT <-
-  (
-    obj.make;
-    obj.add_client Self;
-  );
-  
-  - focus:INBOX;
-  
-  - set_focus f:INBOX <-
-  (
-    focus := f;
-  );
-  
-  - resize_window (w,h:INTEGER) <-
-  (    
-    VIDEO.resize (w,h);
-    screen.resize (w,h);
-    resize (w,h);
-    root.set_position Self at (0,0) size (w,h);    
-  );
-  
-  - run <-
-  ( + msg:EVENT;    
-    + input:INPUT;
-    
-    root.set_position Self at (0,0) size (width,height);
-    {
-      EVENT_SYSTEM.get_event;
-      
-      {storage_message.is_empty}.until_do {        
-	msg := storage_message.first;
-	storage_message.remove_first;
-	msg.set_destination focus;
-	focus.receive msg;	
-	input ?= msg.source;
-	input.acknowledge;
-      };      
-    }.do_while {`1`:BOOLEAN(TRUE,FALSE)}; // Infinity Loop 
-  );
-  
-  //
-  // Message Server.
-  //
-  
-Section Private
-  
-  - storage_message:LINKED_LIST[EVENT] := LINKED_LIST[EVENT].create;
-  
-Section Public  
-  
-  - receive msg:EVENT <-
-  ( + mouse:EVENT_MOUSE;
-    + win:AREA;
-    (msg.destination = NULL).if {
-      // Hardware Message.      
-      storage_message.add_last msg;      
-    } else {      
-      // Other message.
-      mouse ?= msg;
-      (mouse != NULL).if {
-	win := get_object ((mouse.x_current),(mouse.y_current));
-	(win != focus).if {
-	  focus := win;
-	  msg.set_destination focus;
-	  focus.receive msg;		  
-	};
-      };
-    };
-  );
-  
\ No newline at end of file
diff --git a/lib/gui/low_level/g_binary_expr.li b/lib/gui/low_level/g_binary_expr.li
deleted file mode 100644
index d6d06f3..0000000
--- a/lib/gui/low_level/g_binary_expr.li
+++ /dev/null
@@ -1,71 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := G_BINARY_EXPR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Binary operator";
-    
-  - author  := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  + parent_g_expr:Expanded G_EXPR;
-  
-Section Public
-  
-  + right:G_EXPR;
-  
-  + left:G_EXPR;
-    
-  //
-  // Creation.
-  //
-  
-  - create l:G_EXPR and r:G_EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make l and r;
-    result
-  );
-
-  - make l:G_EXPR and r:G_EXPR <-
-  (
-    deferred;
-  );
-  
-  //
-  // Refresh.
-  //
-  
-  - refresh <-
-  (
-    left.refresh;
-    right.refresh;
-  );
-  
-  
-
-    
diff --git a/lib/gui/low_level/g_div_expr.li b/lib/gui/low_level/g_div_expr.li
deleted file mode 100644
index 1bd92f7..0000000
--- a/lib/gui/low_level/g_div_expr.li
+++ /dev/null
@@ -1,117 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := G_DIV_EXPR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Frame representation base";
-    
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  + parent_g_binary_expr:Expanded G_BINARY_EXPR;
-  
-Section Public
-  
-  - make l:G_EXPR and r:G_EXPR <-
-  (
-    left  := l;
-    right := r;    
-    left .set_attribute_bit vertical_bit; 
-    right.set_attribute_bit vertical_bit; 
-  );
-  
-  //
-  // Size.
-  //
-  
-  - predict_size (lw,lh:INTEGER) and (rw,rh:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    lw.max rw, lh + rh
-  );
-
-  - width_min:INTEGER <-
-  (
-    left.width_min.max (right.width_min)
-  );
-  
-  - height_min:INTEGER <-
-  (
-    left.height_min + right.height_min
-  );
-  
-  - width_max:INTEGER <- 
-  ( + result:INTEGER;
-    
-    (is_fix_width).if {
-      result := width_min;
-    } else {
-      result := left.width_max.max (right.width_max);
-    };
-    result
-  );
-  
-  - height_max:INTEGER <- 
-  ( + result:INTEGER;
-    
-    (is_fix_height).if {
-      result := height_min;
-    } else {
-      result := left.height_max + right.height_max;
-    };
-    result
-  );
-  
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + h_min:INTEGER;
-    + h_left,h_left_min,h_left_max:INTEGER;
-    + h_right,h_right_max:INTEGER;
-    
-    h_min  := height_min;
-    //
-    h_left_min := left.height_min;
-    h_left_max := left.height_max;
-    //
-    h_right_max := right.height_max;
-    //
-    h_left := `(int)(((float)@h) / @h_min * @h_left_min)`:INTEGER; // BSBS: REAL !!!
-    h_right := h - h_left;
-    //
-    (h_right > h_right_max).if {
-      h_right := h_right_max;
-      h_left  := (h - h_right).min h_left_max;      
-    }.elseif {h_left > h_left_max} then {
-      h_left := h_left_max;
-      h_right := (h - h_left).min h_right_max;      
-    };
-    //
-    left .set_position rac at (x,y)        size (w.min (left.width_max),h_left );
-    right.set_position rac at (x,y+h_left) size (w.min (right.width_max),h_right);
-  );
-
diff --git a/lib/gui/low_level/g_elevator.li b/lib/gui/low_level/g_elevator.li
deleted file mode 100644
index 74ebf34..0000000
--- a/lib/gui/low_level/g_elevator.li
+++ /dev/null
@@ -1,321 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_ELEVATOR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Output text for GUI.";
-
-Section Inherit  
-
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-          
-Section Public
-  
-  + win_in:G_WIN_IN_INTERN;
-  
-  + position:INTEGER;
-  
-  + stat:INTEGER_8;
-  
-Section G_ELEVATOR  
-  
-  - win_size:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_horizontal).if {
-      result := win_in.width_min.max (width - 2);
-    } else {
-      result := win_in.height_min.max (height - 2);
-    };
-    result
-  );
-    
-  - elevator_size:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_horizontal).if {
-      result := width - 2;      
-    } else {
-      result := height - 2;
-    };
-    result
-  );
-  
-  - cursor_begin:INTEGER <-  
-  ( + result:INTEGER;
-    + len_ele,len_win,pos:INTEGER;
-    
-    len_ele := elevator_size;
-    len_win := win_size;
-    pos := - position;
-    result := `(int)(((float)@len_ele / @len_win) * @pos)`:INTEGER + 1;
-    result
-  );
-  
-  - cursor_size:INTEGER <-
-  ( + result:INTEGER;
-    + len_ele,len_win:INTEGER;
-    
-    len_ele := elevator_size;
-    len_win := win_size;
-    result := (`(int)(((float)@len_ele / @len_win) * @len_ele)`:INTEGER).min len_ele;
-    result
-  );
-  
-Section Public
-  
-  //
-  // Width / Height
-  //
-  
-  - width_min:INTEGER  := 16;
-    
-  - height_min:INTEGER := 16;
-    
-  - width_max:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_vertical).if {
-      result := 8;
-    } else {
-      result := parent_g_expr.width_max;
-    };
-    result
-  );
-  
-  - height_max:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_horizontal).if {
-      result := 8;
-    } else {
-      result := parent_g_expr.height_max;
-    };
-    result
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create_horizontal w:G_WIN_IN_INTERN :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make w attribute horizontal_bit;
-    result
-  );
-  
-  - create_vertical w:G_WIN_IN_INTERN :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make w attribute vertical_bit;
-    result
-  );
-    
-  - make w:G_WIN_IN_INTERN attribute a:UINTEGER_8 <-
-  (
-    win_in := w;
-    set_attribute_bit a;
-  ); 
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-  );
-  
-  //
-  // Action.
-  // 
-  
-  - set_min <-
-  ( 
-    ((parent != NULL) && {position != 0}).if {
-      position := 0;
-      win_in.update_intern;
-      refresh;
-    };
-  );
-
-  - set_max <-
-  ( + mx:INTEGER;
-    
-    mx := elevator_size - win_size;
-    ((parent != NULL) && {position != mx}).if {
-      position := mx;
-      win_in.update_intern;
-      refresh;
-    };
-  );
-  
-  - receive msg:EVENT <-
-  // 0000 : Nothing.
-  // 0001 : In.
-  // 0010 : Up page.
-  // 0100 : Down pages.
-  // 1000 : Cursor move.
-  ( + mouse:EVENT_MOUSE;
-    + win:AREA;    
-    + new_stat:INTEGER;
-    + is_action:BOOLEAN;
-    + py1,py2,old_cursor,new_cursor:INTEGER;
-    + mouse_d,mouse_p:INTEGER;
-    + is_refresh:BOOLEAN;
-    //
-    + ele_siz,win_siz:INTEGER;
-    
-    mouse ?= msg;
-    (mouse != NULL).if {
-      win := DESK.get_object ((mouse.x_current),(mouse.y_current));
-      (is_vertical).if {
-	mouse_d := mouse.dy;
-	mouse_p := mouse.y_current - y_window;
-      } else {
-	mouse_d := mouse.dx;
-	mouse_p := mouse.x_current - x_window;
-      };
-      ((stat & 1110b) = 0).if {
-	// No press.
-	(win != Self).if {
-	  new_stat := 0;	  	  
-	  DESK.receive msg;	  
-	} else {	  
-	  (mouse.left).if {	     
-	    py1 := cursor_begin;
-	    py2 := py1 + cursor_size;
-	    new_stat := (
-	      ((mouse_p < py1).to_integer.to_integer << 1) |
-	      ((mouse_p > py2).to_integer.to_integer << 2)
-	    );	    
-	    (new_stat = 0).if {
-	      // Moving.
-	      new_stat := 1000b;
-	    } else {
-	      is_action := TRUE;
-	    };	  
-	  };
-	  new_stat := new_stat | 0001b;
-	};
-      } else {
-	// Press.
-	(mouse.left).if {
-	  new_stat  := stat;
-	  is_action := TRUE;
-	} else {
-	  (win != Self).if {
-	    new_stat := 0;
-	    DESK.receive msg;
-	  };
-	};
-      };
-      (stat != new_stat).if {
-	stat := new_stat;
-	is_refresh := TRUE;
-      };
-      (is_action).if {
-	new_cursor := old_cursor := position;	
-	ele_siz := elevator_size;
-	win_siz := win_size;
-	/*
-	(((stat & 0010b) != 0) && {old_cursor != 0}).if {	  
-	  // Page Up
-	  new_cursor := (old_cursor - length_mini).max 0;
-	};
-	(((stat & 0100b) != 0) && {old_cursor < (length - length_mini)}).if {
-	  // Page Down
-	  new_cursor := (old_cursor + length_mini).min (length - length_mini);
-	};
-	*/
-	(((stat & 1000b) != 0) && {mouse_d != 0}).if {	  
-	  // Move.
-	  new_cursor := old_cursor - `(int)(((float)@win_siz / @ele_siz) * @mouse_d)`:INTEGER;
-	  new_cursor := new_cursor.min 0.max (ele_siz - win_siz);
-	};
-	(new_cursor != old_cursor).if {	  
-	  position := new_cursor;
-	  win_in.update_intern;
-	  is_refresh := TRUE;
-	};
-      };
-      (is_refresh).if {
-	refresh;
-      };      
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + pos_beg,pos_end:INTEGER;
-        
-    clipping (x0,y0) to (x1,y1);    
-    //    
-    draw_border_in (x_min,y_min) to (x_max,y_max);
-    pos_beg := cursor_begin;
-    pos_end := pos_beg + cursor_size;            
-    (is_vertical).if {
-      // Vertical.      
-      draw_border_out (1,pos_beg) to (x_max-1,pos_end);
-      rectangle_fill (2,pos_beg+1) to (x_max-2,pos_end-1) color color_back_light;
-      (pos_beg > 1).if {
-	rectangle_fill (1,1) to (x_max-1,pos_beg-1) color color_back;
-      };
-      (pos_end < y_max-1).if {
-	rectangle_fill (1,pos_end+1) to (x_max-1,y_max-1) color color_back;
-      };
-    } else {
-      // Horizontal
-      draw_border_out (pos_beg,1) to (pos_end,y_max-1);
-      rectangle_fill (pos_beg+1,2) to (pos_end-1,y_max-2) color color_back_light;
-      (pos_beg > 1).if {
-	rectangle_fill (1,1) to (pos_beg-1,y_max-1) color color_back;
-      };
-      (pos_end < x_max-1).if {
-	rectangle_fill (pos_end+1,1) to (x_max-1,y_max-1) color color_back;
-      };      
-    };
-  );
-  
-  //
-  // Area.
-  //
-  
-  - delete <-
-  (
-    (parent != NULL).if {
-      parent_area.delete;
-    };
-  );
-  
\ No newline at end of file
diff --git a/lib/gui/low_level/g_expr.li b/lib/gui/low_level/g_expr.li
deleted file mode 100644
index b0dbfea..0000000
--- a/lib/gui/low_level/g_expr.li
+++ /dev/null
@@ -1,181 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := G_EXPR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Frame representation base";
-    
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  + attribute:UINTEGER_8;
-  
-  - fix_width_bit :UINTEGER_8 := 0001b;
-  - fix_height_bit:UINTEGER_8 := 0010b;
-  
-  - horizontal_bit:UINTEGER_8 := 0100b;
-  - vertical_bit  :UINTEGER_8 := 1000b; 
-  
-  - is_fix_width:BOOLEAN  <- (attribute & fix_width_bit ) != 0;
-  - is_fix_height:BOOLEAN <- (attribute & fix_height_bit) != 0;
-  
-  - is_horizontal:BOOLEAN <- (attribute & horizontal_bit) != 0;
-  - is_vertical  :BOOLEAN <- (attribute & vertical_bit  ) != 0;
-  
-  - set_attribute_bit flag:UINTEGER_8 <-
-  (
-    attribute := attribute | flag;
-  );
-  
-  - fix_width:SELF <-
-  (
-    set_attribute_bit fix_width_bit;
-    Self
-  );
-  
-  - fix_height:SELF <-
-  (
-    set_attribute_bit fix_height_bit;
-    Self
-  );
-  
-  //
-  // Dimension.
-  //  
-  
-  - width_min:INTEGER <-
-  (
-    deferred;
-    0
-  )
-  [
-    +? {Result >= 0};
-  ];
-  
-  - height_min:INTEGER <-
-  (
-    deferred;
-    0
-  )
-  [
-    +? {Result >= 0};
-  ];
-  
-  - width_max:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_fix_width).if {
-      result := width_min;
-    } else {
-      result := 100_000;
-    };
-    result
-  )
-  [
-    +? {Result >= width_min};
-  ];
-  
-  - height_max:INTEGER <-
-  ( + result:INTEGER;
-    
-    (is_fix_height).if {
-      result := height_min;
-    } else {
-      result := 100_000;
-    };
-    result
-  )
-  [
-    +? {Result >= height_min};
-  ];
-  
-  //
-  // Operator position.
-  //
-    
-  - '|' Right 40 other:G_EXPR :G_EXPR <-
-  ( 
-    G_OR_EXPR.create Self and other
-  );
-
-  - '/' Right 40 other:G_EXPR :G_EXPR <-
-  ( 
-    G_DIV_EXPR.create Self and other
-  );
-  
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  [
-    -? {w >= width_min};
-    -? {h >= height_min};
-  ]
-  (
-    deferred;
-  );
-  
-  - refresh <- deferred;
-    
-  //
-  // Style...
-  //
-  
-  - color_dark:UINTEGER_32      := 01E527Fh;
-  - color_light:UINTEGER_32     := 0D0E1EFh;
-  
-  - color_back:UINTEGER_32      := 083AAD3h;  
-  - color_back_light:UINTEGER_32:= color_back + 101010h;  
-
-  - draw_border_in (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    color color_dark;
-    move_to (x0,y1);
-    line_v_until y0;
-    line_h_until x1;
-    color color_light;
-    line_v_until y1;
-    line_h_until x0;
-  );
-  
-  - draw_border_out (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    color color_light;
-    move_to (x0,y1);
-    line_v_until y0;
-    line_h_until x1;
-    color color_dark;
-    line_v_until y1;
-    line_h_until x0;
-  );
-
-  
-  
\ No newline at end of file
diff --git a/lib/gui/low_level/g_group.li b/lib/gui/low_level/g_group.li
deleted file mode 100644
index e373f58..0000000
--- a/lib/gui/low_level/g_group.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_GROUP;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Group elements for GUI.";
-
-Section Inherit  
-
-  + parent_area:Expanded AREA;
-  
-  + parent_g_expr:Expanded G_EXPR;
-          
-Section Public
-  
-  + root:G_EXPR;
-  
-  //
-  // Width / Height
-  //
-  
-  - predict_size (w,h:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    w, h
-  );
-  
-  - width_min:INTEGER  <- root.width_min;
-  
-  - height_min:INTEGER <- root.height_min;
-    
-  //
-  // Creation.
-  //
-  
-  - create elt:G_EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt;
-    result
-  );
-  
-  - make elt:G_EXPR <-
-  (
-    root := elt;    
-  ); 
-   
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) <-
-  (
-    set_position rac at (x,y) size (width_min,height_min);
-  );
-
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  (
-    update rac from (x,y) size (w,h);
-    root.set_position Self at (0,0) size (w,h);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (    
-    draw_slave Self from (x0,y0) to (x1,y1);    
-  );
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    deferred;
-  );
-  
-  - refresh <-
-  (
-    parent_area.refresh;
-    (root != NULL).if {
-      root.refresh;
-    };
-  );
-  
-  - delete <-
-  (
-    parent_area.delete;
-    DESK.set_focus DESK;
-  );
-  
diff --git a/lib/gui/low_level/g_or_expr.li b/lib/gui/low_level/g_or_expr.li
deleted file mode 100644
index f6cbaff..0000000
--- a/lib/gui/low_level/g_or_expr.li
+++ /dev/null
@@ -1,119 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := G_OR_EXPR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Frame representation base";
-    
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  + parent_g_binary_expr:Expanded G_BINARY_EXPR;
-  
-Section Public
-
-  - make l:G_EXPR and r:G_EXPR <-
-  (
-    left  := l;
-    right := r;    
-    left .set_attribute_bit horizontal_bit; 
-    right.set_attribute_bit horizontal_bit;
-  );
-
-  //
-  // Size.
-  //
-  
-  - predict_size (lw,lh:INTEGER) and (rw,rh:INTEGER) :(INTEGER,INTEGER) <-
-  (
-    lw + rw, lh.max rh
-  );
-  
-  - width_min:INTEGER <-
-  (
-    left.width_min + right.width_min
-  );
-  
-  - height_min:INTEGER <-
-  (
-    left.height_min.max (right.height_min)
-  );
-    
-  - width_max:INTEGER <- 
-  ( + result:INTEGER;
-    
-    (is_fix_width).if {
-      result := width_min;
-    } else {
-      result := left.width_max + right.width_max;
-    };
-    result
-  );
-  
-  - height_max:INTEGER <- 
-  ( + result:INTEGER;
-    
-    (is_fix_height).if {
-      result := height_min;
-    } else {
-      result := left.height_max.max (right.height_max);
-    };
-    result
-  );
-  
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( + w_min:INTEGER;
-    + w_left,w_left_min,w_left_max:INTEGER;
-    + w_right,w_right_max:INTEGER;
-    
-    w_min  := width_min;
-    //
-    w_left_min := left.width_min;
-    w_left_max := left.width_max;
-    //
-    w_right_max := right.width_max;
-    //    
-    w_left := `(int)(((float)@w) / @w_min * @w_left_min)`:INTEGER; // BSBS: REAL !!!
-    w_right := w - w_left;
-    //
-    (w_right > w_right_max).if {
-      w_right := w_right_max;
-      w_left  := (w - w_right).min w_left_max;      
-    }.elseif {w_left > w_left_max} then {
-      w_left := w_left_max;
-      w_right := (w - w_left).min w_right_max;      
-    };
-    //
-    left .set_position rac at (x,y)        size (w_left ,h.min (left.height_max));
-    right.set_position rac at (x+w_left,y) size (w_right,h.min (right.height_max));
-  );
-  
-
-  
\ No newline at end of file
diff --git a/lib/gui/low_level/g_win_in_intern.li b/lib/gui/low_level/g_win_in_intern.li
deleted file mode 100644
index 7baa4ec..0000000
--- a/lib/gui/low_level/g_win_in_intern.li
+++ /dev/null
@@ -1,127 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_WIN_IN_INTERN;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "For G_WIN_IN.";
-
-Section Inherit  
-
-  + parent_g_group:Expanded G_GROUP;
-            
-Section Public
-    
-  + elevator_v:G_ELEVATOR;
-  
-  + elevator_h:G_ELEVATOR;
-  
-  //
-  // Creation.
-  //
-  
-  - make elt:G_EXPR <-
-  (
-    root := elt;  
-    elevator_h := G_ELEVATOR.create_horizontal Self;
-    elevator_v := G_ELEVATOR.create_vertical Self;
-  );
-  
-  //
-  // Fix position.
-  //
-  
-  - set_top <- 
-  (
-    elevator_v.set_min;
-  );
-    
-  - set_bottom <- 
-  (
-    elevator_v.set_max;
-  );
-    
-  - set_right <-
-  (
-    elevator_h.set_min;
-  );
-
-  - set_left <-
-  (
-    elevator_h.set_max;
-  );
-  
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  [ 
-    // Nothing.
-  ]
-  ( + new_w,new_h:INTEGER;
-            
-    (w < root.width_min).if {
-      new_h := h - elevator_h.height_min;
-    } else {
-      new_h := h;
-    };
-    (h < root.height_min).if {
-      new_w := w - elevator_v.width_min;
-    } else {
-      new_w := w;
-    };    
-    (new_w != w).if {
-      elevator_v.update rac from (x + new_w,y) size (elevator_v.width_min,new_h);
-    } else {
-      elevator_v.delete;
-    };
-    (new_h != h).if {
-      elevator_h.update rac from (x,y + new_h) size (new_w,elevator_v.height_min);
-    } else {
-      elevator_h.delete;
-    };      
-    update rac from (x,y) size (new_w,new_h);    
-    update_intern;
-  );
-  
-  - update_intern <-
-  ( + wn,hn:INTEGER;
-    
-    wn := (root.width_min.max width).min (root.width_max);
-    hn := (root.height_min.max height).min (root.height_max);
-    root.set_position Self at (elevator_h.position,elevator_v.position) 
-    size (wn,hn);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw_slave bmp:ABSTRACT_BITMAP from (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    bmp.rectangle_fill (x0,y0) to (x1,y1) color color_back;
-  );
-  
diff --git a/lib/gui/low_level/inbox.li b/lib/gui/low_level/inbox.li
deleted file mode 100644
index b43e177..0000000
--- a/lib/gui/low_level/inbox.li
+++ /dev/null
@@ -1,72 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := INBOX;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Message.";
-
-  - version :=1;  
-  - date    :="2003/04";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private  
-  
-  - gui_buffer_event:FAST_ARRAY[EVENT_GUI] := 
-  ( + result:FAST_ARRAY[EVENT_GUI];
-    + new_evt:EVENT_GUI;
-    
-    result := FAST_ARRAY[EVENT_GUI].create 16; 
-    0.to 15 do { j:INTEGER;
-      new_evt := EVENT_GUI.clone;
-      result.put new_evt to j;
-    };
-    result
-  );
-  
-  - gui_p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - gui_p_end:UINTEGER_8;  // Pointer on the buffer (end)
-  
-Section Public
-  
-  - receive msg:EVENT <-
-  (
-    // Nothing.
-  );
-
-  - send dst:INBOX <-
-  ( + tmp:UINTEGER_8;
-    tmp:=(gui_p_end+1) & 0Fh;
-    (tmp != gui_p_beg).if {
-      gui_buffer_event.item gui_p_end.make Self at dst;
-      gui_p_end:=tmp;
-      dst.receive (gui_buffer_event.item gui_p_beg);
-      gui_p_beg := (gui_p_beg+1) & 0Fh;
-    };
-  );
diff --git a/lib/gui/low_level/virtual_screen.li b/lib/gui/low_level/virtual_screen.li
deleted file mode 100644
index e431f11..0000000
--- a/lib/gui/low_level/virtual_screen.li
+++ /dev/null
@@ -1,98 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := VIRTUAL_SCREEN;
-
-  - copyright   := "2003-2008 Benoit Sonntag";
-    
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Virtual screen.";
-
-  - version := 1;  
-  
-Section Inherit  
-  
-  + parent_area:Expanded AREA;
-        
-Section Public
-  
-  + scale_width:INTEGER;
-  + scale_height:INTEGER;
-  
-  + desk:DESK;
-  
-  - create d:DESK scale (w,h:INTEGER) :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make d scale (w,h);
-    result    
-  );
-    
-  - make d:DESK scale (w,h:INTEGER) <-
-  ( 
-    desk := d;
-    scale_width  := w;
-    scale_height := h;
-    make d from (0,0) size (d.width*w,d.height*h);
-  );
-  
-  //
-  // Display.
-  //
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( 
-    pixel_hard (x,y) color col;
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( 
-    line_h_hard (x1,y) until x2 color col;
-  );  
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( 
-    line_h_hard (x1,y) until x2 image line offset ofs;
-  );
-  
-  - get_object (x,y:INTEGER) :AREA <-
-  ( + result:AREA;
-    result := parent_area.get_object (x,y);
-    (result = Self).if {
-      result := NULL;
-    };
-    result
-  );
-  
-  //
-  // Resize
-  //    
-  
-  - update_size <-
-  (    
-    resize (scale_width * desk.width,scale_height * desk.height);
-  );
-  
-  
\ No newline at end of file
diff --git a/lib/gui/old/group_in/grp_tree.li b/lib/gui/old/group_in/grp_tree.li
deleted file mode 100644
index c4c4de4..0000000
--- a/lib/gui/old/group_in/grp_tree.li
+++ /dev/null
@@ -1,287 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := GRP_TREE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Tree representation";
-  
-Section Inherit
-  
-  + parent_gui:Expanded GUI;
-  
-Section Public
-  
-  + root_item:GUI_ITEM;  
-  
-  + area_intern:GUI_INTERN;
-  
-  - bmp_tree:AREA <- area_intern.area;
-  
-  //
-  // Creation
-  //
-  
-  - create_in f:AREA at (x,y:INTEGER) size (w,h:INTEGER) with itm:GUI_ITEM :SELF <- 
-  ( + result:SELF;
-    
-    result := clone;
-    result.make_in f at (x,y) size (w,h) with itm;
-    result
-  );
-
-  - make_in f:AREA at (x,y:INTEGER) size (w,h:INTEGER) with itm:GUI_ITEM <-
-  (
-    root_item := itm;
-    make_in f at (x,y) size (w,h) action Self;
-    // Clipping intern:
-    area_intern := GUI_INTERN.create_in Self at (1,1) size ((w-2),(h-2));
-    set_position itm; 
-    update_position;
-    refresh;
-  );
-  
-  //
-  // Line manager.
-  //
-
-  - set_position rac:GUI_ITEM <-
-  ( + grp:ITM_GROUP;
-            
-    grp ?= rac;
-    (grp = NULL).if {
-      rac.make bmp_tree from ((-rac.width_min-1),0) size ((rac.width_min),(rac.height_min));     
-    } else {
-      set_position (grp.itm_left);
-      set_position (grp.itm_right);
-    };    
-  );
-
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  ( + xx0,yy0,xx1,yy1:INTEGER;
-    
-    clipping (x0,y0) to (x1,y1);    
-    border_in (x_min,y_min) to (x_max,y_max);
-    (area_intern != NULL).if {  
-      xx0 := x0 + x_window - bmp_tree.x_window;
-      yy0 := y0 + y_window - bmp_tree.y_window;
-      xx1 := x1 + x_window - bmp_tree.x_window;
-      yy1 := y1 + y_window - bmp_tree.y_window;            
-      //xx0.print; ','.print; yy0.print; '-'.print;
-      //xx1.print; ','.print; yy1.print; '\n'.print;
-      bmp_tree.clipping (xx0,yy0) to (xx1,yy1);      
-      bmp_tree.rectangle_fill (0,0) to ((bmp_tree.x_max),(bmp_tree.y_max)) color color_back_light;      
-      sub_draw root_item at (2,2);
-    };
-  );
-  
-Section Private  
-  
-  - sub_draw rac:GUI_ITEM at (x,y:INTEGER) :INTEGER <-
-  ( + grp:ITM_GROUP;
-    + itm:GUI_ITEM;
-    + new_y,old_y:INTEGER;
-    + is_open:BOOLEAN;
-    
-    grp ?= rac;
-    (grp = NULL).if {      
-      new_y := y + rac.height_min;      
-    } else {
-      is_open := grp.operator = '|';
-      node (x,(y+3)) stat is_open;
-      old_y := y+3+9;
-      new_y := sub_draw (grp.itm_left) at ((x+16),y);      
-      (is_open).if {
-	itm := grp.itm_right;
-	grp ?= itm;
-	{(grp != NULL) && {is_open}}.while_do {
-	  bmp_tree.line_v ((x+4),old_y) until (new_y-1+3) color red; 
-	  is_open := grp.operator = '|';
-	  node (x,(new_y+3)) stat is_open;
-	  old_y := new_y+3+9;
-	  new_y := sub_draw (grp.itm_left) at ((x+16),new_y);
-	  itm := grp.itm_right;
-	  grp ?= itm;
-	};
-	(is_open).if {
-	  bmp_tree.line_v ((x+4),old_y) until (new_y+8) color red;       
-	  bmp_tree.line_h_until (x+15) color red;      
-	  new_y := sub_draw itm at ((x+16),new_y);
-	};
-      };
-    };
-    new_y
-  );
-  
-  - node (x,y:INTEGER) stat is_open:BOOLEAN <-
-  (
-    bmp_tree.rectangle_fill ((x+1),(y+1)) to ((x+7),(y+7)) color white;
-    bmp_tree.rectangle (x,y) to ((x+8),(y+8)) color black;    
-    bmp_tree.line_h ((x+2),(y+4)) until (x+6); 
-    (is_open).if_false {
-      bmp_tree.line_v ((x+4),(y+2)) until (y+6); 
-    };
-    bmp_tree.line_h ((x+9),(y+4)) until (x+15) color red;
-  );
-  
-Section Public
-      
-  //
-  // Event.
-  //  
-
-  - receive msg:EVENT <-  
-  ( + evt_mouse:EVENT_MOUSE;
-    + win:AREA;    
-    
-    
-    evt_mouse ?= msg;
-    (evt_mouse != NULL).if { 
-      (evt_mouse.destination = bmp_tree).if {
-	(evt_mouse.left_up).if {
-	  last_group := NULL;
-	  get_group root_item at (2,2) to ((evt_mouse.x_relative),(evt_mouse.y_relative));
-	  (last_group != NULL).if {	    
-	    (last_group.operator = '|').if {
-	      last_group.set_operator '/';
-	      close_group (last_group.itm_right);
-	    } else {
-	      last_group.set_operator '|';	      
-	    };
-	    update_position;
-	    refresh;
-	  };
-	};
-      };
-      win := INTERFACE.get_object ((evt_mouse.x_current),(evt_mouse.y_current));
-      (win != Self).if {
-	INTERFACE.receive msg;
-      };
-    };    
-  );
-  
-  + bmp_width_max:INTEGER;
-  
-  - update_position <-
-  ( + h,w:INTEGER;
-    
-    bmp_width_max := 0;
-    h := open_group root_item at (2,2) + 2;
-    w := bmp_width_max;
-    ((h != bmp_tree.height) || {w != bmp_tree.width}).if {
-      area_intern.resize_area (w,h);     
-    };
-  );
-  
-  - open_group rac:GUI_ITEM at (x,y:INTEGER) :INTEGER <-
-  ( + grp:ITM_GROUP;
-    + itm:GUI_ITEM;
-    + new_y,old_y,w:INTEGER;
-    + is_open:BOOLEAN;
-    
-    grp ?= rac;
-    (grp = NULL).if {      
-      new_y := y + rac.height_min;
-      rac.set_position (x,y);
-      w := x + rac.width + 2;
-      (bmp_width_max < w).if {
-	bmp_width_max := w;
-      };
-    } else {
-      is_open := grp.operator = '|';      
-      old_y := y+3+9;
-      new_y := open_group (grp.itm_left) at ((x+16),y);      
-      (is_open).if {
-	itm := grp.itm_right;
-	grp ?= itm;
-	{(grp != NULL) && {is_open}}.while_do {	  
-	  is_open := grp.operator = '|';	  
-	  old_y := new_y+3+9;
-	  new_y := open_group (grp.itm_left) at ((x+16),new_y);
-	  itm := grp.itm_right;
-	  grp ?= itm;
-	};
-	(is_open).if {
-	  new_y := open_group itm at ((x+16),new_y);
-	};
-      };
-    };
-    new_y
-  );  
-  
-  - close_group rac:GUI_ITEM <-
-  ( + grp:ITM_GROUP;
-    grp ?= rac;
-    (grp = NULL).if {
-      rac.set_position ((-rac.width_min-1),0);
-    } else {
-      close_group (grp.itm_left );
-      close_group (grp.itm_right);
-    };
-  );
-  
-  - last_group:ITM_GROUP;
-  
-  - get_group rac:GUI_ITEM at (x,y:INTEGER) to (px,py:INTEGER) :INTEGER <-
-  ( + grp:ITM_GROUP;
-    + itm:GUI_ITEM;
-    + new_y,old_y:INTEGER;
-    + is_open:BOOLEAN;
-    
-    (y < py).if {    
-      grp ?= rac;
-      (grp = NULL).if {      
-	new_y := y + rac.height_min;      
-      } else {
-	is_open := grp.operator = '|';      
-	((px.in_range x to (x+8)) && {py.in_range (y+3) to (y+12)}).if {
-	  last_group := grp;
-	};
-	old_y := y+3+9;
-	new_y := get_group (grp.itm_left) at ((x+16),y) to (px,py);
-	(is_open).if {
-	  itm := grp.itm_right;
-	  grp ?= itm;
-	  {(grp != NULL) && {is_open} && {last_group=NULL}}.while_do {	  
-	    is_open := grp.operator = '|';	  
-	    ((px.in_range x to (x+8)) && {py.in_range (new_y+3) to (new_y+12)}).if {
-	      last_group := grp;
-	    };
-	    old_y := new_y+3+9;
-	    new_y := get_group (grp.itm_left) at ((x+16),new_y) to (px,py);
-	    itm := grp.itm_right;
-	    grp ?= itm;
-	  };
-	  (is_open).if {	  
-	    new_y := get_group itm at ((x+16),new_y) to (px,py);
-	  };
-	};
-      };
-    };
-    new_y
-  );
diff --git a/lib/gui/old/label/lab_key.li b/lib/gui/old/label/lab_key.li
deleted file mode 100644
index c1735e0..0000000
--- a/lib/gui/old/label/lab_key.li
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LAB_KEY;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Label Key.";
-  
-Section Inherit
-  
-  + parent_g_label:Expanded GUI_LABEL;
-  
-Section Public
-  
-  + key:UINTEGER_16;
-  
-  //
-  // Creation.
-  //
-  
-  - create k:UINTEGER_16 :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make k;
-    result
-  );
-  
-  - make k:UINTEGER_16 <-
-  (    
-    key := k;
-    name := KEYBOARD.key_to_string k;
-  );
-    
-Section GUI_LABEL
-  
-  - my_width_min :INTEGER <- BITMAP[PIXEL_32].font_width name + 1;
-  
-  - my_height_min:INTEGER <- 17;
-  
-  - my_display_in bmp:GUI_ITEM to (x,y:INTEGER) <- 
-  ( + px:INTEGER;
-    bmp.rectangle_fill (x,y) to ((x + my_width_min-1),(y + my_height_min-1)) color (bmp.rgbbackcolor); 
-    bmp.color (bmp.blue);
-    px := bmp.width - my_width_min;
-    bmp.print name to (px,y);
-  );
-
diff --git a/lib/guii/#new.li# b/lib/guii/#new.li#
deleted file mode 100755
index 8336b95..0000000
--- a/lib/guii/#new.li#
+++ /dev/null
@@ -1,51 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := NEW;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-
-  //
-  // Creation.
-  //
-
-  - create:SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make;
-    result
-  );
-
-  - make <-
-  ( 
-    
-  );
-
diff --git a/lib/guii/action.li b/lib/guii/action.li
deleted file mode 100644
index 62ee3a2..0000000
--- a/lib/guii/action.li
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ACTION;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Tool bar for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  - representation:STRING_CONSTANT := "ACTION";
-
-  - print <-
-  (
-    "ACTION".print;
-  );
-
-  - make_representation <-
-  [? {list.is_empty}; ]
-  (
-    (bitmap=NULL).if {
-      content:=(G_BUTTON.create (G_OUT.create name) action action);
-    } else {
-      content:=(G_BUTTON.create (G_IMG.create bitmap) action action);
-    };
-  );
-
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  [ ? {list.is_empty}; ]
-  (
-    + result:REAL_32;
-    
-    (bitmap=NULL).if {
-      (width,height):=(G_BUTTON.predict_size (G_OUT.predict_size name));
-    } else {
-      (width,height):=(G_BUTTON.predict_size (G_IMG.predict_size bitmap));
-    };
-    //"width: ".print;w.print;'\n'.print;
-    //"height: ".print;h.print;'\n'.print;
-    //"action.width: ".print;width.print;'\n'.print;
-    //"action.height: ".print;height.print;'\n'.print;
-    ((width > w) || {height > h}).if {    
-      result:=0.0;
-    } else {
-      result:=100.0-(get_area_prc (w,h));
-      //"action.get_area: ".print;get_area_prc (w,h).print;'\n'.print;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN <-
-  (
-    list.is_empty && {operator='^'}
-  );
-
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32 <-
-  (
-    + result:REAL_32;
-
-    n.set_representation ACTION;
-
-    //"ACTION semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"ACTION space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-       result:=0.0;
-    };
-    //"ACTION result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
\ No newline at end of file
diff --git a/lib/guii/check.li b/lib/guii/check.li
deleted file mode 100644
index fe57644..0000000
--- a/lib/guii/check.li
+++ /dev/null
@@ -1,96 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := CHECK;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Check button for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  - representation:STRING_CONSTANT := "CHECK";
-
-  - print <-
-  (
-    "CHECK".print;
-  );
-
-  - make_representation <-
-  [? {list.is_empty}; ]
-  (
-    content:=(G_CHECK.create (G_OUT.create name)).fix_height.fix_width;
-    width:=content.width_min;
-    height:=content.height_min;
-  );
-
-//
-// Evaluation.
-//
-
-  //A check bouton can be apply only if it is a leaf
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    //faire une vérification sur l'opérateur? check_button = opérateur 'ou'?
-    (list.is_empty) && {operator='|'}
-  );
-
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  [ ? {list.is_empty}; ]
-  (
-    + result:REAL_32;
-
-    (width,height):=(G_CHECK.predict_size (G_OUT.predict_size name));
-    ((width > w) || {height > h}).if {
-      result:=0.0
-    } else {
-      result:=100.0-(get_area_prc (w,h));
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    // changer le parent de n pour pouvoir utiliser les méthodes spécifiques à MENU_BAR
-    n.set_representation CHECK;
-    
-    // Semantic evaluation && Space evaluation.
-    //"CHECK semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"CHECK space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-       result:=0;
-    };
-    //"CHECK result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
diff --git a/lib/guii/dimension.li b/lib/guii/dimension.li
deleted file mode 100644
index e64c0d2..0000000
--- a/lib/guii/dimension.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := DIMENSION;
-  
-  - copyright := "2003-2008 Sonntag Benoit";
-  
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  +width:INTEGER;
-  +height:INTEGER;
-  +line_height:INTEGER;
-  +pattern:INTERNAL_INODE;
-  +score_sum:REAL_32;
-  +coefficient:INTEGER;
-  
-  
-  //
-  // Creation.
-  //
-  
-  
-  - create (w,h,l:INTEGER) score s:REAL_32 :SELF <-
-  (
-    + result:SELF;
-    result := clone;
-    result.make (w,h,l) score s ;
-    result
-  );
-  
-  - make (w,h,l:INTEGER) score s:REAL_32 <-
-  ( 
-    width:=w;
-    height:=h;
-    score_sum:=s;
-    line_height:=l;
-  );
-  
-  - set_line_height h:INTEGER <-
-  (
-    line_height:=h;
-  );
-  
-  - set_pattern p:INTERNAL_INODE <-
-  (
-    pattern:=p;
-  );
-
-  - add_score score:REAL_32 <-
-  (
-    score_sum:=score_sum+score;
-    coefficient:=coefficient+1;
-  );
-
-  - average :REAL_32 <-
-  (
-    score_sum/coefficient
-  );
-
-
-
diff --git a/lib/guii/drop_down_menu.li b/lib/guii/drop_down_menu.li
deleted file mode 100644
index 0428ab8..0000000
--- a/lib/guii/drop_down_menu.li
+++ /dev/null
@@ -1,158 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := DROP_DOWN_MENU;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Drop down menu for GUII.";
-  
-Section Inherit
-
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-
-Section Public
-
-  - representation:STRING_CONSTANT := "DROP_DOWN_MENU";
-
-  - print <-
-  (
-    "DROP_DOWN_MENU".print;
-  );
-
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-
-    list.foreach {
-      i:INODE;
-
-      (i.priority>covering).if {
-        i.make_representation;
-        (expr=NULL).if {
-          expr:=i.content;
-
-        } else {
-          expr:=expr / i.content;
-        };
-      };
-    };
-    win_out:=(G_WIN_OUT.create expr).fix_height.fix_width;
-    content:=(G_BUTTON.create (G_OUT.create name) connect win_out).fix_height.fix_width;
-  );
-
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        (width,height):=G_DIV_EXPR.predict_size (width,height) and (G_BUTTON.predict_size (G_OUT.predict_size (i.name)));
-      };
-    };
-    (width,height):=G_WIN_OUT.predict_size (G_RAW.predict_size (width,height));
-  );
-
-//
-// Evaluation.
-//
-
-// A drop down menu can be apply only if sons are leafs
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    +nb:INTEGER;
-
-    (operator = '|').if {
-      list.foreach {
-        i:INODE;
-
-        (ACTION.evaluate i width screen_width height screen_height > 0).if {
-          nb:=nb+1;
-        };
-      };
-    };
-    nb=list.count
-  );
-
-- space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-    + area,r,result:REAL_32;
-
-    compute_size_from_prc 0;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-          r:=0;
-          width:=0;
-          height:=0;
-        } else {
-          covering:=50;
-          r:=get_nitem_from_prc 50;
-        };
-      } else {
-        covering:=25;
-        r:=get_nitem_from_prc 25;
-      };
-    } else {
-      covering:=0;
-      r:=list.count;
-    };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-
-    n.set_representation DROP_DOWN_MENU;
-    // Semantic evaluation && Space evaluation.
-    "DROP_DOWN_MENU semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"DROP_DOWN_MENU space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-       result:=0;
-    };
-    "DROP_DOWN_MENU result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
diff --git a/lib/guii/ellipse.bmp b/lib/guii/ellipse.bmp
deleted file mode 100644
index c005242..0000000
Binary files a/lib/guii/ellipse.bmp and /dev/null differ
diff --git a/lib/guii/essai b/lib/guii/essai
deleted file mode 100755
index d80c516..0000000
Binary files a/lib/guii/essai and /dev/null differ
diff --git a/lib/guii/essai.li b/lib/guii/essai.li
deleted file mode 100644
index 704061d..0000000
--- a/lib/guii/essai.li
+++ /dev/null
@@ -1,232 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ESSAI;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Interface Node for GUII.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - main <-
-  ( + base,menu,tools,page,task_bar:INODE;
-    + action_new:BLOCK;
-    + action_open:BLOCK;
-    + action_zoom_in:BLOCK;
-    + action_zoom_out:BLOCK;
-    + action_zoom_page:BLOCK;
-    + action_zoom_select:BLOCK;
-    + action_zoom_100:BLOCK;
-    + action_select:BLOCK;
-    + action_line:BLOCK;
-    + action_rectangle:BLOCK;
-    + action_circle:BLOCK;
-    + action_color:BLOCK;
-    + action_text:BLOCK;
-    + action_zoom:BLOCK;
-    + guii:GUII;
-    
-    action_select:= {
-      bt:G_BUTTON;
-      "Select\n".print;
-    };
-    
-    action_zoom:= {
-      bt:G_BUTTON;
-      "Zoom\n".print;
-    };
-    
-    action_text:= {
-      bt:G_BUTTON;
-      "Text\n".print;
-    };
-    
-    action_line:= {
-      bt:G_BUTTON;
-      "Line\n".print;
-    };
-    
-    action_rectangle:= {
-      bt:G_BUTTON;
-      "Rectangle\n".print;
-    };
-    
-    action_circle:= {
-      bt:G_BUTTON;
-      "Circle\n".print;
-    };
-    
-    action_color:= {
-      bt:G_BUTTON;
-      "Color\n".print;
-    };
-    
-    action_zoom_in:= {
-      bt:G_BUTTON;
-      "Zoom in\n".print;
-    };
-    
-    action_zoom_out:= {
-      bt:G_BUTTON;
-      "Zoom out\n".print;
-    };
-    
-    action_zoom_select:= {
-      bt:G_BUTTON;
-      "Zoom select\n".print;
-    };
-    
-    action_zoom_page:= {
-      bt:G_BUTTON;
-      "Zoom page\n".print;
-    };
-    
-    action_zoom_100:= {
-      bt:G_BUTTON;
-      "Zoom 100\n".print;
-    };
-    
-    menu := INODE.create_xor "Menu" priority 100 + (
-      INODE.create_xor "File" priority 100 + (
-        INODE.create_xor "Clear file" priority 100 + 
-        INODE.create_xor "New" priority 100 action action_new
-      ) + (
-        INODE.create_xor "Intern file" priority 100 + 
-        INODE.create_xor "Open" priority 100 action action_open +
-        INODE.create_xor "Save" priority 100 +
-        INODE.create_xor "Save as" priority 100
-      ) + (
-        INODE.create_xor "Extern file" priority 100 +
-        INODE.create_xor "Import" priority 100 +
-        INODE.create_xor "Export" priority 100
-      ) + (
-        INODE.create_xor "Output file" priority 100 +
-        INODE.create_xor "Print" priority 100 
-      ) + (
-        INODE.create_xor "Exit manager" priority 25 +
-        INODE.create_xor "EXit" priority 100 
-      )
-    ) + (
-      INODE.create_xor "Edit" priority 100 + (
-        INODE.create_xor "History" priority 100 +
-        INODE.create_xor "Undo" priority 100 +
-        INODE.create_xor "Redo" priority 100
-      ) + (
-        INODE.create_xor "Edit object" priority 100 +
-        INODE.create_xor "Delete" priority 100 +
-        INODE.create_xor "Duplicate" priority 100 +
-        INODE.create_xor "Select all" priority 100
-      )
-    ) + (
-      INODE.create_xor "Presentation" priority 100 + (
-        INODE.create_xor "Representation" priority 100 + 
-        INODE.create_xor "Magnetic locate" priority 100 +
-        INODE.create_xor "Contour" priority 100
-      )
-    ) + (
-      INODE.create_xor "Disposition" priority 100 + (
-        INODE.create_xor "Modify" priority 100 + 
-        INODE.create_xor "Text editor" priority 100 + 
-        INODE.create_xor "Alignment" priority 100 + 
-        INODE.create_xor "To curve" priority 100
-      ) + (
-        INODE.create_xor "Order" priority 25 + 
-        INODE.create_xor "First plan" priority 100 + 
-        INODE.create_xor "Last plan" priority 100
-      ) + (
-        INODE.create_xor "Link" priority 100 + 
-        INODE.create_xor "Group" priority 100 + 
-        INODE.create_xor "Degroup" priority 100 + 
-        INODE.create_xor "Combine" priority 100 + 
-        INODE.create_xor "Decombine" priority 100 + 
-        INODE.create_xor "Auto-combine" priority 100  
-      )
-    ) + (
-      INODE.create_xor "Window" priority 100 + (
-        INODE.create_xor "Display" priority 100 + 
-        INODE.create_xor "Refresh draw" priority 100
-      )
-    ) + (
-      INODE.create_xor "Help" priority 100 + (
-        INODE.create_xor "Information" priority 100 + 
-        INODE.create_xor "About" priority 100 +
-        INODE.create_xor "Bugs report" priority 100 +
-        INODE.create_xor "News" priority 100
-      )
-    );
-    
-    
-    tools := INODE.create_xor "Tools" priority 100 +
-    INODE.create_xor "Select" priority 100 action action_select picture "select.bmp" + (
-      INODE.create_xor "Zoom" priority 100 picture "zoom.bmp" + (
-        INODE.create_xor "Raw" priority 100 +
-        INODE.create_xor "Zoom +" priority 100 action action_zoom_in picture "zoom_in.bmp" +
-        INODE.create_xor "Zoom -" priority 100 action action_zoom_out picture "zoom_out.bmp"+
-        INODE.create_xor "Zoom select" priority 100 action action_zoom_select picture "zoom_select.bmp"+
-        INODE.create_xor "Zoom page" priority 100 action action_zoom_page picture "zoom_page.bmp"+
-        INODE.create_xor "Zoom 1:1" priority 100 action action_zoom_100 picture "zoom_100.bmp"
-      )
-    ) +
-    INODE.create_xor "Line" priority 100 action action_line picture "line.bmp" +
-    INODE.create_xor "Rectangle" priority 100 action action_rectangle picture "rectangle.bmp" +
-    INODE.create_xor "Circle" priority 25 action action_circle picture "ellipse.bmp" +
-    INODE.create_xor "Text" priority 25 action action_text picture "text.bmp" +
-    INODE.create_xor "Color" priority 25 action action_color picture "paint.bmp";
-    
-    
-    page:=INODE.create_xor "Page" priority 100;
-    
-    task_bar:=INODE.create_xor "Task Bar" priority 50 + (
-      INODE.create_xor "Task1" priority 100 + (
-        INODE.create_xor "Information" priority 100 + 
-        INODE.create_xor "About" priority 100 +
-        INODE.create_xor "Bugs report" priority 100 +
-        INODE.create_xor "News" priority 100
-      )
-    ) + (
-      INODE.create_xor "Task2" priority 25 + (
-        INODE.create_xor "Information2" priority 100 + 
-        INODE.create_xor "About2" priority 100
-      )
-    );
-
-    base := INODE.create_or "Paint" priority 100 + menu + tools + page + task_bar;
-    
-    //
-    // Evaluation.
-    //
-    
-    //guii:=GUII.create base screen_width 800 screen_height 600;//beau
-    guii:=GUII.create base screen_width 520 screen_height 380;//beau
-    //guii:=GUII.create base screen_width 320 screen_height 240; //beau
-    //guii:=GUII.create base screen_width 320 screen_height 220;//pas mal
-    //guii:=GUII.create base screen_width 320 screen_height 200;//passe pas
-    guii.make_interface;
-    guii.run_interface;
-  );
-  
-  
\ No newline at end of file
diff --git a/lib/guii/essai2.li b/lib/guii/essai2.li
deleted file mode 100755
index 8331e3e..0000000
--- a/lib/guii/essai2.li
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-	+ name      := ESSAI2;
-	- copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-	- comment   := "Interface Node for GUII.";
-
-Section Inherit
-
-	- parent_object:OBJECT := OBJECT; 
-
-Section Public
-
-	- main <-
-	(
-		+appli:INODE;
-		+guii:GUII;
-
-		appli:=INODE.create_xor "Appli" priority 100 + 
-		(
-			INODE.create_xor "Menu_bar"priority 100 type 0 +
-			INODE.create_xor "Fichier" priority 100 +
-			INODE.create_xor "Edition" priority 100 +
-			INODE.create_xor "Affichage" priority 100 +
-			INODE.create_xor "Fenetre" priority 100 +
-			INODE.create_xor "Outils" priority 100 +
-			INODE.create_xor "Aide" priority 50
-
-		) + (
-			INODE.create_xor "Tool_bar" priority 100 type 1 +
-			INODE.create_xor "Ouvrir" priority 100 +
-			INODE.create_xor "Nouveau" priority 100 +
-			INODE.create_xor "Enregistrer" priority 100 +
-			INODE.create_xor "Enregistrer sous" priority 100
-		) +
-			INODE.create_xor "Page" priority 100 type 2 width 100 height 50;
-
-		guii:=GUII.create appli;
-		guii.evaluation(1024,768);
-		guii.run_interface;
-	);
-
-
-
-
-
-
-
-
-
diff --git a/lib/guii/essai3.li b/lib/guii/essai3.li
deleted file mode 100755
index e69de29..0000000
diff --git a/lib/guii/essai_drop_down b/lib/guii/essai_drop_down
deleted file mode 100755
index 359805a..0000000
Binary files a/lib/guii/essai_drop_down and /dev/null differ
diff --git a/lib/guii/essai_drop_down.li b/lib/guii/essai_drop_down.li
deleted file mode 100644
index 17e0a5d..0000000
--- a/lib/guii/essai_drop_down.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ESSAI_DROP_DOWN;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Interface Node for GUII.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - main <-
-  (
-    +base:INODE;
-    + guii:GUII;
-    //+ menu_g_expr, tools_g_expr:G_EXPR;
-
-    base := INODE.create_or "Bidon" priority 100 + (
-              INODE.create_or "Drop down menu 1" priority 100 +
-                INODE.create_xor "Choix 1" priority 100 +
-                INODE.create_xor "Choix 2" priority 100 +
-                INODE.create_xor "Choix 3" priority 100 +
-                INODE.create_xor "Choix 4" priority 100 +
-                INODE.create_xor "Choix 5" priority 100
-            )+(
-              INODE.create_or "Drop down menu 2" priority 100 +
-                INODE.create_xor "foo 1" priority 100 +
-                INODE.create_xor "foo 2" priority 100 +
-                INODE.create_xor "foo 3" priority 100 +
-                INODE.create_xor "foo 4" priority 100 +
-                INODE.create_xor "foo 5" priority 100
-            )/*+(
-              INODE.create_xor "Page" priority 100
-            )*/;
-    
-    //
-    // Evaluation.
-    //
-
-    guii:=GUII.create base screen_width 800 screen_height 600;
-    guii.set_depth base from 0;
-    guii.evaluation base;
-    guii.run_interface;
-  );
\ No newline at end of file
diff --git a/lib/guii/essai_light b/lib/guii/essai_light
deleted file mode 100755
index bf667bf..0000000
Binary files a/lib/guii/essai_light and /dev/null differ
diff --git a/lib/guii/essai_light.li b/lib/guii/essai_light.li
deleted file mode 100644
index 39c652f..0000000
--- a/lib/guii/essai_light.li
+++ /dev/null
@@ -1,221 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ESSAI_LIGHT;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Interface Node for GUII.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - main <-
-  ( + base,menu,tools,page:INODE;
-    + action_new:BLOCK;
-    + action_open:BLOCK;
-    + action_zoom_in:BLOCK;
-    + action_zoom_out:BLOCK;
-    + action_zoom_page:BLOCK;
-    + action_zoom_select:BLOCK;
-    + action_zoom_100:BLOCK;
-    + action_select:BLOCK;
-    + action_line:BLOCK;
-    + action_rectangle:BLOCK;
-    + action_circle:BLOCK;
-    + action_color:BLOCK;
-    + action_text:BLOCK;
-    + action_zoom:BLOCK;
-    + guii:GUII;
-
-    action_select:= {
-      bt:G_BUTTON;
-      "Zoom\n".print;
-   };
-
-    action_zoom:= {
-      bt:G_BUTTON;
-      "Zoom\n".print;
-   };
-
-    action_text:= {
-      bt:G_BUTTON;
-      "Text\n".print;
-   };
-
-    action_line:= {
-      bt:G_BUTTON;
-      "Select\n".print;
-   };
-
-    action_rectangle:= {
-      bt:G_BUTTON;
-      "Select\n".print;
-   };
-
-    action_circle:= {
-      bt:G_BUTTON;
-      "Select\n".print;
-   };
-
-    action_rectangle:= {
-      bt:G_BUTTON;
-      "Open\n".print;
-    };
-
-    action_color:= {
-      bt:G_BUTTON;
-      "New\n".print;
-    };
-
-    action_zoom_in:= {
-      bt:G_BUTTON;
-      "Zoom in\n".print;
-    };
-
-    action_zoom_out:= {
-      bt:G_BUTTON;
-      "Zoom out\n".print;
-    };
-
-    action_zoom_select:= {
-      bt:G_BUTTON;
-      "Zoom select\n".print;
-    };
-
-    action_zoom_page:= {
-      bt:G_BUTTON;
-      "Zoom page\n".print;
-    };
-
-    action_zoom_100:= {
-      bt:G_BUTTON;
-      "Zoom 100\n".print;
-    };
-
-
-	menu := INODE.create_xor "Menu" priority 100 + (
-	INODE.create_xor "File" priority 100 + (
-	  INODE.create_xor "Clear file" priority 100 + 
-	  INODE.create_xor "New" priority 100 action action_new
-	) + (
-	  INODE.create_xor "Intern file" priority 100 + 
-	  INODE.create_xor "Open" priority 100 action action_open +
-	  INODE.create_xor "Save" priority 100 +
-	  INODE.create_xor "Save as" priority 100
-	) + (
-	  INODE.create_xor "Extern file" priority 100 +
-	  INODE.create_xor "Import" priority 100 +
-	  INODE.create_xor "Export" priority 100
-	) + (
-	  INODE.create_xor "Output file" priority 100 +
-	  INODE.create_xor "Print" priority 100 
-	) + (
-	  INODE.create_xor "Exit manager" priority 100 +
-	  INODE.create_xor "EXit" priority 100 
-	)
-      ) + (
-	INODE.create_xor "Edit" priority 100 + (
-	  INODE.create_xor "History" priority 100 +
-	  INODE.create_xor "Undo" priority 100 +
-	  INODE.create_xor "Redo" priority 100
-	) + (
-	  INODE.create_xor "Edit object" priority 100 +
-	  INODE.create_xor "Delete" priority 100 +
-	  INODE.create_xor "Duplicate" priority 100 +
-	  INODE.create_xor "Select all" priority 100
-	)
-      ) + (
-	INODE.create_xor "Presentation" priority 100 + (
-	  INODE.create_xor "Representation" priority 100 + 
-	  INODE.create_xor "Magnetic locate" priority 100 +
-	  INODE.create_xor "Contour" priority 100
-	)
-      ) + (
-	INODE.create_xor "Disposition" priority 50 + (
-	  INODE.create_xor "Modify" priority 100 + 
-	  INODE.create_xor "Text editor" priority 100 + 
-	  INODE.create_xor "Alignment" priority 100 + 
-	  INODE.create_xor "To curve" priority 100
-	) + (
-	  INODE.create_xor "Order" priority 100 + 
-	  INODE.create_xor "First plan" priority 100 + 
-	  INODE.create_xor "Last plan" priority 100
-	) + (
-	  INODE.create_xor "Link" priority 100 + 
-	  INODE.create_xor "Group" priority 100 + 
-	  INODE.create_xor "Degroup" priority 100 + 
-	  INODE.create_xor "Combine" priority 100 + 
-	  INODE.create_xor "Decombine" priority 100 + 
-	  INODE.create_xor "Auto-combine" priority 100  
-	)
-      ) + (
-	INODE.create_xor "Window" priority 50 + (
-	  INODE.create_xor "Display" priority 100 + 
-	  INODE.create_xor "Refresh draw" priority 100
-	)
-      ) + (
-	INODE.create_xor "Help" priority 25 + (
-	  INODE.create_xor "Information" priority 100 + 
-	  INODE.create_xor "About" priority 100 +
-	  INODE.create_xor "Bugs report" priority 100 +
-	  INODE.create_xor "News" priority 100
-	)
-      );
-
-
-	tools := INODE.create_xor "Tools" priority 100 +
-	    INODE.create_xor "Select" priority 100 action action_select picture "select.bmp" + (
-            INODE.create_xor "Zoom" priority 50 picture "zoom.bmp" + (
-              INODE.create_xor "Raw" priority 100 +
-                INODE.create_xor "Zoom +" priority 100 action action_zoom_in picture "zoom_in.bmp" +
-                INODE.create_xor "Zoom -" priority 100 action action_zoom_out picture "zoom_out.bmp"+
-                INODE.create_xor "Zoom select" priority 50 action action_zoom_select picture "zoom_select.bmp"+
-                INODE.create_xor "Zoom page" priority 25 action action_zoom_page picture "zoom_page.bmp"+
-                INODE.create_xor "Zoom 1:1" priority 25 action action_zoom_100 picture "zoom_100.bmp"
-              )
-            ) +
-            INODE.create_xor "Line" priority 100 action action_line picture "line.bmp" +
-            INODE.create_xor "Rectangle" priority 100 action action_rectangle picture "rectangle.bmp" +
-            INODE.create_xor "Circle" priority 100 action action_circle picture "ellipse.bmp" +
-            INODE.create_xor "Text" priority 100 action action_text picture "text.bmp" +
-            INODE.create_xor "Color" priority 100 action action_color picture "paint.bmp";
-
-
-    page:=INODE.create_xor "Page" priority 100;
-
-    base := INODE.create_or "Paint" priority 100 + menu + tools + page;
-    
-    //
-    // Evaluation.
-    //
-
-    guii:=GUII.create base screen_width 800 screen_height 600;
-    guii.set_depth base from 0;
-    guii.evaluation base;
-    guii.run_interface;
-  );
-  
-  
\ No newline at end of file
diff --git a/lib/guii/g_page.li b/lib/guii/g_page.li
deleted file mode 100755
index 254f440..0000000
--- a/lib/guii/g_page.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                              Lisaac Example                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := G_PAGE;
-      
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Output text for GUI.";
-
-Section Inherit  
-  
-  + parent_area:Expanded AREA;
-
-  - parent_g_expr:G_EXPR := G_EXPR;
-          
-Section Public
-   
-  //
-  // Width / Height
-  //
-  
-  - width_min:INTEGER  := 500; //128;
-  
-  - height_min:INTEGER := 200; //128;
-    
-  //
-  // Creation.
-  //
-  
-  - create:SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make;
-    result
-  );
-  
-  - make <-
-  (
-    // Nothing.
-  ); 
-
-  //
-  // Update position.
-  //
-  
-  - set_position rac:AREA at (x,y:INTEGER) size (w,h:INTEGER) <-
-  ( 
-    update rac from (x,y) size (w,h);
-  );
-  
-  //
-  // Display.
-  //
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (     
-    clipping (x0,y0) to (x1,y1);    
-    //    
-    rectangle (x_min,y_min) to (x_max,y_max) color black;
-    rectangle_fill (x_min+1,y_min+1) to (x_max-1,y_max-1) color yellow;
-    rectangle_fill (0,0) to (width_min-1,height_min-1) color blue;
-    
-  );
diff --git a/lib/guii/grammar.txt b/lib/guii/grammar.txt
deleted file mode 100644
index 066dab7..0000000
--- a/lib/guii/grammar.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-Hyp.     = { Operator x Force }
-Operator = { OR, XOR, AND }
-Force    = [0..100]
-
-
-
-Group:
-======
-- MENU_V     = FRAME*
-      FRAME  = ( BUTTON | CHECK )*
-      BUTTON = ( TEXT | ICON | SHORTCUT )*
-
-:: IN_WIN_OUT 
-
-- MENU_H     = FRAME* 
-      FRAME  = ( BUTTON | CHECK )*
-      BUTTON = ( TEXT | ICON | SHORTCUT )*
-
-:: IN_WIN_OUT 
-
-- TAB        = BUTTON *
-      BUTTON = FRAME *
-
-:: BUTTON, IN_WIN_OUT
- 
-- WINDOW_IN  = ( TREE | FRAME | BUTTON | RAW | CHECK )*
-
-:: IN_WIN_IN
-
-- WINDOW_OUT = ( MENU_V | MENU_H | TAB | WINDOW_IN | FRAME | RAW | BUTTON | CHECK )*
-
-:: IN_WIN_OUT
-
-- FRAME      = ( FRAME | WINDOW_IN | TAB | RAW | BUTTON | CHECK )*
-
-:: IN_FRAME
-
-- TREE       = ( TREE | RAW | BUTTON | CHECK )*
-
-:: BUTTON + RAW = ICON
-
-INTERNAL_GROUP:
-===============
-+ IN_FRAME
-+ IN_WIN_OUT
-+ IN_WIN_IN
-
-ELEVATOR :: BUTTON ?
-
-ITEM: 
-=====
-+ RAW              = ( TEXT | ICON | TEXT_INPUT )*
-+ BUTTON -> Action = ( TEXT | ICON | TEXT_INPUT | SHORTCUT )*
-+ CHECK -> Action  = ( TEXT | ICON | TEXT_INPUT | SHORTCUT )*
-
-SUB_ITEM:
-=========
-+ TEXT
-+ SHORTCUT (racourcis) (-> Action parent)
-+ ICON
-+ TEXT_INPUT -> Action
-
-SIZE: H x V
-=====
-MENU_V     = Max(x) ; Sum(x)
-MENU_H     = Sum(x) ; Max(x)
-TAB        = Max(x) ; Max(x)
-WINDOW_IN  = Taille fixée par la taille de l'écran.
-WINDOW_OUT = Max(x) ; Max(x)
-FRAME      = Max(x) ; Max(x)
-TREE       = Max(x) ; Sum(x)
\ No newline at end of file
diff --git a/lib/guii/grammar2.txt b/lib/guii/grammar2.txt
deleted file mode 100644
index d6f6966..0000000
--- a/lib/guii/grammar2.txt
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Opérateur d'ergonomie (définir la barre des menus, barre d'outils et autres conventions...) */
-
-/* Les actions sont les feuilles de l'arbre: c'est une fonctionnalité du programme.
- * En particulier les "window_in" forment les "plans de travail" principaux pour des actions.
- * Par exemple, la feuille de dessin de Paint est une window_in, la grille du tableur
- * de Excel, un champ texte pour Word ou n'importe quel éditeur, la zone d'affichage vidéo
- * de VLC... Ce qui est affiché dans ce window_in n'est pas décrit dans l'arbre, ce n'est pas
- * un noeud mais bien une feuille dont la fonctionnalité est à la charge du programmeur.
- * D'autre part les "button" peuvent être aussi bien un noeud de l'arbre qu'une feuille
- * et peuvent ainsi engendrer une action.
- * Les "check_box" engendrent une action, ce sont donc des feuilles (une check box ne peut
- * pas avoir de fils!)
- * Les "drop-down menu" (menu déroulant) possèdent tous uniquement des fils engendrant une action (à vérifier!)
- * Les fils d'un "drop-down menu" sont donc tous des feuilles.
- * Au final cette "grammaire" donne les règles de composition d'une GUII en se basant sur l'aspect
- * physique que devrait avoir une application traditionnelle. Par exemple, on ne peut pas avoir de
- * "menu_h" après une "menu_h" mais plutôt un "menu_v", par contre un "menu_v" ou un "menu_h" est
- * possible après une "menu_v". Pour cela il faut différencier les boutons d'un "menu_h" et d'un
- * "menu_v" dans la grammaire (bien qu'ils auront le même aspect), etc...
- * Par contre la grammaire ne traduit pas l'ergonomie d'une application. Par convention une application
- * possède une barre de menus, une barre d'outils et souvent un "window_in" qui servira de "plan de travail"
- * pour l'utilisateur. Un opérateur d'ergonomie sera nécessaire aux premiers noeuds de l'arbre. Celui-ci
- * indiquera si le noeud est la barre de menus, d'outils, etc...
- * Chaque noeud est composé d'items de base définissant son aspect physique. Il faut connaître les
- * dimensions d'un noeud pour vérifier si un pattern est valide ou non (par rapport à la taille de l'écran).
- */
-
-
-
-Paramètre possible d'un noeud
-=============================
-Hyp.       = { Operator x Force }
-Operator   = { OR, XOR, AND }
-Force      = [0..100]
-Ergonomics = {TOOL_BAR, MENU_BAR, WORK_PLACE}
-
-
-La grammaire
-============
-BASE		->	( MENU_V | MENU_H | TAB | WINDOW_IN | BUTTON_V | BUTTON_H | CHECK )*
-
-MENU_V		->	( FRAME_V )*
-
-FRAME_V		->	( BUTTON_V | CHECK )*
-
-BUTTON_V	->	( MENU_V | MENU_H | WINDOW_OUT | action )*
-
-MENU_H		->	( FRAME_H )*
-
-FRAME_H		->	( BUTTON_H | CHECK | DROP-DOWN_MENU )*
-
-BUTTON_H	->	( MENU_V | WINDOW_OUT | action )*
-
-TAB		->	( FRAME_TAB )*
-
-FRAME_TAB	->	( BUTTON | WINDOW_IN | CHECK | DROP-DOWN_MENU )*
-
-WINDOW_OUT	->	( FRAME_WIN_OUT )*
-
-FRAME_WIN_OUT	->	( TAB | BUTTON | WINDOW_IN | CHECK | DROP-DOWN_MENU | MENU_V | MENU_H )*
-
-WINDOW_IN	->	action
-
-CHECK		->	action
-
-DROP-DOWN_MENU	->	action
-
-         ---------------------------------------------------------------------------
-
-BASE		->	MENU_BAR TOOL_BAR* WINDOW_IN
-
-MENU_BAR	->	( BUTTON_MB )*
-
-TOOL_BAR	->	( MENU_V | MENU_H )*
-
-BUTTON_MB	->	MENU_V 
-
-MENU_V		->	( BUTTON_V | CHECK )*
-
-BUTTON_V	->	( MENU_V_OUT | MENU_H_OUT | WINDOW_OUT | action )*
-
-MENU_H		->	( BUTTON_H | CHECK | DROP-DOWN_MENU )*
-
-BUTTON_H	->	( MENU_V_OUT | WINDOW_OUT | action )*
-
-MENU_V_OUT	->	( RAW_V )*
-
-MENU_H_OUT	->	( RAW_H )*
-
-RAW_V		->	( BUTTON_V | CHECK )*
-
-RAW_H		->	( BUTTON_H | CHECK )*
-
-TAB		->	( FRAME_TAB )*
-
-FRAME_TAB	->	( BUTTON | WINDOW_IN | CHECK | DROP-DOWN_MENU )*
-
-WINDOW_OUT	->	( TAB | BUTTON | WINDOW_IN | CHECK | DROP-DOWN_MENU | MENU_V | MENU_H )*
-
-WINDOW_IN	->	action
-
-CHECK		->	action
-
-DROP-DOWN_MENU	->	action
-
-
-
-Item
-====
-
-BUTTON_MB 	->	TEXT | SHORTCUT
-BUTTON_H	->	TEXT | ICON | SHORTCUT
-BUTTON_V	->	TEXT | ICON | SHORTCUT
-CHECK		->	TEXT | ICON | SHORTCUT
-BUTTON		->	TEXT | ICON | TEXT_INPUT | SHORTCUT
-
-/* A finir...
-Internal group
-==============
-G_WIN_OUT
-G_WIN_IN
-G_BUTTON
-G_CHECK
-G_RAW
-G_IMG
-G_IN
-G_OUT
-
-
-
-Représentation physique des patterns
-====================================
-Soit n le nombre de fils d'un pattern.
-On dispose des opérateurs de plcement a/b, où a est sur b, et a|b, où a est à coté de b.
-::MENU_V	=	X1 | X2 | ... | Xn
-	Avec Xi=BUTTON_V
-::MENU_H	=	X1 / X2 / ... / Xn
-	
-TAB
-WINDOW_IN
-WINDOW_OUT
-BUTTON
-BUTTON_V
-BUTTON_H
-CHECK
-FRAME
-FRAME_V
-FRAME_H
-FRAME_TAB
-FRAME_WIN_OUT
-DROP-DOWN_MENU
-*/
-
-Taille l x h
-============
-Soit X un composant d'un noeud
-MENU_V | TOOL_BAR               = Max(largeur(X1),largeur(X2),...,largeur(Xn)) x Sum(hauteur(X1),hauteur(X2),...,hauteur(Xn))
-MENU_H | MENU_BAR | TOOL_BAR    = Sum(largeur(X1),largeur(X2),...,largeur(Xn)) x Max(hauteur(X1),hauteur(X2),...,hauteur(Xn))
-TAB                             = Max(largeur(X1),largeur(X2),...,largeur(Xn)) x Max(hauteur(X1),hauteur(X2),...,hauteur(Xn))
-WINDOW_IN                       = Taille fixée par la taille de l'écran.
-WINDOW_OUT                      = Max(largeur(X1),largeur(X2),...,largeur(Xn)) x Max(hauteur(X1),hauteur(X2),...,hauteur(Xn))
-
-
diff --git a/lib/guii/guii.li b/lib/guii/guii.li
deleted file mode 100644
index 4556b2f..0000000
--- a/lib/guii/guii.li
+++ /dev/null
@@ -1,292 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := GUII;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  - internal_create a:INODE screen_width w:INTEGER screen_height h:INTEGER<-
-  (
-    root:=a;
-    screen_width:=w;
-    screen_height:=h;
-  );
-  
-Section Public
-  
-  + root:INODE;
-  + screen_width:INTEGER;
-  + screen_height:INTEGER;
-  + placement:G_EXPR;
-  
-  
-  - create a:INODE screen_width w:INTEGER screen_height h:INTEGER :GUII<-
-  (
-    +result:SELF;
-    
-    result:=clone;
-    a.set_screen_width w;
-    a.set_screen_height h;
-    result.internal_create a screen_width w screen_height h;
-    result
-  );
-  
-  - make_interface <-
-  (
-    INODE.set_used_width 0;
-    INODE.set_used_height 0;
-    set_depth root from 0;
-    make_dimensions;
-    make_placement;
-    root.display;
-  );
-
-  - run_interface <-
-  (
-    VIDEO.make (screen_width,screen_height);
-    DESK.make VIDEO with placement;
-  );
-  
-  
-  - set_depth node:INODE from j:INTEGER <-
-  (
-    +dpth:INTEGER;
-    
-    dpth:=j+1;
-    node.list.foreach{
-      i:INODE;
-      i.set_depth dpth;
-      (!i.list.is_empty).if {
-        set_depth i from dpth;
-      };
-    };
-  );
-  
-  - evaluation i:INODE dimensions k:INTEGER :INTERNAL_INODE<-
-  (         
-    +best_prc:REAL_32;
-    +tmp:REAL_32;
-    +parent:INTERNAL_INODE;
-    +w:INTEGER;
-    +h:INTEGER;
-    
-    w:=i.dimensions.item k.width;
-    h:=i.dimensions.item k.height;
-    
-    "Evaluation for dimensions ".print;k.print;" : width ".print;w.print;", height ".print;h.print;'\n'.print;
-    
-    (!i.list.is_empty).if {
-      tmp:=MENU_BAR.evaluate i width w height h;"\n\n".print;
-      (tmp>best_prc).if {
-        best_prc:=tmp;
-        parent:=MENU_BAR;
-        //"=================================================>MENU_BAR\n".print;
-      };
-      tmp:=MENU_H.evaluate i width w height h;"\n\n".print;
-      (tmp>best_prc).if {
-        best_prc:=tmp;
-        parent:=MENU_H;
-        //"=================================================>MENU_H\n".print;
-      };
-      tmp:=DROP_DOWN_MENU.evaluate i width w height h;"\n\n".print;
-      (tmp>best_prc).if {
-        best_prc:=tmp;
-        parent:=DROP_DOWN_MENU;
-        //"=================================================>DROP_DOWN_MENU\n".print;
-      };
-    } else {
-      tmp:=PAGE.evaluate i width w height h;"\n\n".print;
-      (tmp>best_prc).if {
-        best_prc:=tmp;
-        parent:=PAGE;
-        //"=================================================>PAGE\n".print;
-      };
-    };
-    (best_prc=0).if {
-      "No patterns match for ".print;i.name.print;" with dimensions ".print;w.print;"x".print;h.print;
-      " try to put it into a G_WIN_IN :)\n".print;
-      //OBJECT.die_with_code 1;
-      best_prc:=WIN_IN.evaluate i width w height h;
-     (best_prc>0).if{
-       i.dimensions.item k.set_pattern WIN_IN;
-       i.dimensions.item k.add_score best_prc;
-     };
-      //i.set_representation INTERNAL_INODE;
-    } else {
-      //"===============================================================================>".print;parent.print;'\n'.print;
-      parent.evaluate i width w height h;
-      '\n'.print;i.name.print;" is a ".print;parent.print;" with dimensions ".print;w.print;"x".print;h.print;"\n".print;
-      i.dimensions.item k.set_pattern parent;
-      i.dimensions.item k.add_score best_prc;
-    };
-    parent
-  );
-  
-  - make_dimensions <-
-  (
-    /*
-    * i : le noeud courant
-    * k : la position courante du noeud i 
-    * j : la case courante du tableau de dimensions du noeud i+1
-    */
-    
-    /* initialisation pour le premier noeud */
-    root.list.first.dimensions.add_last (DIMENSION.create (screen_width,screen_height,0) score 0);
-    
-    /* evaluation de chaque noeud et pour chaque position */
-    root.list.lower.to (root.list.upper) do {
-      i:INTEGER;
-      
-      "Dimensions for ".print;root.list.item i.name.print;'\n'.print;
-      root.list.item i.display_dimensions;'\n'.print;
-      
-      /* evaluation du noeud i pour chaque position k possible */
-      root.list.item i.dimensions.lower.to (root.list.item i.dimensions.upper) do {
-        k:INTEGER;
-        +pattern:INTERNAL_INODE;
-        +width_item:INTEGER;
-        +height_item:INTEGER;
-        
-        pattern:=evaluation (root.list.item i) dimensions k;
-        
-        width_item:=root.list.item i.width;
-        height_item:=root.list.item i.height;
-        
-        root.list.item i.name.print;" : width ".print;width_item.print;','.print;" height ".print;height_item.print;"\n\n".print;
-        
-        /* pour chaque dimensions de i on crée 2 nouvelles dimensions pour i+1 */
-        (i<root.list.upper).if {
-          (2*k-1).to (2*k) do {
-            j:INTEGER;
-            +w:INTEGER;
-            +h:INTEGER;
-            +l:INTEGER;
-            +score:REAL_32;
-            
-            /* pour une position impaire: placement à droite
-            largeur=largeur restante - largeur de l'item courant
-            hauteur=hauteur restante
-            hauteur ligne courante=max(hauteur ligne courante, hauteur item courant)
-            pour une position paire: placement en-dessous
-            largeur=largeur de l'écran
-            hauteur=hauteur restante - max(hauteur de l'item courant,hauteur de la ligne courante)
-              hauteur ligne courante=hauteur item courant */
-              /* 1er noeud est un cas particulier */
-              (i=1).if {
-                ((j%2=1)).if {
-                  w:=screen_width-width_item;
-                  h:=screen_height;
-                  l:=height_item;
-                } else {
-                  w:=screen_width;
-                  h:=screen_height-height_item;
-                  l:=0;
-                };
-              } else {
-                (j%2=1).if {
-                  w:=root.list.item i.dimensions.item k.width-width_item;
-                  h:=root.list.item i.dimensions.item k.height;
-                  (root.list.item i.dimensions.item k.line_height<height_item).if {
-                    l:=height_item;
-                  };
-                } else {
-                  w:=screen_width;
-                  h:=root.list.item i.dimensions.item k.height - (root.list.item i.dimensions.item k.line_height.max height_item);
-                  l:=0;
-                };
-              };
-              //((w>0) && {h>0}).if {
-                score:=root.list.item i.dimensions.item k.score_sum;
-                root.list.item (i+1).dimensions.add_last (DIMENSION.create (w,h,l) score score);
-              //};
-            };
-          };
-        };
-        "Number of dimensions: ".print;root.list.item i.dimensions.count.print;'\n'.print;
-        root.list.item i.diplay_patterns;
-      };
-    );
-
-    - find_dimensions <-
-    (
-      (root.list.upper).downto (root.list.lower) do {
-        n:INTEGER;
-        +i:INODE;
-        i:=root.list.item n;
-
-        (n=root.list.upper).if {
-          i.set_dimensions_nb (root.list.last.get_best_disposition);
-          "Best dimensions is number ".print;i.dimensions_nb.print;'\n'.print;
-        } else {
-          +tmp:REAL_32;
-          tmp:=(root.list.item (n+1)).dimensions_nb;
-          i.set_dimensions_nb ((tmp/2.0).rounded);
-          "Next dimensions is number ".print;i.dimensions_nb.print;'\n'.print;
-        };
-      };
-    );
-
-    - make_placement <-
-    (
-      +operator:CHARACTER;
-      +node:INODE;
-      +width:INTEGER;
-      +height:INTEGER;
-      +pattern:INTERNAL_INODE;
-      //+tmp:REAL_32;
-
-      INODE.set_used_width 0;
-      INODE.set_used_height 0;
-
-      find_dimensions;
-
-      (root.list.lower).to (root.list.upper) do {
-        n:INTEGER;
-        +i:INTEGER;
-
-        node:=root.list.item n;
-        i:=node.dimensions_nb;
-        pattern:=root.list.item n.dimensions.item i.pattern;
-        width:=node.dimensions.item i.width;
-        height:=node.dimensions.item i.height;
-        pattern.print;" representation for ".print;node.name.print;" with dimensions width: ".print;width.print;", height: ".print;height.print;'\n'.print;
-        pattern.evaluate node width width height height;
-        node.make_representation;
-        (n=root.list.lower).if {
-          placement:=node.content;
-        } else {
-          ((root.list.item n.dimensions_nb)%2=1).if {
-            placement:=placement | node.content;
-          } else {
-            placement:=placement / node.content;
-          };
-        };
-        operator.print;node.name.print;'\n'.print;
-      };
-      "\n".print;
-    );
diff --git a/lib/guii/guii_22_05_08.tar b/lib/guii/guii_22_05_08.tar
deleted file mode 100755
index 5be59af..0000000
Binary files a/lib/guii/guii_22_05_08.tar and /dev/null differ
diff --git a/lib/guii/inode.li b/lib/guii/inode.li
deleted file mode 100644
index f1dd2d0..0000000
--- a/lib/guii/inode.li
+++ /dev/null
@@ -1,371 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := INODE;
-  
-  
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Interface Node for GUII.";
-  
-Section Inherit
-  
-  + parent_guii:INTERNAL_INODE := INTERNAL_INODE;
-
-Section Public
-  //
-  // Data.
-  //
-  + name:STRING_CONSTANT;
-  + operator:CHARACTER;
-  + priority:INTEGER_8;
-  + bitmap:ABSTRACT_STRING;
-  + list:LINKED_LIST[INODE];
-  + content:G_EXPR;
-  + covering:INTEGER;		//take items whose are over this pourcentage
-  + height:INTEGER;
-  + width:INTEGER;
-  + min_height:INTEGER;
-  + min_width:INTEGER;
-  + depth:INTEGER;
-  + action:BLOCK;
-  + win_out:G_WIN_OUT;
-  + dimensions:LINKED_LIST[DIMENSION];
-  - screen_width:INTEGER;
-  - screen_height:INTEGER;
-  + connector_width:INTEGER;
-  + connector_height:INTEGER;
-  - used_height:INTEGER;
-  - used_width:INTEGER;
-  + dimensions_nb:INTEGER;
-  + width_win_in:INTEGER;
-  + height_win_in:INTEGER;
-  
-  
-  //bug compilo 0.13
-  + bugw_screen:INTEGER;
-  + bugh_screen:INTEGER;
-  
-  //
-  // Creation.
-  //
-  - create_xor n:STRING_CONSTANT priority p:INTEGER_8 :SELF <-
-  (
-    internal_create n priority p operator '^'
-  );
-  
-  - create_or n:STRING_CONSTANT priority p:INTEGER_8 :SELF <-
-  (
-    internal_create n priority p operator '|'
-  );
-  
-  - create_and n:STRING_CONSTANT priority p:INTEGER_8 :SELF <-
-  (
-    internal_create n priority p operator '&'
-  );
-  
-  - create_or n:STRING_CONSTANT priority p:INTEGER_8 width w:INTEGER height h:INTEGER :SELF <-
-  (
-    internal_create n priority p operator '|' width w height h
-  );
-  
-  - create_and n:STRING_CONSTANT priority p:INTEGER_8 width w:INTEGER height h:INTEGER :SELF <-
-  (
-    internal_create n priority p operator '&' width w height h
-  );
-  
-  - create_xor n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '^' action b;
-    result
-  );
-  
-  - create_or n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '|' action b;
-    result
-  );
-  
-  - create_and n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '&' action b;
-    result
-  );
-  
-  - create_and n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '&' action b picture filename;
-    result
-  );
-  
-  - create_or n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '|' action b picture filename;
-    result
-  );
-  
-  - create_xor n:STRING_CONSTANT priority p:INTEGER_8 action b:BLOCK picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '^' action b picture filename;
-    result
-  );
-  
-  - create_and n:STRING_CONSTANT priority p:INTEGER_8 picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '&' picture filename;
-    result
-  );
-  
-  - create_or n:STRING_CONSTANT priority p:INTEGER_8 picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '|' picture filename;
-    result
-  );
-  
-  - create_xor n:STRING_CONSTANT priority p:INTEGER_8 picture filename:ABSTRACT_STRING :SELF<-
-  (
-    +result:SELF;
-    
-    result := clone;
-    result.make n priority p operator '^' picture filename;
-    result
-  );
-  
-  //
-  // Flags.
-  //
-  
-  - is_xor:BOOLEAN <- operator = '^';
-  - is_and:BOOLEAN <- operator = '&';
-  - is_or:BOOLEAN  <- operator = '|';
-  
-  
-  //
-  //method
-  //
-  - '+' other:INODE :INODE <-
-  (
-    +j:INTEGER;
-    j:=0;
-    list.add_last other;
-    Self
-  );
-  
-  - set_representation new_parent:INTERNAL_INODE <-
-  (
-    parent_guii:=new_parent;
-    content:=NULL;
-    covering:=0;
-    width:=0;
-    height:=0;
-    win_out:=NULL;
-    bugh_screen:=0;
-    bugw_screen:=0;
-    connector_width:=0;
-    connector_height:=0;
-  );
-  
-
-  - set_representation_win_in new_parent:INTERNAL_INODE <-
-  (
-    parent_guii:=new_parent;
-  );
-  
-  - set_depth dpth:INTEGER <-
-  (	
-    depth:=dpth;
-  );
-  
-  - get_parent:INTERNAL_INODE <- 
-  ( 
-    parent_guii
-  );      
-  
-  - reset_size <-
-  (
-    width:=0;
-    height:=0;
-    connector_width:=0;
-    connector_height:=0;
-  );
-
-  - set_screen_width width:INTEGER <-
-  (
-    screen_width:=width;
-  );
-  
-  - set_screen_height height:INTEGER <-
-  (
-    screen_height:=height;
-  );
-
-  - set_height h:INTEGER <-
-  (
-    height:=h;
-  );
-
-  - set_width w:INTEGER <-
-  (
-    width:=w;
-  );
-
-  - set_connector_w w:INTEGER <-
-  (
-    connector_width:=w;
-  );
-
-  - set_connector_h h:INTEGER <-
-  (
-    connector_height:=h;
-  );
-
-  - set_used_width w:INTEGER <-
-  (
-    used_width:=w;
-  );
-
-  - set_used_height h:INTEGER <-
-  (
-    used_height:=h;
-  );
-
-  - set_dimensions_nb d:INTEGER <-
-  (
-    dimensions_nb:=d;
-  );
-
-  - set_width_win_in w:INTEGER <-
-  (
-    width_win_in:=w;
-  );
-
-
-  - set_height_win_in h:INTEGER <-
-  (
-    height_win_in:=h;
-  );
-Section Private
-  
-  - internal_create n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER :SELF <-
-  (
-    + result:SELF;
-    
-    result := clone;
-    result.make n priority p operator op;
-    result
-  );
-  
-  - internal_create n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER width w:INTEGER height h:INTEGER :SELF <-
-  (
-    + result:SELF;
-    
-    result := clone;
-    result.make n priority p operator op width w height h;
-    result
-  );
-  
-  - internal_create n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER action b:BLOCK :SELF <-
-  (
-    + result:SELF;
-    
-    result := clone;
-    result.make n priority p operator op action b;
-    result
-  );
-  
-  - make n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER <-
-  (
-    operator := op;
-    name := n;
-    priority := p;
-    list := LINKED_LIST[INODE].create;
-    dimensions := LINKED_LIST[DIMENSION].create;
-  );
-  
-  - make n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER width w:INTEGER height h:INTEGER <-
-  (
-    operator := op;
-    name := n;
-    priority := p;
-    min_width := w;
-    min_height := h;
-    list := LINKED_LIST[INODE].create;
-    dimensions := LINKED_LIST[DIMENSION].create;
-  );
-  
-  - make n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER action b:BLOCK <-
-  (
-    operator := op;
-    name := n;
-    priority := p;
-    action := b;
-    list := LINKED_LIST[INODE].create;
-    dimensions := LINKED_LIST[DIMENSION].create;
-  );
-  
-  - make n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER action b:BLOCK picture filename:ABSTRACT_STRING <-
-  (
-    operator := op;
-    name := n;
-    priority := p;
-    action := b;
-    bitmap := filename;
-    list := LINKED_LIST[INODE].create;
-    dimensions := LINKED_LIST[DIMENSION].create;
-  );
-  
-  - make n:STRING_CONSTANT priority p:INTEGER_8 operator op:CHARACTER picture filename:ABSTRACT_STRING <-
-  (
-    operator := op;
-    name := n;
-    priority := p;
-    bitmap := filename;
-    list := LINKED_LIST[INODE].create;
-    dimensions := LINKED_LIST[DIMENSION].create;
-  );
-  
-Section INTERNAL_INODE
-  
diff --git a/lib/guii/internal_inode.li b/lib/guii/internal_inode.li
deleted file mode 100644
index c78e68f..0000000
--- a/lib/guii/internal_inode.li
+++ /dev/null
@@ -1,265 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := INTERNAL_INODE;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Interface Node for GUII.";
-  
-  // Warning: This Prototype is shared. All the data have to be deferred !
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-
-Section Private  
-  
-  //
-  // Append for the problem with Dynamic inheritance !
-  //
-
-  
-Section Public  
-  
-  //
-  // Data.
-  //
-  - name:STRING_CONSTANT <- (deferred; NULL);
-  - representation:STRING_CONSTANT := "None";
-  - operator:CHARACTER <- (deferred; NULL);
-  - priority:INTEGER_8 <- (deferred; NULL);
-  - list:LINKED_LIST[INODE] <- ( deferred; NULL);
-//  - action:BLOCK <- { root:INODE; };
-  - content:G_EXPR <- ( deferred; NULL);
-  - win_out:G_WIN_OUT <- (deferred; NULL);
-  - covering:INTEGER <- ( deferred; 0);		//take items whose are over this pourcentage
-  - height:INTEGER <- ( deferred; 0);
-  - width:INTEGER <- ( deferred; 0);
-  - min_height:INTEGER <- deferred;
-  - min_width:INTEGER <- deferred;
-  - type:INTEGER <- (deferred; 0);
-  - depth:INTEGER <- (deferred; 0);
-  - parent:INTERNAL_INODE <- (deferred; NULL);
-  - dimensions:LINKED_LIST[DIMENSION];
-  - screen_width:INTEGER <- (deferred;0);
-  - screen_height:INTEGER <- (deferred;0);
-  - connector_width:INTEGER <- (deferred;0);
-  - connector_height:INTEGER <- (deferred;0);
-  - used_height:INTEGER <- (deferred;0);
-  - used_width:INTEGER <- (deferred;0);
-  - dimensions_nb:INTEGER <- (deferred;0);
-  - width_win_in:INTEGER  <- (deferred;0);
-  - height_win_in:INTEGER <- (deferred;0);
-
-  //bug compilo 0.13
-  - bugw_screen:INTEGER <- (deferred;0);
-  - bugh_screen:INTEGER <- (deferred;0);
-
-  //
-  // Flags.
-  //
-  - is_xor:BOOLEAN <- operator = '^';
-  - is_and:BOOLEAN <- operator = '&';
-  - is_or:BOOLEAN  <- operator = '|';
-  
-  //
-  // Added.
-  //
-  - '+' other:INODE :INODE <- deferred;
-  
-  //
-  // Method.
-  //
-  - print <- deferred;
-  - get_menu_parent:INTERNAL_INODE <- ( deferred; NULL);
-  - open <- deferred;
-  - close <- deferred;
-  - make_representation <- deferred;
-  - evaluate n:INODE width w:INTEGER height h:INTEGER :REAL_32<- (deferred;0);
-  - compute_size_from_prc p:INTEGER <- deferred;
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN <- (deferred; FALSE);
-  - semantic_evaluation_win_in n:INODE width w:INTEGER height h:INTEGER :BOOLEAN <-(deferred;FALSE);
-  - space_evaluation (w,h:INTEGER) :REAL_32 <- (deferred; 0);
-  - predict_size :INTEGER <- (deferred;0);
-
-  //
-  // browse
-  //
-  
-  - browse_group tst:BLOCK :BOOLEAN <-
-  (
-    + i:INTEGER;
-    (! list.is_empty).if {
-	i := list.lower;
-	{(i <= list.upper) && {tst.value (list.item i)}}.while_do {
-	  i := i + 1;
-
-	};
-	i > list.upper
-    }
-  );
-  
-  - browse_group_group tst:BLOCK :BOOLEAN <-
-  [ ? {! list.is_empty}; ]
-  ( + i,j:INTEGER;
-    + lst:LINKED_LIST[INODE];
-    + result:BOOLEAN;
-
-    i := list.lower;
-    result := TRUE;
-    {(i <= list.upper) && {result}}.while_do {
-      lst := list.item i.list;
-      (lst.is_empty).if {
-        result := FALSE;
-      } else {
-        j := lst.lower;
-        {(j <= lst.upper) && {tst.value (lst.item j)}}.while_do {
-          j := j + 1;
-        };
-        result := j > lst.upper;
-      };
-      i := i + 1;
-    };
-    result
-  );
-  
-  - get_nitem_from_prc p:INTEGER : INTEGER <-
-  (
-    + j:INTEGER;
-    
-    j:=0;
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        j:=j+1;
-      };
-    };
-    j
-  );
-  
-  - get_area_prc (w,h:INTEGER):REAL_32 <-
-  [
-    ? {width <= w};
-    ? {height <= h};
-  ]
-  (
-    +a,b,c,d:REAL_32;
-    a:=width;
-    b:=height;
-    c:=w;
-    d:=h;
-    //"a: ".print;a.print;", b: ".print;b.print;", c".print;c.print;", d: ".print;d.print;'\n'.print;
-    //"Result get_area: ".print;((a*b)/(c*d)*100).print;'\n'.print;
-    (a*b)/(c*d)*100
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-  //
-  // Debug routine
-  //
-  - display <-
-  (
-    name.print;
-    " (".print;
-    representation.print;
-    ")\n".print;
-    (list != NULL).if {
-      base.print;
-      (operator)
-      .when '|' then { "(OR ".print; }
-      .when '&' then { "(AND ".print; }
-      .when '^' then { "(XOR ".print; };
-      priority.print;")\n".print;
-      base.print;
-      (list.is_empty).if {
-        "\n".print;
-      } else {
-        " | \n".print;
-      };
-      (list.lower).to (list.upper) do { j:INTEGER;
-        base.print; 
-        " +- ".print;
-        (j != list.upper).if {
-          base.append " |  ";
-        } else {
-          base.append "    ";
-        };
-        list.item j.display;
-        base.remove_last 4;	
-      };
-    };
-  );
-  
-  - display_dimensions <-
-  (
-    +j:INTEGER;
-    
-    dimensions.foreach {
-      i:DIMENSION;
-      j:=j+1;
-      "Dimensions ".print;j.print;" : width ".print;i.width.print;", height ".print;i.height.print;", ligne ".print;i.line_height.print;'\n'.print;
-    };
-  );
-
-  - diplay_patterns <-
-  (
-    "Patterns for ".print;name.print;'\n'.print;
-    dimensions.lower.to (dimensions.upper) do {
-      n:INTEGER;
-      +d:DIMENSION;
-
-      d:=dimensions.item n;
-      (d.pattern=NULL).if {
-        "Not found".print;
-      } else {
-        d.pattern.print;
-      };
-      " with dimensions ".print;d.width.print;"x".print;d.height.print;" score: ".print;d.score_sum.print;
-      (n%2=1).if {
-        " operator: |\n".print;
-      } else {
-        " operator: /\n".print;
-      };
-    };
-  );
-  
-  - get_best_disposition :INTEGER <-
-  (
-    +j:INTEGER;
-    +score:REAL_32;
-
-    dimensions.lower.to (dimensions.upper) do {
-      i:INTEGER;
-      ((dimensions.item i.score_sum>=score)).if {
-        score:=dimensions.item i.score_sum;
-        j:=i;
-      };
-    };
-    j
-  );
-
-
-Section Private
-  
-  - base:STRING := STRING.create 250;
-  
\ No newline at end of file
diff --git a/lib/guii/line.bmp b/lib/guii/line.bmp
deleted file mode 100644
index 586a084..0000000
Binary files a/lib/guii/line.bmp and /dev/null differ
diff --git a/lib/guii/majecstic08/ALIRE b/lib/guii/majecstic08/ALIRE
deleted file mode 100644
index 78b7262..0000000
--- a/lib/guii/majecstic08/ALIRE
+++ /dev/null
@@ -1,87 +0,0 @@
-Package: article-hermes.cls
-Version: 1.2 du 3 mars 2005
-
-Ce répertoire contient le package article-hermes.cls pour préparer
-des articles de revue ou pour des actes de conférences publiés
-par les éditions Hermes.
-
-1. Contenu
-
-ALIRE                           : ce fichier
-
-article-hermes.cls              : le fichier de style latex
-
-biblio-hermes.bst               : le fichier de style bibtex pour les articles
-
-doc-article-hermes.ltx          : un texte d'explications et d'exemples
-                                  d'utilisation du style article-hermes.cls.
-                                  (ce texte utilise des accents iso-latin1).
-
-doc-article-hermes-ori.ps        : la version postscript du texte doc-article-hermes.ltx
-                                  obtenue avec article-hermes.cls qui sert de référence.
-doc-article-hermes-ori.pdf       : le même texte que précédemment en pdf
-
-exemple-biblio.bib              : la mini base bibtex pour l'exemple donné en annexe.
-
-Makefile                       : un exemple de makefile qui produit automatiquement
-                                 doc-article-hermes.ps à partir des sources
-                                 doc-article-hermes.ltx et exemple-biblio.bib
-                                 ainsi que les fichiers de style article-hermes.cls
-                                 et  biblio-hermes.bst.
-
-2. Test du paquetage
-
-2.1 lancement automatique
-
-  Si vous êtes dans un environnement Unix ou Linux,
-  il vous suffit de lancer make, en adaptant événtuellement le nom
-  de la variable TEXMF comme il convient sur votre ordinateur.
-
-  Si vous êtes sous Windows avec une distribution MikTeX
-  ( ftp://ftp.jussieu.fr/pub/TeX/CTAN/systems/win32/miktex/ ou
-    ftp://ftp.loria.fr/pub/ctan/systems/win32/miktex/ ...
-  ) vous pouvez vous passer de ce makefile et utiliser
-    texify qui fait le travail automatiquement.
-
-  Vous pouvez aussi installer sur Windows quelques outils de base Unix
-  comme un shell bash, make, awk, etc... qui peuvent être très utiles
-  notamment pour produire un index d'ouvrage aux normes Hermes.
-  Ces outls Unix sont gratuits et disponibles dans le logiciel
-  cygwin :  ftp://ftp.jussieu.fr/pub/cygwin/ (par exemple).
-
-2.2 lancemenet manuel
-
-Lancer latex sur doc-article-hermes.ltx,
-Lancer bibtex sur doc-article-hermes
-Relancer latex jusqu'à ce qu'il n'y ait plus  de références non résolues
-   (deux fois sont nécessaires).
-Lancer dvips -ta4 (A4) ou -tletter (USLetter):
-   dvips -ta4 doc-article-hermes.dvi > test.ps
-Imprimer le fichier du postscript obtenu : il doit donner le même résultat
-   que le fichier doc-article-hermes-ori.ps
-
-Remarques:
- - si votre moteur TeX n'accepte pas des caractères iso-latin1,
-vous pouvez traduire les accents avec les anciennes conventions Latex,
-par exemple \'{e} pour é, etc.
- - Sur certaines installations, il peut être nécessaire de placer dans
-le préambule de doc-article-hermes.ltx, \usepackage[T1]{fontenc}
-
-3. Installation
-
-Si le test précédent est concluant, placer les fichiers article-hermes.cls
-et biblio-hermes.bst dans les répertoires adhoc pour les styles de latex2e et
-bibtex. Sinon, vous pouvez les placer dans le répertoire qui contient
-votre article.
-
-4. Utilisation
-
-Lire le document doc-article-hermes.ps pour le mode d'emploi et les
-consignes aux auteurs. Le fichier doc-article-hermes.ltx sert
-aussi d'exemple d'utilisation des différentes commandes.
-
-Bonne chance
-
-Roger Rousseau, I3S/UNSA, rr at unice.fr
-
-<>
diff --git a/lib/guii/majecstic08/EmergencySave.obj b/lib/guii/majecstic08/EmergencySave.obj
deleted file mode 100755
index 7942872..0000000
--- a/lib/guii/majecstic08/EmergencySave.obj
+++ /dev/null
@@ -1,404 +0,0 @@
-%TGIF 4.1.45-QPL
-state(0,37,100.000,0,0,0,16,1,9,1,1,1,1,0,3,1,1,'Courier',0,80640,0,0,1,5,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(19,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1,
-	"#00000000c000", 0, 0, 49344, 0, 0, 49152, 1,
-	"#820782070000", 33410, 33410, 0, 33287, 33287, 0, 1,
-	"#3cf3fbee34d2", 15420, 64507, 13364, 15603, 64494, 13522, 1,
-	"#3cf3fbed34d3", 15420, 64507, 13364, 15603, 64493, 13523, 1,
-	"#ffffa6990000", 65535, 42662, 0, 65535, 42649, 0, 1,
-	"#ffff0000fffe", 65535, 0, 65535, 65535, 0, 65534, 1,
-	"#fffe0000fffe", 65535, 0, 65535, 65534, 0, 65534, 1,
-	"#fffe00000000", 65535, 0, 0, 65534, 0, 0, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-objshadow_info('#c0c0c0',2,2).
-page(1,"",1,'').
-rcbox('black','',755,270,835,300,4,2,1,0,16,43,0,0,0,0,'2',0,[
-]).
-rcbox('black','',625,270,705,300,4,2,1,0,16,44,0,0,0,0,'2',0,[
-]).
-rcbox('black','',690,180,770,210,0,2,1,0,16,0,0,0,0,0,'2',0,[
-]).
-text('black',705,188,1,0,1,45,15,1,12,3,0,0,0,0,2,45,15,0,0,"",0,0,0,0,200,'',[
-minilines(45,15,0,0,0,0,0,[
-mini_line(45,12,3,0,0,0,[
-str_block(0,45,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,45,12,3,0,-1,0,0,0,0,0,
-	"GROUP")])
-])
-])]).
-text('black',640,278,1,0,1,36,16,4,12,4,0,0,0,0,2,36,16,0,0,"",0,0,0,0,290,'',[
-minilines(36,16,0,0,0,0,0,[
-mini_line(36,12,4,0,0,0,[
-str_block(0,36,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,36,12,4,0,0,0,0,0,0,0,
-	"MENU")])
-])
-])]).
-text('black',770,278,1,0,1,54,16,10,12,4,0,0,0,0,2,54,16,0,0,"",0,0,0,0,290,'',[
-minilines(54,16,0,0,0,0,0,[
-mini_line(54,12,4,0,0,0,[
-str_block(0,54,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,54,12,4,0,0,0,0,0,0,0,
-	"WINDOW")])
-])
-])]).
-arc('black','',0,3,1,0,700,335,729,360,760,360,710,360,0,58,50,0,11520,19,0,0,12,5,0,0,0,'3','12','5',0,[
-]).
-text('black',715,343,1,0,1,27,15,25,12,3,0,0,0,0,2,27,15,0,0,"",0,0,0,0,355,'',[
-minilines(27,15,0,0,0,0,0,[
-mini_line(27,12,3,0,0,0,[
-str_block(0,27,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,27,12,3,0,-1,0,0,0,0,0,
-	"XOR")])
-])
-])]).
-poly('black','',2,[
-	730,335,730,210],1,4,1,29,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	665,270,690,210],1,4,1,45,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	795,270,770,210],1,4,1,47,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	705,345,665,300],1,4,1,50,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	755,345,795,300],1,4,1,65,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	680,270,705,210],1,4,1,67,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	780,270,755,210],1,4,1,69,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-rcbox('black','',400,210,480,240,0,2,1,0,16,75,0,0,0,0,'2',0,[
-]).
-text('black',415,218,1,0,1,45,15,76,12,3,0,0,0,0,2,45,15,0,0,"",0,0,0,0,230,'',[
-minilines(45,15,0,0,0,0,0,[
-mini_line(45,12,3,0,0,0,[
-str_block(0,45,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,45,12,3,0,-1,0,0,0,0,0,
-	"GROUP")])
-])
-])]).
-text('black',400,308,1,0,1,81,15,79,12,3,0,0,0,0,2,81,15,0,0,"",0,0,0,0,320,'',[
-minilines(81,15,0,0,0,0,0,[
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-1,0,0,0,0,0,
-	"GROUP_REF")])
-])
-])]).
-arc('black','',0,3,1,0,410,275,439,300,470,300,420,300,0,58,50,0,11520,80,0,0,12,5,0,0,0,'3','12','5',0,[
-]).
-text('black',425,283,1,0,1,27,15,81,12,3,0,0,0,0,2,27,15,0,0,"",0,0,0,0,295,'',[
-minilines(27,15,0,0,0,0,0,[
-mini_line(27,12,3,0,0,0,[
-str_block(0,27,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,27,12,3,0,-1,0,0,0,0,0,
-	"XOR")])
-])
-])]).
-poly('black','',2,[
-	430,275,430,240],1,4,1,82,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-rcbox('black','',395,300,485,330,0,2,1,0,16,83,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	450,275,450,240],1,4,1,89,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',365,343,1,0,1,36,15,92,12,3,0,0,0,0,2,36,15,0,0,"",0,0,0,0,355,'',[
-minilines(36,15,0,0,0,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,-1,0,0,0,0,0,
-	"Self")])
-])
-])]).
-poly('black','',3,[
-	405,350,440,355,440,330],1,2,1,93,1,0,0,0,0,0,0,'2',0,0,
-    "4","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-oval('black','',330,185,535,390,0,2,1,113,0,0,0,0,0,'2',0,[
-]).
-text('black',370,393,1,0,1,126,15,118,12,3,0,0,0,0,2,126,15,0,0,"",0,0,0,0,405,'',[
-minilines(126,15,0,0,0,0,0,[
-mini_line(126,12,3,0,0,0,[
-str_block(0,126,12,3,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,126,12,3,0,-2,0,0,0,0,0,
-	"Noeud abstrait")])
-])
-])]).
-poly('black','',2,[
-	550,280,590,280],0,2,1,120,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	550,300,590,300],0,2,1,121,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',3,[
-	580,270,600,290,580,310],0,2,1,122,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',690,368,1,0,1,81,15,135,12,3,0,0,0,0,2,81,15,0,0,"",0,0,0,0,380,'',[
-minilines(81,15,0,0,0,0,0,[
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-1,0,0,0,0,0,
-	"GROUP_REF")])
-])
-])]).
-rcbox('black','',685,360,775,390,0,2,1,0,16,136,0,0,0,0,'2',0,[
-]).
-oval('black','',605,155,850,445,0,2,1,140,0,0,0,0,0,'2',0,[
-]).
-text('black',655,403,1,0,1,36,15,146,12,3,0,0,0,0,2,36,15,0,0,"",0,0,0,0,415,'',[
-minilines(36,15,0,0,0,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,-1,0,0,0,0,0,
-	"Self")])
-])
-])]).
-poly('black','',3,[
-	695,410,730,415,730,390],1,2,1,147,1,0,0,0,0,0,0,'2',0,0,
-    "4","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',615,448,1,0,1,225,15,152,12,3,0,0,0,0,2,225,15,0,0,"",0,0,0,0,460,'',[
-minilines(225,15,0,0,0,0,0,[
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-1,0,0,0,0,0,
-	"Noeud avec representation")])
-])
-])]).
-poly('black','',2,[
-	120,500,160,500],1,4,1,154,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',170,488,2,0,1,234,30,157,12,3,0,0,0,0,2,234,30,0,0,"",0,0,0,0,500,'',[
-minilines(234,30,0,0,0,0,0,[
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-1,0,0,0,0,0,
-	"Lien d'heritage dynamique")])
-]),
-mini_line(234,12,3,0,0,0,[
-str_block(0,234,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,234,12,3,0,-4,0,0,0,0,0,
-	"(type dynamique du parent)")])
-])
-])]).
-poly('black','',2,[
-	120,550,160,550],1,4,1,159,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',170,538,2,0,1,225,30,162,12,3,0,0,0,0,2,225,30,0,0,"",0,0,0,0,550,'',[
-minilines(225,30,0,0,0,0,0,[
-mini_line(216,12,3,0,0,0,[
-str_block(0,216,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,216,12,3,0,-1,0,0,0,0,0,
-	"Lien d'heritage statique")])
-]),
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-4,0,0,0,0,0,
-	"(type statique du parent)")])
-])
-])]).
-rcbox('black','',440,485,520,515,4,2,1,0,16,184,0,0,0,0,'2',0,[
-]).
-text('black',455,493,1,0,1,36,16,185,12,4,0,0,0,0,2,36,16,0,0,"",0,0,0,0,505,'',[
-minilines(36,16,0,0,0,0,0,[
-mini_line(36,12,4,0,0,0,[
-str_block(0,36,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,36,12,4,0,0,0,0,0,0,0,
-	"MENU")])
-])
-])]).
-text('black',530,478,3,0,1,234,45,186,12,3,0,0,0,0,2,234,45,-1,0,"",0,0,0,0,490,'',[
-minilines(234,45,-1,0,0,0,0,[
-mini_line(189,12,3,-1,0,0,[
-str_block(0,189,12,3,-1,-8,0,0,0,[
-str_seg('black','Courier',0,80640,189,12,3,-1,-8,0,0,0,0,0,
-	"Ajout dynamique d'un ")])
-]),
-mini_line(180,12,3,0,0,0,[
-str_block(0,180,12,3,0,-8,0,0,0,[
-str_seg('black','Courier',0,80640,180,12,3,0,-8,0,0,0,0,0,
-	"objet dans l'arbre, ")])
-]),
-mini_line(234,12,3,0,0,0,[
-str_block(0,234,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,234,12,3,0,-4,0,0,0,0,0,
-	"un MENU XOR WINDOW XOR ...")])
-])
-])]).
-box('black','',65,220,95,230,0,2,1,194,0,0,0,0,0,'2',0,[
-]).
-box('black','',65,245,95,255,0,2,1,195,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	80,245,80,230],0,2,1,196,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,135,180,145,0,2,1,200,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,160,180,170,0,2,1,201,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,160,165,145],0,2,1,202,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,220,180,230,0,2,1,203,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,245,180,255,0,2,1,204,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,245,165,230],0,2,1,205,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',225,220,255,230,0,2,1,206,0,0,0,0,0,'2',0,[
-]).
-box('black','',225,245,255,255,0,2,1,207,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	240,245,240,230],0,2,1,208,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',5,[
-	165,140,135,115,110,185,105,290,80,255],1,2,1,209,1,0,0,0,0,0,0,'2',0,0,
-    "70","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	165,140,180,125,190,125,205,135,190,275,170,285,165,255],1,2,1,212,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	165,140,180,100,225,125,275,230,260,275,240,270,240,255],1,2,1,213,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,330,180,340,0,2,1,216,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,355,180,365,0,2,1,217,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,355,165,340],0,2,1,218,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',225,330,255,340,0,2,1,219,0,0,0,0,0,'2',0,[
-]).
-box('black','',225,355,255,365,0,2,1,220,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	240,355,240,340],0,2,1,221,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	240,225,220,200,215,215,205,235,195,370,175,395,165,365],1,2,1,222,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',6,[
-	240,225,220,215,215,270,205,385,230,400,240,365],1,2,1,223,1,0,0,0,0,0,0,'2',0,0,
-    "78","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-oval('black','',215,315,275,380,0,2,1,224,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	230,320,365,210],0,2,1,227,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	245,380,440,390],0,2,1,233,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',185,398,2,1,1,126,30,235,12,3,0,0,0,0,2,126,30,-1,0,"",0,0,0,0,410,'',[
-minilines(126,30,-1,0,1,0,0,[
-mini_line(126,12,3,-1,0,0,[
-str_block(0,126,12,3,-1,-2,0,0,0,[
-str_seg('black','Courier',0,80640,126,12,3,-1,-2,0,0,0,0,0,
-	"Arbre abstrait")])
-]),
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-2,0,0,0,0,0,
-	"de depart")])
-])
-])]).
-text('black',305,323,1,1,1,38,24,238,12,3,0,0,0,0,2,36,15,0,0,"",0,1,0,0,335,'',[
-	305,323,287,323,323,338,959.974,-280.091,280.091,959.974,-5,-4,286,322,324,339],[
-minilines(36,15,0,0,1,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,0,0,0,0,0,0,
-	"ZOOM")])
-])
-])]).
-oval('black','',475,15,625,155,0,2,1,239,0,0,0,0,0,'2',0,[
-]).
-box('black','',370,45,550,145,0,2,1,240,0,0,0,0,0,'2',0,[
-]).
-polygon('black','',6,[
-	760,600,910,445,970,570,860,645,790,645,760,600],3,2,1,1,241,0,0,0,0,0,'2',0,
-    "fc",[
-]).
diff --git a/lib/guii/majecstic08/Makefile b/lib/guii/majecstic08/Makefile
deleted file mode 100644
index e323168..0000000
--- a/lib/guii/majecstic08/Makefile
+++ /dev/null
@@ -1,115 +0,0 @@
-### Exemple de Makefile pour un article de revue ou de conférence
-### Ce makefile force l'exécution d'au moins 3 passages de Latex
-### et appelle bibtex pour résoudre les références, éventuellement
-### en avant de sections, tableaux ou bibliographiques.
-### Certains articles peuvent nécessiter moins de passsages,
-### d'autres davantage : à adapter.
-
-### Indiquer ci-dessous le nom du fichier qui contient l'article
-ARTICLE   = doc-article-hermes.ltx
-
-### Indiquer les noms des fichiers .eps éventuels
-FIGURES   = 
-
-### Indiquer le ou les fichiers .bbl utilisés.
-### Si ce fichier a le même nom que l'article sauf le suffixe,
-### laisser la définition suivante.
-BBL       =  $(ARTICLE:.ltx=.bbl)
-
-### PROGS
-
-### Définir le nom de chemin du répertoire texmf qui contient
-### la distribution complète de latex/tex/bibtex ...
-### Ce qui suit n'est qu'une suggestion pour quelques environnements
-
-# pour OSF/1
-#TEXMF = /usr/local/share/texmf
-
-# pour Windows / MikTeX / Cygwin (à adapter)
-# TEXMF = /cygdrive/c/MikTeX/Texmf 
-
-# Pour Linux
-TEXMF=  /usr/share/texmf
-
-### Ce qui suit devrait rester tel que dans la plupqrt des cas ##################
-
-HERMESPATH  = .:$(TEXMF)//
-TEXINPUTS   = TEXINPUTS=$(HERMESPATH)
-BIBINPUTS   = BIBINPUTS=$(HERMESPATH) BSTINPUTS=$(HERMESPATH)
-
-LATEX       = $(TEXINPUTS) latex
-BIBTEX      = $(BIBINPUTS) bibtex
-
-### Contenu de l'article
-
-LTX       = doc-article-hermes.ltx
-PS        = $(LTX:.ltx=.ps)
-BBL       = $(LTX:.ltx=.bbl)
-
-### RULES
-
-.SUFFIXES:
-.SUFFIXES: .ps .dvi .bbl .aux .ltx
-
-.aux.bbl: ; $(BIBTEX) $*
-
-### Paramètres de l'imprimante utilisée (cela peut être mis en commentaires ou adapté)
-
-DPI         = 600      # résolution de l'imprimante
-OFFSET      = 0mm,0mm  # offset de l'imprimante
-PAGEFORMAT  = a4       # Format du papier
-DVIFLAGS    = -D $(DPI) -t $(PAGEFORMAT) -O $(OFFSET)
-
-### TARGETS
-
-DVI0      = $(ARTICLE:.ltx=.dvi0)
-DVI1      = $(ARTICLE:.ltx=.dvi1)
-DVI       = $(ARTICLE:.ltx=.dvi)
-
-BLG       = $(BBL:.bbl=.blg)
-
-AUX       = $(ARTICLE:.ltx=.aux)
-LOG       = $(ARTICLE:.ltx=.log)
-LOGS      = $(AUX) $(BLG) $(LOG)
-
-PS        = $(ARTICLE:.ltx=.ps)
-
-all: $(PS)
-
-$(DVI0) : $(ARTICLE) $(FIGURES)
-	@ echo "===> $(DVI0) et 1ères références en avant (.aux)"
-	$(LATEX) $(ARTICLE)
-	mv $(DVI) $(DVI0)
-
-$(BBL)  : $(DVI0)
-	@ for f in $(BBL) ; \
-	do F=`basename $$f .bbl` ; \
-		echo "===> $$F.bbl"; \
-		$(BIBTEX) $$F ; \
-	done
-
-$(DVI1) : $(DVI0) $(BBL)
-	@ echo "===> $(DVI1), $(BBL), élimination des références en avant"
-	$(LATEX) $(ARTICLE)
-	mv $(DVI) $(DVI1)
-
-$(DVI) : $(DVI1)
-	@ echo "===> $(DVI) final ..."
-	$(LATEX)  $(ARTICLE)
-
-$(PS) : $(DVI)
-	@ echo "===> $(PS) final ..."
-	dvips $(DVIFLAGS) -o $(PS) $(DVI)
-
-new :
-	@ echo "===> recompilation forcée ..."
-	$(LATEX)  $(ARTICLE)
-	dvips $(DVIFLAGS) -o $(PS) $(DVI)
-
-clean:;
-	rm -f \#* *~ $(PS) $(LOGS) $(DVI0) $(DVI1) $(DVI) $(AUX)
-
-veryclean:;
-	make clean
-	rm -f $(BBL) $(BLG) $(IDX) $(IND) *.bbl *.aux
-
diff --git a/lib/guii/majecstic08/article-hermes.cls b/lib/guii/majecstic08/article-hermes.cls
deleted file mode 100644
index f0b710b..0000000
--- a/lib/guii/majecstic08/article-hermes.cls
+++ /dev/null
@@ -1,1649 +0,0 @@
-% LaTeX documentclass for Hermes publisher :
-% R. Rousseau, rr at unice.fr, août 1999
-% G. Laurent, glaurent at ens2m.fr, mars 2005
-
-\def\PackageName{article-hermes}
-\def\PackageVersion{1.2}
-\def\firstversion{22/09/1996}
-\def\filedate{03/03/2005}
-\def\docdate{03/03/2005}
-
-%%% Prélude %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%=== Identification Part
-
-\NeedsTeXFormat{LaTeX2e}
-
-\def\fileversion{\PackageVersion}
-\ProvidesClass{\PackageName}[
-     \filedate \space Version:\space \PackageVersion \space ]
-\typeout{style Latex2e pour les articles de revues ou actes Hermes, Roger
-Rousseau, 1999, Guillaume Laurent, 2005}
-\ProvidesFile{\PackageName.cls}[\filedate \space Version:\space
-\PackageVersion]
-
-%=== Initial Code Part
-
-% Définition des variables d'option et leur valeur par défaut
-% Les tests if ne comportent pas de `@' pour pouvoir être utilisé dans les documents
-% En particulier \iftreatise peut être utile
-
-\newif\iffrenchlang   \frenchlangtrue    % ouvrage en français, false => in english
-\newif\ifcropmarks    \cropmarksfalse    % affichage du contour de page et de corps du texte
-\newif\ifemptyheaders \emptyheadersfalse % aucun entête de page, mais numérotation hors cadre
-\newif\iffirstbreak   \firstbreaktrue    % true => saut de page sur la page de titre
-\newif\iffleqn        \fleqnfalse        % true => formules mathématiques à gauche, sinon centrées
-
-%=== Declaration of options
-
-\DeclareOption{english}{%
-   \typeout{article-hermes.cls : ``english'' option}%
-   \frenchlangfalse
-}
-
-\DeclareOption{fleqn}{%
-    \typeout{article-hermes.cls : ``fleqn'' option}%
-    \PassOptionsToClass{fleqn}{article}%
-    \fleqntrue%
-}
-
-\DeclareOption{cropmarks}{%
-   \typeout{article-hermes.cls : ``cropmarks'' option}%
-   \cropmarkstrue%
-}
-
-\DeclareOption{empty}{%
-   \typeout{article-hermes.cls : ``empty'' option}%
-   \emptyheaderstrue %
-}
-
-\DeclareOption{nofirstpagebreak}{%
-   \typeout{article-hermes.cls : ``nofirstpagebreak'' option}%
-   \firstbreakfalse %
-}
-
-\DeclareOption*{\typeout{*** Option ``\CurrentOption'' inconnue ***\\ Syntaxe :
-documentclass[fleqn,english,cropmarks,empty,nofirstpagebreak]{article-hermes}}}
-\PassOptionsToClass{10pt,twoside}{article}
-
-%=== Execution of options
-
-\ExecuteOptions{10pt}         % Defaults options
-\ProcessOptions               % Évaluation des déclarations d'options
-
-%=== Package loading
-
- \LoadClass{article}
- \RequirePackage{ifthen}
- \RequirePackage{amsmath}
- \RequirePackage{amsfonts}
- \RequirePackage{amssymb}
- \RequirePackage[dvips]{graphicx}
-
-
-% On n'utilise plus french de B. Gaulle, mais frenchb (de babel)
-\RequirePackage[frenchb,english]{babel}
-
-% Attention ! avec babel, tout appel à \selectlanguage active un espacement spécial pour
-% les listes et redéfinit les noms de certaines entités (tablename, figurename....
-% nous ne nous laisserons pas faire !!!
-\let\ORIselectlanguage\selectlanguage
-\gdef\selectlanguage#1{\ORIselectlanguage{#1}\@mkhermes}
-\def\french{\selectlanguage{frenchb}\@mkhermes}
-\def\english{\selectlanguage{english}\@mkhermes}
-
-%=== Packages Options as variables
-
-
-%%% Fin du prélude
-
-%%% Code des Commandes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% suit l'ordre des sections de Consignes aux auteurs (cf. http://www.editions-hermes.fr)
-% Éditions Hermès ``Consignes aux auteurs ...'', 1998.
-
-% <2. Présentation> ---------------------------------------------------------
-
-% Polices du corps du texte
-
-% L'encodage recommandé est T1, notamment pour les guillemets français
-% Mais certaines installations n'acceptent pas cet encodage ou nécessitent
-% trop de constructions de polices pour dvips ou xdvi : je ne l'impose pas
-% Il semble que les guillemets français puissent être obtenus par
-% \leftguillemets \rightguillemets même sans l'encodage T1.
-% En cas de problème avec certains caractères pour certaines polices
-% forcer l'encodage à T1 ou OT1 OU SUPPRIMER cet encodage.
-% - soit ici,
-      \usepackage[T1]{fontenc}
-      \usepackage[latin1]{inputenc}%C. QUEINNEC
-% - soit dans le prélude du document, par exemple avec \usepackage[T1]{fontenc}
-
-% Latex/Unix: Times romain
-\renewcommand{\rmdefault}{ptm}  % Postscript Times
-\renewcommand{\sfdefault}{phv}  % Postscript Helvetica
-%\renewcommand{\ttdefault}{pcr} % Police Courier : un peu large
-\renewcommand{\ttdefault}{cmtt} % Police Latex tt : plus jolie et étroite,
-
-\newcommand{\FonteTexte}{\normalfont\fontsize{10}{12}\selectfont}% Police du texte normal
-
-\newlength{\interligne}       % Ne change pas dans ce style: quand on parle
-\setlength{\interligne}{12pt} % d'une ligne blanche, c'est ça : 4.22mm
-% On peut utiliser cette commande dans le texte, par exemple
-% \setlength{\baselineskip}{1\interligne} pour revenir à l'espacement normal
-\newcommand{\@espace}{\hspace*{0.5em}}  % Hermès parle parfois d'espaces (une espace)
-                                        % pour les écarts horizontaux ~= 1/2 em
-
-% <2.1. Format> --------------------------------------------------------------
-
-% Format des pages (pour papier a4 ou letter)
-% Rappel : A4 = 210mm x 297 mm USLETTER = 8.5in x 11in = 215.9mm * 279.4mm
-% soit USLETTER = 6mm de plus dans la marge droite et 17.6mm de moins dans le bas de page
-\setlength{\textwidth}{120mm}  % 120mm = 341pt
-\setlength{\textheight}{190mm} % 190mm = 540pt (45 lignes * 12pt) = 189.78mm
-
-% <2.1.1 Marges et Format> ---------------------------------------------------
-
-%--- Dimensions horizontales
-
-\setlength{\hoffset}{-1in}            % à ajuster par dvips selon imprimante
-\setlength{\oddsidemargin}{45mm}      % pour que la marge de gauche
-\setlength{\evensidemargin}{45mm}     % soit exactement de 45mm
-\setlength{\marginparsep}{0mm}     % soit exactement de 45mm
-  % Largeur de la marge de droite pour papier:
-  %  - A4     : largeur papier = 210 mm => 210 - (120+45)  = 45  mm
-  %  - Letter : 8.5in = 8.5*25.4mm = 215.9mm => 215.9-165  = 50.9mm
-
-%--- Dimensions verticales
-
-\setlength{\voffset}{-1in}    % à ajuster selon imprimante pour que la marge
-                              % au dessus du texte (page 2) soit exactement
-                              % de 53.5mm
-
-\setlength{\topmargin}{44mm}   % distance bord sup feuille au haut de l'en-tête
-\settoheight{\headheight}{2mm} %
-\setlength{\headsep}{7.5mm}    %
-                               % 44mm + 2mm + 7.5mm = 53.5mm (marge au dessus du texte)
-
-%--- Tracé du cadre indiquant les bords du papier une fois l'article massicoté
-% au format des revues/actes Hermès (160mm x 240mm)
-
-% Ce tracé est obtenu par l'option \documentclass[cropmarks]{article-hermes}
-% (par défaut pas de tracé) et est commandé à partir de l'en-tête (picture).
-% L'avantage de ce système est de ne pas influencer la mise en page de Latex
-
-%-- Commandes utilisateur
-\newcommand{\CropMarksOn}{\renewcommand{\@DrawPageFrame}{\@PageFrame}}
-\newcommand{\CropMarksOff}{\renewcommand{\@DrawPageFrame}{}}
-
-%-- Primitives internes
-\newcommand{\@DrawPageFrame}{}
-\newcommand{\@PageFrame}{%
-   \thinlines%
-   \setlength{\unitlength}{1mm}%
-   \begin{picture}(0,0)%
-   % Les mesures sont faites à partir du point de référence qui est posé à gauche
-   % de l'en-tête (7.5mm au dessus du texte)
-   % Les dimensions des pages massicotées sont de 160 x 240 mm
-   % Donc, en format A4, les bandes supprimées au dessus sont de (297-240)/2=28.5mm
-   % => distance du coin supérieur gauche au dessus du point de référence:
-   % 53.5mm -7.5mm =46mm ; 46mm-28.5mm = 17.5mm
-   \put(-20,17.5){\line(1,0){160}}    % 17.5mm = distance entre ligne en-tête
-   \put(-20,17.5){\line(0,-1){240}}   % et bord supérieur du papier massicoté
-   \put(140,17.5){\line(0,-1){240}}   % dont les dimensions sont 160mm x 240mm
-   \put(-20,-222.5){\line(1,0){160}}  % 240-17.5 = 222.5
-   \put(0,-7.5){\line(1,0){120}}      % marque du bord supérieur du texte
-   \put(0,-197.5){\line(1,0){120}}    % 7.5+190 = 197.5mm: bas du texte
-   \put(0,-7.7){\line(0,-1){190}}     % côté gauche du texte
-   \put(120,-7.5){\line(0,-1){190}}   % côté droit du texte
-   \end{picture}%
-}%
-
-\ifcropmarks
-   \CropMarksOn
-\else
-   \CropMarksOff
-\fi
-
-\flushbottom
-
-%--- Définition du style de la première page
-
-% hauteur du texte maximum: 170mm
-% pied de page pour la signature, à 194mm sous le point de référence,
-
-\newcommand{\@FonteEntete}{\normalfont\small}
-
-\newcommand{\ps at firstpage}{%
-   % Une première page est normalement impaire, mais on définit les deux...
-   \renewcommand{\@oddhead}{\parbox{\textwidth}{\@DrawPageFrame}}%
-   \renewcommand{\@evenhead}{\parbox{\textwidth}{\@DrawPageFrame}}%
-   % Le pied de page ne sert normnalement que pour la signature de l'article
-   % dont la ligne de base est à 44mm du bord inférieur de la feuille A4
-    \setlength{\footskip}{10mm} % dist. bas du texte au bas du pied de page.
-                                % Ainsi le haut de l'entete de page et le bas
-                                % du pied de page sont tous les deux à 44mm du
-                                % bord de feuille A4 (et 26.4 mm en USLetter)
-   \ifemptyheaders
-      \renewcommand{\@oddfoot}{}%
-      \renewcommand{\@evenfoot}{}%
-   \else
-      \renewcommand{\@oddfoot}{\parbox{\textwidth}{\raggedright\VAR at SignatureArticle}}%
-      \renewcommand{\@evenfoot}{\parbox{\textwidth}{\raggedright\VAR at SignatureArticle}}%
-   \fi
-}% firstpage style
-
-%--- Définition du style des autres pages
-
-\newcommand{\ps at otherpage}{%
-   \ifemptyheaders
-      % Au cas où il y aurait un pied de page, celui doit sortir du cadre
-      % massicoté, lequel est à 25mm sous le bas du texte. Donc 25+15mm=40mm
-      \setlength{\footskip}{40mm} % réduire à 33mm pour USLETTER
-      \renewcommand{\@evenhead}{\parbox{\textwidth}{\@DrawPageFrame}}%
-      \renewcommand{\@oddhead}{\parbox{\textwidth}{\@DrawPageFrame}}%
-      \renewcommand{\@evenfoot}{\@FonteEntete\thepage \hspace*{\fill}}%
-      \renewcommand{\@oddfoot}{\hspace*{\fill}\@FonteEntete \thepage}%
-   \else
-      \renewcommand{\@evenhead}{%
-         \parbox{\textwidth}{%
-             \@DrawPageFrame\@FonteEntete\thepage\hspace{\@ESPage}\VAR at EnTeteG}}%
-      \renewcommand{\@oddhead}{%
-         \parbox{\textwidth}{%
-             \@DrawPageFrame\hspace*{\fill}\@FonteEntete\VAR at EnTeteD%
-             \hspace{\@ESPage}\thepage}}%
-      \renewcommand{\@evenfoot}{}%
-      \renewcommand{\@oddfoot}{}%
-   \fi
-}% otherpage style
-
-\pagestyle{otherpage}% doit être placé après les définitions précédentes
-
-% <2.1.2. En-tête> -----------------------------------------------------------
-
-\newcommand{\FonteEnTete}{\normalfont\fontsize{9}{12}\selectfont}% Police des en-têtes
-\newcommand{\VAR at EnTeteG}{%
-  \FonteEnTete%
-  Nom de la revue ou conférence (à définir par \texttt{\@BS submitted ou \@BS toappear})}
-\newcommand{\VAR at EnTeteD}{%
-  \FonteEnTete%
-  Titre abrégé de l'article (à définir par \texttt{\@BS title[titre abrégé]\{titre\}})}
-
-% <2.2 Titres et sous-titres> -------------------------------------------------
-
-% <2.2.1 Première page de l'article> ------------------------------------------
-
-\newcommand{\nofirstpagebreak}{\firstbreakfalse}
-\newcommand{\firstpagebreak}{\firstbreaktrue}
-
-\newcommand{\maketitlepage}{%
-%   \@redefinitions%
-   \setlength{\parskip}{0pt}%
-   \setlength{\parindent}{0pt}%
-   \thispagestyle{firstpage}%
-   {% Block 1\iere page
-   \par{\FonteRubrique\hfill \VAR at rubrique \hfill}
-   \par\vspace*{2pt}\@filet%interlignage=épaisseur du filet
-   \par\vspace*{12pt}%
-   \@Titre{\VAR at title}% + vspace de 2 lignes de 12 pts
-   \@SousTitre{\VAR at subtitle}% + vspace de 2 lignes de 12 pts
-   \@Auteurs{\VAR at author}%
-   \par\vspace*{1\interligne}% espace avant Adresse
-   \@Adresse{\VAR at address}%
-   \par\vspace*{1\interligne}% espace entre adresse et filet
-   \par\@filet%
-   \par\vspace*{4pt}% espace entre filet et le bloc <Résumé Abstract Motscles Keywords>
-   \iffrenchlang
-      \@Resume{\VAR at resume}%
-      \par\vspace*{3pt}%
-      \@Abstract{\VAR at abstract}%
-      \par\vspace*{3pt}%
-      \@MotsCles{\VAR at motscles}%
-      \par\vspace*{3pt}%
-      \@KeyWords{\VAR at keywords}%
-    \else
-      \@Abstract{\VAR at abstract}%
-      \par\vspace*{3pt}%
-      \@Resume{\VAR at resume}%
-      \par\vspace*{3pt}%
-      \@KeyWords{\VAR at keywords}%
-      \par\vspace*{3pt}%
-      \@MotsCles{\VAR at motscles}%
-   \fi
-   \FonteTexte%
-   \par\vspace*{4pt}%
-   \@filet%
-   \setcounter{section}{0}%
-   \setcounter{footnote}{0}%
-   }%Block 1\iere page
-   \iffirstbreak
-      \par\vspace*{\stretch{3}}\newpage%
-   \else
-      \par\vspace*{1\interligne}
-   \fi
-   % Pour éviter les interférences avec d'autres packages, il vaut mieux définir
-   % les constantes suivantes après \begin{document}, par exemple ici.
-   \setlength{\parindent}{5mm} % renfoncement (ou retrait)
-   \setlength{\parskip}{6pt}   % conforme à la version du 8/9/99 des consignes
-}%\maketitlepage
-
-\renewcommand{\maketitle}{\maketitlepage}
-
-\newcommand{\FonteTitreEdito}{% 18 points interligné 21.6pt (120% du corps)
-   \rmfamily\upshape\fontsize{18}{21.6}\selectfont}
-\newcommand{\@Coordonnateurs}{Les Coordonnateurs}
-
-\newenvironment{editorial}[5]%
-%   #1 rev
-%   #2 Volume
-%   #3 Numero
-%   #4 Année
-%   #5 Prénom \textsc{Nom} des rédacteurs de l'éditorial, séparés par des \\.
-%   Exemple
-%   \begin{editorial}{L'Objet}{6}{1}{2000}{Pascal \textsc{ANDRE}\\Roger \textsc{ROUSSEAU}}
-%    texte de l'edito si possible sur deux pages au plus
-%   \end{editorial}
-{%BEGIN
-   \journal{#1}{#2}{#3}{#4}{-}{-}%
-   \renewcommand{\@Coordonnateurs}{#5}%
-   \thispagestyle{firstpage}%
-   \renewcommand{\VAR at SignatureArticle}{}%
-   \@shorttitle{Editorial}%
-   \setlength{\parindent}{5mm} % renfoncement (ou retrait)
-   \setlength{\parskip}{6pt}   % conforme à la version du 8/9/99 des consignes
-   \par\vspace*{2pt}\@filet    %interlignage=épaisseur du filet
-   \par\vspace*{20pt}%
-   \begin{center}\FonteTitreEdito Editorial \end{center}%
-   \par\vspace*{1\interligne}%
-   \FonteTexte\itshape%
-}{%END
-   \FonteTexte\upshape%
-   \begin{flushright}
-   \@Coordonnateurs
-   \end{flushright}
-   \newpage%
-}
-
-% <2.2.1.1. Titre et sous-titre> ------------------------------------------------------
-
-\renewcommand{\title}[2][]{
-%usage: \title[shorttitle]{title}
-   \ifthenelse{\equal{#1}{}}{%Y
-      \@shorttitle{#2}%
-   }{%
-      \@shorttitle{#1}%
-   }
-   \renewcommand{\VAR at title}{#2}
-}
-
-%--- titre Courant (ou abrégé) pour les en-têtes de pages impaires
-
-\newcommand{\VAR at TitreAbrege}{Titre abrégé : %
-             à définir par \texttt{\@backslashchar shorttitle\{...\}}}
-\newsavebox{\@shtitle}
-\newcommand{\@shorttitle}[1]{%
-   % #1: Titre abrégé de l'article (moins de 40 caractères, pour en-tête)
-   % test de la largeur < 55mm
-   \sbox{\@shtitle}{\@FonteEntete #1}%
-    \ifthenelse{\lengthtest{\wd\@shtitle > 55mm}}{%
-     \@latex at error{short title defined by \@backslashchar title[short]{long} too long:
-       (55mm max)}\@eha
-    }{}
-   \renewcommand{\VAR at TitreAbrege}{#1}
-}
-
-\def\subtitle#1{\renewcommand{\VAR at subtitle}{#1}}
-\def\author#1{\renewcommand{\VAR at author}{#1}}
-\def\address#1{\renewcommand{\VAR at address}{#1}}
-\def\abstract#1{\renewcommand{\VAR at abstract}{#1}}
-\def\motscles#1{\renewcommand{\VAR at motscles}{#1}}
-\def\keywords#1{\renewcommand{\VAR at keywords}{#1}}
-\def\resume#1{\renewcommand{\VAR at resume}{#1}}
-
-%-- Primitives internes
-\def\@BS{\symbol{"5C}}
-\def\@ARGS{\{\ldots\}}
-\def\@ARG#1{\{\normalfont\textit{#1}\}}
-\newcommand{\@filet}{\rule{\linewidth}{0.20pt}}
-
-%--- Signature et en-têtes de l'article :
-%    peuvent être définis par \submitted, \journal ou \proceedings
-
-\newcommand{\FonteSignature}{\normalfont\fontsize{9pt}{10.8pt}\selectfont}
-\newcommand{\FonteRubrique}{%
-%   \rmfamily\mdseries\scshape\fontsize{14pt}{16.8pt}\selectfont}
-   \rmfamily\mdseries\fontsize{12pt}{14.4pt}\selectfont}
-
-\newcommand{\VAR at rubrique}{}
-\newcommand{\VAR at SignatureArticle}{}
-\newcommand{\VAR at NomRevue}{}
-\newcommand{\VAR at VolumeRevue}{}
-\newcommand{\VAR at NumeroRevue}{}
-\newcommand{\VAR at AnneeRevue}{}
-\newlength{\@ESPage}\setlength{\@ESPage}{4mm}% 5 espaces blancs
-\newcommand{\VAR at Pages}{}
-\newcommand{\VAR at NumeroSoumission}{}
-\newcommand{\VAR at NomActes}{}
-\newcommand{\VAR at TypeArticle}{revue}
-
-%Ancienne commande
-\iffalse \newcommand{\journal}[7][]{% pour article de revue
-   % #1 [rubrique]
-   % #2 {revue}
-   % #3 {vol}
-   % #4 {num}
-   % #5 {annee}
-   % #6 {1ere p.}
-   % #7 {dern. page}
-   \renewcommand{\VAR at TypeArticle}{revue}%
-   \renewcommand{\VAR at rubrique}{\uppercase{#1}}
-   \renewcommand{\VAR at NomRevue}{#2}
-   \renewcommand{\VAR at VolumeRevue}{#3}
-   \renewcommand{\VAR at NumeroRevue}{#4}
-   \renewcommand{\VAR at AnneeRevue}{#5}
-   \renewcommand{\VAR at Pages}{#6}
-   \ifthenelse{\equal{\VAR at Pages}{-}}{%1re page inconnue
-      \setcounter{page}{1}
-      % on augmente l'espace après numéro page pour permettre à l'éditeur de
-      % surcharger le bon numéro
-      \setlength{\@ESPage}{6mm}
-      \renewcommand{\VAR at Pages}{}
-   }{%1ere page donnée
-      \setcounter{page}{#6}
-      \renewcommand{\VAR at Pages}{, pages #6\ \`a #7}
-   }
-   \ifthenelse{\equal{\VAR at NumeroRevue}{\LMO}}{%signature spéciale pour LMO
-        \renewcommand{\VAR at SignatureArticle}{\FonteSignature %
-            \VAR at NomRevue\ -- \VAR at VolumeRevue/\VAR at AnneeRevue. %
-            \VAR at NumeroRevue'\VAR at AnneeRevue\VAR at Pages}
-        \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomRevue\ -- %
-            \VAR at VolumeRevue/\VAR at AnneeRevue. \VAR at NumeroRevue'\VAR at AnneeRevue}
-   }{\ifthenelse{\equal{\VAR at NomRevue}{\LOBJET}}{%
-     % spécial pour la revue L'objet : sans mot Volume, sans numéro
-      \renewcommand{\VAR at SignatureArticle}{\FonteSignature%
-          \VAR at NomRevue\ -- \VAR at VolumeRevue/\VAR at AnneeRevue\VAR at Pages}
-      \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomRevue\ -- %
-          \VAR at VolumeRevue/\VAR at AnneeRevue.}
-   }{% Autres revues
-     \ifthenelse{\equal{\VAR at NumeroRevue}{}}{%pas de numéro revue
-        \renewcommand{\VAR at SignatureArticle}{\FonteSignature %
-            \VAR at NomRevue -- \VAR at VolumeRevue/\VAR at AnneeRevue\VAR at Pages}
-        \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomRevue. %
-            Volume \VAR at VolumeRevue/\VAR at AnneeRevue}
-    }{% numéro de revue présent, présentation normale, style TSI :
-        \renewcommand{\VAR at SignatureArticle}{\FonteSignature %
-            \VAR at NomRevue. Volume \VAR at VolumeRevue\ -- n$^\circ$ \VAR at NumeroRevue/\VAR at AnneeRevue\VAR at Pages}
-        \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomRevue. %
-            Volume \VAR at VolumeRevue\ -- n$^\circ$ \VAR at NumeroRevue/\VAR at AnneeRevue}
-   }}}
-   \renewcommand{\VAR at EnTeteD}{\FonteEnTete\VAR at TitreAbrege}
-}%\journal
- #\fi
-
-\newcommand{\journal}[3]{% pour article de revue
-   % #1 {revue. Volume 19 -- n° 1/2005,}
-   % #2 {1ere p.}
-   % #3 {dern. page}
-   \renewcommand{\VAR at TypeArticle}{revue}%
-%   \renewcommand{\VAR at rubrique}{\uppercase{#1}}
-   \renewcommand{\VAR at NomRevue}{#1}
-%   \renewcommand{\VAR at VolumeRevue}{#3}
-%   \renewcommand{\VAR at NumeroRevue}{#4}
-%   \renewcommand{\VAR at AnneeRevue}{#5}
-   \renewcommand{\VAR at Pages}{#2}
-   \ifthenelse{\equal{\VAR at Pages}{-}}{%1re page inconnue
-      \setcounter{page}{1}
-      % on augmente l'espace après numéro page pour permettre à l'éditeur de
-      % surcharger le bon numéro
-      \setlength{\@ESPage}{6mm}
-      \renewcommand{\VAR at Pages}{}
-   }{%1ere page donnée
-      \setcounter{page}{#2}
-      \renewcommand{\VAR at Pages}{, pages #2\ \`a #3}
-   }
-      \renewcommand{\VAR at SignatureArticle}{\FonteSignature\VAR at NomRevue\VAR at Pages}
-      \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomRevue}
-      \renewcommand{\VAR at EnTeteD}{\FonteEnTete\VAR at TitreAbrege}
-}%\journal
-
-\newcommand{\proceedings}[2]{% pour article d'actes de conférence
-% usage: {#1} = nom de la conférence
-%        {#2} = numéro de première page
-   \renewcommand{\VAR at TypeArticle}{conference}%
-   \renewcommand{\VAR at NomActes}{#1}%
-   \renewcommand{\VAR at Pages}{#2}%
-   \ifthenelse{\equal{\VAR at Pages}{-}}{%1re page inconnue
-      \setcounter{page}{1}
-      % on augmente l'espace après numéro page pour permettre à l'éditeur de
-      % surcharger le bon numéro
-      \setlength{\@ESPage}{6mm}
-   }{%1ere page donnée
-      \setcounter{page}{#2}
-   }
-   \renewcommand{\VAR at SignatureArticle}{}
-   \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NomActes}
-   \renewcommand{\VAR at EnTeteD}{\FonteEnTete\VAR at TitreAbrege}
-}
-
-\newcommand{\submitted}[3][\today]{% Commun Actes ou Revue
-% usage: [#1] = date (par défaut \today)
-%        {#2} = nom revue ou conférence
-%        {#3} = numéro de soumission (le plus souvent de 1 à 3).
-   \renewcommand{\VAR at NomRevue}{#2}%
-   \renewcommand{\VAR at NumeroSoumission}{%
-      \ifthenelse{\equal{#3}{1}}{1\iere~}{#3\ieme~}}%
-   \renewcommand{\VAR at SignatureArticle}{%
-     \FonteSignature\raggedright
-        \VAR at NumeroSoumission soumission \`a \textit{\VAR at NomRevue}, le #1
-   }
-   \renewcommand{\VAR at EnTeteG}{\FonteEnTete\VAR at NumeroSoumission soumission \`a
-                               \textit{\VAR at NomRevue}}
-   \renewcommand{\VAR at EnTeteD}{\FonteEnTete\VAR at TitreAbrege}
-}
-
-%%% Noms prédéfinis de revues Hermes Science Publications
-
-\newcommand{\ACS}{Advances in complex systems}
-\newcommand{\AT}{Annales des télécommunications}
-\newcommand{\APII}{RS - JESA }
-\newcommand{\CP}{Calculateurs parallèles}
-\newcommand{\CFAOIG}{CFAO et informatique graphique}
-\newcommand{\CMA}{Composites et des matériaux avancés}
-\newcommand{\DN}{Document numérique}
-\newcommand{\DTA}{Droit des technologies avancées}
-\newcommand{\HSS}{Health and System Science}
-\newcommand{\HYPER}{Hypertextes et hypermédias}
-\newcommand{\IJFP}{International Journal of Forming Processes}
-\newcommand{\JANCL}{Journal of Applied Non-Classical Logics}
-\newcommand{\JCS}{Journal of Complex Systems}
-\newcommand{\JDS}{Journal of Decision Systems}
-\newcommand{\JESA}{RS - JESA}
-\newcommand{\LOBJET}{L'objet}
-\newcommand{\LMO}{LMO}
-\newcommand{\NISJ}{Networking and Information Systems Journal}
-\newcommand{\RESEAUX}{Réseaux}
-\newcommand{\RIA}{RSTI - RIA}
-\newcommand{\RIGE}{Revue internationale de Génie Electrique}
-\newcommand{\RIG}{Revue internationale de géomatique}
-\newcommand{\REEF}{Revue européenne des éléments finis}
-\newcommand{\RFGC}{Revue française de génie civil}
-\newcommand{\STE}{Sciences et techniques éducatives}
-\newcommand{\TSI}{Technique et science informatiques}
-
-%--- Titre de l'article
-
-\newcommand{\VAR at title}{Titre de l'article%
-   {\par\renewcommand{\baselinestretch}{0.66}\par\FonteTexte%@@
-    \textit{A définir par la commande
-    \texttt{\upshape\@BS title[} titre abrégé \texttt{\upshape]\{} titre complet \texttt{\upshape\}}
-    sur une ou deux lignes coupées par \@BS\@BS.\\
-    Le sous-titre éventuel est défini sur une ou deux lignes par la commande\\
-    \texttt{\upshape\@BS subtitle\{} sous-titre complet \texttt{\upshape\}}.}}}
-
-\newcommand{\FonteTitre}{% 18 points interligné 21.6pt (120% du corps)
-   \rmfamily\bfseries\upshape\fontsize{18}{21.6}\selectfont}
-
-\newcommand{\@Titre}[1]{{%
-   % #1: Titre complet de l'article (peut incorporer des `\\')
-   \setlength{\parskip}{0pt}\flushleft%
-   \FonteTitre #1%
-   \par\vspace*{20.4pt}% 2 lignes = 24 pts - (21.6-18)
-}}
-
-%--- Sous-Titre de l'article
-
-\newcommand{\VAR at subtitle}{}
-
-\newcommand{\FonteSousTitre}{% 14pt interligné 16.8pt (120% du corps)
-   \rmfamily\bfseries\upshape\fontsize{14}{16.8}\selectfont}
-
-\newcommand{\@SousTitre}[1]{{%
-   % #1: Sous-titre de l'article dans une police plus petite (peut incorporer des `\\')
-   \setlength{\parskip}{0pt}%
-   \FonteSousTitre #1%
-   \par\vspace*{21.2pt}% 2 lignes = 24 pts - (16.8-14)
-}}
-
-%--- Auteurs
-
-\newcommand{\FonteAuteur}{% 12pt interligné 14.4pt (120% du corps)
-    \rmfamily\bfseries\upshape\fontsize{12}{14.4}\selectfont}
-
-\newcommand{\VAR at author}{%
-   Auteur(s)\\
-   {\FonteTexte\textit{A définir par la commande \texttt{\upshape\@BS author\@ARGS}.
-    Dans le cas de plusieurs auteurs, séparer chaque auteur par
-    \texttt{\upshape\@BS andauthor}.
-    Dans le cas d'adresses différentes des auteurs, indexer chaque auteur avec des
-   astérisques comme \fup{*} ou \fup{**} obtenues par
-  \texttt{\upshape\@BS fup\{*\}} ou \texttt{\upshape\@BS fup\{**\}}.
-}}}
-
-\newcommand{\@Auteurs}[1]{{%
-    \FonteAuteur #1%
-}}
-
-\newcommand{\andauthor}{%
-   % Tiret long maigre de séparation entre deux noms d'auteurs
-   {\FonteTexte\mdseries --- }}
-
-%--- Adresse(s) de(s) auteur(s)
-
-\newcommand{\FonteAdresse}{\rmfamily\mdseries\itshape\fontsize{10}{12}\selectfont}
-
-\newcommand{\VAR at address}{Adresse :\\
-   {\FonteTexte\textit A définir sur plusieurs lignes par la commande
-    \texttt{\upshape\@BS address\@ARGS}.\\
-    Email sur la dernière ligne.\\
-    Dans le cas d'adresses différentes des auteurs, indexer chaque auteur avec des
-   astérisques comme \fup{*} ou \fup{**} obtenues par
-  \texttt{\upshape\@BS fup\{*\}} ou \texttt{\upshape\@BS fup\{**\}}.\\
-   Voir aussi <<~Consignes aux auteurs~>>
-}}
-
-\newcommand{\@Adresse}[1]{\FonteAdresse #1}
-
-%--- Résumé et Abstract
-
-\newcommand{\FonteResume}{\rmfamily\mdseries\itshape\fontsize{9}{11}\selectfont}
-
-% Hermes demande des petites capitales italiques postscript
-% Comme cette police n'existe pas sous Unix,
-% on utilise l'italique de Times en utilisant des capitales réduites de 2 points.
-% Si un utilisateur dispose d'une police en petites capitales italiques adaptée
-% à Times, il peut facilement faire l'adaptation.
-
-\newcommand{\FonteTitreResume}{%
-   \rmfamily\mdseries\itshape\fontsize{7}{11}\selectfont}
-
-\newcommand{\VAR at resume}{%
-   {\FonteTexte\textit{A définir par la commande \texttt{\upshape\@BS resume\@ARGS}}}}
-
-\newcommand{\@TitreResume}[2]{\FonteTitreResume \noindent #1#2\FonteResume}
-
-\newcommand{\@Resume}[1]{{\french\@TitreResume{RÉSUMÉ}{.} #1}}
-
-%--- Abstract
-
-\newcommand{\VAR at abstract}{%
-   {\FonteTexte\textit{A définir par la commande \texttt{\upshape\@BS abstract\@ARGS}}}}
-
-\newcommand{\@Abstract}[1]{{\english\@TitreResume{ABSTRACT}{.} #1}}
-
-%--- Mots-clés
-
-\newcommand{\VAR at motscles}{%
-   {\FonteTexte\textit{A définir par la commande \texttt{\upshape\@BS motscles\@ARGS}}}}
-
-\newcommand{\@MotsCles}[1]{{\french\@TitreResume{MOTS-CLÉS}{~:} #1}}
-
-%--- Keyswords
-
-\newcommand{\VAR at keywords}{%
-   {\FonteTexte\textit{A définir par la commande \texttt{\upshape\@BS keywords\@ARGS}}}}
-
-\newcommand{\@KeyWords}[1]{{\english\@TitreResume{KEYWORDS}{:} #1}}
-
-% <2.2.2 Titre des paragraphes ou titre d'« inter » (sections)>----------------
-
-% cf \Latex Companion 2.3 pp 18-31
-% Les définitions suivantes visent à donner la police particulière
-% exigée par Hermes uniquement dans les titres de section et non pas dans les
-% référence. Ainsi, 2.2. apparaîtra en gras droit dans le titre et en
-% police normale dans les références par \label ... \ref.
-% Si l'on veut la même présentation dans les références de sections,
-% il faut tout simplement incorporer la définition voulue dans celle
-% de \thesection ... \thesubsection
-
-% On numérote jusqu'à la section de niveau 4
-\setcounter{secnumdepth}{4}
-
-% Pour les titres de section sur plusieurs lignes, Hermès ne veut pas d'indentation
-\def\@hangfrom#1{%
-       \setbox\@tempboxa\hbox{{#1}}%
-%       \hangindent \wd\@tempboxa\noindent\box\@tempboxa %% ORIGINAL de latex.ltx
-       \hangindent \wd 0 \noindent\box\@tempboxa %% MODIF
-}
-
-% Attention : les dimensions des interlignes before et after skip
-% doivent tenir compte du parskip qui est de 6pts et qui s'ajoute aux valeurs
-% indiquées
-
-%--- Niveau 1: section : gras,  beforeskip = 2 lignes, afterskip = 1 ligne
-
-\newcommand{\FonteSectionI}{\normalsize\normalfont\bfseries\raggedright}%
-
-\renewcommand{\thesection}{\arabic{section}}%
-% Il faut enlever le parskip de 6pts aux valeurs des skips (2 lignes=24-6=18pts...)
-\renewcommand{\section}{%
-   \renewcommand{\@seccntformat}[1]{\thesection.\hspace{0.5em}}%
-   \@startsection{section}% % nom de l'inter
-   {1}%                     % niveau de l'inter
-   {0pt}%                   % l'indentation du titre et du texte suivant
-   {18pt plus 2pt minus 2pt}% beforeskip
-   {6pt plus 1pt minus 1 pt}% afterskip
-   {\FonteSectionI}%        % style
-}
-
-%--- Niveau 2: sous-section : gras+ital, beforeskip = 2 lignes, afterskip = 1 ligne
-
-\newcommand{\FonteSectionII}{\normalsize\normalfont\bfseries\itshape\raggedright}%
-
-\renewcommand{\thesubsection}{\thesection.\arabic{subsection}}%
-\renewcommand{\subsection}{%
-  \renewcommand{\@seccntformat}[1]%
-               {{\normalsize\normalfont\bfseries\thesubsection.\hspace{0.5em}}}%
-  \@startsection%
-   {subsection}%            % nom de l'inter
-   {2}%                     % niveau de l'inter
-   {0pt}%                   % l'indentation du titre et du texte suivant
-   {18pt plus 2 pt minus 1pt}% beforeskip
-   {6pt plus 1pt minus 1pt}  %afterskip
-   {\FonteSectionII}}%      % style
-
-%--- Niveau 3: sous-sous-section : italique, beforeskip=1 lignes, afterskip=1 ligne
-
-\newcommand{\FonteSectionIII}{\normalsize\normalfont\itshape\raggedright}%
-
-\renewcommand{\thesubsubsection}{\thesubsection.\arabic{subsubsection}}%
-\renewcommand{\subsubsection}{%
-  \renewcommand{\@seccntformat}[1]{%
-               {\normalsize\normalfont\thesubsubsection.\hspace{0.5em}}}%
-  \@startsection%
-   {subsubsection}%         % nom de l'inter
-   {3}%                     % niveau de l'inter
-   {0mm}%                   % l'indentation du titre et du texte suivant
-   {6pt plus 1pt minus 1pt} % beforeskip
-   {0.1pt}%                 % afterskip (0pt supprimerait le passage à la ligne)
-   {\FonteSectionIII}}%     % style
-
-
-%--- Niveau 4: paragraphes: police normale, beforeskip=1 ligne, afterskip=1 ligne
-
-\newcommand{\FonteSectionIV}{\normalsize\normalfont\raggedright}%
-
-\renewcommand{\theparagraph}{\thesubsubsection.\arabic{paragraph}}%
-\renewcommand{\paragraph}{%
-  \renewcommand{\@seccntformat}[1]{%
-               {\normalsize\normalfont\theparagraph.\hspace{0.5em}}}%
-  \@startsection%
-   {paragraph}%             % nom de l'inter
-   {4}%                     % niveau de l'inter
-   {0mm}%                   % l'indentation du titre et du texte suivant
-   {6pt plus 1pt minus 1 pt}% beforeskip
-   {0.1pt}%                 % afterskip  (0pt supprimerait le passage à la ligne)
-   {\FonteSectionIV}}%      % style
-
-% <2.3 Alinéas>----------------------------------------------------------------
-
-% Disable single lines at the start of a paragraph
-\clubpenalty = 10000
-% Disable single lines at the end of a paragraph
- \widowpenalty = 10000
- \displaywidowpenalty = 10000
- \sloppy
- \raggedbottom
-
-% <2.4 Notes de bas de page> --------------------------------------------------
-
-% corps 9pt/11pt, numérotation décimale
-% séparées du texte par 1 ligne blanche
-% filet maigre de 2.5 cm
-
-\newcommand{\FonteNoteBasPage}{\fontsize{9}{10.8}\selectfont\normalfont}
-\renewcommand{\footnotesize}{\FonteNoteBasPage}
-\addtolength{\skip\footins}{6pt} % = 12pt = 1 ligne avant le filet
-
-\renewcommand{\footnoterule}{%
-% Redéfinition du filet de notes de bas de page.
-% Doit avoit une hauteur totale virtuelle nulle (cf Latex Companion p. 72)
-\par\vspace*{-12.3pt}% Hauteur totale => donnera une hauteur virtuelle nulle
-\noindent\rule{2.5cm}{0.25pt}\vspace*{6pt} % => hauteur totale 9.3pt
-                                          % Hauteur espace sous filet = 6pt
-}
-
-\setlength{\footnotesep}{3pt} % Espace vertical avant chaque note (strut)
-
-\newcommand{\@Myfnmark}{% Redéfinit la marque de footnote comme un indice
-      % french.sty redéfinit bêtement \@makefntext => donc j'utilise une autre macro.
-      \mbox{$\arabic{footnote}$. }%
-}
-
-\renewcommand{\@makefntext}[1]{%
-      \noindent\@Myfnmark#1%
-}%
-
-\def\@thefnmark{\normalsize\arabic{footnote}}
-
-% <2.5 Objets flottants: figures, tableaux et programmes> -------------------------------
-
-% Correction du bug du style french qui redéfinit le corps des légendes par \em
-% et non \itshape (gênant si l'utilisateur redéfinit \em).
-
-% Le plus fiable est de redéfinir \@caption de latex.ltx qui est l'unique appel
-% à \@makecaption (En espérant que \@caption ne sera pas redéfini dans latex).
-\long\def\@caption#1[#2]#3{{\setlength{\parskip}{0pt}\par\addcontentsline{\csname
-   ext@#1\endcsname}{#1}{\protect\numberline{\csname
-   the#1\endcsname}{\ignorespaces #2}}\begingroup
-     \@parboxrestore
-     \normalsize
-     \@Mymakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
-   \endgroup}}
-
-\newcommand{\FonteTitreLegende}{\normalsize\normalfont\itshape}
-\newcommand{\FonteCaptionName}{\normalsize\normalfont\bfseries}
-
-\newcommand{\@Mymakecaption}[2]{{%
-    % #1 est e.g. Figure 1 ou Tableau 1, #2 est la légende de la figure
-   \setlength{\parskip}{0pt}%
-   \par\vspace{1\interligne plus 2pt minus 1pt}
-   \noindent\parbox[t]{\linewidth}{\FonteCaptionName #1.\hspace{3pt}%
-                       \FonteTitreLegende #2}
-   %\vspace{1\interligne} % commandé par les parametres de figures flottant
-}}
-
-\newcommand{\topfigrule}{}               % cmde de tracé 1 règle float haut et texte
-\newcommand{\botfigrule}{}               % cmde de tracé 1 règle float bas et texte
-
-% Ajustement des paramètres des figures flottantes
-% L'utilisateur PEUT, voire DOIT AJUSTER ces valeurs s'il rencontre
-% des problèmes de placements ! cf Latex companion
-
-\setcounter{topnumber}{2}              % déf. 2    % nb max de fig. en haut
-\setcounter{bottomnumber}{1}           % déf. 1    % nb max de fig. en bas
-\setcounter{totalnumber}{3}            % déf. 3    % nb max de fig. par page
-\renewcommand{\topfraction}{1}         % déf. 0.7  % fraction max de remplissage de la
-                                                   % page par la (les) figure(s) en haut
-\renewcommand{\bottomfraction}{1}      % déf. 0.3  % fraction max de remplissage de la
-                                                   % page par la figure en bas
-                                                   % en baspar fig
-\renewcommand{\textfraction}{0}        % déf. 0.2  % fract. min remplissage texte / page
-\renewcommand{\floatpagefraction}{0.8} % déf. 0.5  % remplissage floatpage
-
-% Dimensions des espaces verticaux élastiques autour des figures :
-% jouent un rôle important pour le placement, on a intérêt à augmenter l'élasticité
-
-\setlength{\floatsep}{24pt plus 2pt minus 4pt}  % espace supplémentaire entre 2 figures
-                           % par défaut: \setlength{\floatsep}{12pt plus 2pt minus 2pt}
-\setlength{\textfloatsep}{24pt plus 2pt minus 8pt}% espace entre texte et figure
-                                                   % pour des figures en haut ou en bas
-                        % par défaut: \setlength{\textfloatsep}{20pt plus 2pt minus 4pt}
-\setlength{\intextsep}{12pt plus 2pt minus 4pt} % espace supplémentaire au dessus et
-                        % en dessous d'une figure [h], entre figure et texte.
-                        % par défaut: \setlength{\intextsep}{\floatsep}
-
-%%% 2.6 Formules
-
-% En mode standard, les modes equation, eqnarray et eqnarray*
-% fournissent bien une ligne blanche au dessus et au dessous et la numerotation
-% collée sur la marge de droite.
-% La seule adaptation est la numérotation [n] au lieu de (n).
-\renewcommand{\@eqnnum}{\reset at font\rmfamily [\theequation]}
-\renewcommand{\tagform@}[1]{\reset at font\rmfamily [#1]} % pour align
-
-% Définition des espaces avec l'option fleqn :
-% L'option fleqn (\documentclass[fleqn]...) place les formules indentées à
-% gauche. Par défaut, les formules sont centrées.
-
-\iffleqn
-    %\setlength{\topsep}{1\baselineskip}  % espace supplém. au dessus/dessous des formules.
-    \setlength{\mathindent}{10mm}        % indentation des formules
-\fi
-
-% Définition des espaces sans l'option fleqn :
-
-\setlength{\jot}{0.5\baselineskip}      % espace entre les lignes de eqnarray
-\setlength{\abovedisplayskip}{0mm}      % espace supplémentaire au dessus des longues formules
-\setlength{\abovedisplayshortskip}{0mm} % idem, formules courtes
-\setlength{\belowdisplayskip}{0mm}      % espace supplémentaire au dessous des longues formules
-\setlength{\belowdisplayshortskip}{0mm} % idem, formules courtes
-
-%--- Utilitaires facultatifs
-
-% Utiliser la commande \eqncont pour terminer une ligne de formule
-% sur plusieurs lignes : supprime la numérotation + espace vertical plus serré.
-\newcommand{\eqncont}{\nonumber \\[0\baselineskip]}
-
-%%% Retardement du pagebreak
-
-%  Pour retarder le passage automatique à la page suivante de 1 ou 2 lignes,
-%  utiliser le couple de commandes \delaynewpage{nb lignes} ... \forcenewpage
-%  Attention! cette technique est du bricolage, mais cependant indispensable
-%  pour une présentation optimale d'un document. (indiquée par Lamport).
-%  IL NE FAUT L'EMPLOYER QUE TOUT À LA FIN, JUSTE AVANT L'IMPRESSION FINALE.
-%  En principe ne pas retarder de plus de 2 lignes !
-
-\newcommand{\delaynewpage}[1]{\enlargethispage{#1\baselineskip}}
-   % À utiliser sur la page à allonger, à un endroit bien visible
-   % avant le premier paragraphe ou la figure à faire tenir sur la page.
-   % Provoque une descente des notes de bas de page s'il y en a !
-
-\newcommand{\forcenewpage}{\pagebreak\noindent}
-   % À utiliser à l'endroit précis où la coupure doit être forcée.
-   % on peut placer cette commande en début de ligne, avec suite du texte
-   % sur la ligne suivante pour faciliter son repérage
-
-% Listes --------------------------------------------------------------------------------------------------
-
-% Espaces communs aux listes numérotées (enumerate) ou non (itemize)
-% Attention !!! Ces espacements ne peuvent être effectifs que si Babel ne les redéfinit
-% pas dans \@trivlist, comme il tente de l'imposer. Il faut ABSOLUMENT
-% exécuter \bbl at nonfrenchlistspacing avant le début du document (\AtBeginDocument).
-
-\def\mkhermeslist{%
-   \gdef\itemize{\hermesitemize}\gdef\enditemize{\endhermesitemize}%
-   \gdef\enumerate{\hermesenumerate}\gdef\endenumerate{\endhermesenumerate}%
-}
-
-\newcommand{\HermesItemizeSpacing}{%
-% espacements horizontaux
-   \leftmargin=0pt
-   \labelsep=1mm
-   \ifnum \@itemdepth < 2  % niveau 0 ou 1
-      \setlength{\itemindent}{\itemindenti}
-      \listparindent=5mm
-   \else                   % niveau 2
-      \itemindent=\itemindentii
-      \listparindent=10mm
-   \fi
-   \labelwidth=0pt
-   \rightmargin=0pt
-  % espacements verticaux des listes
-   \itemsep=0pt
-   \topsep=0pt
-   \parskip=6pt
-   \partopsep=0pt
-   \parsep=3pt
-% pénalités
-   \sloppy%
-   \widowpenalty4000%ligne isolée en début de page
-   \clubpenalty4000%ligne isolée à la fin d'une page
-}
-
-\newcommand{\displaylistdimen}{
-     itemdepth: \the\@itemdepth ;\\
-     topsep: \the\topsep ;\\
-     itemsep: \the\itemsep ;\\
-     parskip: \the\parskip ;\\
-     partopsep: \the\partopsep ;\\
-     parsep: \the\parsep.
-}
-
-% Listes non numérotées (itemize) -------------------------------------------------------------------------
-
-\newlength{\labelwidthi}      % largeur de la boîte contenant le retrait de 5mm + tiret moyen
-\settowidth{\labelwidthi}{--} % environ 2mm, tiret moyen
-\addtolength{\labelwidthi}{5mm} % retrait + largeur du tiret moyen, environ 7mm
-
-\newlength{\itemindenti}      % décalage du texte de 1ère ligne depuis marge gauche
-\setlength{\itemindenti}{\labelwidthi} % = labelwidthi
-\addtolength{\itemindenti}{1mm}          %   + labelsep
-
-\newlength{\labelwidthii}       % largeur de la boîte contenant le retrait de 10mm + tiret court
-\settowidth{\labelwidthii}{-}   % environ 1mm, tiret court
-\addtolength{\labelwidthii}{10mm} % retrait + largeur du tiret court, environ 11mm
-
-\newlength{\itemindentii}      % décalage du texte de 1ère ligne depuis marge gauche
-\setlength{\itemindentii}{\labelwidthii} % = labelwidthii
-\addtolength{\itemindentii}{1mm}           %   + labelsep
-
-\newenvironment{hermesitemize}{% liste à deux niveaux seulement
- \ifnum \@itemdepth > 1 \@toodeep % ici, \@itemdepth = niveau -1
- \else%
-    \renewcommand{\labelitemi}{{\makebox[\labelwidthi][r]{--}}}%
-    \renewcommand{\labelitemii}{{\makebox[\labelwidthii][r]{-}}}%
-    \advance\@itemdepth \@ne%
-    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-    \begin{list}%
-       {\csname\@itemitem\endcsname}%
-       {\def\makelabel##1{\llap{##1}}% ##1 signifie arg 1 de list et non de hermesitemize
-        % définir les espaces ici et nulle part ailleursn
-        \HermesItemizeSpacing %
-       }%\item \displaylistdimen
- \fi}{\end{list}}%
-
-% Listes numérotées ---------------------------------------------------------------------------------------
-
-\newlength{\enumwidthi}      % largeur de la boîte contenant le retrait de 5mm + n.
-\settowidth{\enumwidthi}{5)} % environ 2mm, chiffre le plus large
-\addtolength{\enumwidthi}{5mm} % retrait + largeur du tiret moyen, environ 7mm
-
-\newlength{\enumindenti}      % décalage du texte de 1ère ligne depuis marge gauche
-\setlength{\enumindenti}{\enumwidthi} % = enumwidthi
-\addtolength{\enumindenti}{1mm}          %   + enumsep
-
-\newlength{\enumwidthii}         % largeur de la boîte contenant le retrait de 10mm + tiret court
-\settowidth{\enumwidthii}{b)}   % environ 1mm, tiret court
-\addtolength{\enumwidthii}{10mm} % retrait + largeur du tiret court, environ 11mm
-
-\newlength{\enumindentii}      % décalage du texte de 1ère ligne depuis marge gauche
-\setlength{\enumindentii}{\enumwidthii} % = enumwidthii
-\addtolength{\enumindentii}{1mm}           %   + enumsep
-
-\newenvironment{hermesenumerate}{% enumération à un niveau
- \ifnum \@itemdepth >1 \@toodeep
- \else%
-      \advance\@enumdepth \@ne%
-      \advance\@itemdepth \@ne%
-      \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-      \begin{list}%
-         {\csname label\@enumctr\endcsname}%
-         {%
-          \usecounter{\@enumctr}%
-          \def\makelabel##1{\llap{##1}}% ##1 signifie arg 1 de list et non de hermesenumerate
-          % définir les espaces horizontaux ici
-          \HermesItemizeSpacing%
-          \ifnum \@itemdepth =1
-             \setlength{\itemindent}{\enumindenti}
-          \else
-             \setlength{\itemindent}{\enumindentii}
-          \fi
-          \renewcommand{\labelenumi}{{\makebox[\labelwidthi][r]{\arabic{enumi})}}}
-          \renewcommand{\labelenumii}{{\makebox[\labelwidthii][r]{\alph{enumii})}}}%
-         }
-   \fi}{\end{list}}
-
-%%%%%%%%%%%% OLD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\def\ITEMIZE{% liste à 3 niveaux: labelitemi=``---''
-  \ifnum \@itemdepth >3 \@toodeep%
-  \else%
-      \renewcommand{\labelitemi}{{---}}%
-      \renewcommand{\labelitemii}{\@labelindent{--}}%
-      \renewcommand{\labelitemiii}{\@labelindent\@labelindent{-}}%
-      \advance\@itemdepth \@ne%
-      \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-      \list%
-         {\csname\@itemitem\endcsname}%
-         {%
-          \renewcommand{\@curlabel}{\csname\@itemitem\endcsname}%
-          \def\makelabel##1{\llap{##1}}%
-          \mkhermeslist%
-         }%
-  \fi%
-}
-\let\endITEMIZE =\endlist
-
-% Redéfinition de quote pour réduire l'espace vertical à 6 pts
-
-\let\quoteORI\quote
-\let\endquoteORI\endquote
-\renewenvironment{quote}{%
-\par\vspace{-6pt}%
-\begin{quoteORI}%
-}{%
-\end{quoteORI}%
-\par\vspace{-6pt}%
-}
-
-%<2.8 Remarques ou notes> -----------------------------------------------------
-
-\newcommand{\remark}[1]{{\setlength{\parskip}{0pt}%
-    \par\noindent\textsc{\remarkname}.\ ---\ #1\\}}
-\newcommand{\note}[1]{{\setlength{\parskip}{0pt}%
-    \par\noindent\textsc{\notename}.\ ---\ #1\\}}
-
-%<2.9 Typographie> ------------------------------------------------------------
-
-%<2.10 Remerciements> ---------------------------------------------------------
-\newcommand{\acknowledgements}[1]{{
-   \setlength{\parskip}{0pt}%
-   \par\vspace{2\interligne}\noindent%
-   \FonteTexte \acknowledgementsname%
-   \nopagebreak[4]%
-   \par\vspace{1\interligne}#1%
-}}
-
-%<2.11 Bibliographie> ------------------------------------
-
-% J'ai séparé la définition de thebibliography en 2 parties
-% thebibliography ajoute le nom de section puis appelle la liste BiblioHermes
-
-\bibliographystyle{biblio-hermes}%
-\newcommand{\FonteBibliographie}{\rmfamily\mdseries\upshape\fontsize{9}{11}\selectfont}
-\renewenvironment{thebibliography}[1]{%BEGIN
-   \section{\HermesRefname}\label{biblio}%
-   \begin{BiblioHermes}
-  }{%END
-   \end{BiblioHermes}
-}
-
-% BiblioHermes affiche une liste de references bibliographiques.
-% Les entrées sont normalement préparées par le style hermes.bst, mais
-% peuvent aussi s'écrire à la main :
-% \bibitem[ref]{cite} qui écrit comme d'habitude
-% la clef de citation dans le fichier .aux pour bibtex
-% \bibi[ref] qui affiche seulement l'entree, sans écrire sur .aux
-% (utilité très spéciale, pour placer plusieurs biblios dans un document).
-%\renewcommand{\bibitem}[1]{(#1,}
-\def\bibi[#1]{\item[\@biblabel{#1}\hfill]} % @ special
-\newenvironment{BiblioHermes}{%BEGIN
-   \list{}{% Définition des paramètres de liste pour la bibliographie Hermes
-         \usecounter{enumiv}%
-         \let\p at enumiv\@empty
-         \renewcommand\theenumiv{\arabic{enumiv}}%
-         \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
-         \FonteBibliographie%
-         %% dimensions horizontales
-         \setlength{\leftmargin}{5mm}%%%
-         \setlength{\itemindent}{-3mm}%%%
-         \setlength{\labelsep}{2mm}%%%
-         \setlength{\labelwidth}{0mm}%%%
-         %% dimensions verticales
-          \setlength{\topsep}{0pt}%
-          \setlength{\parskip}{6pt}%
-          \setlength{\itemsep}{0pt}%
-          \setlength{\partopsep}{0pt}%
-          \setlength{\parsep}{3pt}%
-         \sloppy\clubpenalty10000\widowpenalty10000%
-         \sfcode`\.=\@m
-         }%
-  }{%END
-      \def\@noitemerr{\@latex at warning{Empty `thebibliography' environment}}
-      \FonteTexte%
-      \endlist%
-}
-
-% Code importé du package Harvard.sty pour obtenir des citations bibliographiques du style (Machin, 2001)
-
-\def\@hiteml[#1]#2#3#4{\item[]\if at filesw%
-      { \def\protect##1{\string ##1\space}\immediate%
-\write\@auxout{\string\harvardcite{#4}{#2}{#1}{#3}}}\fi%
-\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
-
-\def\@hitem#1#2#3{\item[]\if at filesw%
-      { \def\protect##1{\string ##1\space}\immediate%
-\write\@auxout{\string\harvardcite{#3}{#1}{#1}{#2}}}\fi%
-\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces}
-
-\def\harvarditem{\@ifnextchar [{\@hiteml}{\@hitem}}
-
-\def\harvardcite#1#2#3#4{
-  \global\@namedef{bhf@#1}{#2}
-  \global\@namedef{bha@#1}{#3}
-  \global\@namedef{bhy@#1}{#4}\global\@namedef{b@#1}{\csname bhf@#1\endcsname}\global\@namedef{bbb@#1}{\csname bha@#1\endcsname}
-}
-
-\def\cite{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
-\def\citeasnoun{\@ifnextchar [{\@tempswatrue\@citexasnoun}
-                           {\@tempswafalse\@citexasnoun[]}
-}
-
-\def\@enamedef#1{\expandafter\edef\csname #1\endcsname}
-
-\def\@citex[#1]#2{\if at filesw\immediate\write\@auxout{\string\citation{#2}}\fi
-  \def\@citea{}\@cite{\@for\@citeb:=#2\do
-    {\@citea\def\@citea{\@hisep\penalty\@m\ }\@ifundefined
-       {b@\@citeb}{{\bf ?}\@warning
-       {Citation `\@citeb' on page \thepage \space undefined}}%
-{{\csname bbb@\@citeb\endcsname\@hysep\csname bhy@\@citeb\endcsname}%
-\global\@enamedef{b@\@citeb}{\csname bha@\@citeb\endcsname}}%
-}}{#1}}
-
-\def\@citexasnoun[#1]#2{%
-\if at filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
-\@citeasnoun{{\@ifundefined%
-{b@#2}%
-{{\bf ?}\@warning{Citation `#2' on page \thepage \space undefined}}%
-{{\csname b@#2\endcsname\ (\csname bhy@#2\endcsname}%
-\global\@namedef{b@#2}{\csname bhf@#2\endcsname}}%
-}}{#1}}
-
-\gdef\hysep at agsm{\ }\gdef\hisep at agsm{,}%
-\gdef\hysep at dcu{, }\gdef\hisep at dcu{;}%
-\let\@hysep\hysep at agsm \let\@hisep\hisep at agsm
-\def\citationstyle#1{%
-\global\@namedef{@hysep}{\csname hysep@#1\endcsname}%
-\global\@namedef{@hisep}{\csname hisep@#1\endcsname}}
-
-%DEFAULT DEFINITIONS
-\def\@cite#1#2{({#1\if at tempswa , #2\fi})}
-\def\@citeasnoun#1#2{{#1\if at tempswa , #2\fi)}}
-
-% CHANGE \end{document} - to handle double definitions
-\def\enddocument{\@checkend{document}\clearpage\begingroup
-\if at filesw \immediate\closeout\@mainaux
-\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
-\def\bibcite{\@testdef b}%
-\def\harvardcite{\@testbibh}\@tempswafalse \makeatletter\input \jobname.aux
-\if at tempswa \@warning{Label(s) may have changed.  Rerun to get cross-references
-right}\fi\fi\endgroup\deadcycles\z@\@@end}
-
-\def\@testbibh #1#2#3{
-  \def\@tempa{#2}\expandafter
-  \ifx \csname bhf@#1\endcsname \@tempa
-     \def\@tempa{#3}\expandafter
-     \ifx \csname bha@#1\endcsname \@tempa
-     \else \@tempswatrue
-     \fi
-  \else
-     \@tempswatrue
-  \fi
-}
-
-% Fin du code importé
-
-%<2.12 Biographie> ----------------------------------------------------------------------
-% Il faut 2 lignes au dessus de la première biographie et 1 ligne
-% de séparation entre les biographies.
-
-\newcommand{\@fonteBiographie}{%
-   \rmfamily\mdseries\itshape\fontsize{9}{11}\selectfont}
-\newcommand{\@firstbiography}{yes}
-
-\newcommand{\biography}[2]{
-  % #1 = Nom de l'auteur,
-  % #2 = biographie enchaînée derrière le nom d'auteur, typiquement
-  %      « est chercheur au laboratoire... »
-  \ifthenelse{\equal{\@firstbiography}{yes}}{% première biographie
-  \renewcommand{\@firstbiography}{no}%
-  \par\vspace{18pt}\noindent% + 6pt de \parskip
-  }{% biographies suivantes
-  \par\vspace{6pt}\noindent% + 6pt de \parskip
-  }%
-  {\@fonteBiographie \textbf{#1} #2
-}}
-
-% <3. Remise des articles> ---------------------------------------------------
-
-% <3.1 Journal de bord> ------------------------------------------------------
-
-\newcommand{\andeditor}{% mot `et' en police normale
-   {{\FonteTexte et\ }}}
-
-\newcommand{\logbook}[3]{{% pour revues seulement
- % #1: date réception
- % #2: date révision
- % #3: rédacteur responsable
- \setlength{\parskip}{0pt}%
- \par\vspace{1\interligne}%
- \begin{flushright}%
-    Article reçu le #1.\\
-    Version révisée le #2.\\
-    Rédacteur responsable~: \textsc{#3}
- \end{flushright}%
-}}
-
-% <3.2 Annexe pour le service de fabrication> ------------------------------------
-
-\newcommand{\adressehermes}{
-\begin{flushright}
-{\setlength{\parsep}{0mm} \fbox{\parbox{70mm}{
-\begin{flushright}
-\textsc{Service éditorial -- Hermes-Lavoisier}\\ 14 rue de Provigny, F-94236
-Cachan cedex\\ Tél : 01-47-40-67-67\\ E-mail
-: revues at lavoisier.fr\\ Serveur web : http://www.revuesonline.com
-\end{flushright}
-}}}
-\end{flushright}}
-
-\newcommand{\VAR at titletranslation}{}
-\newcommand{\VAR at Phone}{}
-\newcommand{\VAR at Fax}{}
-\newcommand{\VAR at Email}{}
-
-\newcommand{\publisher}[3]{
-   % Pour construire la page d'annexe pour le service de fabrication
-   % usage: {#1} = traduction du titre
-   %        {#2} = numero de téléphone des auteurs
-   %        {#3} = fax des auteurs
-   %        {#4} = Email des auteurs
-   %\renewcommand{\VAR at titletranslation}{#1}
-   \renewcommand{\VAR at Phone}{#1}
-   \renewcommand{\VAR at Fax}{#2}
-   \renewcommand{\VAR at Email}{#3}
-
-   \let\myenddocument\enddocument
-   \def\enddocument{
-         \pagebreak \pagestyle{empty}\enlargethispage{80mm}
-   %\renewcommand{\@enddocumenthook}{
-      \parbox{\textwidth}{
-       \fbox{\parbox{\textwidth}{\begin{center}
-           \textbf{\large ANNEXE POUR LE SERVICE FABRICATION}\\
-          A FOURNIR PAR LES AUTEURS AVEC UN EXEMPLAIRE PAPIER\\
-          DE LEUR ARTICLE ET LE COPYRIGHT SIGNE PAR COURRIER\\
-          LE FICHIER PDF CORRESPONDANT SERA ENVOYE PAR E-MAIL
-        \end{center}}}\\[10mm]
-        %\setcounter{section}{0}
-      \ifthenelse{\equal{\VAR at TypeArticle}{revue}}{
-         \textsc{1. Article pour la revue~:}
-         \begin{quote}\textit{\VAR at NomRevue}\end{quote}\vspace*{3mm}
-      }{
-         \textsc{1. Article pour les actes~:}
-         \begin{quote}\textit{\VAR at NomActes}\end{quote}\vspace*{3mm}
-      }
-      \textsc{2. Auteurs~:}
-         \begin{quote}\textit{\VAR at author}\end{quote}\vspace*{3mm}
-      \textsc{3. Titre de l'article~:}
-         \begin{quote}\textit{\VAR at title}\end{quote}\vspace*{3mm}
-      \textsc{4. Titre \underline{abrégé} pour le haut de page \underline{moins de 40 signes}~:}
-         \begin{quote}\textit{\VAR at TitreAbrege}\end{quote}\vspace*{3mm}
-       \textsc{5. Date de cette version~:}
-         \begin{quote}\textit{\today}\end{quote}\vspace*{3mm}
-      \textsc{6. Coordonnées des auteurs~:}
-        \begin{itemize}
-             \item adresse postale~: \begin{quote}\VAR at address\end{quote}
-             \item téléphone~: \VAR at Phone
-             \item télécopie~: \VAR at Fax
-             \item e-mail~: \VAR at Email
-        \end{itemize}\vspace*{3mm}
-      \textsc{7. Logiciel utilisé pour la préparation de cet article~:}
-      \begin{quote}
-        \LaTeX, avec le fichier de style \texttt{\PackageName.cls}, \\
-              version~\PackageVersion\ du \filedate.
-      \end{quote}\vspace*{3mm}
-      \textsc{8. Formulaire de copyright~:}
-      \begin{quote}
-        Retourner le formulaire de copyright signé par les auteurs, téléchargé
-        sur~:
-        \texttt{http://www.revuesonline.com}
-      \end{quote}\vspace*{3mm}
-      }
-
-    \adressehermes
-
-     \myenddocument}%\renewcommand{\@enddocumenthook}
-}%\publisher
-
-
-
-%%%-- Macros utilisées pour le paramétrage sur le langage
-
-%-- Macros identiques en francais et english
-\def\pagename{p.~}
-\def\pagesname{p.~}%@@normalement {pp.~}
-\def\etalter{\ et al.}
-\def\Inname{}
-\def\inname{}
-\def\editornames{Eds.}
-\def\editorname{Ed.}
-\def\Volumename{Vol.~}
-\def\volumename{vol.~}
-\def\notename{Note}
-\def\degree{$^\circ$}%@@
-
-% Quelques macros utiles définies dans french
-\def\fup#1{\raisebox{0.55ex}{\protect\small #1\kern+.17em}}%
-\def\fsc{\scshape}%
-\def\@umer#1{$^{\mathrm #1}$\kern.2em\ignorespaces}%
-\def\numero{n\@umer{o}}%
-\def\numero{n\@umer{o}}%
-\def\Numero{N\@umer{o}}%
-\def\numeros{n\@umer{o}}%
-\def\Numeros{N\@umer{o}}%
-\def\fups#1{\raisebox{0.55ex}{{\scriptsize #1}}~}%
-\def\ier{\fups{er}}%
-\def\iere{\fups{re}}%
-\def\ieme{\fups{e}}%
-\def\iers{\fups{ers}}%
-\def\ieres{\fups{res}}%
-\def\iemes{\fups{es}}%
-
-%-- Macros différentes en francais et english
-% Doivent être redéfinies après chaque sélection de langage
-\def\initialisation{%
-  \iffrenchlang %
-%   \AutoSpaceBeforeFDP %
-   \def\figurename{Figure}%
-   \def\figname{figure}%
-   \def\tablename{Tableau}%
-   \def\tabname{tableau}%
-   \def\programname{Programme}%
-   \def\progname{programme}%
-   \def\HermesRefname{Bibliographie}%
-   \def\andname{, }
-   \def\acknowledgementsname{Remerciements}
-   \def\remarkname{Remarque}
-   \def\editionname{\'edition}
-   \def\chaptername{chapitre}
-   \def\technicalreportname{rapport}% valeur par défaut du champ type
-   \def\numbername{\numero}%{n°~}
-   \def\Numbername{\Numero}%{N°~}
-   \def\ofname{de}
-   \def\guilo{«~}% C. Queinnec
-   \def\guilf{~»}% C. Queinnec
-   \def\Jan{janvier}
-   \def\Feb{f\'evrier}
-   \def\Mar{mars}
-   \def\Apr{avril}
-   \def\May{mai}
-   \def\Jun{juin}
-   \def\Jul{juillet}
-   \def\Aug{ao\^ut}
-   \def\Sep{septembre}
-   \def\Oct{octobre}
-   \def\Nov{novembre}
-   \def\Dec{d\'ecembre}
-\else
-   \def\figurename{Figure}%
-   \def\figname{figure}%
-   \def\tablename{Table}%
-   \def\tabname{table}%
-   \def\programname{Program}%
-   \def\progname{program}%
-   \def\HermesRefname{References}%
-   \def\andname{, }
-   \def\acknowledgementsname{Acknowledgements}
-   \def\remarkname{Remark}
-   \def\editionname{edition}
-   \def\chaptername{chapter}
-   \def\technicalreportname{report }% valeur par défaut du champ type
-   \def\numbername{num.~}
-   \def\Numbername{Num.~}
-   \def\ofname{of}
-   \def\guilo{``}
-   \def\guilf{''}
-   \def\Jan{Jan. }
-   \def\Feb{Feb. }
-   \def\Mar{March }
-   \def\Apr{April }
-   \def\May{May }
-   \def\Jun{June }
-   \def\Jul{Jul. }
-   \def\Aug{Aug. }
-   \def\Sep{Sep. }
-   \def\Oct{Oct. }
-   \def\Nov{Nov. }
-   \def\Dec{Dec. }
-\fi
-}%\initialisation
-
-\def\@mkhermes{%
-   \mkhermeslist
-   \initialisation % dépend du langage
-}
-
-\AtBeginDocument{%
-  \iffrenchlang %
-      \selectlanguage{frenchb}%
-  \else %
-      \selectlanguage{english}%
-  \fi%
-}
-
-%EOF
-
-%%%%%%%%%%%%%%%%%% Doc %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% version commune pour les articles de revue et d'actes HERMES
-% Seule différence entre les deux types d'article :
-% en version finale, utiliser \journal pour un article de revue et
-%                             \proceedings pour un article de conférence.
-
-% Roger Rousseau, UNSA-I3S, rr at unice.fr
-%
-% Remerciements:
-% Les personnes suivantes ont fait des suggestions d'amélioration qui ont été
-% intégrées dans cette version : qu'elles soient chaleureusement remerciées.
-%   Roland Ducournau <ducour at lirmm.fr> 07/09/2000
-%   Christian Queinnec <Christian.Queinnec at lip6.fr> 13/12/2000
-%
-% Documentation résumée %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% (si l'auteur ne dispose pas du mode d'emploi et des tests, il peut les récupérer sur
-%  ftp.unice.fr/pub/I3S/OLEM/OCL/software/article-hermes)
-%
-% Toutes les commandes LaTex2e s'utilisent normalement y compris \maketitle remplacée
-% par \maketitlepage. Pour connaître les différentes commandes de définition de la
-% première page, IL SUFFIT DE COMMENCER UN ARTICLE PAR \maketitlepage :
-% les commandes à utiliser avant \maketitlepage s'afficheront par défaut.
-
-%%% Utilisation des options:
-
-% Langue utilisée pour l'article (français ou anglais)
-%\documentclass{article-hermes}          % article en français avec le package babel
-%\documentclass[english]{article-hermes} % article en anglais (avec babel)
-
-% Numérotation des pages: par défaut, les pages sont numérotées avec les en-têtes
-% construits à partir des commandes \title, \submitted, \journal ou \proceedings
-
-% La signature de l'article apparait en bas de la 1ere page: elle est
-% construite par \submitted, \journal ou \proceedings
-
-% Option empty: ni signature, ni en-tête, ni pied de page...
-% Exemple:
-%\documentclass[empty]{article-hermes}\header{LMO'99} % remise finale art. français
-
-% Option nofirstpagebreak: pas de saut de page sur la page de titre
-% (non standard, pour certaines revues seulement)
-
-% Option cropmarks: tracé des contours de page et de corps du texte
-% (utile pour visualiser les problèmes éventuels de débordement de ligne ou page,
-%  ne s'utilise qu'en mise au point finale).
-% Exemple:
-%\documentclass[cropmarks]{article-hermes}         % article en français avec contour de page
-
-% Option fleqn: formules mathématiques cadrées à 2cm du bord gauche du corps du texte
-% (par défaut les formules sont centrées) Exemple:
-%\documentclass[fleqn]{article-hermes}    % article en français avec formules à gauche
-
-% Mode d'emploi détaillé:
-% cf les fichiers doc-article-hermes.ltx et doc-article-hermes.ps
-
-%%% Liste des commandes utilisateur
-
-% Commandes spécifiques au style, avec nb d'arguments entre crochets
-
-% \title[1]
-% \subtitle[1]
-% \author[1]
-% \andauthor
-% \fup
-% \address[1]
-% \abstract[1]
-% \motscles[1]
-% \keywords[1]
-% \resume[1]
-% \maketitlepage
-% \nofirstpagebreak
-% \firstpagebreak
-%----
-% \submitted[2]
-% \journal[8]
-% \proceedings[3]
-%----
-% \acknowledgements[1]
-% \logbook[3]
-% \andeditor
-% \biography[2]
-%%% Utilitaires
-% \remark[1]
-% \note[1]
-% \bibliography
-% \CropMarksOn
-% \CropMarksOff
-% \eqncont
-% \delaynewpage[1]
-% \forcenewpage
-% \newenvironment{editorial}[5]
-
-% Commandes ou Environnements Latex redefinis
-
-% \rmdefault
-% \sfdefault
-% \ttdefault
-% \maketitle    % alias \maketitlepage
-% \thesection
-% \section
-% \thesubsection
-% \subsection
-% \thesubsubsection
-% \subsubsection
-% \theparagraph
-% \paragraph
-% \footnotesize
-% \footnoterule
-% \newblock
-% \renewenvironment{thebibliography}[1]
-% \renewenvironment{itemize}
-% \renewenvironment{enumerate}
-% \newenvironment{ITEMIZE}
-% \renewenvironment{figure}
-
-% Compteurs entiers ou variables décimales Latex redéfinis
-
-% section: 0
-% page: 1
-% secnumdepth: 4
-% topnumber: 2            % nb max de fig. en haut
-% bottomnumber: 1         % nb max de fig. en bas
-% totalnumber: 3          % nb max de fig. par page
-% \topfraction : 1        % fraction remplissage haut
-% \bottomfraction : 1     % fraction remplissage bas
-% \textfraction   : 0     % fraction remplissage texte / page
-% \floatpagefraction: 0.8 % fraction remplissage floatpage
-
-% Fontes utilisables (utilisation rare)
-
-% \FonteTexte
-% \FonteEnTete
-% \FonteRubrique
-% \FonteSignature
-% \FonteTitre
-% \FonteSousTitre
-% \FonteAuteur
-% \FonteResume
-% \FonteTitreResume
-% \FonteSectionI
-% \FonteSectionII
-% \FonteSectionIII
-% \FonteSectionIV
-% \FonteNoteBasPage
-% \FonteTitreLegende
-% \FonteCaptionName
-% \FonteBibliographie
-
-% Paramètres de listes (Normalement, ne pas modifier)
-% \mkhermeslist % Pour modifier les dimensions
-% \labelitemi
-% \labelitemii
-% \labelitemiii
-% \labelitemiv
-
-% Noms prédéfinis de revues Hermes Science Publications
-
-% \ACS     : Advances in complex systems
-% \AT      : Annales des télécommunications
-% \APII    : APII - JESA
-% \CP      : Calculateurs parallèles
-% \CFAOIG  : CFAO et informatique graphique
-% \CMA     : Composites et des matériaux avancés
-% \DN      : Document numérique
-% \DTA     : Droit des technologies avancées
-% \HSS     : Health and System Science
-% \HYPER   : Hypertextes et hypermédias
-% \IJFP    : International Journal of Forming Processes
-% \JANCL   : Journal of Applied Non-Classical Logics
-% \JCS     : Journal of Complex Systems
-% \JDS     : Journal of Decision Systems
-% \JESA    : Journal Européen des systèmes automatisés
-% \LOBJET  : L'objet
-% \NISJ    : Networking and Information Systems Journal
-% \RESEAUX : Réseaux
-% \RIA     : Revue d'intelligence artificielle
-% \RIGE    : Revue internationale de Génie Electrique
-% \RIG     : Revue internationale de géomatique
-% \REEF    : Revue européenne des éléments finis
-% \RFGC    : Revue française de génie civil
-% \STE     : Sciences et techniques éducatives
-% \TSI     : Technique et science informatiques
-
-% Variables utilisables
-% \newlength{\interligne}
diff --git a/lib/guii/majecstic08/biblio-hermes.bst b/lib/guii/majecstic08/biblio-hermes.bst
deleted file mode 100644
index caa4a2c..0000000
--- a/lib/guii/majecstic08/biblio-hermes.bst
+++ /dev/null
@@ -1,1246 +0,0 @@
-% BibTeX bibliography style for Hermes publisher :
-% books, journals, proceedings, technical reports, thesis...
-% G. Laurent, glaurent at ens2m.fr, mars 2005
-
-ENTRY
-  { address
-    author
-    booktitle
-    chapter
-    edition
-    editor
-    howpublished
-    institution
-    journal
-    key
-    month
-    note
-    number
-    organization
-    pages
-    publisher
-    school
-    series
-    title
-    type
-    volume
-    year
-  }
-  { field.used }
-  { extra.label sort.label list.year }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
-  #1 'mid.sentence :=
-  #2 'after.sentence :=
-  #3 'after.block :=
-}
-
-STRINGS { s t f }
-
-FUNCTION {output.nonnull}
-{ 's :=
-  output.state mid.sentence =
-    { ", " * write$ }
-    { output.state after.block =
-    { add.period$ write$
-      newline$
-      "\newblock " write$
-    }
-    { output.state before.all =
-        'write$
-        { add.period$ " " * write$ }
-      if$
-    }
-      if$
-      mid.sentence 'output.state :=
-    }
-  if$
-  s
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
-    'pop$
-    'output.nonnull
-  if$
-}
-
-FUNCTION {output.check}
-{ 't :=
-  duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
-    'output.nonnull
-  if$
-}
-
-FUNCTION {item.check}
-{ 't :=
-  empty$
-    { "empty " t * " in " * cite$ * warning$ }
-    { skip$ }
-  if$
-}
-
-FUNCTION {fin.entry}
-{ add.period$
-  write$
-  newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
-    'skip$
-    { after.block 'output.state := }
-  if$
-}
-
-FUNCTION {not}
-{   { #0 }
-    { #1 }
-  if$
-}
-
-FUNCTION {and}
-{   'skip$
-    { pop$ #0 }
-  if$
-}
-
-FUNCTION {or}
-{   { pop$ #1 }
-    'skip$
-  if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
-    { pop$ "" }
-    'skip$
-  if$
-}
-
-FUNCTION {emphasize}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "{\em " swap$ * "}" * }
-  if$
-}
-
-FUNCTION {embolden}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "{\bf " swap$ * "}" * }
-  if$
-}
-
-FUNCTION {quote}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "`" swap$ * "'" * }
-  if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 's :=
-  'f :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr f format.name$ 't :=
-      nameptr #1 >
-    { namesleft #1 >
-        { ", " * t * }
-        { t "others" =
-        { " et~al." * }
-        { ", " * t * }
-          if$
-        }
-      if$
-    }
-    't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { "{vv~}{ll}{ jj}{ f.}" author format.names }
-  if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
-    { "" }
-    { ", {vv~}{ll}{, jj}{, f.}" editor format.names
-      editor num.names$ #1 >
-    { " (eds)" * }
-    { " (ed.)" * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.editors.reverse}
-{ editor empty$
-    { "" }
-    { ", {f.~}{vv~}{ll}{, jj}" editor format.names
-      editor num.names$ #1 >
-    { " (eds)" * }
-    { " (ed.)" * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    %{ title "t" change.case$ }
-    {  ", <<~" title * "~>>" * } % Je trouve que c'est mieux de laisser le titre tel quel (avec la casse d'origine).
-  if$
-}
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        {     "-" *
-              { t #1 #1 substring$ "-" = }
-                { t #2 global.max$ substring$ 't :=
-                }
-              while$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {format.btitle}
-{ ", " title emphasize *
-}
-
-FUNCTION {format.phdtitle}
-{ ", " title *
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
-    { "" }
-    { "vol." volume tie.or.space.connect
-      series empty$
-    'skip$
-    { " of " * series emphasize * }
-      if$
-      "volume and number" number either.or.check
-    }
-  if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
-    { number empty$
-    { series field.or.null }
-    { output.state mid.sentence =
-        { "number" }
-        { "Number" }
-      if$
-      number tie.or.space.connect
-      series empty$
-        { "there's a number but no series in " cite$ * warning$ }
-        { " in " * series emphasize * }
-      if$
-    }
-      if$
-    }
-    { "" }
-  if$
-}
-
-FUNCTION {format.edition}
-{ edition empty$
-    { "" }
-    { output.state mid.sentence =
-    { edition "l" change.case$ " edn" * }
-    { edition "t" change.case$ " edn" * }
-      if$
-    }
-  if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-    { #1 'multiresult := }
-    { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
-    { "" }
-    { pages multi.page.check
-    { "p.~" pages n.dashify * }
-    { "p.~" pages * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ ", vol. " volume * field.or.null
-  number empty$
-    'skip$
-    { ", n°~" number * *
-      volume empty$
-    { "there's a number but no volume in " cite$ * warning$ }
-    'skip$
-      if$
-    }
-  if$
-  pages empty$
-    'skip$
-    { duplicate$ empty$
-    { pop$ format.pages }
-    { ", p.~" * pages n.dashify * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
-    'format.pages
-    { type empty$
-    { "chapter" }
-    { type "l" change.case$ }
-      if$
-      chapter tie.or.space.connect
-      pages empty$
-    'skip$
-    { ", " * format.pages * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
-    { "" }
-    { editor empty$
-    { booktitle emphasize }
-    { "{\em in} " format.editors.reverse * ", " * booktitle emphasize * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
-  month empty$ year empty$ note empty$
-  and and and and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
-    'skip$
-  if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
-    'skip$
-    { pop$
-      type "t" change.case$
-    }
-  if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
-    { "Technical Report" }
-    'type
-  if$
-  number empty$
-    { "t" change.case$ }
-    { " n°" number tie.or.space.connect * }
-  if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
-    { journal empty$
-    { "need key or journal for " cite$ * " to crossref " * crossref *
-      warning$
-      ""
-    }
-    { "in {\em " journal * "\/}" * " \cite{" * crossref * "}" *
-        }
-      if$
-    }
-    { " {\em in} \citeasnoun{" crossref * "}" * }
-  if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
-    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
-      "in "
-    }
-    { "Vol." volume tie.or.space.connect
-      " of " *
-    }
-  if$
-  editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-    { series empty$
-        { "need editor, key, or series for " cite$ * " to crossref " *
-          crossref * warning$
-          "" *
-        }
-        { "{\em " * series * "\/}" * " \cite{" * crossref * "}" *}
-      if$
-    }
-    { " \citeasnoun{" * crossref * "}" * }
-      if$
-    }
-    { " \citeasnoun{" * crossref * "}" * }
-  if$
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
-  editor field.or.null author field.or.null =
-  or
-    {
-      key empty$
-    { booktitle empty$
-        { "need editor, key, or booktitle for " cite$ * " to crossref " *
-          crossref * warning$
-          ""
-        }
-        { "in {\em " booktitle * "\/}" * " \cite{" * crossref * "}" *}
-      if$
-    }
-    { " {\em in} \citeasnoun{" crossref * "}" * }
-      if$
-    }
-    {  " {\em in} \citeasnoun{" crossref * "}" * }
-  if$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {format.lab.names.abbr.old}
-{ 's :=
-  s num.names$ 'numnames :=
-  numnames #1 >
-    { numnames #2 >
-    { s #1 "{vv~}{ll}" format.name$ " et al." * }
-    { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-            { s #1 "{vv~}{ll}" format.name$ " et al." * }
-        { s #1 "{vv~}{ll}" format.name$ " and " *
-              s #2 "{vv~}{ll}" format.name$ *
-            }
-          if$
-        }
-      if$
-    }
-    { s #1 "{vv~}{ll}" format.name$ }
-  if$
-}
-
-FUNCTION {format.lab.names.abbr}
-{ 's :=
-  s num.names$ 'numnames :=
-  numnames #1 >
-    { s #1 "{vv~}{ll}" format.name$ " " " et al.," emphasize * * }
-    { s #1 "{vv~}{ll}," format.name$ }
-  if$
-}
-
-FUNCTION {format.lab.names.full}
-{ 's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr "{vv~}{ll}" format.name$ 't :=
-      nameptr #1 >
-    { namesleft #1 >
-        { ", " * t * }
-        { t "others" =
-        { " et~al." * }
-        { " and " * t * }
-          if$
-        }
-      if$
-    }
-    't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-INTEGERS { author.field editor.field organization.field title.field key.field }
-
-FUNCTION {init.field.constants}
-{ #0 'author.field :=
-  #1 'editor.field :=
-  #2 'organization.field :=
-  #3 'title.field :=
-  #4 'key.field :=
-}
-
-FUNCTION {make.list.label}
-{ author.field field.used =
-    { format.authors }
-    { editor.field field.used =
-        { format.editors }
-        { organization.field field.used =
-            { "The " #4 organization chop.word #3 text.prefix$ }
-            { title.field field.used =
-                { format.btitle }
-                { key.field field.used =
-                    { key #3 text.prefix$ }
-                    { "Internal error :001 on " cite$ * " label" * warning$ }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-}
-
-FUNCTION {make.full.label}
-{ author.field field.used =
-    { author format.lab.names.full }
-    { editor.field field.used =
-        { editor format.lab.names.full }
-        { organization.field field.used =
-            { "The " #4 organization chop.word #3 text.prefix$ }
-            { title.field field.used =
-                { format.btitle }
-                { key.field field.used =
-                    { key #3 text.prefix$ }
-                    { "Internal error :001 on " cite$ * " label" * warning$ }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-}
-
-FUNCTION {make.abbr.label}
-{ author.field field.used =
-    { author format.lab.names.abbr }
-    { editor.field field.used =
-        { editor format.lab.names.abbr }
-        { organization.field field.used =
-            { "The " #4 organization chop.word #3 text.prefix$ }
-            { title.field field.used =
-                { format.btitle }
-                { key.field field.used =
-                    { key #3 text.prefix$ }
-                    { "Internal error :001 on " cite$ * " label" * warning$ }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-    }
-  if$
-}
-
-FUNCTION {output.bibitem}
-{ newline$
-  "\harvarditem[" write$
-  make.abbr.label write$
-  "]{" write$
-  make.full.label write$
-  "}{" write$
-  list.year write$
-  "}{" write$
-  cite$ write$
-  "}" write$
-  newline$
-  ""
-  before.all 'output.state :=
-}
-
-FUNCTION {list.label.output}
-{ make.list.label write$
-}
-
-FUNCTION {article}
-{ output.bibitem
-  list.label.output
-  new.block
-  author "author" item.check
-  title.field field.used =
-    { skip$ }
-    { format.title "title" output.check }
-  if$
-  crossref missing$
-    { journal emphasize "journal" duplicate$ item.check
-      pages empty$
-        {
-          output
-        }
-        {
-          %" " *
-          format.vol.num.pages * output
-        }
-      if$
-    }
-    { format.article.crossref output.nonnull
-      format.pages output
-    }
-  if$
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {book}
-{ output.bibitem
-  list.label.output
-  new.block
-  author empty$
-    { editor "author and editor" item.check }
-    { crossref missing$
-    { "author and editor" editor either.or.check }
-    'skip$
-      if$
-    }
-  if$
-  title.field field.used =
-    { skip$ }
-    { format.btitle "title" output.check }
-  if$
-  crossref missing$
-    { format.bvolume output
-      format.number.series output
-      format.edition output
-      publisher "publisher" output.check
-      address output
-    }
-    { format.book.crossref output.nonnull
-      format.edition output
-    }
-  if$
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {booklet}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.title "title" output.check }
-  if$
-  howpublished output
-  address output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {inbook}
-{ output.bibitem
-  list.label.output
-  new.block
-  author empty$
-    { editor "author and editor" item.check }
-    { crossref missing$
-    { "author and editor" editor either.or.check }
-    'skip$
-      if$
-    }
-  if$
-  title.field field.used =
-    { skip$ }
-    { format.btitle "title" output.check }
-  if$
-  crossref missing$
-    { format.bvolume output
-      format.number.series output
-      format.edition output
-      publisher "publisher" output.check
-      address output
-    }
-    { format.book.crossref output.nonnull
-      format.edition output
-    }
-  if$
-  format.chapter.pages "chapter and pages" output.check
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.title "title" output.check }
-  if$
-  author "author" item.check
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.edition output
-      format.bvolume output
-      format.number.series output
-      publisher "publisher" output.check
-      address output
-    }
-    { format.incoll.inproc.crossref output.nonnull
-    }
-  if$
-  format.chapter.pages output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.title "title" output.check }
-  if$
-  author "author" item.check
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.bvolume output
-      format.number.series output
-      address empty$
-    { organization output
-      publisher output
-    }
-    { organization output
-      publisher output
-      address output.nonnull
-    }
-      if$
-    }
-    { format.incoll.inproc.crossref output.nonnull
-    }
-  if$
-  format.pages output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.btitle "title" output.check }
-  if$
-  format.edition output
-  author empty$
-    { organization empty$
-    { address output
-    }
-    'skip$
-      if$
-    }
-    { organization output
-      address output
-    }
-  if$
-  new.block
-  month output
-  list.year output.nonnull
-  note output
-  fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
-  list.label.output
-  new.block
-  author "author" item.check
-  title.field field.used =
-    { skip$ }
-    { format.title emphasize "title" output.check }
-  if$
-  "Master's thesis" format.thesis.type output.nonnull
-  school "school" output.check
-  address output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.title output }
-  if$
-  howpublished output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-  empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
-  list.label.output
-  new.block
-  author "author" item.check
-  title.field field.used =
-    { skip$ }
-    { format.phdtitle "title" output.check }
-  if$
-  "PhD thesis" format.thesis.type output.nonnull
-  school "school" output.check
-  address output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
-  list.label.output
-  new.block
-  title.field field.used =
-    { skip$ }
-    { format.btitle "title" output.check }
-  if$
-  format.bvolume output
-  format.number.series output
-  address empty$
-    { editor empty$
-    { skip$ }
-    { organization output
-    }
-      if$
-      publisher output
-    }
-    { editor empty$
-    'skip$
-    { organization output }
-      if$
-      publisher output
-      address output.nonnull
-    }
-  if$
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {techreport}
-{ output.bibitem
-  list.label.output
-  new.block
-  author "author" item.check
-  title.field field.used =
-    { skip$ }
-    { format.phdtitle "title" output.check }
-  if$
-  format.tr.number output.nonnull
-  institution "institution" output.check
-  address output
-  month output
-  list.year output.nonnull
-  new.block
-  note output
-  fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
-  list.label.output
-  new.block
-  author "author" item.check
-  title.field field.used =
-    { skip$ }
-    { format.title "title" output.check }
-  if$
-  month output
-  list.year output.nonnull
-  note "note" output.check
-  fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Computing Surveys"}
-
-MACRO {acta} {"Acta Informatica"}
-
-MACRO {cacm} {"Communications of the ACM"}
-
-MACRO {ibmjrd} {"IBM Journal of Research and Development"}
-
-MACRO {ibmsj} {"IBM Systems Journal"}
-
-MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
-
-MACRO {ieeetc} {"IEEE Transactions on Computers"}
-
-MACRO {ieeetcad}
- {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
-
-MACRO {ipl} {"Information Processing Letters"}
-
-MACRO {jacm} {"Journal of the ACM"}
-
-MACRO {jcss} {"Journal of Computer and System Sciences"}
-
-MACRO {scp} {"Science of Computer Programming"}
-
-MACRO {sicomp} {"SIAM Journal on Computing"}
-
-MACRO {tocs} {"ACM Transactions on Computer Systems"}
-
-MACRO {tods} {"ACM Transactions on Database Systems"}
-
-MACRO {tog} {"ACM Transactions on Graphics"}
-
-MACRO {toms} {"ACM Transactions on Mathematical Software"}
-
-MACRO {toois} {"ACM Transactions on Office Information Systems"}
-
-MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
-
-MACRO {tcs} {"Theoretical Computer Science"}
-
-READ
-
-EXECUTE {init.field.constants}
-
-FUNCTION {sortify}
-{ purify$
-  "l" change.case$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
-    { key empty$
-    { title.field 'field.used := }
-    { key.field 'field.used := }
-      if$
-    }
-    { author.field 'field.used := }
-  if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
-    { editor empty$
-    { key empty$
-        { title.field 'field.used := }
-        { key.field 'field.used := }
-      if$
-    }
-    { editor.field 'field.used := }
-      if$
-    }
-    { author.field 'field.used := }
-  if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
-    { key empty$
-    { organization empty$
-        { title.field 'field.used := }
-        { organization.field 'field.used := }
-      if$
-    }
-    { key.field 'field.used := }
-      if$
-    }
-    { author.field 'field.used := }
-  if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
-    { key empty$
-    { organization empty$
-        { title.field 'field.used := }
-        { organization.field 'field.used := }
-      if$
-    }
-    { key.field 'field.used := }
-      if$
-    }
-    { editor.field 'field.used := }
-  if$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
-  "A " #2
-    "An " #3
-      "The " #4 t chop.word
-    chop.word
-  chop.word
-  sortify
-  #1 global.max$ substring$
-}
-
-FUNCTION {calc.label}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.key.label
-    { type$ "proceedings" =
-    'editor.key.organization.label
-    { type$ "manual" =
-        'author.key.organization.label
-        'author.key.label
-      if$
-    }
-      if$
-    }
-  if$
-  make.abbr.label
-  title.field field.used =
-    { sort.format.title }
-    { sortify }
-  if$
-  year field.or.null purify$ #-1 #4 substring$ sortify
-  *
-  'sort.label :=
-}
-
-FUNCTION {first.presort}
-{ calc.label
-  sort.label
-  title.field field.used =
-    { skip$ }
-    { "    "
-      *
-      make.list.label sortify
-      *
-      "    "
-      *
-      title field.or.null
-      sort.format.title
-      *
-    }
-  if$
-  #1 entry.max$ substring$
-  'sort.key$ :=
-}
-
-ITERATE {first.presort}
-
-SORT
-
-STRINGS { last.sort.label next.extra }
-
-INTEGERS { last.extra.num }
-
-FUNCTION {initialize.last.extra.num}
-{ #0 int.to.chr$ 'last.sort.label :=
-  "" 'next.extra :=
-  #0 'last.extra.num :=
-}
-
-FUNCTION {forward.pass}
-{ last.sort.label sort.label =
-    { last.extra.num #1 + 'last.extra.num :=
-      last.extra.num int.to.chr$ 'extra.label :=
-    }
-    { "a" chr.to.int$ 'last.extra.num :=
-      "" 'extra.label :=
-      sort.label 'last.sort.label :=
-    }
-  if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
-    { "a" 'extra.label := }
-    'skip$
-  if$
-  year empty$
-    { "n.d." extra.label * 'list.year := }
-    { year extra.label * 'list.year := }
-  if$
-  extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.last.extra.num}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
-FUNCTION {second.presort}
-{ make.list.label
-  title.field field.used =
-    { sort.format.title }
-    { sortify }
-  if$
-  "    "
-  *
-  list.year field.or.null sortify
-  *
-  "    "
-  *
-  title.field field.used =
-    { skip$ }
-    { title field.or.null
-      sort.format.title
-      *
-    }
-  if$
-  #1 entry.max$ substring$
-  'sort.key$ :=
-}
-
-ITERATE {second.presort}
-
-SORT
-
-FUNCTION {begin.bib}
-{ preamble$ empty$
-    'skip$
-    { preamble$ write$ newline$ }
-  if$
-  "\begin{thebibliography}{xx}" write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
-  "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
diff --git a/lib/guii/majecstic08/doc-article-hermes.aux b/lib/guii/majecstic08/doc-article-hermes.aux
deleted file mode 100644
index 10ce86e..0000000
--- a/lib/guii/majecstic08/doc-article-hermes.aux
+++ /dev/null
@@ -1,96 +0,0 @@
-\relax 
-\catcode`:\active
-\catcode`;\active
-\catcode`!\active
-\catcode`?\active
-\bibstyle{biblio-hermes}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}}
-\newlabel{options}{{1}{3}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Options g\'en\'erales de style }{3}}
-\newlabel{prem-page}{{2}{3}}
-\@writefile{toc}{\contentsline {section}{\numberline {2}Construction de la premi\`ere page }{3}}
-\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Commandes obligatoires \`a utiliser pour la premi\`ere page}}{4}}
-\newlabel{tbl:1}{{1}{4}}
-\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Commande {\upshape  \texttt  {\char "5C\relax submitted}} pour la soumission d'un article}}{6}}
-\newlabel{tbl:2}{{2}{6}}
-\newlabel{soumis}{{1}{6}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Commandes pour la soumission ou la publication d'un article}{6}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}Phase de soumission~: commande {\upshape  \texttt  {\char "5C\relax submitted}}}{6}}
-\newlabel{submitted}{{0.1}{6}}
-\@writefile{lot}{\contentsline {table}{\numberline {3}{\ignorespaces Commande {\upshape  \texttt  {\char "5C\relax journal}} pour la publication d'un article de revue}}{7}}
-\newlabel{tbl:3}{{3}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}Phase de publication \`a une revue~: commande {\upshape  \texttt  {\char "5C\relax journal}}}{7}}
-\newlabel{journal}{{0.1}{7}}
-\@writefile{lot}{\contentsline {table}{\numberline {4}{\ignorespaces Commande {\upshape  \texttt  {\char "5C\relax proceedings}} pour la publication d'un article de conf\'erence}}{8}}
-\newlabel{tbl:4}{{4}{8}}
-\@writefile{lot}{\contentsline {table}{\numberline {5}{\ignorespaces Commande {\upshape  \texttt  {\char "5C\relax publisher}} pour construire l'annexe pour l'\'editeur.}}{8}}
-\newlabel{tbl:5}{{5}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}Phase de publication \`a une conf\'erence~: commande {\upshape  \texttt  {\char "5C\relax proceedings}}}{8}}
-\newlabel{proceedings}{{0.1}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.1}Commandes de finalisation d'un article}{9}}
-\newlabel{finalisation}{{0.1}{9}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {0.1.1}Finalisations sp\'ecifiques \`a un article de revue}{9}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {0.1.2}Annexe pour le service de fabrication~: commande {\upshape  \texttt  {\char "5C\relax publisher}}}{9}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Commandes sp\'eciales pour le corps de l'article}{9}}
-\newlabel{cmdes-corps}{{1}{9}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Listes}{10}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Formules math\'ematiques}{10}}
-\newlabel{f:1a}{{1}{10}}
-\citation{Lam94}
-\newlabel{f:2}{{2}{11}}
-\newlabel{f:3}{{3}{11}}
-\newlabel{f:4}{{4}{11}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.3}Remarques, notes et remerciements }{11}}
-\citation{GMS94}
-\citation{Kol97}
-\citation{*}
-\bibdata{exemple-biblio}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.4}Ma\IeC {\^\i }trise des coupures de page}{12}}
-\newlabel{cmdes-biblio}{{0.5}{12}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {0.5}Bibliographie }{12}}
-\newlabel{envir}{{1}{12}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Environnement \textlatin  {\LaTeX  }\ n\'ecessaire et probl\`emes \'eventuels d'installation }{12}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Environnement n\'ecessaire}{12}}
-\citation{Lam94}
-\citation{GMS94}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Probl\`emes de fontes}{13}}
diff --git a/lib/guii/majecstic08/doc-article-hermes.dvi b/lib/guii/majecstic08/doc-article-hermes.dvi
deleted file mode 100644
index afb3146..0000000
Binary files a/lib/guii/majecstic08/doc-article-hermes.dvi and /dev/null differ
diff --git a/lib/guii/majecstic08/doc-article-hermes.log b/lib/guii/majecstic08/doc-article-hermes.log
deleted file mode 100644
index ba60b0d..0000000
--- a/lib/guii/majecstic08/doc-article-hermes.log
+++ /dev/null
@@ -1,47 +0,0 @@
-This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=latex 2008.5.15)  15 MAY 2008 11:57
-entering extended mode
- %&-line parsing enabled.
-**doc-article-hermes.ltx
-(./doc-article-hermes.ltx
-LaTeX2e <2005/12/01>
-Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
-yphenation, arabic, farsi, croatian, ukrainian, russian, bulgarian, czech, slov
-ak, danish, dutch, finnish, basque, french, german, ngerman, ibycus, greek, mon
-ogreek, ancientgreek, hungarian, italian, latin, mongolian, norsk, icelandic, i
-nterlingua, turkish, coptic, romanian, welsh, serbian, slovenian, estonian, esp
-eranto, uppersorbian, indonesian, polish, portuguese, spanish, catalan, galicia
-n, swedish, ukenglish, loaded.
-(./article-hermes.cls
-Document Class: article-hermes  03/03/2005 Version: 1.2 
-style Latex2e pour les articles de revues ou actes Hermes, Roger Rousseau, 1999
-, Guillaume Laurent, 2005
-File: article-hermes.cls 03/03/2005 Version: 1.2
-article-hermes.cls : ``fleqn'' option
-
-! LaTeX Error: File `article.cls' not found.
-
-Type X to quit or <RETURN> to proceed,
-or enter new name. (Default extension: cls)
-
-Enter file name: guii.tex
-(./guii.tex
-
-! LaTeX Error: Two \documentclass or \documentstyle commands.
-
-See the LaTeX manual or LaTeX Companion for explanation.
-Type  H <return>  for immediate help.
- ...                                              
-                                                  
-l.4 \documentclass[fleqn]{
-                          article-hermes}
-? x
- 
-Here is how much of TeX's memory you used:
- 47 strings out of 94081
- 855 string characters out of 1165334
- 47718 words of memory out of 1500000
- 3422 multiletter control sequences out of 10000+50000
- 3640 words of font info for 14 fonts, out of 1200000 for 2000
- 645 hyphenation exceptions out of 8191
- 19i,0n,19p,137b,16s stack positions out of 5000i,500n,6000p,200000b,5000s
-No pages of output.
diff --git a/lib/guii/majecstic08/doc-article-hermes.ltx b/lib/guii/majecstic08/doc-article-hermes.ltx
deleted file mode 100644
index 459ecc6..0000000
--- a/lib/guii/majecstic08/doc-article-hermes.ltx
+++ /dev/null
@@ -1,787 +0,0 @@
-% Documentation du style Latex pour les articles de revues ou de conférences Hermes
-% Les consignes aux auteurs sont en annexe de ce document.
-
-\documentclass[fleqn]{article-hermes}
-
-%%% Commandes spécifiques à l'article
-\newcommand{\cfsect}[1]{(\textit{cf.} section~\ref{#1})}
-\newcommand{\cfsectpage}[1]{(\textit{cf.} section~\ref{#1}, page~\pageref{#1})}
-\providecommand{\figureref}[1]{\figname~\ref{#1}}
-\providecommand{\cftab}[1]{(\textit{cf.} tableau~\ref{#1})}
-\newcommand{\cmd}[1]{{\upshape\texttt{\symbol{"5C}#1}}}
-%%% Fin des commandes spécifiques à l'article
-
-
-% Format des entêtes : 3 possibilités
-%
-% \submitted[date]{Nom de la revue}{n° de soumission}
-% exemple : \submitted[13/12/04]{RSTI - RIA}{1}
-%
-% \proceedings{Nom de la conférence + lieu + date}{n° 1ère page}
-%
-% \journal{Nom de la revue. Volume ?? -- n° ??/????}{n° 1ère page}{n° dernière page}
-% exemple : \journal{RSTI - RIA. Volume 19 -- n° 1/2005}{55}{88}
-
-\journal{\LOBJET. Volume 8 -- n°2/2005}{1}{15}
-
-\publisher{User's guide of \textit{article-hermes.cls}}{00 00 00 00 00 }{00 00
-00 00 00}{Roger.Rousseau at unice.fr}
-
-\title[Mode d'emploi de \textit{article-hermes.cls}]%
-      {Réalisation d'un article pour les revues \\
-       ou les actes HERMES avec \LaTeX~2$_{\epsilon}$}
-
-\subtitle{Mode d'emploi des fichiers de style \\ article-hermes.cls et
-biblio-hermes.bst\\ (version 1.2 du 3 mars 2005)}
-\author{Roger Rousseau}
-
-\address{%
-Laboratoire I3S (CNRS - UNSA)\\ Les Algorithmes - Bât Euclide B\\ 2000 route
-des Lucioles -- B.P. 121\\ F-06903 Sophia Antipolis Cedex\\[3pt]
-Roger.Rousseau at unice.fr}
-
-\resume{Cette notice donne le mode d'emploi des fichiers de style
-\textit{article-hermes.cls} et \textit{biblio-hermes.bst} pour formater, avec
-le logiciel \LaTeX, un article de revue ou de conférence à paraître aux
-éditions Hermès Science Publications. Ce paquetage est conforme aux
-<<~Consignes aux auteurs~>> définies par l'éditeur. Il introduit le minimum de commandes nouvelles. La version \LaTeX\ de cet
-article sert aussi d'exemple d'utilisation des commandes nécessaires~: le
-résultat imprimé permet de vérifier la conformité aux consignes. }
-
-\abstract{This paper gives the user's guide of \textit{article-hermes.cls} and
-\textit{hermes\-.bst} style files, for typesetting articles with \LaTeX\ to
-appear in Hermès Science Publications journals or proceedings. This package
-conforms to ``Instructions to authors'' that are defined by the publisher. It
-introduces a minimum of new commands. The \LaTeX\ version of this article can
-also be used as an example of command utilization~: the printed result allows
-to verify the conformity to instructions. }
-
-\motscles{\LaTeX, Bib\TeX, fichier de style, article de revue, article d'actes
-de conférence, Hermès Science Publications, consignes aux auteurs.}
-
-\keywords{\LaTeX, Bib\TeX, style file, article of journal, article of
-proceedings, Hermès Science Publications, instructions to authors.}
-
-
-\begin{document}
-
-%\maketitle % Exemple de 1ere page sans les valeurs de champs
-            % pour afficher les commandes à utiliser
-
-\maketitlepage
-
-\section{Introduction}
-
-Cette notice décrit le mode d'emploi des fichiers de style \LaTeX\
-\textit{article-hermes.cls} et \textit{biblio-hermes.bst} qui servent à
-préparer des articles de revue ou de conférence conformes aux consignes données
-par Hermès Science Publications\footnote{Disponibles sur Internet à
-\texttt{http://www.hermes-science.com}.}
-
-Pour utiliser ces fichiers de style, il faut disposer d'une installation de
-\LaTeX~2$_{\epsilon}$ pas trop ancienne avec le paquetage \textit{babel} pour
-la césure des mots français ou anglais. La section \ref{envir} page
-\pageref{envir} donne les informations sur l'environnement nécessaire et où se
-le procurer.
-
-Selon l'environnement utilisé, l'exécution se fera en tapant des commandes ou
-en cliquant des entrées de menus. Les environnements traditionnels nécessitent
-de taper des commandes dans une fenêtre d'un langage de commandes
-(shell sous Unix/Linux, shell de Cygwin ou MSDOS sous Windows...).
-Certains environnements (par exemple MikTeX) déterminent automatiquement le nombre
-d'exécutions nécessaires pour résoudre toutes les références
-(numéros de figures, de pages, de sections, bibliographie...). D'autres environnements
-demandent à l'utilisateur de lancer lui-même le nom\-bre nécessaire d'exécutions de
-\LaTeX.
-Si vous trouvez des références non résolues qui apparaissent par des \textbf{??},
-c'est qu'il manque au moins une exécution. Cela est parfois indiqué aussi
-par un message à l'écran et dans un fichier de \textit{log}.
-
-Comme il existe maintenant de nombreux environnements de \LaTeX, nous ne pouvons pas
-décrire de manière précise ce qu'il faut faire dans chaque cas. Cette notice
-décrit les tâches à effectuer dans un environnement traditionnel de type
-Unix, Linux ou Windows avec MikTeX. Le lecteur pourra normalement en déduire facilement
-ce qu'il convient de faire dans son propre environnement.
-
-Toutes les commandes standard du système \LaTeX\ sont utilisables. Certaines
-ont été redéfinies et nous avons ajouté quelques commandes supplémentaires qui
-sont décrites dans cette notice. La section~\ref{options} donne les options de
-la commande \cmd{documentclass}. La section~\ref{prem-page} présente les
-commandes principales pour construire la première page. Elles sont
-complétées avec les commandes de la section~\ref{soumis} pour construire la
-signature éventuelle de l'article, les en-têtes de page, et toutes les
-informations nécessaires à la remise finale d'un article accepté. La
-section~\ref{cmdes-corps} donne les rares commandes spécifiques pour le corps
-du texte, pour certaines listes, formules mathématiques, remarques, notes,
-remerciements... La bibliographie s'obtient, comme sur l'exemple de la
-section~\ref{biblio} avec les commandes standard \LaTeX\ et le fichier de style
-\textit{hermes.bst} qui doit être accessible. Enfin, la section~\ref{envir}
-précise l'environnement \LaTeX\ nécessaire et discute des problèmes éventuels
-d'installation.
-
-\pagebreak
-
-\section{Options générales de style \label{options}}
-
-Ces options se placent dans la commande
-\begin{quote}
-\cmd{documentclass[opt1,opt2...]\{article-hermes\}}.
-\end{quote}
-Elles permettent d'adapter le fichier
-de style \textit{article-hermes.cls} aux cas suivants~:
-
-\begin{itemize}
-
-\item \textit{english}~: indique que l'article est écrit en anglais.
-Par défaut, c'est le  français qui est choisi.
-Le choix de la langue d'un article influe sur la présentation de l'article,
-la traduction de certaines mots (par exemple Table \textit{vs} Tableau) et sur l'algorithme
-de césure. Il est cependant possible d'incorporer des citations dans une autre langue
-dans le corps de l'article, en utilisant la commande \cmd{french} ou \cmd{english}, pour
-activer localement l'algorithme de césure adéquat\footnote{%
-L'utilisation d'autres langues comme
-l'allemand ou l'espagnol est également possible par l'emploi de la commande \LaTeX\
-\cmd{selectlanguage\{languagename\}}, mais aux risques et périls de l'utilisateur.
-Certains sous-paquetages de langages (comme frenchb) font en effet beaucoup plus que de changer l'algorithme
-de césure. Dans ce cas, il faudra activer la commande \cmd{initialisation} juste après
-l'appel à \cmd{selectlanguage} pour rétablir la présentation du style Hermes.}.
-
-\item \textit{fleqn}~: cadre les formules mathématiques à gauche d'un retrait de
-   1~cm. Par défaut, les formules sont centrées.
-
-\item \textit{cropmarks}~: fait apparaître les limites de page et de corps du texte.
- Cette option fonctionne avec du papier \textit{A4} ou \textit{USLETTER}.
-   En phase de mise au point finale, cela permet de voir du premier coup d'{\oe}il
-   d'éventuels défauts de débordements en marge droite ou de remplissage des
-   pages. Certes, \LaTeX\ indique tous ces défauts, mais beaucoup sont
-   insignifiants, à peine visibles. Le tracé des cadres permet d'apprécier plus
-   concrètement l'ampleur des problèmes éventuels et de les corriger à la
-   main par les commandes \LaTeX\ \textit{adhoc}, comme ``\verb+\-+'' et autres.
-
-   On peut aussi, indépendamment de l'option \textit{cropmarks}, faire apparaître ou
-   disparaître ces cadres sur la page en cours, avec les commandes
-   \cmd{CropMarksOn} et \cmd{CropMarksOff}, comme utilisé pour l'annexe.
-
-\item \textit{empty}~: pour supprimer les en-têtes et la signature de
-l'article, lors de la remise finale lorsqu'on ne dispose pas de toutes les
-informations nécessaires ou que c'est demandé par le service de
-fabrication. Pour éviter de numéroter les pages au crayon, les numéros
-de page apparaissent tout en bas, en dehors des dimensions de page des articles.
-
-\item \textit{nofirstpagebreak}~: pour supprimer le saut de page de la
-première page. L'emploi de cette option est réservé à des cas spéciaux,
-et doit se faire en accord avec l'éditeur.
-
-\end{itemize}
-
-\section{Construction de la première page \label{prem-page}}
-
-La première page de l'article s'obtient avec un procédé voisin de celui
-utilisé en \LaTeX\ standard avec \cmd{maketitle}.
-On commence par définir les différents champs
-nécessaires à la première page avec les commandes indiquées sur le
-tableau~\ref{tbl:1}.
-Celles-ci peuvent s'utiliser dans n'importe quel
-ordre, avant ou après la commande \cmd{begin\{do\-cu\-ment\}}.
-Il est cependant recommandé d'utiliser ces commandes dans l'ordre
-du tableau~\ref{tbl:1}.
-Par défaut ces champs contiennent un petit texte qui indique la commande à
-utiliser, en cas d'oubli.
-
-\begin{table}[h]
-\setlength{\tabcolsep}{2mm}
-\begin{tabular}{|p{46mm}|p{66mm}|}
-\hline
-\cmd{title[} \textit{titre abrégé} \texttt{]\{} \textit{titre} \texttt{\}} &
-                Titre de l'article. Si nécessaire, utiliser
-                              \verb+\\+ pour couper la ligne.\\
-\cmd{subtitle\{} \textit{sous-titre} \texttt{\}} &
-                Sous-titre éventuel. Si nécessaire, utiliser
-                              \verb+\\+ pour couper la ligne.\\
-\hline
-\cmd{author\{} \textit{auteur(s)} \texttt{\}} &
-                Prénom et Nom de chaque auteur, séparés par un tiret long.\\
-\cmd{andauthor} &
-                Tiret long entre deux noms d'auteurs.\\
-\hline
-\cmd{address\{} \textit{adresse(s)} \texttt{\}} &
-                Adresse du ou des auteurs, sur quelques lignes coupées par
-\verb+\\+. Mettre l'Email à la fin, à une distance de 3~pts.
-             Dans le cas de plusieurs adresses, séparer celles-ci de 6~pts
-et indexer les auteurs et adresses
-            par \fup{*} ou \fup{**}\ldots.
-\\
-\hline
-\cmd{resume\{} \textit{résumé} \texttt{\}} & Résumé en français\\
-\cmd{abstract\{} \textit{abstract} \texttt{\}} & Résumé en anglais\\
-\cmd{motscles\{} \textit{mots-clés} \texttt{\}}  & Mots-clés en français\\
-\cmd{keywords\{} \textit{keywords} \texttt{\}}  & Mots-clés en anglais\\
-\hline
-\cmd{maketitlepage}  &
-                Placée après les commandes précédentes,
-                pour faire apparaître la première page.\\
-\hline
-\end{tabular}
-\caption{Commandes obligatoires à utiliser pour la première page}\label{tbl:1}%
-\end{table}
-
-La commande \cmd{maketitlepage} (alias \cmd{maketitle}) construit la première
-page et réalise les ultimes initialisations. Elle s'utilise obligatoirement
-après la commande \cmd{begin\{document\}} et après les commandes précédentes de
-définition de champs. Ainsi, la commande \cmd{maketitlepage}, placée juste
-après \cmd{begin\{document\}}, affiche un bref mode d'emploi des commandes de
-première page.
-
-Pour le titre et le sous-titre éventuel, les coupures éventuelles des lignes se
-font souvent de manière explicite, avec la commande \verb+\\+ usuelle, sans
-indication d'espacement vertical. La commande \cmd{title} est aussi utilisée
-pour construire le titre courant dans l'en-tête des pages impaires. Si le titre
-est assez court, il est directement utilisé pour l'en-tête. Sinon, il faut
-fournir un titre abrégé, en option de la commande \cmd{title}. Dans tous les
-cas, la longueur du titre utilisé pour l'en-tête ne doit pas dépasser 55~mm
-(environ 40 caractères, espaces comprises, en corps 9). En cas de dépassement, c'est
-signalé par une erreur \LaTeX\ qu'on peut ignorer en tapant sur la touche
-\texttt{\symbol{"3C}return\symbol{"3E}}.
-
-\pagebreak
-\noindent Exemple~:
-\begin{quote}\begin{verbatim}
-\title[Démarche pour enseigner la compilation]%
-      {Démarche de projet pour enseigner la compilation}
-\end{verbatim}\end{quote}
-
-Dans le cas de plusieurs auteurs, il faut
-utiliser la commande \cmd{andauthor} pour faire apparaître le tiret de séparation. Les
-astérisques de renvoi aux adresses pourront utiliser la commande \cmd{fup\{*\}},
-\cmd{fup\{**\}}\ldots Exemple~:
-\begin{quote}\begin{verbatim}
-\author{Paul Dupond\fup{*} \andauthor Pierre Durand\fup{**}}
-\end{verbatim}\end{quote}
-donne le résultat suivant~:
-\begin{quote}
-{\FonteAuteur Paul Dupond\fup{*} \andauthor Pierre Durand\fup{**}}
-\end{quote}
-
-L'adresse (éventuellement plusieurs) est donnée en argument de la commande
-\cmd{address} sur quelques lignes.
-L'adresse \textit{Email} sera placée sur la dernière ligne
-à une distance de 3 pts de la dernière ligne d'adresse.
-Dans le cas d'adresses électroniques de même domaine, on
-mettera celui-ci en facteur. Exemple~:
-\begin{quote}\begin{verbatim}
-\address{
-Laboratoire d'Informatique de Besançon\\
-Université de Franche-comté\\
-16, route de Gray\\
-25 030 Besançon cedex\\[3pt]
-\{chatonnay,julliand,lasalle\}@lib.univ-fcomte.fr
-}
-\end{verbatim}\end{quote}
-produira l'effet suivant~:
-\begin{quote}
-{\FonteAdresse
-Laboratoire d'Informatique de Besançon\\
-Université de Franche-comté\\
-16, route de Gray\\
-25 030 Besançon cedex\\[3pt]
-\{chatonnay,julliand,lasalle\}@lib.univ-fcomte.fr
-}
-\end{quote}
-
-Si les auteurs ont des adresses différentes, elles
-seront séparées d'un espace de 6 pts (voir l'exemple
-de la fin de l'annexe).
-
-Les commandes \cmd{resume}, \cmd{abstract}, \cmd{motscles},
-\cmd{keywords}, s'utilisent chacune avec un argument qui définit
-respectivement le résumé en français, le résumé en anglais, les mots-clés en
-français et les mots-clés en anglais. Les résumés ne doivent pas dépasser une
-dizaine de lignes et les mots-clés seront donnés sur une ligne ou deux.
-Pour les articles en français, ces rubriques sont imprimées dans l'ordre
-<<~résumé, abstract, mots-clés, keywords~>>. Pour des articles en anglais
-(option \textit{english}, \textit{cf.} section~\ref{options})
-elles sont placées dans l'ordre <<~abstract, résumé, keywords, mots-clés~>>.
-La coupure des mots est traitée automatiquement, de façon différente
-pour les parties en français et en anglais.
-
-\section{Commandes pour la soumission ou la publication d'un article\label{soumis}}
-
-Les  informations d'identification qui sont placées dans les en-têtes
-de page, dans la signature de l'article en bas de la première page,
-ou à la fin de l'article dépendent de son état de finition.
-Les commandes de cette section s'utilisent au fur et à mesure que l'on dispose
-de ces informations, et selon le type d'article, de revue ou de conférence.
-
-\begin{itemize}
-
-\item La phase de soumission d'un article utilise la commande
-\cmd{submitted} (\textit{cf.} section~\ref{submitted} et tableau~\ref{tbl:2}).
-
-\item La phase de préparation d'un article accepté utilise
-la commande \cmd{journal} (\textit{cf.} section~\ref{journal} et
-tableau~\ref{tbl:3}) pour une revue, et \cmd{proceedings}
-(\textit{cf.} section~\ref{proceedings} et tableau~\ref{tbl:4})
-pour une conférence.
-\end{itemize}
-
-Il est recommandé d'utiliser ces commandes dès le début de chaque phase de
-préparation, même si l'on ne dispose pas de toutes les informations~: on pourra
-donner les informations qui manquent juste avant la remise aux rédacteurs ou au
-service de fabrication.
-
-Pour l'ultime préparation d'un article accepté, juste avant son expédition
-à l'éditeur, certaines commandes supplémentaires peuvent être nécessaires
-comme \cmd{logbook}, \cmd{biography} et \cmd{publisher} \cfsect{finalisation}.
-
-\subsection{Phase de soumission~: commande \cmd{submitted}}
-\label{submitted}
-
-\begin{table}[t]
-\setlength{\tabcolsep}{2mm}
-\begin{tabular}{|p{56mm}|p{56mm}|}
-\hline
-\cmd{submitted[}\textit{date}\texttt{]\{}\textit{dest.}\texttt{\}\{}\textit{n\degree soumis.}\texttt{\}} &
-        Commande de soumission, à placer avant \cmd{maketitlepage}\\
-\hline
-\hspace*{1cm} \texttt{[}\textit{date}\texttt{]} &
-        Date de la signature, par défaut, la date du jour.\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{dest.}\texttt{\}} &
-        Nom de la revue ou de la conférence visée\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{n\degree soumis.}\texttt{\}} &
-       Numéro de la soumission (généralement de 1 à 3).\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{submitted} pour la soumission d'un article}\label{tbl:2}
-\end{table}
-
-\begin{table}[h]
-\begin{tabular}{|p{56mm}|p{56mm}|}
-\hline \cmd{journal\{}
-      \textit{arg1}\texttt{\}\{}\textit{arg2}
-      \texttt{\}\{}\textit{arg3}\texttt{\}} &
-       Commande de publication, à placer avant \cmd{maketitlepage}\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-         Nom de la revue + n° de volume de la revue (1 à 2 chiffres) +  n° de fascicule de la revue (1 à 2 chiffres) + année de parution sur 4 chiffres\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-        Numéro de première page de parution, si connu. Sinon mettre un tiret\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg3}\texttt{\}} &
-        Numéro de dernière page de parution, si connu. Sinon mettre un tiret\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{journal} pour la publication d'un article
-de revue}\label{tbl:3}
-\end{table}
-
-On utilise la commande \cmd{submitted} \cftab{tbl:2}
-avec trois arguments, le premier en option~:
-\begin{itemize}
-\item Le premier argument donne la date de version du document qui
-sera placée sur la ligne de signature de l'article, en bas de la première page.
-Par défaut, c'est la date du jour qui est utilisée.
-
-\item Le deuxième argument précise le nom de la revue ou de la conférence où
-l'article est soumis. Ce nom apparaîtra sur la ligne de signature (pour les
-revues seulement) et sur l'en-tête des pages paires. Le nom ne doit pas être
-trop large (55~mm maximum en corps 9).
-
-\item Le troisième argument indique le numéro de soumission. Il ne sert qu'à distinguer
-les différentes versions d'un article et apparaît sur la ligne de signature
-et sur l'en-tête des pages paires.
-\end{itemize}
-
-Exemple~: pour commencer la préparation d'un article à la revue
-\textit{Technique et science informatiques}, on peut placer avant
-\cmd{maketitlepage} la commande suivante~:
-
-\begin{quote}\begin{verbatim}
-\submitted{Technique et science informatiques}{1}
-\end{verbatim}\end{quote}
-
-\subsection{Phase de publication à une revue~: commande \cmd{journal}}
-\label{journal}
-
-Comme \cmd{submitted}, la commande \cmd{journal} \cftab{tbl:3} se place avant
-la commande \cmd{maketitlepage}. Ses trois arguments définissent les
-informations nécessaires pour construire la signature de l'article et l'en-tête
-des pages~:
-
-\begin{itemize}
-
-\item Le premier argument donne le nom de la revue, comme dans la commande
-\cmd{submitted}, suivi du\emph{ numéro de volume}, du \emph{fascicule} et de
-l'\emph{année de parution} de l'article (longueur totale de 55~mm maximum en
-corps 9). Cet intitulé complet intervient dans la signature de l'article et
-dans l'en-tête des pages paires. Certaines revues disposent d'une présentation
-particulière mais dans le cas d'un numéro courant, la forme est généralement~:
-\begin{quote}
-   \verb!\journal{Nom de la revue. Volume 19 -- n° 1/2005}{45}{57}!
-\end{quote}
-Dans le cas d'un numéro spécial, la forme est généralement~:
-\begin{quote}
-   \verb!\journal{Nom de la revue -- 7/2005. Titre du numéro}{45}{57}!
-\end{quote}
-
-\item Les deux derniers arguments donnent les numéros de la \textit{première et dernière page}
-   de l'article, s'ils sont connus. Dans ce cas, ils apparaissent sur la signature
-   et le numéro de première page initialise la numérotation de toutes les pages.
-   Si le numéro de première page est inconnu (le dernier l'est aussi), il faut mettre un
-   tiret comme valeur. Dans ce cas, les numéros n'apparaissent pas dans la signature et
-   la numérotation des pages commence à 1, avec un espace suffisant pour que l'imprimeur
-   puisse surcharger les vrais numéros de page, sans avoir à retoucher les en-têtes.
-   Il se peut aussi que le service de fabrication souhaite une version sans en-tête
-   ni signature, ce qui s'obtiendra par l'option \textit{empty} de la commande
-   \cmd{documentclass} \cfsect{options}.
-\end{itemize}
-
-Exemple. Pour préparer la version finale d'un article à paraître dans la rubrique
- de la revue \textit{RSTI - RIA}, volume 18, n°3, 1999,
-pages 297 à 322,
-il suffit de donner la commande suivante~:
-\begin{quote}\begin{verbatim}
-\journal{RSTI - RIA. Volume 18 -- n° 3/1999}{297}{322}
-\end{verbatim}\end{quote}
-\begin{table}[t]
-\begin{tabular}{|p{46mm}|p{66mm}|}
-\hline
-\cmd{proceedings\{}\textit{arg1}\texttt{\}}
-       \texttt{\{}\textit{arg2}\texttt{\}}
-       &
-       Commande de publication, à placer avant \cmd{maketitlepage}\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-         Nom abrégé de la conférence visée\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-        Numéro de première page de parution, si connu. Sinon mettre un tiret\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{proceedings} pour la publication
-d'un article de conférence}\label{tbl:4}
-\end{table}
-
-\begin{table}[h]
-\begin{tabular}{|p{46mm}|p{66mm}|}
-\hline
-\cmd{publisher\{}\textit{arg1}\texttt{\}}\textit{...}
-       \texttt{\{}\textit{arg4}\texttt{\}}
-       &
-       Peut être placée en début ou fin de l'article\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-        Traduction du titre de l'article, en anglais pour les articles
-        en français et inversement pour les articles en anglais.\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-         Numéro(s) de téléphone de l'auteur\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-         Numéro(s) de télécopie de l'auteur\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-         Email(s) de l'auteur\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{publisher} pour construire l'annexe pour l'éditeur.}
-\label{tbl:5}
-\end{table}
-
-\subsection{Phase de publication à une conférence~: commande \cmd{proceedings}}
-\label{proceedings}
-
-Comme la commande \cmd{journal}, la commande \cmd{proceedings} \cftab{tbl:4}
-s'utilise avant la commande \cmd{maketitlepage}, mais avec deux arguments
-seulement, car les actes de conférence n'utilisent pas de ligne de signature~:
-
-\begin{itemize}
-
-\item Le premier argument donne le nom abrégé de la conférence (moins de
-55~mm).  Il intervient dans l'en-tête des pages paires.
-
-\item Le deuxième argument précise
-le numéro de la \textit{première page}
-de l'article, s'il est connu, ou un tiret sinon. Son utilisation
-est identique au 5\ieme argument de la commande \cmd{journal}.
-\end{itemize}
-
-Exemple. Pour préparer la version finale d'un article à paraître dans les
-actes
-de la conférence \textit{LMO'99}, pages 245 et suivantes,
-il suffit de donner la commande~:
-\begin{quote}\begin{verbatim}
-\proceedings{LMO'99}{245}
-\end{verbatim}\end{quote}
-
-\subsection{Commandes de finalisation d'un article}
-\label{finalisation}
-
-\subsubsection{Finalisations spécifiques à un article de revue}
-
-Certaines revues donnent à la fin des articles quelques indications sur
-le processus de soumission et de courtes biographies des auteurs.
-
-La commande \cmd{logbook\{}\textit{date réception}
-                     \texttt{\}\{}\textit{date de révision}%
-                     \texttt{\}\{}\textit{rédacteur}\texttt{\}}
-s'utilise après la bibliographie et prend trois arguments fournis par les rédacteurs
-de la revue. Le premier indique la date de réception de la première soumission
-de l'article. Le second donne la date de dernière révision. Le troisième donne
-le prénom et le nom du rédacteur responsable de l'article. Dans le cas de deux rédacteurs,
-on sépare les noms par la commande \cmd{andeditor}.
-Pour adapter cette commande secondaire à des besoins spécifiques,
-comme dans le cas de plusieurs dates de révision, il suffit de faire un <<~copier-coller~>>
-du source lu dans le fichier \textit{article-hermes.cls} et de l'adapter comme
-il convient.
-
-La commande \cmd{biography\{}\textit{Prénom Nom}\texttt{\}\{}\textit{biographie}\texttt{\}} s'utilise
-pour chaque auteur, après la commande \cmd{logbook}.
-Le premier argument donne le prénom et nom de l'auteur et l'argument suivant une courte
-biographie sur 5 lignes environ.
-
-\subsubsection{Annexe pour le service de fabrication~: commande \cmd{publisher}}
-
-Pour la remise finale des articles de revue ou de conférence acceptés, le
-service de fabrication demande aux auteurs la traduction du titre (pour le
-sommaire), une version abrégée du titre courant (normalement déjà placée dans
-l'en-tête des pages impaires) et les coordonnées des auteurs pour les joindre
-si nécessaire. La commande \cmd{publisher} qui se place au début ou à la fin
-de l'article fait apparaitre en dernière page l'annexe demandée, avec un report
-des informations déjà connues comme le titre (version longue et abrégée), les
-noms d'auteurs, les références du logiciel utilisé. Il ne manque que la
-traduction du titre et les coordonnées pour contruire cette page \cftab{tbl:5}.
-
-\section{Commandes spéciales pour le corps de l'article} \label{cmdes-corps}
-
-Toutes les commandes \LaTeX\ sont utilisables comme d'habitude,
-même si leur effet a souvent été redéfini pour se conformer aux consignes d'édition.
-
-Les commandes internes au style \textit{article-hermes.cls} ne sont pas en conflit avec
-les commandes de l'utilisateur, car elles utilisent un signe ``\texttt{@}'' dans leur nom.  Les
-fontes utilisées par ce style sont utilisables dans les articles. Elles ont un nom en
-français de la forme \texttt{FonteTitre}, \texttt{FonteSectionI}\ldots De manière générale, la liste
-des commandes et des fontes utilisables, des compteurs, longueurs, commandes ou
-environnements redéfinis sont indiqués en commentaire, au début du fichier de
-style. Celui-ci est par ailleurs assez fortement commenté et paramétré, et devrait
-donc pouvoir être facilement adapté, même par des auteurs non experts.
-
-Quelques commandes spécifiques supplémentaires ont été définies
-pour répondre à quelques cas spéciaux, comme indiqué ci-après.
-
-\subsection{Listes}
-
-Les consignes d'édition précisent qu'il faut employer des tirets de tailles
-décroissantes pour les labels de listes \cmd{begin\{itemize\}} \ldots
-\cmd{end\{itemize\}}. Trois niveaux de listes sont autorisés, avec trois
-tailles de tirets, comme ceci~: {---}, {--}, {-}. Cependant,
-les tirets larges sont réservés
-aux éléments de premier niveau de listes à trois niveaux~; les éléments
-de premier niveau de listes à un ou deux niveaux commencent avec un tiret
-moyen. Comme il n'est pas facile d'automatiser ce comportement, nous proposons
-deux types d'environnements~:
-\begin{itemize}
-\item les listes à un ou deux niveaux d'emboîtement s'utilisent avec l'environnement
-usuel \texttt{itemize} qui produira des tirets moyens ou courts.
-\item les rares listes à trois niveaux, utilisent
-l'environnement \texttt{ITEMIZE} pour tous les niveaux, ce
-qui produira les trois tailles de labels.
-\end{itemize}
-
-\subsection{Formules mathématiques}
-
-Les formules numérotées s'obtiennent, comme d'habitude, avec les environnements
-comme \texttt{equation}, \texttt{eqnarray} ou \texttt{align} qui ont été
-adaptés pour la numérotation demandée. Nous laissons le choix d'utiliser des
-formules centrées au milieu de ligne (par défaut) ou cadrées à gauche avec un
-retrait, en utilisant l'option standard \texttt{fleqn} \cfsect{options}.
-
-Pour couper des formules sur plusieurs lignes, on peut utiliser le paquetage
-\texttt{amstex}. Si on ne dispose pas de ce logiciel,
-on peut utiliser la commande rustique \cmd{eqncont}
-aux endroits choisis pour les coupures, avec
-l'environnement \texttt{eqnarray}. Celui-ci permet de décider du centrage voulu,
-comme sur les exemples suivants, qui ne veulent rien dire !
-
-Le premier exemple (formule~[\ref{f:1a}]) n'utilise pas de signe \texttt{\&} dans
-\texttt{eqnarray}, ce qui provoque un cadrage à droite de la formule coupée,
-l'ensemble restant centré par défaut ou cadré à gauche (option \texttt{fleqn}).
-
-\begin{eqnarray}
-\label{f:1a}
-x^2 + y^2 + a\sqrt{1-y^2} +\eqncont
-( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-La formule [\ref{f:2}] est coupée en deux lignes centrées, en plaçant les signes
-``\texttt{\&}'' à gauche et à droite de chaque ligne.
-
-\begin{eqnarray}
-\label{f:2}
-& x^2 + y^2
-+ a\sqrt{1-y^2}
-+ ( a + b )^2
-+ \sqrt{ a^2 + 2ab + b^2}
-+ \sum_{i=1}^{n} x_{i} + &
-\eqncont
-& \oint_{0}^{1} f(x)dx
-+ \bigcap_{\phi=1}^{\sum_{i=1}^{n} \alpha_{i}} f^\phi &
-\end{eqnarray}
-
-La formule [\ref{f:3}] est cadrée à gauche,
-en mettant les deux signes ``\texttt{\&}'' au début de chaque ligne.
-
-\begin{eqnarray}
-\label{f:3}
-&& x^2 + y^2 + a\sqrt{1-y^2} + \eqncont
-&& ( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-Enfin, la formule [\ref{f:4}] est cadrée sur le signe $=$
-en mettant les deux signes ``\texttt{\&}'' autour du signe $=$~:
-
-\begin{eqnarray}
-\label{f:4}
-\Delta & = & x^2 + y^2 + a\sqrt{1-y^2} + \eqncont
-       &   & ( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-Cette dernière forme nous paraît la plus recommandable.
-
-\subsection{Remarques, notes et remerciements }
-
-Les remarques, notes et remerciements s'obtiennent respectivement
-par les commandes \cmd{note\{...\}}, \cmd{remark\{...\}} et
-\cmd{acknowledgements\{...\}}, comme sur les exemples suivants
-
-\note{Ceci est un exemple de note obtenue avec la commande \cmd{note\texttt{\{}...\texttt{\}}}.}
-
-\remark{Ceci est obtenu avec la commande \cmd{remark\texttt{\{}...\texttt{\}}}.}
-
-\acknowledgements{Ceci est un exemple de remerciements obtenu avec la commande\\
-\cmd{acknowledgements\texttt{\{}...\texttt{\}}}.  }
-
-\subsection{Maîtrise des coupures de page}
-
-Comme l'indique Leslie Lamport \cite{Lam94}
-dans son manuel de références, il peut être nécessaire de
-<<~tricher~>> en allongeant certaines pages de 1 ou deux lignes et en forçant
-les coupures de pages, pour obtenir les placements et présentations voulues
-dans quelques rares cas problématiques. Les utilisateurs qui connaissent bien
-\LaTeX\ savent qu'il faut alors utiliser les commandes \cmd{enlargethispage} et
-\cmd{pagebreak} avec \cmd{noindent} pour obtenir l'effet voulu.
-
-Un utilisateur non familier pourra utiliser nos commandes
-\cmd{delaynewpage} et \cmd{forcenewpage}. La première
-prend comme argument le nombre de lignes de rallonge nécessaire (1 ou 2) sur la
-page à agrandir. S'il y a des notes de bas de page, elles seront décalées
-d'autant vers le bas. La seconde commande s'utilise à l'endroit de la coupure
-souhaitée. Elle ne provoque pas d'indentation sur le haut de la page suivante.
-
-Si le placement des figures n'est pas celui souhaité, on peut modifier les
-paramètres utilisés dans le fichier de style \textit{article-hermes.cls}. Voir le
-livre <<~The \LaTeX~Companion~>> \cite{GMS94}
-pour plus d'explications.
-
-\subsection{Bibliographie \label{cmdes-biblio}}
-
-La bibliographie s'obtient avec le fichier de style \textit{biblio-hermes.bst}
-qui s'utilise avec Bib\TeX, comme d'habitude par exemple \cite{Kol97}. La seule
-commande à placer pour faire apparaître la bibliographie est
-\cmd{bibliography\{ma-biblio\}}. Le logiciel BiB\TeX, construit le fichier
-\textit{ma-biblio.bbl} qui est automatiquement appelé par \LaTeX\
-(l'environnement \texttt{thebibliography} a été entièrement redéfini). Toutes
-les références bibliographiques de ce document ont été produites avec
-\textit{biblio-hermes.bst}.
-
-La bibliographie donnée dans la section suivante est obtenue par la commande
-standard \cmd{bibliography} appliquée au petit fichier
-\textit{exemple-biblio.bib} de références en format BiB\TeX. Le fichier
-\textit{.bbl} produit par Bib\TeX\ est inséré automatiquement par la commande
-\cmd{bibliography}, juste après le titre de section.
-
-\nocite{*}
-\bibliography{exemple-biblio}
-
-\section{Environnement \LaTeX\ nécessaire et problèmes éventuels d'installation \label{envir}}
-
-\subsection{Environnement nécessaire}
-
-Le fichier \textit{article-hermes.cls} utilise un nombre réduit de paquetages standard
-présents sur toutes les distributions actuelles de \LaTeX~:
-\textit{ifthen} et \textit{babel}. Nous n'utilisons plus le paquetage \textit{french} de
-Bernard Gaulle à cause des problèmes de portabilité qu'il posait.
-
-Comme toutes les distributions de \TeX/\LaTeX\ fournissent maintenant le paquetage
-\textit{babel}
-avec le mode \textit{frenchb} (alias \textit{francais}), mêmes les articles en anglais
-utilisent \textit{babel} pour les césures du résumé et des mots-clefs en français.
-
-Les distributions de \TeX/\LaTeX\ sont maintenant très stables. S'il les auteurs
-rencontrent le moindre problème de fonte ou d'effet différent de celui souhaité,
-ils doivent en premier lieu vérifier qu'ils utilisent une distribution récente.
-
-En France, il existe plusieurs sites miroirs des distributions gratuites
-accessibles sur Internet par ftp, pour différents systèmes (Unix, Windows,
-MacOS...) en particulier~:
-\begin{itemize}
-\item \texttt{ftp://ftp.jussieu.fr/pub/TeX/CTAN/...}
-\item \texttt{ftp://ftp.loria.fr/pub/ctan/...}
-\end{itemize}
-
-\subsection{Problèmes de fontes}
-
-Certaines installations de \LaTeX\ n'étaient pas bien configurées pour les fontes
-\textit{Postscript} comme Times. Un cas fréquent était que le prévisualiseur
-\textit{xdvi}
-n'arrivait pas à visualiser certains caractères correctement.  Aujourd'hui, avec les
-nouvelles distributions, ces problèmes ont disparu.  De plus, avec la rapididité des
-ordinateurs actuels, la prévisualisation des documents avec \textit{xdvi} ne se justifie
-plus~: on a intérêt à prévisualiser le document en format postscript ou pdf, le résultat
-étant plus proche de la version imprimée.
-
-La police à chasse fixe utilisée par défaut est celle de \LaTeX\ (\textit{Computer Modern
-  TypeWriter}) qui est très lisible, esthétique et pas trop large. Elles s'intègre bien
-dans le texte en Times, mais n'existe pas dans toutes les tailles (police non
-vectorielle). Cela peut conduire à des messages d'avertissement sans importance sur
-l'utilisation de tailles très voisines. Si l'on préfère utiliser la police
-\textit{Courier} (vectorielle), il suffit de déplacer le commentaire dans la définition de
-\cmd{ttdefault} dans le fichier de style.
-
-L'encodage des caractères qui est préconisé dans le monde\TeX\ depuis une quinzaine
-d'années est \textit{T1}. Il ne devrait plus il y avoir des environements
-utilisant encore l'ancien encodage (\textit{OLD T1} ou \textit{OT1}).
-Aussi, nous faisons appel à l'encodage \textit{T1} directement dans
-\textit{article-hermes.cls}.
-De même, la saisie des caractères latin ne se fait plus avec les notations
-archaïques du genre \verb|\^{\i}| (pour î), mais en tapant directement le caractère
-latin sur le clavier. Nous avons donc incorporé la commande de saisie
-\verb|\usepackage[latin1]{inputenc}| des caractères latin dans \textit{article-hermes.cls}.
-
-Pour tout problème sérieux posé par les fichiers de style
-\textit{article-hermes.cls} ou \textit{biblio-hermes.bst} les auteurs peuvent
-envoyer un mail à \textit{rr at unice.fr}. Merci de ne pas envoyer de demande
-d'aide liée à un manque de connaissance de \LaTeX. Pour apprendre à utiliser
-\LaTeX on peut, parmi les nombreux ouvrages sur le sujet, lire celui de son
-auteur \cite{Lam94} et \cite{GMS94} pour une utilisation plus experte. Pour
-tout autre problème d'installation, le mieux est de consulter son gourou local
-ou de consulter les sites \TeX\ officiels sur Internet. Les dernières versions
-des fichiers de style \textit{article-hermes.cls} et \textit{biblio-hermes.bst}
-et leurs documentations sont disponibles sur le site
-\texttt{www.hermes-science.com}.
-\begin{quote}
-Bonne chance !
-\end{quote}
-
-\logbook{22/09/1996}{03/03/2005}{Guillaume Laurent}
-
-\begin{flushright}
-{\setlength{\parsep}{2mm} \fbox{\parbox{70mm}{
-\begin{flushright}
-\textsc{Hermès Science Publications}\\ 8 Quai du Marché Neuf - 75004 Paris\\
-Tel : 01-53-10-15-20 Télécopie : 01-53-10-15-21\\ Email :
-hermes at hermes-science.com\\ Serveur Web : http://www.hermes-science.com
-\end{flushright}
-}}}
-\end{flushright}
-
-\end{document}
diff --git a/lib/guii/majecstic08/doc-article-hermes.pdf b/lib/guii/majecstic08/doc-article-hermes.pdf
deleted file mode 100644
index ef5f132..0000000
Binary files a/lib/guii/majecstic08/doc-article-hermes.pdf and /dev/null differ
diff --git a/lib/guii/majecstic08/doc-article-hermes.ps b/lib/guii/majecstic08/doc-article-hermes.ps
deleted file mode 100644
index cbca91c..0000000
--- a/lib/guii/majecstic08/doc-article-hermes.ps
+++ /dev/null
@@ -1,1775 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: doc-article-hermes.dvi
-%%CreationDate: Wed Mar 02 11:36:55 2005
-%%Pages: 15
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentFonts: Times-Bold Times-Italic Times-Roman Times-BoldItalic
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: Dvips doc-article-hermes
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2005.03.02:1136
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: 8r.enc
-% @@psencodingfile@{
-%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
-%   version = "0.6",
-%   date = "1 July 1998",
-%   filename = "8r.enc",
-%   email = "tex-fonts@@tug.org",
-%   docstring = "Encoding for TrueType or Type 1 fonts
-%                to be used with TeX."
-% @}
-% 
-% Idea is to have all the characters normally included in Type 1 fonts
-% available for typesetting. This is effectively the characters in Adobe
-% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
-% 
-% Character code assignments were made as follows:
-% 
-% (1) the Windows ANSI characters are almost all in their Windows ANSI
-% positions, because some Windows users cannot easily reencode the
-% fonts, and it makes no difference on other systems. The only Windows
-% ANSI characters not available are those that make no sense for
-% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
-% (173). quotesingle and grave are moved just because it's such an
-% irritation not having them in TeX positions.
-% 
-% (2) Remaining characters are assigned arbitrarily to the lower part
-% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
-% 
-% (3) Y&Y Lucida Bright includes some extra text characters; in the
-% hopes that other PostScript fonts, perhaps created for public
-% consumption, will include them, they are included starting at 0x12.
-% 
-% (4) Remaining positions left undefined are for use in (hopefully)
-% upward-compatible revisions, if someday more characters are generally
-% available.
-% 
-% (5) hyphen appears twice for compatibility with both 
-% ASCII and Windows.
-% 
-/TeXBase1Encoding [
-% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
-  /.notdef /dotaccent /fi /fl
-  /fraction /hungarumlaut /Lslash /lslash
-  /ogonek /ring /.notdef
-  /breve /minus /.notdef 
-% These are the only two remaining unencoded characters, so may as
-% well include them.
-  /Zcaron /zcaron 
-% 0x10
- /caron /dotlessi 
-% (unusual TeX characters available in, e.g., Lucida Bright)
- /dotlessj /ff /ffi /ffl 
- /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef
- % very contentious; it's so painful not having quoteleft and quoteright
- % at 96 and 145 that we move the things normally found there to here.
- /grave /quotesingle 
-% 0x20 (ASCII begins)
- /space /exclam /quotedbl /numbersign
- /dollar /percent /ampersand /quoteright
- /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-% 0x30
- /zero /one /two /three /four /five /six /seven
- /eight /nine /colon /semicolon /less /equal /greater /question
-% 0x40
- /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
-% 0x50
- /P /Q /R /S /T /U /V /W
- /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-% 0x60
- /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
-% 0x70
- /p /q /r /s /t /u /v /w
- /x /y /z /braceleft /bar /braceright /asciitilde
- /.notdef % rubout; ASCII ends
-% 0x80
- /.notdef /.notdef /quotesinglbase /florin
- /quotedblbase /ellipsis /dagger /daggerdbl
- /circumflex /perthousand /Scaron /guilsinglleft
- /OE /.notdef /.notdef /.notdef
-% 0x90
- /.notdef /.notdef /.notdef /quotedblleft
- /quotedblright /bullet /endash /emdash
- /tilde /trademark /scaron /guilsinglright
- /oe /.notdef /.notdef /Ydieresis
-% 0xA0
- /.notdef % nobreakspace
- /exclamdown /cent /sterling
- /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft
- /logicalnot
- /hyphen % Y&Y (also at 45); Windows' softhyphen
- /registered
- /macron
-% 0xD0
- /degree /plusminus /twosuperior /threesuperior
- /acute /mu /paragraph /periodcentered
- /cedilla /onesuperior /ordmasculine /guillemotright
- /onequarter /onehalf /threequarters /questiondown
-% 0xC0
- /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis
- /Igrave /Iacute /Icircumflex /Idieresis
-% 0xD0
- /Eth /Ntilde /Ograve /Oacute
- /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex
- /Udieresis /Yacute /Thorn /germandbls
-% 0xE0
- /agrave /aacute /acircumflex /atilde
- /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis
- /igrave /iacute /icircumflex /idieresis
-% 0xF0
- /eth /ntilde /ograve /oacute
- /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex
- /udieresis /yacute /thorn /ydieresis
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
-exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
-dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
-ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
-end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
-dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
-roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
-dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
-if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
-def end
-
-%%EndProcSet
-%%BeginProcSet: special.pro
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
-psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
-roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
-moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
-begin/SpecialSave save N gsave normalscale currentpoint TR
- at SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
-CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
-closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
-sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
-}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
-CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
-lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
-/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
-repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
-/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
-currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
-moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
-/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
-1 startangle endangle arc savematrix setmatrix}N end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (doc-article-hermes.dvi)
- at start /Fa 190[42 65[{TeXBase1Encoding ReEncodeFont}1
-58.1154 /Times-Bold rf
-%DVIPSBitmapFont: Fb cmmi6 6 1
-/Fb 1 16 df<EB3FC0EA01FF3807E00048C7FC121E5A127C1278B5FCA200F8C7FC5AA47E
-1278A26C1380EA1F033807FF00EA01FC12167D941A>15 D E
-%EndDVIPSBitmapFont
-/Fc 54[41 111[48 2[48 48 41 37 44 48 37 48 48 59 41 2[22
-48 48 1[41 48 44 44 48 65[{TeXBase1Encoding ReEncodeFont}21
-66.4176 /Times-Roman rf
-%DVIPSBitmapFont: Fd cmr5 5 2
-/Fd 2 62 df<1360EA01E0120F12FF12F11201B3A3387FFF80A2111C7B9B1C>49
-D<B712C0A3CAFCA7B712C0A3220D7C902B>61 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmmi5 5 2
-/Fe 2 111 df<137013F8A213F013E01300A6EA0F80EA1FC0EA31E01261A2EAC3C01203
-EA0780A3EA0F001308EA1E18A213301370EA0FE0EA07800D1D7D9C16>105
-D<380F03F0383F87FC3833DC1EEA63F8EAC3F013E0EA03C0A248485AA3EC7820D80F0013
-6014F015C014F1001EEB7F80000CEB3E001B127D9125>110 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmex7 7 1
-/Ff 1 81 df<B912FC84A2D87F80C8127F6C6CED03FF17006C6C163F6C6CEE0F806C6C16
-076C6C1603F001C06C6C16006C7E6D6C16606D6C1600A26D7E6D7E6D7E6D7E1301806D7E
-6E7E6E7E6E7EA26E7E6E7E14036E5A5D4A5A4A5A4ACAFC141E143E5C5C5C495A495A495A
-49CA1260011E17C05B49160149EE0380000117074848160F4848EE1F0049167F48C9EA03
-FF001EEE7FFE003FB8FC5AB95AA23B3A7B7F46>80 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmsy10 10 2
-/Fg 2 113 df<007FB81280B912C0A26C17803204799641>0 D<F10180F103C01907A2F1
-0F80A2F11F00A2193EA261A261A24E5AA24E5AA24E5AA24E5AA296C7FC60A2183EA260A2
-60A24D5AA24D5AA24D5AA24D5AA24DC8FCA20130153E13F000015EEA07F8000F5E487E00
-794B5AEAE1FE00C04B5AC67E6D4A5AA26E495A133F6E49C9FC131F6E133E130F6E5B1307
-6E1378010314F8A26E485A13016E485A13006E485A147FED8F80143F039FCAFC15DFEC1F
-FEA26E5AA26E5AA26E5AA26E5A5D42547B8345>112 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmex10 10 4
-/Fh 4 113 df<167F923801FFC0923803C0F0923807803892380F007892381F01FC151E
-153EA2157E92387C0070170015FCA44A5AA81403A45DA2141FECFFFE497F010714C0D90F
-F77F90391F87F3F090393F07F1F8013E13F0017C147CA20178143C9039F80FE03EA201F0
-141EA501F8143EA20178143C90397C1FC07CA2013E5C013F13C190391F9FC3F090390FFF
-DFE06DEBFFC0010191C7FC6D5BEC1FF01580A3143FA492C8FCA7143E147EA4147C123800
-FE13FC5CA2495A5CEA7803387007C0383C0F80D80FFEC9FCEA03F82E5C7C7F27>72
-D<BB12FC86A3D87FC0C9001F7FF0007F6C6C17076C6C050113806C6CEF007F1A1F6C6CF0
-0FC06C6C18076C6C1803F201E06C6D17006D6C1860013F19706E18306D7E6D6C18181B00
-6D7E6D7E6D7EA26D7F6E7E6E7EA26E7E6E7E6E7EA26E7E6E7E80826F7E6F7EA26F7E6F7E
-6F5A5EA24B5A5E4BCBFC153E157E5D5D4A5A4A5A14075D4A5A4ACCFC143E147E147C5C49
-48181801031930495A4A18704948186049CC12E0491801017EF003C0017C180749180F48
-48F01F800003197F49EF01FF4848050713004848173F48CA000FB5FC48BA5AA25ABB5AA2
-4D537B7F58>80 D<913801FFE0020F13FC027FEBFF8049B612E04981010F15FC49903800
-3FFED93FF8EB07FFD97FC001007F49486E7E4848C8EA1FE048486F7E48486F7E48486F7E
-49150148486F7E49167E003F177F90CA7EA2481880007E171FA200FE18C048170FB3B3B3
-A40078EF07803A537B7F45>84 D<1B301B781BF8A2F201F0A2F203E0A2F207C0A2F20F80
-A2F21F00A21A3EA262A262A24F5AA24F5AA24F5AA262190FA24FC7FCA2193EA261A261A2
-4E5AA24E5AA24E5AA24E5AA24EC8FCA2183EA260131001305E13F800014C5A1203D80FFC
-4B5A121DD838FE4B5A12F0D8407F4B5A12004DC9FC6D7E173E6D7E5F6D7E5FA26D6C495A
-A26D6C495AA26D6C5C1607A26D6C495AA2027F49CAFCA291383F803EA25EEC1FC05EEC0F
-E0EDE1F0EC07F1EDF3E0A26EB45AA26E5BA26E90CBFCA25D157E157C15384D64788353>
-112 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmr10 10 7
-/Fi 7 62 df<1506150FA24B7EA24B7EA24B7EA2EDDFF0A29138018FF8A291380307FCA2
-91380603FEA291380E01FF140CDA1C007F141802386D7E143002706D7E146002E06D7E5C
-01016E7E5C01036E7E91C7FC496E7E1306010E6E7E130C011C6E7F131801386F7E133001
-706F7E136001E06F7E5B170F484882170748C97F17030006831701488383481880001FB9
-FC4818C0A24818E0A2BA12F0A23C3C7CBB45>1 D<146014E0EB01C0EB0380EB0700130E
-131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67E
-A3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00
-E01460135278BD20>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C
-133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131E
-A2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<
-15301578B3A6007FB812F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41>43
-D<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>
-49 D<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0000E6D7E486D7E486D7E12300070
-6D7E126012FCB4EC7F807FA56CC7FC121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A
-4A5A92C7FC147C5C495A495A495A495A91C8FC011EEB01805B5B49130348481400485A48
-5A000EC75A000FB6FC5A5A485CB6FCA321387CB72A>I<007FB812F8B912FCA26C17F8CC
-FCAE007FB812F8B912FCA26C17F836167B9F41>61 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmr7 7 4
-/Fj 4 62 df<EB3F803801FFF03803E0F83807803C48487E001E7F003E1480A2003C1307
-007C14C0A400FC14E0AE007C14C0A36CEB0F80A36CEB1F006C131E6C6C5A3803E0F86CB4
-5A38003F801B277EA521>48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8A2
-15267BA521>I<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80
-A4127CC7FC15005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA
-0180390300030012065A001FB5FC5A485BB5FCA219267DA521>I<B812E0A3CBFCABB812
-E0A32B117D9633>61 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmmi10 10 6
-/Fk 6 122 df<147E903803FF8090390FC1C38090391F00EFC0017E137F49133F485A48
-48EB1F8012075B000F143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D
-48150CA21403EDF01C16181407007C1538007E010F1330003E131F027B13706C01E113E0
-3A0F83C0F9C03A03FF007F80D800FCEB1F0026267DA42C>97 D<133FEA1FFFA3C67E137E
-A313FE5BA312015BA312035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F0
-01F013F8EBE000485A15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715
-F05AEC0FE0A215C0EC1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7
-FCEA01FC1E3B7CB924>I<163FED1FFFA3ED007F167EA216FEA216FCA21501A216F8A215
-03A216F0A21507A2027E13E0903803FF8790380FC1CF90381F00EF017EEB7FC049133F48
-5A4848131F000715805B000F143F485A1600485A5D127F90C7127EA215FE5A485CA21401
-A248ECF80CA21403161CEDF0181407007C1538007E010F1330003E131F027B13706C01E1
-13E03A0F83C0F9C03A03FF007F80D800FCEB1F00283B7DB92B>100
-D<16F8ED03FEED0F8792381F0F80ED3E3F167F157CA215FC1700161C4A48C7FCA414035D
-A414075DA20107B512F0A39026000FE0C7FC5DA4141F5DA4143F92C8FCA45C147EA514FE
-5CA413015CA4495AA45C1307A25C121E123F387F8F80A200FF90C9FC131E12FEEA7C3CEA
-7878EA1FF0EA07C0294C7CBA29>102 D<903907E001F090391FF807FC9039783E0E0F90
-39E01F1C1FD801C09038383F803A03800FF07F0100EBE0FF5A000E4A1300000C157E021F
-133C001C4AC7FC1218A2C7123FA292C8FCA25CA2147EA214FEA24A130CA20101141C001E
-1518003F5BD87F81143801835C00FF1560010714E03AFE0E7C01C0D87C1C495A2778383E
-0FC7FC391FF00FFC3907C003F029267EA42F>120 D<13F8D803FE1470D8070F14F8000E
-EB8001121C121800381403003015F0EA701F1260013F130700E0010013E012C05BD8007E
-130F16C013FE5B151F000115805BA2153F000315005BA25D157EA315FE5D140100011303
-3800F80790387C1FF8EB3FF9EB0FE1EB00035DA2000E1307D83F805B007F495AA24A5A92
-C7FCEB003E007C5B00705B6C485A381E07C06CB4C8FCEA01FC25367EA429>I
-E
-%EndDVIPSBitmapFont
-/Fl 17[23 4[37 37 7[42 105[37 46 23 32 32 42 42 42 46
-65 23 2[23 46 42 28 37 42 37 42 42 14[55 1[51 2[74 51
-5[55 55 1[55 55 7[28 13[21 4[28 36[46 2[{TeXBase1Encoding ReEncodeFont}
-36 83.022 /Times-BoldItalic rf
-%DVIPSBitmapFont: Fm cmsy7 7 1
-/Fm 1 15 df<137F3801FFC0000713F0380FC1F8381F007C003C131E0038130E0078130F
-00707F00F01480481303A56C13070070140000785B0038130E003C131E001F137C380FC1
-F86CB45A000113C06C6CC7FC19197C9A22>14 D E
-%EndDVIPSBitmapFont
-/Fn 213[37 42[{TeXBase1Encoding ReEncodeFont}1 74.7198
-/Times-Bold rf /Fo 190[36 65[{TeXBase1Encoding ReEncodeFont}1
-49.8132 /Times-Roman rf
-%DVIPSBitmapFont: Fp ectt0900 9 23
-/Fp 23 126 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>46
-D<1538157CA215FC15F8140115F0140315E0140715C0A2140F1580141F15005C143E147E
-147C14FC5C13015C13035C13075C130F5CA2131F91C7FC5B133E137E137C13FC5B12015B
-12035B12075B120F5BA2121F90C8FC5A123E127E127C12FC5AA212701E3A7CB327>I<12
-1EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA1E00
-0A20729F27>58 D<127012F8A27E127C127E123E123F7E7F120FA27F12077F12037F1201
-7F12007F137C137E133E133F7F80130FA280130780130380130180130080147C147E143E
-143F801580140F15C01407A215E0140315F0140115F8140015FC157CA215381E3A7CB327
->92 D<3801FFE0000713F84813FE486D7E81EBC07FEC0FE0380F8007D802007FC71203A2
-EB07FF137F0003B5FC120F5A383FFC03EA7FE0130012FE5AA46C1307007F130FEBC07F6C
-B612C06C15E07E000313F83A007FC03FC023207D9F27>97 D<EB0FFF017F13C048B512E0
-4814F05A380FF807EA1FE0393FC003E0903880008048C8FC127EA212FE5AA67E127EA200
-7F14F0393F8001F813C0381FE003390FF80FF06CB5FC6C14E06C14C06C6C1300EB0FF81D
-207B9F27>99 D<EB0FF8EB3FFE90B51280000314C04814E0390FFC0FF0391FE003F8EBC0
-01D83F8013FC48C7FC127E157E12FEB612FEA415FC00FCC8FC7E127E127F6C143C6D137E
-6C7E01F013FE390FFC07FC6CB5FC000114F86C14F0013F13C0903807FE001F207D9F27>
-101 D<153F90391FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0ED
-C000EB800F48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC0
-90C9FCA27F6CB5FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C04814
-07A46C140F007C1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D9
-0FFCC7FC23337EA027>103 D<EA7FE0487EA3127F1203A9EC3FC09038F1FFF001F77F90
-B57E8114E0EC007F497F5B5BA25BB03A7FFF83FFF8B500C713FCA36C018313F8262E80AD
-27>I<130F497E497EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512
-F0B6FC15F815F07E1D2F7BAE27>I<387FFF80B57EA37EEA000FB3B2007FB512F8B612FC
-A36C14F81E2E7CAD27>108 D<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0F
-FC7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F9
-13E701F813E36C4801C313002920819F27>I<397FE03FC039FFF1FFF001F77F90B57E6C
-80000313E0EC007F497F5B5BA25BB03A7FFF83FFF8B500C713FCA36C018313F82620809F
-27>I<EB1FE0EB7FF83801FFFE487F481480390FF03FC0391FC00FE0393F8007F0EB0003
-4814F8007E1301A248EB00FCA76C1301007E14F8A2007F1303393F8007F0A2391FE01FE0
-390FF03FC06CB512806C14006C5B38007FF8EB1FE01E207C9F27>I<397FE07F8039FFF1
-FFE001F713F890B57E6C800003EBC0FF9138007F8001FCEB1FC049130F16E0491307A216
-F01503A615076D14E0A2150F6DEB1FC06D133F6DEB7F809138C1FF00ECFFFE5D01F75B01
-F313E0D9F07FC7FC91C8FCAC387FFF80B57EA36C5B2431809F27>I<397FFC03FC39FFFE
-0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA2
-91C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>114 D<9038FFF3800007EBFFC012
-1F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF00
-011480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90
-B512C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A3
-6C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C00100
-13001F297EA827>I<397FE007FE486C487EA3007F7F0003EB003FB25DA24A5AEBFC076C
-B612F86C15FCA2013F13BF90390FFC1FF82620809F27>I<3A7FFC0FFF80486C4813C0A3
-6C486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F
-80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FF
-E000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC
-7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>
-I<EC07F8EC3FFC14FF130315F8903807FE00EB0FF05C5CB0131FEB7F80EA3FFFB5C7FC5B
-A27F003F7FEA007FEB1FC0130FB08080EB07FE903803FFF815FC1300143FEC07F81E3A7C
-B327>123 D<EA7F80EAFFF013FC13FF7E00017F38003FC0131F130FB080EB07F8ECFFF0
-6D13FC7FA25B4913F0ECF800EB0FE05CB0131F133F48B45A007F90C7FCB5FC13FC13F0EA
-7F801E3A7CB327>125 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmr9 9 2
-/Fq 2 51 df<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E007FB51280A319
-327AB126>49 D<EB3FC0EBFFF0000313FC380F80FF391E007F80001CEB3FC048EB1FE048
-130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A2140F15E0EC1FC0A2
-EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B485A48481330485A
-48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr ectt1000 10 76
-/Fr 76 234 df<D807801307D81FE0EB0F80151F487E486C133F1600007C5CD8FCFC137E
-EAF87C15FE5D14015DA21403D8FCFC5BEA7CF8007F13075D383FF00FD81FE05BA2380780
-1FC75B143F92C7FCA25C147E14FE5CA213015CA213035C13075CA2130F5C131FEC800FED
-3FC0013FEB7FE0140049EBFFF0017E13F9A2D9FE0113F801FC13F0A2120113F8120313F0
-15F90007010013F05B000F14FF49EB7FE0A20007EC3FC06C48EB0F0025417DB92C>37
-D<EB0FC0EB3FE0497E497E80EA01F8EBF07C147E0003133E13E0A5147E147C9138FC3FF8
-9039F0F87FFCEA01F1EBF3F001F7EB3FF89138E01F009038FFC03F6CEB803EA2EC007E49
-137C485A486C13FC00075CEBFF01D80FDF5B381F9F81383F8F8390380FC3E0387E07E75D
-38FC03F7EB01FF5D6D1410ED007C80A26CEBFF80D87E0113C0D87F03EBE0FC3A3F87F7F1
-F89038FFE3FF6C01C113F06C13806C9038007FC0D801FCEB1F8026357EB32C>I<EA0F80
-EA1FE0EA3FF0127F13F8A213FCA2123F121F120FEA007CA313FC13F8A2120113F01203EA
-07E0A2EA0FC0EA3F80127FEAFF005A12F812700E1D71B22C>I<EB0380497EA600201408
-00F8143E00FE14FE00FF13C1EBC7C7EBE7CF003FB512F8000F14E0000314806C14003800
-7FFCA248B5FC481480000F14E0003F14F839FFE7CFFEEBC7C7EB07C100FE13C000F8143E
-0020140800001400A66D5A1F247AAA2C>42 D<EA0F80EA1FE0EA3FF0EA7FF8A213FCA312
-3F121F120F120013F8A21201EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E17718A
-2C>44 D<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0A5EA
-7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215FC5D
-14015D14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C1307
-5C130F5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F90C9
-FCA25A123E127E127C12FC5AA2127021417BB92C>I<EB03F8EB0FFE90383FFF80497F90
-B57E3901FE0FF03903F803F848486C7EEBE0004848137EA248487FA248C7EA1F80A2003E
-140F007E15C0A3007C140700FC15E0AC6C140F007E15C0A46CEC1F80A36C6CEB3F00A26C
-6C137E6D13FE00075CEBF0016C6C485A3901FE0FF06CB55A6D5B6D5BD90FFEC7FCEB03F8
-23357CB32C>I<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F12
-00B3AE007FB512E0B612F0A36C14E01C3477B32C>I<EB0FF890387FFF8048B512E00007
-804814FC391FF80FFE393FE001FF903880007F48C7EA3F80007E141F00FE15C0150F6C15
-E01507A3127E123CC8FCA2150F16C0151F1680153F16005D15FE4A5A14034A5A4A5A4A5A
-4A5AECFF804948C7FC495A495A495AEB3FE0EB7F8049C8FC485A4848EB03C04848EB07E0
-EA1FE0485A48B6FCB7FCA36C15C023347CB32C>I<EB0FFC90387FFF8048B512E0000714
-F84880391FF807FEEBC0004848137F6D7F1680151FA26C5A6CC7FCC8FC153F16005D15FE
-14014A5AEC1FF890381FFFF0495BA215F86D7F90380007FEEC00FF81ED3F80ED1FC0150F
-A216E01507A2123C127EB4FC150F16C0A248141F007FEC3F806DEB7F006C6C5B391FF807
-FE6CB55A6C5C6C14E0C66C1380D90FFCC7FC23357CB32C>I<EC07F04A7E141F143FA214
-7EA214FCEB01F8A2EB03F0EB07E0A2EB0FC0EB1F80A2EB3F00137EA25B485AA2485A5B12
-07485AA2485A48C7FCA2127E5AB712FC16FEA36C15FCC8EAF800AA91387FFFF091B512F8
-A36E13F027347EB32C>I<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512
-E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4
-123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6C
-B55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>I<EC3FC0903801FFF801077F011F
-7F497F90387FE07F9039FF003F804848137FEA03F8485A5B000FEC3F004848131E4990C7
-FC123F90C9FCA25A127EEB03FE90381FFF80D8FC7F13E000FDB57EB67E9038FE07FC9038
-F001FE9038C0007F49EB3F8090C7121F16C048140F16E01507A3127EA47E150F6D14C000
-1F141F6D1480000F143F6DEB7F003907F801FE3903FE07FC6CB55A6C5C6D5B011F1380D9
-07FCC7FC23357CB32C>I<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC7
-12014A5A4A5A5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495A
-A4495AA5133F91C8FCAA131E23357CB32C>I<EB07FC90383FFF8090B512E0000314F848
-80390FFC07FE391FF001FF9038C0007F4848EB3F8090C7121F4815C0007E140FA56CEC1F
-80A26C6CEB3F006D5B390FF001FE3903FC07F86CB55A6C6C13C0D907FCC7FC90387FFFC0
-48B512F03903FC07F8390FF001FE391FC0007F497F48C7EA1F80007EEC0FC0A248EC07E0
-A7007EEC0FC0A2007F141F6C6CEB3F806C6CEB7F009038F001FF390FFC07FE6CB55A6C5C
-C614E0013F1380D907FCC7FC23357CB32C>I<EB07FCEB3FFF90B512C0488048803907FC
-07F8390FF001FC48486C7ED83F80137E157F48C77E007EEC1F8012FE5AED0FC0A416E0A3
-7E127E007F141F7E6D133F6C6C137F390FF001FF3807FC0F6CB6FC6C14F76C14C7013F13
-0FD90FF813C090C7FCA2151F1680153F1600000F5C486C137E486C13FE4A5A4A5A140790
-38801FF0391FE07FE090B55A6C91C7FC6C5B000113F838007FC023357CB32C>I<121FEA
-3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA7FC0
-EA3F80EA1F000B2470A32C>I<1502ED0F80151F157F15FF913803FE00EC0FFCEC1FF0EC
-7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF
-8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800FF80EC
-7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F150FED0200212A7BAD2C>60
-D<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800
-FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803FE00EC0FFCEC1FF0EC
-7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF
-8090C9FC12FC5A1220212A7BAD2C>62 D<EC7F80903803FFE0010F7F013F7F497F9038FF
-C0FE3901FE007FD803F87F4848EB1F809038E00FCF390FC03FFF48484813C091B5FCEA3F
-01393E03F87F903907F03FE0007EEBE01F397C0FC00FEC8007A2EAFC1F00F8EB0003A900
-FCEB8007D87C0F14C0A2ECC00F3A7E07E01F80003EEBF03F903903F87F00393F01FFFED8
-1F805B6E5A6C6C6C5A3907E00FC09039F00007C06C6CEB0FE0D801FE131F3900FFC0FF6D
-B512C06D1480010FEBFE00010313F89038007FC023337CB22C>64
-D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590383F01F8
-A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A4000715C04913
-0FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>I<007FB512E015F8B612FE6C80
-16C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090
-B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC
-1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F027337FB22C>I<02FF13
-700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F150748
-5A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01
-F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB5
-12006D5B010F5B6D13F00100138025357DB32C>I<007FB5FCB612C015F0816C803907E0
-03FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8A3
-150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91
-C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7E
-A490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C
->I<007FB612F8B712FCA37ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A4
-6E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<903901FC038090390FFF87C04913
-EF017F13FF90B6FC4813073803FC01497E4848137F4848133F49131F121F5B003F140F90
-C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13FCA27E007E6D13F89138000FC0
-A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF01
-1F13CF6DEB0780D901FCC7FC26357DB32C>I<007FB512F8B612FCA36C14F839000FC000
-B3B3A5007FB512F8B612FCA36C14F81E3379B22C>73 D<387FFFE0B57EA36C5BD803F0C8
-FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>76 D<D87FE0EB0FFC486CEB
-1FFEA26D133F007F15FC000F15E001BC137BA4019E13F3A3EB9F01A2018F13E3A21483A2
-018713C314C7A201831383A214EFA201811303A214FFEB80FEA3147C14381400ACD87FF0
-EB1FFC486CEB3FFEA36C48EB1FFC27337EB22C>I<D87FF0EB7FFC486CEBFFFEA27F007F
-EC7FFCD807FEEB07C013DEA213DF13CFA2148013C714C0A213C314E0A213C114F0A213C0
-14F8A2147CA3143EA2141E141FA2140F1587A2140715C7A2140315E71401A215F71400A2
-15FFD87FFC137F487E153FA26C48EB1F8027337EB22C>I<EB7FFF0003B512E0000F14F8
-48804880EBE003EB800048C7127FA2007E80A300FE158048141FB3A86C143FA2007E1500
-A3007F5CA26C6C13FEEBF00790B5FC6C5C6C5C000314E0C66C90C7FC21357BB32C>I<00
-7FB512C0B612F88115FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A615
-0316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57E
-A36C5B25337EB22C>I<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151F
-A26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE140015
-7F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>82
-D<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E147F
-00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFF
-C06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A200781407
-12FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F
-13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC7
-1400B3AF90383FFFFCA2497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C
-496C13C03B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A6D6C48
-5AECE0FF6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>I<D87FFCEB7FFC486C
-EBFFFEA36C48EB7FFCD80FC0EB07E06D130F000715C0A36D131F00031580A36D133F0001
-1500A36D5B0000147EA4017E5BA46D485AA490381F83F0A4010F5B14C7A301075BA214EF
-A201035BA214FFA26D90C7FCA46D5A27347EB22C>I<3A3FFF03FFE0484913F014871407
-6C6D13E03A01F800FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B
-14FF6D5BA26D90C7FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB
-3F83EC03F8EB7F01017E7FEBFE00497F0001147E49137F000380491480151FD87FFEEBFF
-FC6D5AB514FE6C15FC497E27337EB22C>88 D<003FB612C04815E0A4007EC7EA1FC0ED3F
-80A2ED7F00157E15FE4A5A003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2
-495A495AA2495A495AA2495A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B12
-1F485AA248C7FCB7FCA46C15C023337CB22C>90 D<387FFFFCB512FEA314FC00FCC7FCB3
-B3B3B512FC14FEA36C13FC17416FB92C>I<127012F8A27E127C127E123E123F7EA27F12
-0F7F12077F12037F12017F12007F137C137E133EA2133F7F80130F801307801303801301
-80130080147C147E143EA2143F8081140F81140781140381140181140081157CA2157E15
-3E153F811680150FA2ED070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3387F
-FFFEB5FCA36C13FC17417DB92C>I<EB07C0EB1FF0EB7FFC48B5FC000714C0001F14F039
-7FFC7FFC39FFF01FFEEBC007EB0001007CEB007C003014181F0C7AAE2C>I<3801FFF000
-0713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE
-131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB800338
-3FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>97
-D<EA7FF0487EA3127F1201AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138801F
-E091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036D
-EB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F83900F03FC027337F
-B22C>I<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848
-131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE
-03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC003F
-AAEB07F8EB3FFE90B512BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC007E
-80A212FE5AA87E007E5CA2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CECBFFE
-6C143FEB3FFC90390FF01FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E4880
-3907FE03FE390FF800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7FC
-A416C000FCC9FC7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13
-FF000190B512806C1500013F13FC010F13F00101138023247CA32C>I<EC0FF8EC3FFE91
-B5FC4914805B903807FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C5C26
-000FC0C7FCB3A8003FB512F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90391F
-FE3FFE017FB6FC48B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C0001300
-001F8049137EA66D13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99FFEC7
-FCEB87F80180C8FCA37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001FF848
-C7EA03FC007E1400007C157C00FC157E48153EA46C157E007E15FCD87F801303D83FE0EB
-0FF8D81FFCEB7FF06CB612E0000315806C1500D8003F13F8010713C028387EA42C>I<EA
-7FF0487EA3127F1201AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02
-807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<1307
-EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512
-FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA7
-48B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C
-5B5C001F5B000790C7FC1A467CB32C>I<EA7FE0487EA3127F1201AA91381FFFF04A13F8
-A36E13F0913800FE004A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5
-FCA2EC9F80EC0FC001FE7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0FFFC
-B500E113FEA36C01C013FC27337EB22C>I<387FFFE0B57EA37EEA0003B3B3A5007FB612
-80B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF
-13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7F
-FC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01F
-E039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA2
-5BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F13C0
-48B512F048803907FC07FC390FF001FE48486C7E0180133F003F158090C7121F007EEC0F
-C0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C485A
-3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE039FF
-F8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED
-01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138
-E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA3
-2C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF0014848
-7E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F6D13
-FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A1480
-A36E140029367DA32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B39003F7F
-E1ECFF019138FC00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C2624
-7EA32C>I<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0
-007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE00
-78147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F81480
-39701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03
-C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7E
-AD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE
-03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE14
-8314016C15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2
-017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D
-90C7FCA26D5A147C27247EA32C>I<D87FFFEB7FFF6EB5FCB515806C16004A7ED807C0EB
-01F0A66C6C495AA3143E147FA2D801F0495AECFF87A214F7A201F113C700005D9038F9E3
-CFA201FB13EFA3D97BC190C7FC017F13FFA21480A2013F5B90381F007C29247FA32C>I<
-3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC
-87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF809038
-07CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC
-1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113
-FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D
-5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143E
-A2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C
-5A6C5AEA07E027367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF
-004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49
-C8FC4848EB01E04848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15
-FF02071380141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A
-49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F14070200
-130021417BB92C>I<EA7FC0EAFFF813FE6D7E6C7FC67F131FEB07F01303B380EB01FEEC
-FFC06D13FF6E1380141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F
-5BB55A49C8FC13F8EA7FC021417BB92C>125 D<903803FFE0011F13F8017F13FE48B5FC
-48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F6D
-EB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FCEB
-01F88014FF15C0817FEC0FF01403A4141F90387FFFE090B5FC158092C7FCEB7FF021357A
-A32C>231 D<1404143F14FF1303130F137FEBFFFC4813F014806C48C8FC13F890C9FCA7
-EB03FE90381FFFC0017F13F048B57E48803907FE03FE390FF800FFD81FE0EB3F805B4848
-EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC7E127EA2127F6CEC03C06DEB
-07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B512806C1500013F13FC010F13F001
-01138023367CB52C>233 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmmi7 7 5
-/Fs 5 111 df<EB0FE0EB3FF8EBF83E2601E01F13603A03C00F80C038078007D80F0013
-C0001EECC180123E003CECE300007C130315E65A15ECA215F8485C5DA40078130F021D13
-C06C903879F180391E03E0F33A0FFF807F003903FC003C231B7C992B>11
-D<EB0FE0137F3801F000EA03C0485A48C7FC121E123E5AA2387FFF80B5FC00F8C7FCA612
-78A37E6C13C0EA0F033807FF00EA01FC131A7C981C>15 D<1403A21406A45CA45CA49038
-07FF80011F13E090387C30F0D801F0133C3803C060D80780131ED80F00131F48140F003E
-13C0A25AA239F801801FA3151E903803003E153C157C1578D8780613F0EC01E0003CEB03
-C0001EEB0F80390F0C3E003807FFF8000113E0D8000CC7FC5BA45BA45BA220347CA728>
-30 D<130E131F5BA2133E131C90C7FCA7EA03E0487EEA0C78EA187C1230A212605B12C0
-A2EA01F0A3485AA2485AA2EBC180EA0F81A2381F0300A213066C5A131CEA07F06C5A1128
-7DA617>105 D<3907801FC0390FE07FF03918F0E0F83930F1807CEBFB00D860FE133C5B
-5B00C1147C5B1201A248485BA34A5AEA07C01660EC03E0A23A0F8007C0C0A2EDC1809138
-03C300D81F0013C7EC01FE000EEB00F8231B7D9929>110 D E
-%EndDVIPSBitmapFont
-/Ft 154[26 35[42 14[29 29 49[{TeXBase1Encoding ReEncodeFont}4
-58.1154 /Times-Roman rf /Fu 6[42 9[23 23 3[37 37 37 37
-4[37 1[37 36[42 15[42 14[60 4[83 42 1[37 37 24[37 42
-42 60 42 42 23 32 28 42 42 42 42 65 23 42 23 23 42 42
-28 37 42 37 42 37 3[28 1[28 1[60 60 78 60 60 51 46 55
-60 46 60 60 74 51 60 1[28 60 60 46 51 60 55 55 60 76
-4[23 23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 47
-1[28 28 28 5[28 29[46 46 2[{TeXBase1Encoding ReEncodeFont}92
-83.022 /Times-Roman rf /Fv 22[37 37 110[42 2[42 46 28
-32 37 1[46 42 46 69 23 2[23 46 42 1[37 46 37 46 42 8[60
-3[55 4[65 2[55 2[32 3[55 1[60 55 2[42 7[42 42 42 42 42
-42 42 2[21 6[28 39[{TeXBase1Encoding ReEncodeFont}39
-83.022 /Times-Bold rf
-%DVIPSBitmapFont: Fw cmsy6 6 1
-/Fw 1 15 df<EA01FE3807FF804813C0381F03E0383C00F048137800701338A200F0133C
-48131CA56C133C00701338A2007813786C13F0381F03E0380FFFC06C13803801FE001617
-7C9720>14 D E
-%EndDVIPSBitmapFont
-/Fx 22[33 33 5[33 1[33 22[46 13[37 15[37 20[37 28[37
-37 54 37 37 21 29 25 37 37 37 37 58 21 37 21 21 37 37
-25 33 37 33 37 33 8[54 71 54 54 46 42 50 1[42 54 54 66
-46 54 29 25 54 54 42 46 54 50 50 54 6[21 37 37 37 37
-37 37 37 37 37 37 21 19 25 19 1[37 25 25 25 36[42 2[{
-TeXBase1Encoding ReEncodeFont}76 74.7198 /Times-Roman
-rf /Fy 190[30 65[{TeXBase1Encoding ReEncodeFont}1 49.8132
-/Times-Italic rf /Fz 17[21 4[33 33 7[37 36[37 15[37 20[37
-1[42 42 24[29 33 33 50 33 37 21 29 29 37 37 37 37 54
-21 33 21 21 37 37 21 33 37 33 37 37 8[46 2[54 42 37 46
-1[46 2[62 42 1[33 25 54 54 46 46 54 50 46 46 6[25 37
-1[37 37 3[37 3[19 25 19 2[25 25 25 36[37 2[{
-TeXBase1Encoding ReEncodeFont}65 74.7198 /Times-Italic
-rf /FA 54[36 99[26 11[32 1[48 1[42 32 29 36 2[42 1[48
-32 39 5[36 42 39 36 36 6[19 11[15 19 45[{TeXBase1Encoding ReEncodeFont}
-20 58.1154 /Times-Italic rf /FB 22[37 37 37 4[42 1[42
-73[42 24[33 1[33 1[37 37 55 37 42 23 32 32 42 42 42 42
-60 23 37 23 23 42 42 23 37 42 37 42 42 8[51 69 51 60
-46 42 51 1[51 60 55 69 46 2[28 60 60 51 51 60 55 51 51
-76 5[28 42 42 1[42 42 42 42 42 42 42 23 21 28 21 2[28
-28 28 35[42 42 2[{TeXBase1Encoding ReEncodeFont}74 83.022
-/Times-Italic rf /FC 138[55 1[39 44 1[55 50 55 1[28 2[28
-1[50 1[44 55 2[50 8[72 1[72 72 66 55 72 1[61 78 72 1[66
-2[39 2[61 66 72 72 66 72 65[{TeXBase1Encoding ReEncodeFont}29
-99.6264 /Times-Bold rf /FD 134[58 2[58 65 39 45 52 1[65
-58 65 97 32 2[32 65 2[52 65 52 65 58 19[110 23[58 1[58
-58 58 58 1[29 39 3[39 39 39 36[65 2[{TeXBase1Encoding ReEncodeFont}30
-116.231 /Times-Bold rf
-%DVIPSBitmapFont: FE cmmi12 12 1
-/FE 1 16 df<EC07FEEC7FFF903801FFFE903807F800EB1FE0EB3F8049C7FC13FE485A48
-5A1207485A5B121F123F5BA248B512C015E0A20180C7FC12FF90C8FCA65AA2127E127FA2
-7EA27F121F6C7E0007140C6C6C133C6C6C13F03900FC07C090383FFF00EB07F8202C7CAA
-27>15 D E
-%EndDVIPSBitmapFont
-/FF 190[76 65[{TeXBase1Encoding ReEncodeFont}1 104.607
-/Times-Bold rf /FG 22[66 114[75 83 50 58 66 1[83 75 83
-1[42 2[42 3[66 83 66 1[75 8[108 3[100 83 108 4[141 100
-3[116 2[100 18[75 10[50 39[{TeXBase1Encoding ReEncodeFont}25
-149.44 /Times-Bold rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: a4
-a4
-%%EndPaperSize
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 463 869 2835 2 v 463 1231 a FG(R\351alisation)35
-b(d'un)j(article)f(pour)g(les)h(r)m(e)n(vues)g(ou)463
-1410 y(les)f(actes)h(HERMES)f(a)l(v)o(ec)g(L)2064 1379
-y FF(A)2117 1410 y FG(T)2192 1445 y(E)2273 1410 y(X)g(2)2493
-1432 y FE(\017)463 1719 y FD(Mode)28 b(d'emploi)g(des)h(\002chiers)e
-(de)i(style)463 1859 y(article-hermes.cls)e(et)h(biblio-hermes.bst)463
-1998 y(\(v)o(ersion)g(1.2)i(du)e(3)h(mars)g(2005\))463
-2274 y FC(Roger)c(Rousseau)463 2473 y FB(Labor)o(atoir)m(e)19
-b(I3S)g(\(CNRS)i(-)f(UNSA\))463 2573 y(Les)h(Algorithmes)f(-)g(B\342t)g
-(Euclide)g(B)463 2672 y(2000)f(r)l(oute)h(des)g(Lucioles)h(\226)f(B.P)
--11 b(.)19 b(121)463 2772 y(F-06903)f(Sophia)g(Antipolis)i(Cede)n(x)463
-2896 y(Ro)o(g)o(er)-9 b(.Rousseau at unice)o(.fr)p 463 3096
-V 463 3229 a FA(R\311SUM\311.)20 b Fz(Cette)g(notice)i(donne)h(le)e
-(mode)h(d'emploi)f(des)h(\002c)o(hier)o(s)g(de)g(style)f
-(article-hermes.cls)g(et)g(biblio-)463 3328 y(hermes.bst)e(pour)g
-(formater)-8 b(,)18 b(avec)h(le)f(lo)o(giciel)g(L)1735
-3314 y Fy(A)1754 3328 y Fz(T)1784 3345 y(E)1820 3328
-y(X,)f(un)i(article)f(de)h(r)m(e)o(vue)g(ou)f(de)h(conf\351r)m(ence)h
-(\340)f(par)o(a\356tr)m(e)463 3428 y(aux)27 b(\351ditions)f(Herm\350s)h
-(Science)g(Publications.)f(Ce)g(paqueta)o(g)o(e)j(est)c(conforme)j(aux)
-e(\253)h(Consignes)g(aux)463 3527 y(auteur)o(s)f(\273)e(d\351\002nies)i
-(par)f(l'\351diteur)-8 b(.)24 b(Il)g(intr)m(oduit)g(le)h(minimum)f(de)h
-(commandes)h(nouvelles.)f(La)f(ver)o(sion)463 3627 y(L)478
-3613 y Fy(A)497 3627 y Fz(T)527 3644 y(E)562 3627 y(X)f(de)g(cet)h
-(article)f(sert)g(aussi)g(d'e)o(xemple)h(d'utilisation)f(des)h
-(commandes)h(n\351cessair)m(es)f(:)f(le)g(r\351sultat)463
-3727 y(imprim\351)c(permet)g(de)g(v\351ri\002er)h(la)e(conformit\351)i
-(aux)f(consignes.)463 3851 y FA(ABSTRA)n(CT)l(.)f Fz(This)i(paper)i
-(gives)f(the)g(user')m(s)g(guide)g(of)g(article-hermes.cls)g(and)g
-(hermes.bst)g(style)g(\002les,)f(for)463 3951 y(typesetting)j(articles)
-g(with)f(L)1222 3937 y Fy(A)1241 3951 y Fz(T)1271 3967
-y(E)1306 3951 y(X)g(to)h(appear)h(in)e(Herm\350s)h(Science)h
-(Publications)f(journals)h(or)e(pr)m(oceed-)463 4050
-y(ings.)33 b(This)21 b(pac)o(ka)o(g)o(e)j(conforms)f(to)e
-(\223Instructions)i(to)f(author)o(s\224)h(that)f(ar)m(e)g(de\002ned)i
-(by)e(the)g(publisher)-8 b(.)33 b(It)463 4150 y(intr)m(oduces)27
-b(a)g(minimum)f(of)h(ne)o(w)f(commands.)48 b(The)26 b(L)1937
-4136 y Fy(A)1956 4150 y Fz(T)1986 4167 y(E)2021 4150
-y(X)g(ver)o(sion)i(of)e(this)g(article)h(can)g(also)g(be)g(used)463
-4250 y(as)f(an)h(e)o(xample)f(of)g(command)h(utilization)f(:)37
-b(the)26 b(printed)h(r)m(esult)f(allows)g(to)g(verify)g(the)g
-(conformity)h(to)463 4349 y(instructions.)463 4474 y
-FA(MO)n(TS-CL\311S)11 b(:)k Fz(L)827 4460 y Fy(A)846
-4474 y Fz(T)876 4490 y(E)911 4474 y(X,)f(BibT)1124 4490
-y(E)1159 4474 y(X,)g(\002c)o(hier)h(de)f(style)o(,)h(article)f(de)h(r)m
-(e)o(vue)o(,)g(article)f(d'actes)h(de)g(conf\351r)m(ence)o(,)h
-(Herm\350s)463 4573 y(Science)k(Publications,)f(consignes)h(aux)g
-(auteur)o(s.)463 4698 y FA(KEYW)o(ORDS:)j Fz(L)823 4684
-y Fy(A)842 4698 y Fz(T)872 4714 y(E)907 4698 y(X,)g(BibT)1129
-4714 y(E)1165 4698 y(X,)g(style)g(\002le)o(,)i(article)e(of)g(journal,)
-i(article)f(of)f(pr)m(oceedings,)j(Herm\350s)d(Science)463
-4798 y(Publications,)c(instructions)h(to)f(author)o(s.)p
-463 4930 V 463 5393 a Fx(L)-7 b('objet.)23 b(V)-10 b(olume)20
-b(8)f(\226)g(n)1117 5361 y Fw(\016)1153 5393 y Fx(2/2005,)h(pages)g(1)f
-(\340)g(15)p eop
-%%Page: 2 2
-2 1 bop 463 495 a Fx(2)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1249 463 y Fw(\016)1285 495
-y Fx(2/2005)463 753 y Fv(1.)41 b(Intr)o(oduction)581
-952 y Fu(Cette)21 b(notice)f(d\351crit)g(le)h(mode)e(d'emploi)g(des)i
-(\002chiers)f(de)g(style)h(L)2513 937 y Ft(A)2543 952
-y Fu(T)2580 971 y(E)2620 952 y(X)f FB(article-hermes.cls)463
-1052 y Fu(et)33 b FB(biblio-hermes.bst)g Fu(qui)f(serv)o(ent)g(\340)h
-(pr\351parer)e(des)i(articles)g(de)g(re)n(vue)e(ou)i(de)g
-(conf\351rence)463 1151 y(conformes)18 b(aux)i(consignes)f(donn\351es)g
-(par)h(Herm\350s)g(Science)g(Publications)2713 1121 y
-Ft(1)581 1301 y Fu(Pour)e(utiliser)g(ces)h(\002chiers)f(de)h(style,)f
-(il)h(f)o(aut)f(disposer)g(d'une)e(installation)i(de)g(L)2909
-1286 y Ft(A)2939 1301 y Fu(T)2976 1319 y(E)3016 1301
-y(X)h(2)3137 1313 y Fs(\017)3187 1301 y Fu(pas)463 1400
-y(trop)g(ancienne)g(a)n(v)o(ec)h(le)h(paquetage)d FB(babel)h
-Fu(pour)g(la)i(c\351sure)f(des)g(mots)g(fran\347ais)g(ou)f(anglais.)h
-(La)463 1500 y(section)25 b(7)h(page)f(13)g(donne)f(les)i(informations)
-d(sur)j(l'en)m(vironnement)21 b(n\351cessaire)k(et)h(o\371)f(se)i(le)
-463 1600 y(procurer)-5 b(.)581 1749 y(Selon)21 b(l'en)m(vironnement)c
-(utilis\351,)k(l'e)o(x\351cution)e(se)j(fera)f(en)g(tapant)f(des)h
-(commandes)f(ou)g(en)463 1849 y(cliquant)i(des)h(entr\351es)g(de)g
-(menus.)f(Les)h(en)m(vironnements)c(traditionnels)j(n\351cessitent)h
-(de)g(taper)463 1948 y(des)18 b(commandes)e(dans)h(une)g(fen\352tre)g
-(d'un)f(langage)g(de)h(commandes)f(\(shell)i(sous)f(Unix/Linux,)463
-2048 y(shell)h(de)f(Cygwin)g(ou)g(MSDOS)h(sous)g(W)m(indo)n(ws...\).)d
-(Certains)j(en)m(vironnements)c(\(par)j(e)o(x)o(emple)463
-2148 y(MikT)-6 b(eX\))24 b(d\351terminent)e(automatiquement)g(le)j
-(nombre)d(d'e)o(x\351cutions)g(n\351cessaires)i(pour)f(r\351-)463
-2247 y(soudre)31 b(toutes)h(les)h(r\351f\351rences)e(\(num\351ros)f(de)
-j(\002gures,)e(de)h(pages,)g(de)g(sections,)g(bibliogra-)463
-2347 y(phie...\).)i(D'autres)h(en)m(vironnements)d(demandent)h(\340)j
-(l'utilisateur)f(de)g(lancer)g(lui-m\352me)g(le)463 2446
-y(nombre)26 b(n\351cessaire)i(d'e)o(x\351cutions)e(de)i(L)1695
-2431 y Ft(A)1725 2446 y Fu(T)1762 2465 y(E)1802 2446
-y(X.)g(Si)h(v)n(ous)f(trouv)o(ez)e(des)j(r\351f\351rences)d(non)i
-(r\351so-)463 2546 y(lues)21 b(qui)f(apparaissent)f(par)h(des)13
-b Fv(?)h(?)p Fu(,)20 b(c'est)h(qu'il)e(manque)g(au)h(moins)g(une)g(e)o
-(x\351cution.)e(Cela)j(est)463 2646 y(parfois)e(indiqu\351)g(aussi)i
-(par)f(un)f(message)h(\340)h(l'\351cran)e(et)i(dans)f(un)g(\002chier)g
-(de)g FB(lo)o(g)p Fu(.)581 2795 y(Comme)g(il)h(e)o(xiste)f(maintenant)f
-(de)h(nombreux)e(en)m(vironnements)f(de)j(L)2660 2780
-y Ft(A)2690 2795 y Fu(T)2727 2814 y(E)2767 2795 y(X,)g(nous)g(ne)g
-(pou-)463 2895 y(v)n(ons)25 b(pas)g(d\351crire)e(de)i(mani\350re)f
-(pr\351cise)g(ce)h(qu'il)g(f)o(aut)f(f)o(aire)h(dans)f(chaque)g(cas.)h
-(Cette)h(notice)463 2994 y(d\351crit)e(les)h(t\342ches)f(\340)h(ef)n
-(fectuer)d(dans)i(un)g(en)m(vironnement)c(traditionnel)j(de)h(type)g
-(Unix,)f(Linux)463 3094 y(ou)h(W)m(indo)n(ws)f(a)n(v)o(ec)h(MikT)-6
-b(eX.)23 b(Le)h(lecteur)g(pourra)e(normalement)f(en)j(d\351duire)f(f)o
-(acilement)g(ce)463 3194 y(qu'il)d(con)m(vient)e(de)i(f)o(aire)g(dans)g
-(son)g(propre)f(en)m(vironnement.)581 3343 y(T)-7 b(outes)16
-b(les)g(commandes)d(standard)i(du)g(syst\350me)g(L)2038
-3328 y Ft(A)2068 3343 y Fu(T)2105 3362 y(E)2145 3343
-y(X)h(sont)f(utilisables.)h(Certaines)g(ont)f(\351t\351)463
-3443 y(red\351\002nies)h(et)g(nous)g(a)n(v)n(ons)g(ajout\351)g
-(quelques)f(commandes)f(suppl\351mentaires)g(qui)i(sont)g(d\351crites)
-463 3542 y(dans)21 b(cette)h(notice.)f(La)g(section)h(2)f(donne)f(les)i
-(options)f(de)g(la)h(commande)e Fr(\\documentclass)p
-Fu(.)463 3642 y(La)29 b(section)g(3)g(pr\351sente)f(les)h(commandes)e
-(principales)h(pour)g(construire)f(la)j(premi\350re)d(page.)463
-3742 y(Elles)20 b(sont)f(compl\351t\351es)f(a)n(v)o(ec)h(les)h
-(commandes)d(de)i(la)g(section)g(4)g(pour)f(construire)g(la)h
-(signature)463 3841 y(\351v)o(entuelle)27 b(de)h(l'article,)g(les)h
-(en-t\352tes)f(de)g(page,)f(et)i(toutes)f(les)h(informations)e
-(n\351cessaires)h(\340)463 3941 y(la)h(remise)g(\002nale)g(d'un)f
-(article)h(accept\351.)f(La)h(section)g(5)g(donne)f(les)h(rares)g
-(commandes)e(sp\351-)463 4040 y(ci\002ques)33 b(pour)f(le)i(corps)e(du)
-h(te)o(xte,)g(pour)e(certaines)i(listes,)h(formules)e
-(math\351matiques,)f(re-)463 4140 y(marques,)19 b(notes,)h
-(remerciements...)e(La)j(bibliographie)d(s'obtient,)h(comme)h(sur)h
-(l'e)o(x)o(emple)d(de)463 4240 y(la)26 b(section)e(6)i(a)n(v)o(ec)e
-(les)i(commandes)e(standard)f(L)1919 4225 y Ft(A)1949
-4240 y Fu(T)1986 4258 y(E)2026 4240 y(X)j(et)f(le)h(\002chier)f(de)g
-(style)g FB(hermes.bst)i Fu(qui)463 4339 y(doit)h(\352tre)g
-(accessible.)g(En\002n,)g(la)h(section)f(7)g(pr\351cise)g(l'en)m
-(vironnement)c(L)2672 4324 y Ft(A)2702 4339 y Fu(T)2739
-4358 y(E)2779 4339 y(X)29 b(n\351cessaire)f(et)463 4439
-y(discute)20 b(des)g(probl\350mes)f(\351v)o(entuels)g(d'installation.)p
-463 4531 591 3 v 463 4633 a Fq(1)p Fx(.)g(Disponibles)g(sur)g(Internet)
-g(\340)g Fp(http)40 b(://www.revuesonline.com)p Fx(.)p
-eop
-%%Page: 3 3
-3 2 bop 2058 490 a Fx(Mode)20 b(d'emploi)f(de)g Fz(article-hermes.cls)
-95 b Fx(3)463 753 y Fv(2.)41 b(Options)20 b(g\351n\351rales)g(de)g
-(style)581 952 y Fu(Ces)h(options)f(se)h(placent)e(dans)h(la)h
-(commande)671 1097 y Fr(\\documentclass[)o(op)o(t1)o(,op)o(t2)o(...)o
-(]{)o(ar)o(tic)o(le)o(-h)o(erm)o(es)o(})p Fu(.)581 1241
-y(Elles)g(permettent)e(d'adapter)f(le)j(\002chier)f(de)g(style)g
-FB(article-hermes.cls)g Fu(aux)g(cas)h(sui)n(v)n(ants)e(:)581
-1390 y(\226)k FB(english)28 b Fu(:)g(indique)f(que)g(l'article)h(est)h
-(\351crit)f(en)g(anglais.)f(P)o(ar)h(d\351f)o(aut,)f(c'est)h(le)h
-(fran\347ais)463 1490 y(qui)20 b(est)h(choisi.)f(Le)g(choix)g(de)g(la)g
-(langue)g(d'un)f(article)h(in\003ue)g(sur)g(la)h(pr\351sentation)e(de)h
-(l'article,)463 1590 y(la)j(traduction)e(de)h(certaines)g(mots)h(\(par)
-f(e)o(x)o(emple)f(T)-7 b(able)22 b FB(vs)i Fu(T)-7 b(ableau\))21
-b(et)i(sur)g(l'algorithme)d(de)463 1689 y(c\351sure.)e(Il)h(est)h
-(cependant)d(possible)h(d'incorporer)d(des)k(citations)g(dans)f(une)h
-(autre)f(langue)f(dans)463 1789 y(le)28 b(corps)f(de)g(l'article,)g(en)
-g(utilisant)h(la)f(commande)f Fr(\\french)f Fu(ou)i Fr(\\english)p
-Fu(,)d(pour)i(acti)n(v)o(er)463 1889 y(localement)19
-b(l'algorithme)f(de)i(c\351sure)g(ad\351quat)1871 1858
-y Ft(2)1903 1889 y Fu(.)581 2013 y(\226)j FB(\003eqn)31
-b Fu(:)i(cadre)e(les)i(formules)e(math\351matiques)f(\340)i(gauche)f
-(d'un)f(retrait)i(de)g(1)g(cm.)g(P)o(ar)463 2113 y(d\351f)o(aut,)19
-b(les)i(formules)e(sont)h(centr\351es.)581 2237 y(\226)j
-FB(cr)l(opmarks)f Fu(:)g(f)o(ait)g(appara\356tre)f(les)h(limites)h(de)e
-(page)g(et)i(de)e(corps)g(du)h(te)o(xte.)f(Cette)h(option)463
-2337 y(fonctionne)g(a)n(v)o(ec)i(du)g(papier)f FB(A4)h
-Fu(ou)g FB(USLETTER)p Fu(.)g(En)g(phase)f(de)i(mise)f(au)g(point)g
-(\002nale,)g(cela)463 2437 y(permet)d(de)g(v)n(oir)h(du)f(premier)f
-(coup)h(d'\234il)h(d'\351v)o(entuels)d(d\351f)o(auts)i(de)h
-(d\351bordements)d(en)j(mar)o(ge)463 2536 y(droite)c(ou)g(de)g
-(remplissage)g(des)h(pages.)e(Certes,)i(L)1922 2521 y
-Ft(A)1952 2536 y Fu(T)1989 2555 y(E)2029 2536 y(X)g(indique)e(tous)i
-(ces)g(d\351f)o(auts,)e(mais)i(beau-)463 2636 y(coup)k(sont)i
-(insigni\002ants,)e(\340)i(peine)f(visibles.)g(Le)g(trac\351)h(des)f
-(cadres)g(permet)f(d'appr\351cier)f(plus)463 2735 y(concr\350tement)h
-(l'ampleur)i(des)g(probl\350mes)g(\351v)o(entuels)f(et)i(de)g(les)g
-(corriger)f(\340)h(la)g(main)f(par)g(les)463 2835 y(commandes)18
-b(L)901 2820 y Ft(A)931 2835 y Fu(T)968 2854 y(E)1008
-2835 y(X)j FB(adhoc)p Fu(,)d(comme)h(\223)p Fr(\\-)p
-Fu(\224)h(et)h(autres.)581 2960 y(On)30 b(peut)g(aussi,)h
-(ind\351pendamment)c(de)j(l'option)f FB(cr)l(opmarks)p
-Fu(,)h(f)o(aire)g(appara\356tre)f(ou)h(dis-)463 3059
-y(para\356tre)36 b(ces)h(cadres)f(sur)g(la)h(page)f(en)h(cours,)e(a)n
-(v)o(ec)i(les)g(commandes)e Fr(\\CropMarksOn)d Fu(et)463
-3159 y Fr(\\CropMarksOff)p Fu(,)15 b(comme)k(utilis\351)i(pour)e
-(l'anne)o(x)o(e.)581 3283 y(\226)k FB(empty)g Fu(:)g(pour)e(supprimer)g
-(les)j(en-t\352tes)e(et)h(la)g(signature)f(de)h(l'article,)f(lors)h(de)
-f(la)h(remise)463 3383 y(\002nale)30 b(lorsqu'on)e(ne)i(dispose)g(pas)g
-(de)g(toutes)g(les)h(informations)d(n\351cessaires)i(ou)f(que)h(c'est)
-463 3483 y(demand\351)21 b(par)i(le)g(service)f(de)h(f)o(abrication.)e
-(Pour)h(\351viter)h(de)g(num\351roter)d(les)k(pages)e(au)h(crayon,)463
-3582 y(les)h(num\351ros)e(de)i(page)f(apparaissent)f(tout)i(en)f(bas,)h
-(en)f(dehors)f(des)i(dimensions)f(de)g(page)g(des)463
-3682 y(articles.)581 3806 y(\226)g FB(no\002r)o(stpa)o(g)o(ebr)m(eak)c
-Fu(:)h(pour)e(supprimer)g(le)i(saut)f(de)h(page)e(de)i(la)g
-(premi\350re)e(page.)g(L)-8 b('emploi)463 3906 y(de)20
-b(cette)h(option)e(est)i(r\351serv\351)e(\340)i(des)f(cas)h
-(sp\351ciaux,)e(et)i(doit)e(se)i(f)o(aire)f(en)h(accord)e(a)n(v)o(ec)g
-(l'\351diteur)-5 b(.)463 4205 y Fv(3.)41 b(Construction)19
-b(de)i(la)f(pr)o(emi\350r)o(e)g(page)581 4404 y Fu(La)25
-b(premi\350re)f(page)g(de)h(l'article)g(s'obtient)f(a)n(v)o(ec)h(un)g
-(proc\351d\351)e(v)n(oisin)i(de)g(celui)g(utilis\351)g(en)463
-4504 y(L)484 4489 y Ft(A)514 4504 y Fu(T)551 4522 y(E)591
-4504 y(X)31 b(standard)f(a)n(v)o(ec)g Fr(\\maketitle)p
-Fu(.)d(On)k(commence)e(par)i(d\351\002nir)f(les)i(dif)n(f\351rents)d
-(champs)p 463 4597 591 3 v 463 4697 a Fq(2)p Fx(.)19
-b(L)-7 b('utilisation)27 b(d'autres)g(langues)i(comme)f(l'allemand)g
-(ou)g(l'espagnol)g(est)f(\351galement)h(possible)g(par)463
-4787 y(l'emploi)20 b(de)g(la)f(commande)j(L)1266 4772
-y Fo(A)1291 4787 y Fx(T)1325 4804 y(E)1360 4787 y(X)e
-Fp(\\selectlanguage{languagename})p Fx(,)25 b(mais)20
-b(aux)g(risques)h(et)e(p\351-)463 4877 y(rils)h(de)i(l'utilisateur)l(.)
-d(Certains)i(sous-paquetages)j(de)d(langages)h(\(comme)g(frenchb\))f
-(font)h(en)f(ef)n(fet)g(beau-)463 4966 y(coup)k(plus)f(que)g(de)g
-(changer)h(l'algorithme)f(de)g(c\351sure.)g(Dans)g(ce)g(cas,)g(il)f(f)o
-(audra)h(acti)n(v)o(er)g(la)g(commande)463 5056 y Fp(\\initialisation)
-30 b Fx(juste)e(apr\350s)g(l'appel)f(\340)h Fp(\\selectlanguage)i
-Fx(pour)e(r\351tablir)f(la)g(pr\351sentation)i(du)463
-5146 y(style)19 b(Hermes.)p eop
-%%Page: 4 4
-4 3 bop 463 495 a Fx(4)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1249 463 y Fw(\016)1285 495
-y Fx(2/2005)463 753 y Fu(n\351cessaires)40 b(\340)h(la)g(premi\350re)f
-(page)f(a)n(v)o(ec)i(les)g(commandes)e(indiqu\351es)g(sur)i(le)g
-(tableau)e(1.)463 852 y(Celles-ci)28 b(peuv)o(ent)e(s'utiliser)i(dans)f
-(n'importe)f(quel)h(ordre,)f(a)n(v)n(ant)i(ou)f(apr\350s)g(la)h
-(commande)463 952 y Fr(\\begin{document})o Fu(.)e(Il)31
-b(est)h(cependant)d(recommand\351)g(d'utiliser)h(ces)i(commandes)d
-(dans)463 1052 y(l'ordre)23 b(du)i(tableau)f(1.)g(P)o(ar)h(d\351f)o
-(aut)f(ces)h(champs)f(contiennent)f(un)h(petit)h(te)o(xte)g(qui)f
-(indique)g(la)463 1151 y(commande)18 b(\340)j(utiliser)m(,)e(en)i(cas)f
-(d'oubli.)p 463 1266 2835 4 v 461 1466 4 200 v 510 1336
-a Fr(\\title[)e FB(titr)m(e)j(abr\351g\351)g Fr(]{)f
-FB(titr)m(e)h Fr(})p 1642 1466 V 138 w Fu(T)m(itre)f(de)g(l'article.)f
-(Si)i(n\351cessaire,)e(utiliser)h Fr(\\\\)f Fu(pour)1691
-1436 y(couper)g(la)i(ligne.)p 3296 1466 V 461 1665 V
-510 1535 a Fr(\\subtitle{)c FB(sous-titr)m(e)j Fr(})p
-1642 1665 V 349 w Fu(Sous-titre)36 b(\351v)o(entuel.)g(Si)h
-(n\351cessaire,)f(utiliser)h Fr(\\\\)1691 1635 y Fu(pour)19
-b(couper)g(la)i(ligne.)p 3296 1665 V 463 1668 2835 4
-v 461 1867 4 200 v 510 1738 a Fr(\\author{)d FB(auteur\(s\))h
-Fr(})p 1642 1867 V 442 w Fu(Pr\351nom)25 b(et)i(Nom)e(de)h(chaque)f
-(auteur)m(,)f(s\351par\351s)i(par)1691 1837 y(un)20 b(tiret)h(long.)p
-3296 1867 V 461 1967 4 100 v 510 1937 a Fr(\\andauthor)p
-1642 1967 V 741 w Fu(T)m(iret)g(long)e(entre)h(deux)f(noms)g
-(d'auteurs.)p 3296 1967 V 463 1970 2835 4 v 461 2468
-4 499 v 510 2040 a Fr(\\address{)e FB(adr)m(esse\(s\))j
-Fr(})p 1642 2468 V 365 w Fu(Adresse)j(du)e(ou)h(des)h(auteurs,)e(sur)h
-(quelques)f(lignes)1691 2140 y(coup\351es)26 b(par)g
-Fr(\\\\)p Fu(.)g(Mettre)h(l'Email)f(\340)i(la)f(\002n,)f(\340)i(une)
-1691 2239 y(distance)41 b(de)g(3)h(pts.)f(Dans)h(le)g(cas)f(de)h
-(plusieurs)1691 2339 y(adresses,)31 b(s\351parer)g(celles-ci)g(de)g(6)h
-(pts)f(et)h(inde)o(x)o(er)1691 2439 y(les)21 b(auteurs)f(et)h(adresses)
-f(par)2570 2418 y Fx(*)2641 2439 y Fu(ou)2744 2418 y
-Fx(**)2832 2439 y Fu(.)12 b(.)g(.)g(.)p 3296 2468 V 463
-2472 2835 4 v 461 2571 4 100 v 510 2541 a Fr(\\resume{)18
-b FB(r\351sum\351)j Fr(})p 1642 2571 V 506 w Fu(R\351sum\351)g(en)f
-(fran\347ais)p 3296 2571 V 461 2671 V 510 2641 a Fr(\\abstract{)d
-FB(abstr)o(act)k Fr(})p 1642 2671 V 387 w Fu(R\351sum\351)g(en)f
-(anglais)p 3296 2671 V 461 2771 V 510 2741 a Fr(\\motscles{)d
-FB(mots-cl\351s)j Fr(})p 1642 2771 V 346 w Fu(Mots-cl\351s)h(en)f
-(fran\347ais)p 3296 2771 V 461 2870 V 510 2840 a Fr(\\keywords{)d
-FB(k)o(e)n(ywor)m(ds)j Fr(})p 1642 2870 V 352 w Fu(Mots-cl\351s)h(en)f
-(anglais)p 3296 2870 V 463 2874 2835 4 v 461 3073 4 200
-v 510 2943 a Fr(\\maketitlepage)p 1642 3073 V 565 w Fu(Plac\351e)j
-(apr\350s)f(les)h(commandes)d(pr\351c\351dentes,)g(pour)1691
-3043 y(f)o(aire)g(appara\356tre)f(la)i(premi\350re)e(page.)p
-3296 3073 V 463 3076 2835 4 v 463 3241 a Fv(T)-8 b(ableau)21
-b(1.)j FB(Commandes)19 b(obligatoir)m(es)g(\340)h(utiliser)h(pour)f(la)
-g(pr)m(emi\350r)m(e)h(pa)o(g)o(e)581 3446 y Fu(La)26
-b(commande)d Fr(\\maketitlepage)d Fu(\(alias)26 b Fr(\\maketitle)p
-Fu(\))c(construit)j(la)h(premi\350re)e(page)463 3545
-y(et)f(r\351alise)g(les)g(ultimes)g(initialisations.)f(Elle)h
-(s'utilise)g(obligatoirement)d(apr\350s)i(la)h(commande)463
-3645 y Fr(\\begin{document})g Fu(et)31 b(apr\350s)e(les)i(commandes)c
-(pr\351c\351dentes)h(de)i(d\351\002nition)f(de)g(champs.)463
-3744 y(Ainsi,)f(la)g(commande)d Fr(\\maketitlepage)p
-Fu(,)d(plac\351e)27 b(juste)h(apr\350s)f Fr(\\begin{document})p
-Fu(,)21 b(af-)463 3844 y(\002che)f(un)g(bref)f(mode)h(d'emploi)e(des)j
-(commandes)d(de)i(premi\350re)f(page.)581 3993 y(Pour)27
-b(le)g(titre)h(et)f(le)h(sous-titre)f(\351v)o(entuel,)e(les)j(coupures)
-e(\351v)o(entuelles)g(des)h(lignes)g(se)h(font)463 4093
-y(souv)o(ent)18 b(de)h(mani\350re)f(e)o(xplicite,)g(a)n(v)o(ec)h(la)h
-(commande)d Fr(\\\\)h Fu(usuelle,)h(sans)h(indication)e(d'espace-)463
-4193 y(ment)j(v)o(ertical.)f(La)i(commande)d Fr(\\title)g
-Fu(est)j(aussi)g(utilis\351e)g(pour)e(construire)f(le)j(titre)g
-(courant)463 4292 y(dans)i(l'en-t\352te)f(des)h(pages)g(impaires.)f(Si)
-i(le)g(titre)f(est)h(assez)g(court,)e(il)h(est)h(directement)e
-(utilis\351)463 4392 y(pour)15 b(l'en-t\352te.)g(Sinon,)g(il)h(f)o(aut)
-g(fournir)e(un)i(titre)g(abr\351g\351,)f(en)h(option)e(de)i(la)h
-(commande)c Fr(\\title)p Fu(.)463 4492 y(Dans)18 b(tous)f(les)h(cas,)g
-(la)g(longueur)d(du)i(titre)g(utilis\351)h(pour)e(l'en-t\352te)h(ne)g
-(doit)g(pas)h(d\351passer)f(55)f(mm)463 4591 y(\(en)m(viron)21
-b(40)h(caract\350res,)g(espaces)i(comprises,)e(en)h(corps)f(9\).)h(En)g
-(cas)g(de)g(d\351passement,)f(c'est)463 4691 y(signal\351)e(par)g(une)f
-(erreur)g(L)1226 4676 y Ft(A)1256 4691 y Fu(T)1293 4710
-y(E)1333 4691 y(X)i(qu'on)d(peut)i(ignorer)e(en)i(tapant)g(sur)g(la)h
-(touche)e Fr(<return>)p Fu(.)p eop
-%%Page: 5 5
-5 4 bop 2058 490 a Fx(Mode)20 b(d'emploi)f(de)g Fz(article-hermes.cls)
-95 b Fx(5)463 753 y Fu(Ex)o(emple)19 b(:)671 897 y Fr
-(\\title[D\351marche)37 b(pour)42 b(enseigner)d(la)k(compilation]\045)
-932 997 y({D\351marche)d(de)i(projet)g(pour)f(enseigner)f(la)j
-(compilation})581 1141 y Fu(Dans)27 b(le)g(cas)g(de)f(plusieurs)g
-(auteurs,)f(il)j(f)o(aut)e(utiliser)g(la)h(commande)e
-Fr(\\andauthor)d Fu(pour)463 1241 y(f)o(aire)f(appara\356tre)f(le)i
-(tiret)g(de)g(s\351paration.)e(Les)i(ast\351risques)f(de)h(ren)m(v)n
-(oi)e(aux)h(adresses)h(pourront)463 1341 y(utiliser)e(la)h(commande)d
-Fr(\\fup{*})p Fu(,)g Fr(\\fup{**})p Fu(.)12 b(.)g(.)g(Ex)o(emple)k(:)
-671 1485 y Fr(\\author{Paul)38 b(Dupond\\fup{*})g(\\andauthor)h(Pierre)
-i(Durand\\fup{**}})581 1630 y Fu(donne)19 b(le)h(r\351sultat)h(sui)n(v)
-n(ant)e(:)671 1774 y FC(P)o(aul)24 b(Dupond)1230 1749
-y Fn(*)1307 1774 y Fu(\227)c FC(Pierr)n(e)26 b(Durand)2030
-1749 y Fn(**)581 1918 y Fu(L)-8 b('adresse)34 b(\(\351v)o(entuellement)
-e(plusieurs\))h(est)j(donn\351e)c(en)j(ar)o(gument)d(de)i(la)h
-(commande)463 2018 y Fr(\\address)16 b Fu(sur)j(quelques)f(lignes.)h(L)
--8 b('adresse)18 b FB(Email)h Fu(sera)h(plac\351e)e(sur)h(la)h
-(derni\350re)e(ligne)g(\340)i(une)463 2118 y(distance)j(de)g(3)h(pts)f
-(de)h(la)f(derni\350re)f(ligne)h(d'adresse.)f(Dans)i(le)f(cas)h
-(d'adresses)f(\351lectroniques)463 2217 y(de)d(m\352me)g(domaine,)e(on)
-i(mettra)g(celui-ci)g(en)g(f)o(acteur)-5 b(.)19 b(Ex)o(emple)g(:)671
-2362 y Fr(\\address{)671 2461 y(Laboratoire)38 b(d'Informatique)g(de)43
-b(Besan\347on\\\\)671 2561 y(Universit\351)c(de)k(Franche-comt\351\\\\)
-671 2661 y(16,)f(route)f(de)i(Gray\\\\)671 2760 y(25)f(030)h
-(Besan\347on)d(cedex\\\\[3pt])671 2860 y(\\{chatonnay,jul)o(li)o(an)o
-(d,l)o(as)o(all)o(e\\)o(}@)o(lib)o(.u)o(ni)o(v-f)o(co)o(mt)o(e.f)o(r)
-671 2960 y(})581 3104 y Fu(produira)18 b(l'ef)n(fet)i(sui)n(v)n(ant)f
-(:)671 3248 y FB(Labor)o(atoir)m(e)f(d'Informatique)g(de)i(Besan\347on)
-671 3348 y(Univer)o(sit\351)g(de)g(F)-5 b(r)o(anc)o(he-comt\351)671
-3448 y(16,)19 b(r)l(oute)h(de)g(Gr)o(ay)671 3547 y(25)f(030)h
-(Besan\347on)e(cede)n(x)671 3672 y({c)o(hatonnay)-5 b
-(,julliand,lasalle}@lib)m(.u)o(niv-)o(fcomte)n(.fr)581
-3816 y Fu(Si)25 b(les)g(auteurs)e(ont)g(des)i(adresses)f(dif)n
-(f\351rentes,)e(elles)j(seront)e(s\351par\351es)h(d'un)e(espace)i(de)g
-(6)463 3916 y(pts)d(\(v)n(oir)e(l'e)o(x)o(emple)f(de)j(la)f(\002n)h(de)
-f(l'anne)o(x)o(e\).)581 4065 y(Les)k(commandes)d Fr(\\resume)p
-Fu(,)f Fr(\\abstract)p Fu(,)g Fr(\\motscles)p Fu(,)f
-Fr(\\keywords)p Fu(,)h(s'utilisent)j(cha-)463 4165 y(cune)d(a)n(v)o(ec)
-g(un)h(ar)o(gument)d(qui)i(d\351\002nit)h(respecti)n(v)o(ement)d(le)k
-(r\351sum\351)e(en)g(fran\347ais,)g(le)h(r\351sum\351)f(en)463
-4265 y(anglais,)j(les)g(mots-cl\351s)g(en)g(fran\347ais)f(et)i(les)g
-(mots-cl\351s)e(en)h(anglais.)g(Les)g(r\351sum\351s)g(ne)g(doi)n(v)o
-(ent)463 4364 y(pas)30 b(d\351passer)f(une)g(dizaine)g(de)h(lignes)f
-(et)h(les)h(mots-cl\351s)e(seront)g(donn\351s)g(sur)g(une)g(ligne)h(ou)
-463 4464 y(deux.)e(Pour)g(les)h(articles)g(en)g(fran\347ais,)f(ces)h
-(rubriques)e(sont)i(imprim\351es)f(dans)g(l'ordre)g(\253)g(r\351-)463
-4564 y(sum\351,)19 b(abstract,)g(mots-cl\351s,)f(k)o(e)o(yw)o(ords)g
-(\273.)h(Pour)g(des)g(articles)h(en)f(anglais)g(\(option)f
-FB(english)p Fu(,)g FB(cf)o(.)463 4663 y Fu(section)25
-b(2\))h(elles)g(sont)g(plac\351es)g(dans)f(l'ordre)f(\253)i(abstract,)f
-(r\351sum\351,)g(k)o(e)o(yw)o(ords,)f(mots-cl\351s)h(\273.)463
-4763 y(La)c(coupure)f(des)h(mots)h(est)g(trait\351e)f(automatiquement,)
-d(de)j(f)o(a\347on)g(dif)n(f\351rente)e(pour)h(les)i(parties)463
-4862 y(en)e(fran\347ais)g(et)g(en)g(anglais.)p eop
-%%Page: 6 6
-6 5 bop 463 495 a Fx(6)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1249 463 y Fw(\016)1285 495
-y Fx(2/2005)p 463 673 2835 4 v 461 872 4 200 v 510 743
-a Fr(\\submitted[)p FB(date)p Fr(]{)p FB(d)o(est.)p Fr(}{)o
-FB(n)1509 713 y Fm(\016)1541 743 y FB(soumis.)p Fr(})p
-1879 872 V 91 w Fu(Commande)54 b(de)i(soumission,)g(\340)h(placer)1928
-842 y(a)n(v)n(ant)19 b Fr(\\maketitlepage)p 3296 872
-V 463 876 2835 4 v 461 1075 4 200 v 767 945 a([)p FB(date)p
-Fr(])p 1879 1075 V 929 w Fu(Date)24 b(de)g(la)g(signature,)e(par)i
-(d\351f)o(aut,)f(la)h(date)1928 1045 y(du)19 b(jour)-5
-b(.)p 3296 1075 V 463 1078 2835 4 v 461 1278 4 200 v
-767 1148 a Fr({)p FB(dest.)p Fr(})p 1879 1278 V 918 w
-Fu(Nom)18 b(de)i(la)f(re)n(vue)f(ou)h(de)g(la)h(conf\351rence)d(vi-)
-1928 1248 y(s\351e)p 3296 1278 V 463 1281 2835 4 v 461
-1480 4 200 v 767 1351 a Fr({)p FB(n)853 1320 y Fm(\016)890
-1351 y FB(soumis.)p Fr(})p 1879 1480 V 742 w Fu(Num\351ro)d(de)h(la)h
-(soumission)f(\(g\351n\351ralement)1928 1450 y(de)20
-b(1)g(\340)h(3\).)p 3296 1480 V 463 1483 2835 4 v 463
-1649 a Fv(T)-8 b(ableau)21 b(2.)j FB(Commande)19 b Fr(\\submitted)d
-FB(pour)k(la)g(soumission)g(d'un)f(article)463 1948 y
-Fv(4.)41 b(Commandes)20 b(pour)h(la)f(soumission)h(ou)g(la)f
-(publication)g(d'un)h(article)581 2147 y Fu(Les)j(informations)e
-(d'identi\002cation)f(qui)i(sont)h(plac\351es)f(dans)h(les)g
-(en-t\352tes)f(de)h(page,)e(dans)463 2247 y(la)c(signature)f(de)g
-(l'article)h(en)f(bas)h(de)g(la)g(premi\350re)e(page,)h(ou)h(\340)g(la)
-g(\002n)g(de)f(l'article)h(d\351pendent)d(de)463 2347
-y(son)20 b(\351tat)h(de)f(\002nition.)g(Les)h(commandes)e(de)h(cette)h
-(section)f(s'utilisent)g(au)h(fur)e(et)i(\340)g(mesure)f(que)463
-2446 y(l'on)f(dispose)g(de)g(ces)h(informations,)d(et)j(selon)f(le)h
-(type)f(d'article,)g(de)g(re)n(vue)f(ou)h(de)h(conf\351rence.)581
-2596 y(\226)j(La)g(phase)g(de)g(soumission)f(d'un)g(article)h(utilise)h
-(la)f(commande)e Fr(\\submitted)e Fu(\()p FB(cf)o(.)k
-Fu(sec-)463 2695 y(tion)d(4.1)f(et)i(tableau)f(2\).)581
-2820 y(\226)j(La)d(phase)g(de)g(pr\351paration)e(d'un)h(article)h
-(accept\351)f(utilise)i(la)f(commande)e Fr(\\journal)g
-Fu(\()p FB(cf)o(.)463 2920 y Fu(section)e(4.2)g(et)h(tableau)e(3\))h
-(pour)g(une)f(re)n(vue,)g(et)i Fr(\\proceedings)12 b
-Fu(\()p FB(cf)o(.)k Fu(section)g(4.3)g(et)h(tableau)e(4\))463
-3019 y(pour)k(une)h(conf\351rence.)581 3169 y(Il)h(est)g(recommand\351)
-d(d'utiliser)i(ces)h(commandes)e(d\350s)i(le)g(d\351b)n(ut)f(de)g
-(chaque)f(phase)h(de)h(pr\351-)463 3268 y(paration,)j(m\352me)h(si)h
-(l'on)f(ne)h(dispose)f(pas)g(de)h(toutes)f(les)i(informations)c(:)j(on)
-f(pourra)f(donner)463 3368 y(les)i(informations)d(qui)i(manquent)e
-(juste)j(a)n(v)n(ant)e(la)i(remise)f(aux)g(r\351dacteurs)f(ou)g(au)h
-(service)g(de)463 3468 y(f)o(abrication.)581 3617 y(Pour)44
-b(l'ultime)h(pr\351paration)d(d'un)i(article)h(accept\351,)f(juste)i(a)
-n(v)n(ant)e(son)h(e)o(xp\351dition)e(\340)463 3717 y(l'\351diteur)m(,)e
-(certaines)h(commandes)e(suppl\351mentaires)h(peuv)o(ent)f(\352tre)j
-(n\351cessaires)f(comme)463 3816 y Fr(\\logbook)p Fu(,)17
-b Fr(\\biography)g Fu(et)j Fr(\\publisher)d Fu(\()p FB(cf)o(.)j
-Fu(section)g(4.4\).)463 4115 y Fv(4.1.)40 b Fl(Phase)20
-b(de)g(soumission)h(:)g(commande)d Fr(\\submitted)581
-4314 y Fu(On)23 b(utilise)g(la)h(commande)c Fr(\\submitted)f
-Fu(\()p FB(cf)o(.)k Fu(tableau)f(2\))h(a)n(v)o(ec)f(trois)h(ar)o
-(guments,)e(le)i(pre-)463 4414 y(mier)d(en)g(option)f(:)581
-4563 y(\226)k(Le)g(premier)f(ar)o(gument)f(donne)g(la)j(date)f(de)g(v)o
-(ersion)f(du)g(document)g(qui)g(sera)i(plac\351e)e(sur)463
-4663 y(la)h(ligne)g(de)g(signature)f(de)h(l'article,)f(en)h(bas)h(de)e
-(la)i(premi\350re)e(page.)g(P)o(ar)h(d\351f)o(aut,)f(c'est)h(la)g(date)
-463 4763 y(du)d(jour)f(qui)h(est)h(utilis\351e.)581 4887
-y(\226)i(Le)17 b(deuxi\350me)e(ar)o(gument)f(pr\351cise)i(le)h(nom)f
-(de)g(la)h(re)n(vue)f(ou)g(de)g(la)h(conf\351rence)d(o\371)i(l'article)
-463 4987 y(est)21 b(soumis.)f(Ce)h(nom)f(appara\356tra)f(sur)h(la)h
-(ligne)f(de)h(signature)e(\(pour)g(les)i(re)n(vues)e(seulement\))h(et)
-463 5086 y(sur)f(l'en-t\352te)e(des)i(pages)f(paires.)h(Le)f(nom)g(ne)h
-(doit)f(pas)h(\352tre)g(trop)f(lar)o(ge)f(\(55)h(mm)g(maximum)f(en)p
-eop
-%%Page: 7 7
-7 6 bop 2058 490 a Fx(Mode)20 b(d'emploi)f(de)g Fz(article-hermes.cls)
-95 b Fx(7)p 463 673 2845 4 v 461 872 4 200 v 513 743
-a Fr(\\journal{)17 b FB(ar)m(g1)p Fr(}{)p FB(ar)m(g2)g
-Fr(}{)p FB(ar)m(g3)p Fr(})p 1884 872 V 307 w Fu(Commande)55
-b(de)h(publication,)f(\340)h(placer)1935 842 y(a)n(v)n(ant)20
-b Fr(\\maketitlepage)p 3306 872 V 463 876 2845 4 v 461
-1274 4 399 v 770 945 a({)p FB(ar)m(g1)p Fr(})p 1884 1274
-V 922 w Fu(Nom)27 b(de)f(la)h(re)n(vue)f(+)h(n)2647 915
-y Fm(\016)2712 945 y Fu(de)g(v)n(olume)f(de)g(la)1935
-1045 y(re)n(vue)f(\(1)h(\340)h(2)f(chif)n(fres\))f(+)i(n)2794
-1015 y Fm(\016)2859 1045 y Fu(de)f(f)o(ascicule)1935
-1145 y(de)i(la)h(re)n(vue)d(\(1)i(\340)h(2)f(chif)n(fres\))e(+)j
-(ann\351e)e(de)1935 1244 y(parution)19 b(sur)h(4)g(chif)n(fres)p
-3306 1274 V 463 1278 2845 4 v 461 1477 4 200 v 770 1347
-a Fr({)p FB(ar)m(g2)p Fr(})p 1884 1477 V 922 w Fu(Num\351ro)27
-b(de)i(premi\350re)e(page)g(de)i(parution,)1935 1447
-y(si)21 b(connu.)e(Sinon)g(mettre)h(un)g(tiret)p 3306
-1477 V 463 1480 2845 4 v 461 1679 4 200 v 770 1550 a
-Fr({)p FB(ar)m(g3)p Fr(})p 1884 1679 V 922 w Fu(Num\351ro)d(de)h
-(derni\350re)f(page)g(de)i(parution,)d(si)1935 1649 y(connu.)j(Sinon)g
-(mettre)h(un)g(tiret)p 3306 1679 V 463 1683 2845 4 v
-463 1848 a Fv(T)-8 b(ableau)21 b(3.)j FB(Commande)19
-b Fr(\\journal)e FB(pour)j(la)g(publication)e(d'un)h(article)i(de)f(r)m
-(e)o(vue)463 2141 y Fu(corps)g(9\).)581 2266 y(\226)j(Le)i
-(troisi\350me)f(ar)o(gument)e(indique)g(le)j(num\351ro)e(de)h
-(soumission.)f(Il)i(ne)f(sert)h(qu'\340)e(distin-)463
-2366 y(guer)28 b(les)h(dif)n(f\351rentes)e(v)o(ersions)h(d'un)f
-(article)i(et)g(appara\356t)e(sur)i(la)g(ligne)f(de)h(signature)e(et)i
-(sur)463 2465 y(l'en-t\352te)19 b(des)i(pages)f(paires.)581
-2615 y(Ex)o(emple)30 b(:)j(pour)d(commencer)f(la)k(pr\351paration)c
-(d'un)h(article)i(\340)g(la)g(re)n(vue)f FB(T)-8 b(ec)o(hnique)30
-b(et)463 2714 y(science)17 b(informatiques)p Fu(,)e(on)h(peut)h(placer)
-f(a)n(v)n(ant)g Fr(\\maketitlepage)c Fu(la)17 b(commande)e(sui)n(v)n
-(ante)h(:)671 2856 y Fr(\\submitted{Tech)o(ni)o(qu)o(e)38
-b(et)k(science)f(informatiques}{1)o(})463 3147 y Fv(4.2.)f
-Fl(Phase)20 b(de)g(publication)g(\340)g(une)h(revue)g(:)f(commande)f
-Fr(\\journal)581 3345 y Fu(Comme)29 b Fr(\\submitted)p
-Fu(,)c(la)30 b(commande)d Fr(\\journal)f Fu(\()p FB(cf)o(.)j
-Fu(tableau)g(3\))g(se)h(place)f(a)n(v)n(ant)g(la)463
-3445 y(commande)16 b Fr(\\maketitlepage)p Fu(.)c(Ses)19
-b(trois)f(ar)o(guments)e(d\351\002nissent)i(les)h(informations)d
-(n\351ces-)463 3544 y(saires)21 b(pour)e(construire)f(la)j(signature)e
-(de)h(l'article)g(et)h(l'en-t\352te)e(des)i(pages)f(:)581
-3694 y(\226)j(Le)35 b(premier)e(ar)o(gument)f(donne)h(le)i(nom)f(de)g
-(la)h(re)n(vue,)f(comme)f(dans)h(la)h(commande)463 3793
-y Fr(\\submitted)p Fu(,)22 b(sui)n(vi)j(du)g FB(num\351r)l(o)g(de)g
-(volume)p Fu(,)g(du)g FB(fascicule)g Fu(et)h(de)g(l')p
-FB(ann\351e)e(de)h(parution)f Fu(de)463 3893 y(l'article)e(\(longueur)e
-(totale)i(de)g(55)g(mm)g(maximum)f(en)h(corps)g(9\).)g(Cet)h
-(intitul\351)f(complet)f(inter)n(-)463 3993 y(vient)g(dans)f(la)i
-(signature)e(de)h(l'article)f(et)i(dans)e(l'en-t\352te)h(des)g(pages)f
-(paires.)h(Certaines)g(re)n(vues)463 4092 y(disposent)29
-b(d'une)g(pr\351sentation)g(particuli\350re)f(mais)j(dans)f(le)g(cas)h
-(d'un)e(num\351ro)f(courant,)h(la)463 4192 y(forme)19
-b(est)i(g\351n\351ralement)d(:)646 4309 y Fr(\\journal{Nom)38
-b(de)43 b(la)g(revue.)e(Volume)g(19)h(--)h(n)2389 4279
-y Fm(\016)2470 4309 y Fr(1/2005}{45}{57})581 4426 y Fu(Dans)20
-b(le)h(cas)g(d'un)e(num\351ro)f(sp\351cial,)i(la)h(forme)e(est)i
-(g\351n\351ralement)d(:)646 4543 y Fr(\\journal{Nom)38
-b(de)43 b(la)g(revue)e(--)i(7/2005.)d(Titre)i(du)h(num\351ro}{45}{57})
-581 4660 y Fu(\226)23 b(Les)31 b(deux)f(derniers)f(ar)o(guments)g
-(donnent)g(les)i(num\351ros)e(de)i(la)g FB(pr)m(emi\350r)m(e)f(et)h
-(derni\350r)m(e)463 4759 y(pa)o(g)o(e)21 b Fu(de)h(l'article,)g(s'ils)h
-(sont)f(connus.)f(Dans)h(ce)g(cas,)g(ils)i(apparaissent)d(sur)h(la)g
-(signature)f(et)i(le)463 4859 y(num\351ro)13 b(de)j(premi\350re)e(page)
-g(initialise)i(la)g(num\351rotation)d(de)i(toutes)g(les)h(pages.)f(Si)h
-(le)g(num\351ro)d(de)463 4959 y(premi\350re)18 b(page)g(est)i(inconnu)d
-(\(le)i(dernier)f(l'est)h(aussi\),)g(il)h(f)o(aut)f(mettre)f(un)h
-(tiret)g(comme)f(v)n(aleur)-5 b(.)463 5058 y(Dans)23
-b(ce)g(cas,)h(les)f(num\351ros)f(n'apparaissent)f(pas)i(dans)g(la)g
-(signature)f(et)h(la)h(num\351rotation)c(des)463 5158
-y(pages)e(commence)e(\340)j(1,)f(a)n(v)o(ec)f(un)h(espace)g(suf)n
-(\002sant)g(pour)f(que)h(l'imprimeur)e(puisse)i(surchar)o(ger)p
-eop
-%%Page: 8 8
-8 7 bop 463 495 a Fx(8)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1249 463 y Fw(\016)1285 495
-y Fx(2/2005)p 463 673 2845 4 v 461 872 4 200 v 513 743
-a Fr(\\proceedings{)p FB(ar)m(g1)o Fr(})14 b({)p FB(ar)m(g2)p
-Fr(})p 1648 872 V 159 w Fu(Commande)55 b(de)i(publication,)e(\340)j
-(placer)e(a)n(v)n(ant)1699 842 y Fr(\\maketitlepage)p
-3306 872 V 463 876 2845 4 v 461 975 4 100 v 770 945 a({)p
-FB(ar)m(g1)p Fr(})p 1648 975 V 686 w Fu(Nom)20 b(abr\351g\351)f(de)h
-(la)h(conf\351rence)d(vis\351e)p 3306 975 V 463 979 2845
-4 v 461 1178 4 200 v 770 1048 a Fr({)p FB(ar)m(g2)p Fr(})p
-1648 1178 V 686 w Fu(Num\351ro)52 b(de)i(premi\350re)e(page)h(de)h
-(parution,)e(si)1699 1148 y(connu.)18 b(Sinon)i(mettre)g(un)g(tiret)p
-3306 1178 V 463 1181 2845 4 v 463 1347 a Fv(T)-8 b(ableau)17
-b(4.)24 b FB(Commande)16 b Fr(\\proceedings)c FB(pour)k(la)h
-(publication)d(d'un)i(article)h(de)f(conf\351r)m(ence)463
-1647 y Fu(les)25 b(vrais)f(num\351ros)f(de)i(page,)e(sans)i(a)n(v)n
-(oir)f(\340)h(retoucher)d(les)j(en-t\352tes.)f(Il)h(se)g(peut)f(aussi)h
-(que)f(le)463 1747 y(service)17 b(de)g(f)o(abrication)e(souhaite)h(une)
-h(v)o(ersion)e(sans)j(en-t\352te)e(ni)i(signature,)d(ce)i(qui)g
-(s'obtiendra)463 1847 y(par)j(l'option)e FB(empty)i Fu(de)h(la)f
-(commande)e Fr(\\documentclass)d Fu(\()p FB(cf)o(.)20
-b Fu(section)g(2\).)581 1996 y(Ex)o(emple.)26 b(Pour)h(pr\351parer)f
-(la)i(v)o(ersion)e(\002nale)h(d'un)g(article)g(\340)h(para\356tre)f
-(dans)g(la)h(rubrique)463 2096 y(de)22 b(la)h(re)n(vue)e
-FB(RSTI)h(-)h(RIA)p Fu(,)e(v)n(olume)g(18,)h(n)1703 2066
-y Fm(\016)1741 2096 y Fu(3,)g(1999,)f(pages)g(297)h(\340)g(322,)g(il)h
-(suf)n(\002t)f(de)g(donner)f(la)463 2195 y(commande)d(sui)n(v)n(ante)h
-(:)671 2340 y Fr(\\journal{RSTI)38 b(-)43 b(RIA.)f(Volume)f(18)h(--)h
-(n)2196 2310 y Fm(\016)2277 2340 y Fr(3/1999}{297}{322})p
-463 2456 V 461 2656 4 200 v 513 2526 a(\\publisher{)p
-FB(ar)m(g1)p Fr(})o({)p FB(ar)m(g)o(2)15 b Fr(}{)p FB(ar)m(g3)p
-Fr(})p 1884 2656 V 240 w Fu(Peut)23 b(\352tre)g(plac\351e)g(en)f
-(d\351b)n(ut)h(ou)f(\002n)h(de)g(l'ar)n(-)1935 2626 y(ticle)p
-3306 2656 V 463 2659 2845 4 v 461 2759 4 100 v 770 2729
-a Fr({)p FB(ar)m(g1)p Fr(})p 1884 2759 V 922 w Fu(Num\351ro\(s\))c(de)h
-(t\351l\351phone)e(de)i(l'auteur)p 3306 2759 V 463 2762
-2845 4 v 461 2861 4 100 v 770 2832 a Fr({)p FB(ar)m(g2)p
-Fr(})p 1884 2861 V 922 w Fu(Num\351ro\(s\))f(de)h(t\351l\351copie)f(de)
-h(l'auteur)p 3306 2861 V 463 2865 2845 4 v 461 2964 4
-100 v 770 2935 a Fr({)p FB(ar)m(g3)p Fr(})p 1884 2964
-V 922 w Fu(Email\(s\))g(de)g(l'auteur)p 3306 2964 V 463
-2968 2845 4 v 463 3133 a Fv(T)-8 b(ableau)21 b(5.)j FB(Commande)19
-b Fr(\\publisher)d FB(pour)k(construir)m(e)g(l'anne)n(xe)f(pour)g
-(l'\351diteur)-9 b(.)463 3482 y Fv(4.3.)40 b Fl(Phase)20
-b(de)g(publication)g(\340)g(une)h(conf\351rence)f(:)g(commande)f
-Fr(\\proceedings)581 3681 y Fu(Comme)32 b(la)h(commande)d
-Fr(\\journal)p Fu(,)g(la)i(commande)f Fr(\\proceedings)d
-Fu(\()p FB(cf)o(.)k Fu(tableau)f(4\))463 3781 y(s'utilise)19
-b(a)n(v)n(ant)f(la)h(commande)d Fr(\\maketitlepage)p
-Fu(,)d(mais)19 b(a)n(v)o(ec)f(deux)g(ar)o(guments)e(seulement,)463
-3880 y(car)k(les)h(actes)g(de)f(conf\351rence)e(n'utilisent)h(pas)i(de)
-f(ligne)g(de)g(signature)f(:)581 4030 y(\226)k(Le)f(premier)f(ar)o
-(gument)e(donne)h(le)i(nom)f(abr\351g\351)g(de)g(la)i(conf\351rence)c
-(\(moins)i(de)h(55)f(mm\).)463 4130 y(Il)f(intervient)f(dans)h
-(l'en-t\352te)g(des)g(pages)g(paires.)581 4254 y(\226)j(Le)18
-b(deuxi\350me)d(ar)o(gument)g(pr\351cise)i(le)h(num\351ro)e(de)h(la)h
-FB(pr)m(emi\350r)m(e)g(pa)o(g)o(e)e Fu(de)i(l'article,)e(s'il)i(est)463
-4354 y(connu,)g(ou)i(un)f(tiret)i(sinon.)e(Son)h(utilisation)f(est)i
-(identique)e(au)g(5)2375 4333 y Ft(e)2421 4354 y Fu(ar)o(gument)f(de)i
-(la)g(commande)463 4453 y Fr(\\journal)p Fu(.)581 4603
-y(Ex)o(emple.)e(Pour)h(pr\351parer)f(la)i(v)o(ersion)e(\002nale)i(d'un)
-e(article)i(\340)g(para\356tre)e(dans)i(les)g(actes)g(de)g(la)463
-4702 y(conf\351rence)e FB(LMO'99)p Fu(,)h(pages)h(245)f(et)i(sui)n(v)n
-(antes,)e(il)i(suf)n(\002t)g(de)f(donner)e(la)j(commande)d(:)671
-4847 y Fr(\\proceedings{LM)o(O')o(99)o(}{2)o(45)o(})p
-eop
-%%Page: 9 9
-9 8 bop 2058 490 a Fx(Mode)20 b(d'emploi)f(de)g Fz(article-hermes.cls)
-95 b Fx(9)463 753 y Fv(4.4.)40 b Fl(Commandes)19 b(de)h(\002nalisation)
-h(d'un)f(article)463 952 y Fu(4.4.1.)39 b FB(F)l(inalisations)20
-b(sp\351ci\002ques)f(\340)h(un)g(article)g(de)g(r)m(e)o(vue)581
-1102 y Fu(Certaines)g(re)n(vues)f(donnent)e(\340)j(la)h(\002n)e(des)h
-(articles)g(quelques)f(indications)f(sur)i(le)g(processus)463
-1202 y(de)g(soumission)g(et)g(de)g(courtes)g(biographies)e(des)i
-(auteurs.)581 1351 y(La)d(commande)e Fr(\\logbook{)p
-FB(date)d(r\351ception)k Fr(}{)p FB(date)g(de)g(r\351vision)p
-Fr(}{)p FB(r\351dacteur)r Fr(})f Fu(s'utilise)463 1451
-y(apr\350s)22 b(la)h(bibliographie)d(et)j(prend)e(trois)i(ar)o(guments)
-d(fournis)i(par)g(les)h(r\351dacteurs)e(de)i(la)g(re)n(vue.)463
-1551 y(Le)31 b(premier)e(indique)g(la)i(date)f(de)g(r\351ception)f(de)h
-(la)h(premi\350re)e(soumission)h(de)g(l'article.)g(Le)463
-1650 y(second)c(donne)f(la)j(date)e(de)h(derni\350re)f(r\351vision.)f
-(Le)i(troisi\350me)g(donne)e(le)i(pr\351nom)e(et)j(le)f(nom)463
-1750 y(du)g(r\351dacteur)f(responsable)h(de)g(l'article.)h(Dans)g(le)g
-(cas)g(de)g(deux)f(r\351dacteurs,)f(on)h(s\351pare)g(les)463
-1850 y(noms)21 b(par)g(la)h(commande)e Fr(\\andeditor)p
-Fu(.)d(Pour)k(adapter)g(cette)g(commande)f(secondaire)g(\340)i(des)463
-1949 y(besoins)32 b(sp\351ci\002ques,)f(comme)g(dans)h(le)h(cas)f(de)g
-(plusieurs)g(dates)g(de)g(r\351vision,)f(il)i(suf)n(\002t)f(de)463
-2049 y(f)o(aire)19 b(un)g(\253)g(copier)n(-coller)e(\273)i(du)g(source)
-f(lu)i(dans)f(le)g(\002chier)g FB(article-hermes.cls)g
-Fu(et)h(de)f(l'adapter)463 2148 y(comme)g(il)i(con)m(vient.)581
-2298 y(La)16 b(commande)e Fr(\\biography{)p FB(Pr\351nom)d(Nom)p
-Fr(}{)p FB(bio)o(gr)o(aphie)p Fr(})i Fu(s'utilise)j(pour)f(chaque)g
-(au-)463 2397 y(teur)m(,)j(apr\350s)i(la)f(commande)f
-Fr(\\logbook)p Fu(.)e(Le)j(premier)g(ar)o(gument)e(donne)g(le)j
-(pr\351nom)e(et)i(nom)e(de)463 2497 y(l'auteur)h(et)i(l'ar)o(gument)c
-(sui)n(v)n(ant)j(une)f(courte)h(biographie)d(sur)k(5)f(lignes)g(en)m
-(viron.)463 2696 y(4.4.2.)39 b FB(Anne)n(xe)20 b(pour)f(le)i(service)g
-(de)f(fabrication)f(:)h(commande)f Fr(\\publisher)581
-2847 y Fu(Pour)g(la)h(remise)g(\002nale)f(des)h(articles)g(de)f(re)n
-(vue)g(ou)g(de)h(conf\351rence)d(accept\351s,)i(le)h(service)f(de)463
-2946 y(f)o(abrication)24 b(demande)g(aux)i(auteurs)f(une)g(v)o(ersion)g
-(abr\351g\351e)f(du)h(titre)i(courant)d(\(normalement)463
-3046 y(d\351j\340)30 b(plac\351e)g(dans)f(l'en-t\352te)h(des)g(pages)g
-(impaires\))f(et)i(les)f(coordonn\351es)e(des)i(auteurs)f(pour)463
-3146 y(les)h(joindre)d(si)j(n\351cessaire.)e(La)h(commande)e
-Fr(\\publisher)e Fu(qui)j(se)i(place)e(au)h(d\351b)n(ut)f(ou)g(\340)i
-(la)463 3245 y(\002n)i(de)g(l'article)g(f)o(ait)g(appara\356tre)f(en)h
-(derni\350re)e(page)h(l'anne)o(x)o(e)f(demand\351e,)g(a)n(v)o(ec)i(un)f
-(report)463 3345 y(des)26 b(informations)e(d\351j\340)h(connues)g
-(comme)f(le)j(titre)f(\(v)o(ersion)e(longue)g(et)i(abr\351g\351e\),)e
-(les)j(noms)463 3444 y(d'auteurs,)15 b(les)j(r\351f\351rences)e(du)g
-(logiciel)h(utilis\351.)g(Il)h(ne)f(manque)e(que)h(les)i
-(coordonn\351es)c(\(num\351ro)463 3544 y(de)20 b(t\351l\351phone,)e
-(num\351ro)h(de)h(f)o(ax)g(et)h(e-mail\))e(pour)g(construire)g(cette)h
-(page)g(\()p FB(cf)o(.)g Fu(tableau)f(5\).)463 3843 y
-Fv(5.)41 b(Commandes)20 b(sp\351ciales)h(pour)f(le)h(cor)o(ps)g(de)g
-(l'article)581 4042 y Fu(T)-7 b(outes)17 b(les)g(commandes)e(L)1362
-4027 y Ft(A)1392 4042 y Fu(T)1429 4061 y(E)1468 4042
-y(X)i(sont)g(utilisables)g(comme)e(d'habitude,)f(m\352me)i(si)h(leur)g
-(ef)n(fet)463 4142 y(a)k(souv)o(ent)d(\351t\351)j(red\351\002ni)e(pour)
-g(se)i(conformer)d(aux)h(consignes)h(d'\351dition.)581
-4291 y(Les)g(commandes)e(internes)i(au)g(style)g FB(article-hermes.cls)
-f Fu(ne)h(sont)g(pas)g(en)g(con\003it)g(a)n(v)o(ec)f(les)463
-4391 y(commandes)h(de)i(l'utilisateur)m(,)e(car)i(elles)g(utilisent)g
-(un)g(signe)f(\223)p Fr(@)p Fu(\224)h(dans)f(leur)h(nom.)f(Les)h
-(fontes)463 4490 y(utilis\351es)29 b(par)f(ce)g(style)h(sont)f
-(utilisables)g(dans)g(les)h(articles.)f(Elles)h(ont)f(un)f(nom)h(en)g
-(fran\347ais)463 4590 y(de)22 b(la)h(forme)e Fr(FonteTitre)p
-Fu(,)e Fr(FonteSectionI)p Fu(.)12 b(.)g(.)g(De)18 b(mani\350re)j
-(g\351n\351rale,)g(la)i(liste)g(des)g(com-)463 4690 y(mandes)i(et)i
-(des)f(fontes)g(utilisables,)g(des)g(compteurs,)f(longueurs,)f
-(commandes)g(ou)i(en)m(viron-)463 4789 y(nements)19 b(red\351\002nis)g
-(sont)g(indiqu\351s)f(en)i(commentaire,)d(au)i(d\351b)n(ut)g(du)g
-(\002chier)g(de)h(style.)f(Celui-ci)463 4889 y(est)26
-b(par)e(ailleurs)h(assez)g(fortement)f(comment\351)f(et)i
-(param\351tr\351,)e(et)j(de)n(vrait)d(donc)h(pouv)n(oir)f(\352tre)463
-4989 y(f)o(acilement)c(adapt\351,)h(m\352me)f(par)h(des)g(auteurs)g
-(non)f(e)o(xperts.)p eop
-%%Page: 10 10
-10 9 bop 463 495 a Fx(10)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1286 463 y Fw(\016)1322 495
-y Fx(2/2005)581 753 y Fu(Quelques)j(commandes)g(sp\351ci\002ques)g
-(suppl\351mentaires)f(ont)i(\351t\351)h(d\351\002nies)f(pour)f
-(r\351pondre)463 852 y(\340)f(quelques)e(cas)h(sp\351ciaux,)f(comme)g
-(indiqu\351)g(ci-apr\350s.)463 1151 y Fv(5.1.)40 b Fl(Listes)581
-1351 y Fu(Les)23 b(consignes)e(d'\351dition)g(pr\351cisent)g(qu'il)h(f)
-o(aut)g(emplo)o(yer)f(des)h(tirets)h(de)f(tailles)h(d\351crois-)463
-1450 y(santes)c(pour)e(les)j(labels)f(de)f(listes)i Fr
-(\\begin{itemize})13 b Fu(.)f(.)g(.)g Fr(\\end{itemize})p
-Fu(.)i(T)m(rois)k(ni)n(v)o(eaux)463 1550 y(de)f(listes)i(sont)e
-(autoris\351s,)g(a)n(v)o(ec)g(trois)h(tailles)g(de)f(tirets,)h(comme)f
-(ceci)g(:)h(\227,)g(\226,)f(-.)h(Cependant,)d(les)463
-1649 y(tirets)k(lar)o(ges)f(sont)h(r\351serv\351s)f(aux)g
-(\351l\351ments)h(de)f(premier)g(ni)n(v)o(eau)f(de)i(listes)h(\340)f
-(trois)g(ni)n(v)o(eaux)11 b(;)19 b(les)463 1749 y(\351l\351ments)j(de)g
-(premier)g(ni)n(v)o(eau)f(de)h(listes)i(\340)f(un)f(ou)g(deux)f(ni)n(v)
-o(eaux)f(commencent)h(a)n(v)o(ec)h(un)g(tiret)463 1849
-y(mo)o(yen.)27 b(Comme)i(il)h(n'est)f(pas)g(f)o(acile)g(d'automatiser)e
-(ce)i(comportement,)d(nous)i(proposons)463 1948 y(deux)19
-b(types)h(d'en)m(vironnements)c(:)581 2098 y(\226)23
-b(les)h(listes)h(\340)f(un)f(ou)g(deux)f(ni)n(v)o(eaux)g
-(d'embo\356tement)f(s'utilisent)i(a)n(v)o(ec)g(l'en)m(vironnement)463
-2197 y(usuel)d Fr(itemize)e Fu(qui)i(produira)e(des)i(tirets)h(mo)o
-(yens)e(ou)h(courts.)581 2322 y(\226)j(les)h(rares)f(listes)i(\340)e
-(trois)h(ni)n(v)o(eaux,)d(utilisent)i(l'en)m(vironnement)c
-Fr(ITEMIZE)i Fu(pour)h(tous)h(les)463 2422 y(ni)n(v)o(eaux,)18
-b(ce)j(qui)e(produira)f(les)j(trois)g(tailles)g(de)f(labels.)463
-2720 y Fv(5.2.)40 b Fl(F)-6 b(ormules)21 b(math\351matiques)581
-2920 y Fu(Les)34 b(formules)e(num\351rot\351es)f(s'obtiennent,)g(comme)
-h(d'habitude,)e(a)n(v)o(ec)j(les)h(en)m(vironne-)463
-3019 y(ments)e(comme)f Fr(equation)p Fu(,)e Fr(eqnarray)g
-Fu(ou)j Fr(align)e Fu(qui)i(ont)f(\351t\351)i(adapt\351s)e(pour)g(la)i
-(num\351-)463 3119 y(rotation)23 b(demand\351e.)e(Nous)j(laissons)g(le)
-h(choix)e(d'utiliser)g(des)h(formules)e(centr\351es)i(au)f(milieu)463
-3219 y(de)c(ligne)g(\(par)g(d\351f)o(aut\))f(ou)g(cadr\351es)h(\340)h
-(gauche)d(a)n(v)o(ec)i(un)g(retrait,)g(en)g(utilisant)h(l'option)d
-(standard)463 3318 y Fr(fleqn)i Fu(\()p FB(cf)o(.)g Fu(section)h(2\).)
-581 3468 y(Pour)40 b(couper)f(des)i(formules)f(sur)h(plusieurs)f
-(lignes,)g(on)h(peut)f(utiliser)h(le)g(paquetage)463
-3567 y Fr(amstex)p Fu(.)25 b(Si)j(on)f(ne)h(dispose)f(pas)h(de)f(ce)h
-(logiciel,)e(on)h(peut)g(utiliser)h(la)g(commande)d(rustique)463
-3667 y Fr(\\eqncont)e Fu(aux)j(endroits)f(choisis)h(pour)f(les)h
-(coupures,)e(a)n(v)o(ec)i(l'en)m(vironnement)c Fr(eqnarray)p
-Fu(.)463 3767 y(Celui-ci)i(permet)g(de)g(d\351cider)f(du)h(centrage)f
-(v)n(oulu,)g(comme)g(sur)h(les)h(e)o(x)o(emples)e(sui)n(v)n(ants,)h
-(qui)463 3866 y(ne)c(v)o(eulent)f(rien)h(dire)13 b(!)581
-4016 y(Le)22 b(premier)f(e)o(x)o(emple)g(\(formule)f([1]\))h(n'utilise)
-h(pas)h(de)f(signe)g Fr(&)g Fu(dans)g Fr(eqnarray)p Fu(,)d(ce)k(qui)463
-4115 y(pro)o(v)n(oque)c(un)j(cadrage)f(\340)h(droite)g(de)g(la)g
-(formule)f(coup\351e,)f(l'ensemble)h(restant)h(centr\351)g(par)g
-(d\351-)463 4215 y(f)o(aut)e(ou)g(cadr\351)f(\340)i(gauche)d(\(option)h
-Fr(fleqn)p Fu(\).)824 4597 y Fk(x)871 4562 y Fj(2)927
-4597 y Fi(+)f Fk(y)1054 4562 y Fj(2)1109 4597 y Fi(+)g
-Fk(a)1236 4520 y Fh(p)p 1319 4520 224 4 v 77 x Fi(1)g
-Fg(\000)g Fk(y)1506 4573 y Fj(2)1561 4597 y Fi(+)699
-4762 y(\()p Fk(a)h Fi(+)f Fk(b)p Fi(\))945 4728 y Fj(2)1000
-4762 y Fi(+)1083 4681 y Fh(p)p 1167 4681 478 4 v 1167
-4762 a Fk(a)1211 4738 y Fj(2)1266 4762 y Fi(+)g(2)p Fk(ab)g
-Fi(+)g Fk(b)1608 4738 y Fj(2)3201 4762 y Fu([1])581 5045
-y(La)31 b(formule)e([2])h(est)i(coup\351e)d(en)i(deux)f(lignes)h
-(centr\351es,)f(en)g(pla\347ant)h(les)g(signes)g(\223)p
-Fr(&)p Fu(\224)g(\340)463 5144 y(gauche)18 b(et)j(\340)g(droite)e(de)h
-(chaque)f(ligne.)p eop
-%%Page: 11 11
-11 10 bop 2020 490 a Fx(Mode)20 b(d'emploi)g(de)f Fz
-(article-hermes.cls)95 b Fx(11)782 985 y Fk(x)829 955
-y Fj(2)885 985 y Fi(+)18 b Fk(y)1012 955 y Fj(2)1068
-985 y Fi(+)g Fk(a)1195 912 y Fh(p)p 1278 912 224 4 v
-73 x Fi(1)g Fg(\000)g Fk(y)1465 961 y Fj(2)1520 985 y
-Fi(+)g(\()p Fk(a)h Fi(+)f Fk(b)p Fi(\))1849 955 y Fj(2)1904
-985 y Fi(+)1987 916 y Fg(p)p 2057 916 478 4 v 2057 985
-a Fk(a)2101 961 y Fj(2)2156 985 y Fi(+)g(2)p Fk(ab)g
-Fi(+)g Fk(b)2498 961 y Fj(2)2553 985 y Fi(+)2636 923
-y Fh(P)2724 944 y Fs(n)2724 1010 y(i)p Fj(=1)2849 985
-y Fk(x)2896 997 y Fs(i)2924 985 y Fi(+)1441 1092 y Fh(H)1496
-1113 y Fj(1)1480 1189 y(0)1548 1159 y Fk(f)9 b Fi(\()p
-Fk(x)p Fi(\))p Fk(dx)19 b Fi(+)1901 1097 y Fh(T)1970
-1068 y Ff(P)2040 1087 y Fe(n)2040 1131 y(i)p Fd(=1)2149
-1112 y Fs(\013)2192 1120 y Fe(i)1970 1184 y Fs(\036)p
-Fj(=1)2236 1159 y Fk(f)2286 1129 y Fs(\036)3201 1159
-y Fu([2])581 1441 y(La)28 b(formule)e([3])h(est)h(cadr\351e)f(\340)h
-(gauche,)e(en)h(mettant)h(les)g(deux)f(signes)g(\223)p
-Fr(&)p Fu(\224)h(au)f(d\351b)n(ut)g(de)463 1541 y(chaque)19
-b(ligne.)865 1923 y Fk(x)912 1889 y Fj(2)968 1923 y Fi(+)f
-Fk(y)1095 1889 y Fj(2)1151 1923 y Fi(+)g Fk(a)1278 1846
-y Fh(p)p 1361 1846 224 4 v 77 x Fi(1)g Fg(\000)g Fk(y)1548
-1899 y Fj(2)1603 1923 y Fi(+)865 2089 y(\()p Fk(a)h Fi(+)f
-Fk(b)p Fi(\))1111 2054 y Fj(2)1167 2089 y Fi(+)1250 2007
-y Fh(p)p 1333 2007 478 4 v 82 x Fk(a)1377 2065 y Fj(2)1432
-2089 y Fi(+)g(2)p Fk(ab)g Fi(+)g Fk(b)1774 2065 y Fj(2)3201
-2089 y Fu([3])581 2371 y(En\002n,)e(la)g(formule)f([4])g(est)i
-(cadr\351e)f(sur)g(le)h(signe)f Fi(=)g Fu(en)g(mettant)g(les)h(deux)e
-(signes)h(\223)p Fr(&)p Fu(\224)h(autour)463 2471 y(du)j(signe)g
-Fi(=)g Fu(:)699 2852 y Fi(\001)83 b(=)g Fk(x)1046 2818
-y Fj(2)1102 2852 y Fi(+)18 b Fk(y)1229 2818 y Fj(2)1285
-2852 y Fi(+)g Fk(a)1412 2776 y Fh(p)p 1494 2776 224 4
-v 1494 2852 a Fi(1)g Fg(\000)g Fk(y)1681 2828 y Fj(2)1737
-2852 y Fi(+)999 3018 y(\()p Fk(a)h Fi(+)f Fk(b)p Fi(\))1245
-2984 y Fj(2)1300 3018 y Fi(+)1383 2937 y Fh(p)p 1466
-2937 478 4 v 81 x Fk(a)1510 2994 y Fj(2)1566 3018 y Fi(+)g(2)p
-Fk(ab)f Fi(+)h Fk(b)1907 2994 y Fj(2)3201 3018 y Fu([4])581
-3300 y(Cette)j(derni\350re)e(forme)g(nous)g(para\356t)h(la)h(plus)f
-(recommandable.)463 3599 y Fv(5.3.)40 b Fl(Remarques,)20
-b(notes)h(et)f(remerciements)581 3799 y Fu(Les)25 b(remarques,)e(notes)
-i(et)g(remerciements)e(s'obtiennent)g(respecti)n(v)o(ement)f(par)j(les)
-g(com-)463 3898 y(mandes)16 b Fr(\\note{...})p Fu(,)e
-Fr(\\remark{...})e Fu(et)18 b Fr(\\acknowledgement)o(s{)o(..)o(.})p
-Fu(,)11 b(comme)16 b(sur)h(les)463 3998 y(e)o(x)o(emples)i(sui)n(v)n
-(ants)465 4097 y(N)t Fc(O)q(T)t(E)r Fu(.)h(\227)h(Ceci)g(est)g(un)f(e)o
-(x)o(emple)e(de)i(note)g(obtenue)f(a)n(v)o(ec)h(la)g(commande)e
-Fr(\\note{...})p Fu(.)465 4297 y(R)t Fc(E)t(M)t(A)t(R)t(Q)s(U)t(E)r
-Fu(.)j(\227)g(Ceci)g(est)g(obtenu)e(a)n(v)o(ec)h(la)h(commande)d
-Fr(\\remark{...})p Fu(.)463 4695 y(Remerciements)581
-4894 y(Ceci)j(est)g(un)f(e)o(x)o(emple)e(de)i(remerciements)f(obtenu)g
-(a)n(v)o(ec)h(la)g(commande)463 4994 y Fr(\\acknowledgement)o(s{)o(...)
-o(})p Fu(.)p eop
-%%Page: 12 12
-12 11 bop 463 495 a Fx(12)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1286 463 y Fw(\016)1322 495
-y Fx(2/2005)463 753 y Fv(5.4.)40 b Fl(Ma\356trise)21
-b(des)f(coupures)h(de)f(page)581 952 y Fu(Comme)e(l'indique)e(Leslie)i
-(Lamport)f(\(Lamport,)e(1994\))i(dans)g(son)h(manuel)f(de)h
-(r\351f\351rences,)463 1052 y(il)e(peut)f(\352tre)g(n\351cessaire)g(de)
-h(\253)f(tricher)g(\273)g(en)h(allongeant)d(certaines)i(pages)g(de)h(1)
-f(ou)g(deux)f(lignes)i(et)463 1151 y(en)j(for\347ant)e(les)j(coupures)d
-(de)i(pages,)f(pour)g(obtenir)f(les)j(placements)e(et)h
-(pr\351sentations)f(v)n(oulues)463 1251 y(dans)27 b(quelques)f(rares)h
-(cas)h(probl\351matiques.)d(Les)j(utilisateurs)f(qui)g(connaissent)f
-(bien)h(L)3131 1236 y Ft(A)3161 1251 y Fu(T)3198 1270
-y(E)3238 1251 y(X)463 1351 y(sa)n(v)o(ent)i(qu'il)f(f)o(aut)h(alors)g
-(utiliser)g(les)h(commandes)d Fr(\\enlargethispage)c
-Fu(et)30 b Fr(\\pagebreak)463 1450 y Fu(a)n(v)o(ec)20
-b Fr(\\noindent)d Fu(pour)i(obtenir)g(l'ef)n(fet)g(v)n(oulu.)581
-1600 y(Un)34 b(utilisateur)g(non)f(f)o(amilier)g(pourra)g(utiliser)h
-(nos)g(commandes)e Fr(\\delaynewpage)d Fu(et)463 1699
-y Fr(\\forcenewpage)p Fu(.)c(La)30 b(premi\350re)e(prend)h(comme)g(ar)o
-(gument)e(le)k(nombre)d(de)i(lignes)g(de)f(ral-)463 1799
-y(longe)17 b(n\351cessaire)h(\(1)g(ou)g(2\))g(sur)h(la)f(page)g(\340)h
-(agrandir)-5 b(.)16 b(S'il)j(y)g(a)f(des)h(notes)f(de)g(bas)h(de)f
-(page,)f(elles)463 1899 y(seront)22 b(d\351cal\351es)h(d'autant)f(v)o
-(ers)h(le)g(bas.)g(La)g(seconde)f(commande)f(s'utilise)j(\340)f
-(l'endroit)f(de)h(la)463 1998 y(coupure)18 b(souhait\351e.)g(Elle)i(ne)
-g(pro)o(v)n(oque)d(pas)j(d'indentation)d(sur)j(le)g(haut)f(de)h(la)g
-(page)f(sui)n(v)n(ante.)581 2148 y(Si)e(le)f(placement)f(des)h
-(\002gures)g(n'est)g(pas)g(celui)g(souhait\351,)f(on)g(peut)h
-(modi\002er)f(les)h(param\350tres)463 2247 y(utilis\351s)27
-b(dans)f(le)g(\002chier)g(de)g(style)g FB(article-hermes.cls)p
-Fu(.)f(V)-11 b(oir)26 b(le)h(li)n(vre)e(\253)h(The)g(L)2837
-2232 y Ft(A)2867 2247 y Fu(T)2904 2266 y(E)2944 2247
-y(X)g(Compa-)463 2347 y(nion)19 b(\273)i(\(Goossens)e
-FB(et)i(al.,)f Fu(1994\))e(pour)h(plus)h(d'e)o(xplications.)463
-2646 y Fv(5.5.)40 b Fl(Bibliographie)581 2845 y Fu(La)29
-b(bibliographie)c(s'obtient)j(a)n(v)o(ec)g(le)h(\002chier)f(de)h(style)
-f FB(biblio-hermes.bst)h Fu(qui)f(s'utilise)463 2945
-y(a)n(v)o(ec)d(BibT)795 2963 y(E)835 2945 y(X,)g(comme)g(d'habitude)d
-(par)j(e)o(x)o(emple)e(\(K)m(olski,)i(1997\).)e(La)j(seule)f(commande)e
-(\340)463 3044 y(placer)30 b(pour)f(f)o(aire)h(appara\356tre)f(la)i
-(bibliographie)c(est)k Fr(\\bibliography{ma-)o(bi)o(bli)o(o})o
-Fu(.)25 b(Le)463 3144 y(logiciel)31 b(BiBT)914 3163 y(E)955
-3144 y(X,)h(construit)f(le)h(\002chier)f FB(ma-biblio.bbl)f
-Fu(qui)h(est)h(automatiquement)d(appel\351)463 3243 y(par)18
-b(L)609 3228 y Ft(A)639 3243 y Fu(T)676 3262 y(E)716
-3243 y(X)h(\(l'en)m(vironnement)c Fr(thebibliography)e
-Fu(a)19 b(\351t\351)h(enti\350rement)d(red\351\002ni\).)h(T)-7
-b(outes)18 b(les)463 3343 y(r\351f\351rences)h(bibliographiques)e(de)j
-(ce)g(document)e(ont)i(\351t\351)h(produites)e(a)n(v)o(ec)h
-FB(biblio-hermes.bst)p Fu(.)581 3493 y(La)31 b(bibliographie)c
-(donn\351e)i(dans)h(la)h(section)g(sui)n(v)n(ante)e(est)i(obtenue)e
-(par)h(la)h(commande)463 3592 y(standard)22 b Fr(\\bibliography)c
-Fu(appliqu\351e)j(au)i(petit)g(\002chier)g FB(e)n(xemple-biblio.bib)d
-Fu(de)j(r\351f\351rences)463 3692 y(en)c(format)g(BiBT)973
-3710 y(E)1014 3692 y(X.)h(Le)f(\002chier)g FB(.bbl)g
-Fu(produit)f(par)h(BibT)2144 3710 y(E)2185 3692 y(X)h(est)g
-(ins\351r\351)f(automatiquement)e(par)463 3791 y(la)k(commande)d
-Fr(\\bibliography)p Fu(,)d(juste)20 b(apr\350s)g(le)h(titre)f(de)h
-(section.)463 4090 y Fv(6.)41 b(Bibliographie)463 4281
-y Fx(Braun)21 b(T)-6 b(.,)20 b(Diot)g(C.,)g(Hoglander)i(A.,)e(Roca)h(V)
--10 b(.,)20 b(An)h(e)o(xperimental)g(user)g(le)n(v)o(el)g
-(implementation)g(of)g(TCP)-8 b(,)581 4373 y(Rapport)20
-b(de)f(recherche)h(n)1276 4341 y Fw(\016)1331 4373 y
-Fx(265,)f(INRIA,)f(septembre,)i(1995.)463 4489 y(Demeure)k(I.,)f(F)o
-(arhat)h(J.,)f(\253)h(Syst\350mes)f(de)i(processus)g(l\351gers)f(:)f
-(concepts)i(et)f(e)o(x)o(emples)g(\273,)g Fz(T)-7 b(ec)o(hnique)25
-b(et)581 4580 y(Science)20 b(Informatiques)p Fx(,)g(v)o(ol.)e(13,)h(n)
-1565 4548 y Fw(\016)1620 4580 y Fx(6,)g(p.)f(765-795,)j(1994.)463
-4696 y(Goossens)f(M.,)f(Mittelbach)g(F)-6 b(.,)18 b(Samarin)g(A.,)g
-Fz(The)h(L)1848 4682 y Fy(A)1867 4696 y Fz(T)1897 4713
-y(E)1932 4696 y(XCompanion)p Fx(,)h(Addison-W)-6 b(esle)o(y)h(,)20
-b(1994.)463 4813 y(HERMES,)14 b(\253)i(Consignes)h(aux)f(auteurs)h
-(\273,)e Fz(T)-7 b(ec)o(hnique)17 b(et)e(Science)i(Informatiques)p
-Fx(,)g(v)o(ol.)e(18,)h(n)2966 4781 y Fw(\016)3018 4813
-y Fx(1,)f(p.)h(111-)581 4904 y(120,)k(1999.)463 5020
-y(K)m(olski)f(C.,)f Fz(Interfaces)i(homme-mac)o(hine)p
-Fx(,)g(Editions)f(Herm\350s,)f(P)o(aris,)g(1997.)p eop
-%%Page: 13 13
-13 12 bop 2020 490 a Fx(Mode)20 b(d'emploi)g(de)f Fz
-(article-hermes.cls)95 b Fx(13)463 753 y(Lallouet)26
-b(A.,)g(\253)h(DP-LOG)e(:)h(un)h(langage)g(logique)h(data-parall\350le)
-e(\273,)h Fz(Actes)f(des)h(6)2743 735 y FA(e)2795 753
-y Fz(journ\351es)h(fr)o(anco-)581 844 y(phones)d(de)e(pr)m(o)o(gr)o
-(ammation)i(lo)o(gique)g(et)e(pr)m(o)o(gr)o(ammation)h(par)g(contr)o
-(aintes)g(JFPLC'97)p Fx(,)f(\311ditions)581 935 y(Herm\350s,)c(P)o
-(aris,)f(Orl\351ans,)g(p.)h(53-68,)h(26-28)g(mai,)e(1997.)463
-1052 y(Lamport)28 b(L.,)f Fz(L)874 1038 y Fy(A)893 1052
-y Fz(T)923 1068 y(E)958 1052 y(X\226)h(A)g(Document)g(Pr)m(epar)o
-(ation)i(System)e(\226)g(User')m(s)g(Guide)h(and)f(Refer)m(ence)h
-(Manual)581 1143 y(\(updated)20 b(for)f(L)986 1129 y
-Fy(A)1005 1143 y Fz(T)1035 1159 y(E)1071 1143 y(X)f(2)1172
-1151 y Fb(\017)1202 1143 y Fz(\))p Fx(,)h(2nd)g(edn,)h(Addison-W)-6
-b(esle)o(y)h(,)19 b(1994.)463 1259 y(Na)o(wrocki)k(A.,)e(Contrib)o
-(ution)i(\340)f(la)g(mod\351lisation)h(des)g(c\342bles)g(monotorons)h
-(par)f(\351l\351ments)g(\002nis,)e(Th\350se)581 1351
-y(de)e(doctorat,)h(Uni)n(v)o(ersit\351)f(de)g(Nantes,)g(\311cole)f
-(Centrale)h(de)g(Nantes,)g(1997.)463 1649 y Fv(7.)41
-b(En)m(vir)o(onnement)19 b(L)1161 1632 y Fa(A)1191 1649
-y Fv(T)1232 1669 y(E)1278 1649 y(X)h(n\351cessair)o(e)g(et)h(pr)o
-(obl\350mes)f(\351v)o(entuels)g(d'installation)463 1849
-y(7.1.)40 b Fl(En)m(vironnement)21 b(n\351cessaire)581
-2048 y Fu(Le)h(\002chier)g FB(article-hermes.cls)f Fu(utilise)i(un)e
-(nombre)f(r\351duit)h(de)h(paquetages)e(standard)h(pr\351-)463
-2148 y(sents)i(sur)g(toutes)g(les)g(distrib)n(utions)f(actuelles)h(de)g
-(L)1988 2133 y Ft(A)2018 2148 y Fu(T)2055 2166 y(E)2094
-2148 y(X)h(:)f FB(ifthen)g Fu(et)g FB(babel)p Fu(.)e(Nous)i
-(n'utilisons)463 2247 y(plus)d(le)h(paquetage)d FB(fr)m(enc)o(h)i
-Fu(de)g(Bernard)f(Gaulle)h(\340)h(cause)f(des)h(probl\350mes)e(de)h
-(portabilit\351)f(qu'il)463 2347 y(posait.)581 2496 y(Comme)h(toutes)g
-(les)i(distrib)n(utions)d(de)h(T)1768 2515 y(E)1809 2496
-y(X/L)1913 2481 y Ft(A)1943 2496 y Fu(T)1980 2515 y(E)2019
-2496 y(X)h(fournissent)e(maintenant)g(le)i(paquetage)463
-2596 y FB(babel)29 b Fu(a)n(v)o(ec)g(le)h(mode)e FB(fr)m(enc)o(hb)g
-Fu(\(alias)i FB(fr)o(ancais)p Fu(\),)e(m\352mes)i(les)g(articles)g(en)f
-(anglais)g(utilisent)463 2696 y FB(babel)19 b Fu(pour)g(les)i
-(c\351sures)f(du)g(r\351sum\351)g(et)g(des)h(mots-clefs)e(en)h
-(fran\347ais.)581 2845 y(Les)27 b(distrib)n(utions)f(de)g(T)1311
-2864 y(E)1351 2845 y(X/L)1455 2830 y Ft(A)1485 2845 y
-Fu(T)1522 2864 y(E)1562 2845 y(X)h(sont)f(maintenant)f(tr\350s)i
-(stables.)g(S'il)g(les)g(auteurs)f(ren-)463 2945 y(contrent)15
-b(le)h(moindre)f(probl\350me)f(de)i(fonte)f(ou)h(d'ef)n(fet)e(dif)n
-(f\351rent)h(de)h(celui)g(souhait\351,)f(ils)i(doi)n(v)o(ent)463
-3044 y(en)j(premier)f(lieu)h(v\351ri\002er)g(qu'ils)g(utilisent)g(une)g
-(distrib)n(ution)f(r\351cente.)581 3194 y(En)27 b(France,)f(il)h(e)o
-(xiste)g(plusieurs)f(sites)i(miroirs)e(des)h(distrib)n(utions)f
-(gratuites)g(accessibles)463 3293 y(sur)d(Internet)f(par)h(ftp,)f(pour)
-g(dif)n(f\351rents)g(syst\350mes)h(\(Unix,)f(W)m(indo)n(ws,)g
-(MacOS...\))g(en)h(particu-)463 3393 y(lier)d(:)581 3542
-y(\226)j Fr(ftp)43 b(://ftp.jussieu.)o(fr)o(/p)o(ub/)o(Te)o(X/C)o(TA)o
-(N/)o(...)581 3667 y Fu(\226)23 b Fr(ftp)43 b(://ftp.loria.fr)o(/p)o
-(ub)o(/ct)o(an)o(/..)o(.)463 3966 y Fv(7.2.)d Fl(Probl\350mes)20
-b(de)g(f)o(ontes)581 4165 y Fu(Certaines)d(installations)g(de)g(L)1448
-4150 y Ft(A)1478 4165 y Fu(T)1515 4184 y(E)1555 4165
-y(X)g(n'\351taient)f(pas)h(bien)g(con\002gur\351es)e(pour)h(les)i
-(fontes)e FB(P)-7 b(ost-)463 4265 y(script)26 b Fu(comme)c(T)m(imes.)h
-(Un)h(cas)g(fr\351quent)d(\351tait)j(que)f(le)h(pr\351visualiseur)d
-FB(xdvi)j Fu(n'arri)n(v)n(ait)d(pas)j(\340)463 4364 y(visualiser)h
-(certains)f(caract\350res)g(correctement.)f(Aujourd'hui,)e(a)n(v)o(ec)k
-(les)h(nouv)o(elles)d(distrib)n(u-)463 4464 y(tions,)18
-b(ces)i(probl\350mes)d(ont)h(disparu.)g(De)h(plus,)f(a)n(v)o(ec)h(la)g
-(rapididit\351)e(des)i(ordinateurs)e(actuels,)i(la)463
-4564 y(pr\351visualisation)g(des)h(documents)f(a)n(v)o(ec)h
-FB(xdvi)g Fu(ne)g(se)h(justi\002e)g(plus)f(:)h(on)f(a)h(int\351r\352t)f
-(\340)h(pr\351visuali-)463 4663 y(ser)f(le)g(document)e(en)h(format)g
-(postscript)g(ou)g(pdf,)f(le)i(r\351sultat)g(\351tant)f(plus)h(proche)e
-(de)h(la)h(v)o(ersion)463 4763 y(imprim\351e.)581 4912
-y(La)27 b(police)g(\340)g(chasse)h(\002x)o(e)f(utilis\351e)g(par)g
-(d\351f)o(aut)f(est)i(celle)f(de)g(L)2453 4897 y Ft(A)2483
-4912 y Fu(T)2520 4931 y(E)2560 4912 y(X)g(\()p FB(Computer)g(Modern)463
-5012 y(T)-6 b(ypeWriter)r Fu(\))24 b(qui)f(est)h(tr\350s)g(lisible,)g
-(esth\351tique)f(et)h(pas)g(trop)e(lar)o(ge.)h(Elles)h(s'int\350gre)e
-(bien)h(dans)463 5111 y(le)30 b(te)o(xte)f(en)g(T)m(imes,)g(mais)h(n'e)
-o(xiste)e(pas)i(dans)f(toutes)g(les)h(tailles)g(\(police)f(non)f(v)o
-(ectorielle\).)p eop
-%%Page: 14 14
-14 13 bop 463 495 a Fx(14)95 b(L)-7 b('objet.)23 b(V)-10
-b(olume)20 b(8)f(\226)g(n)1286 463 y Fw(\016)1322 495
-y Fx(2/2005)463 753 y Fu(Cela)27 b(peut)e(conduire)f(\340)i(des)g
-(messages)g(d'a)n(v)o(ertissement)f(sans)h(importance)e(sur)i
-(l'utilisation)463 852 y(de)d(tailles)h(tr\350s)g(v)n(oisines.)f(Si)h
-(l'on)f(pr\351f\350re)f(utiliser)i(la)f(police)g FB(Courier)j
-Fu(\(v)o(ectorielle\),)21 b(il)j(suf)n(\002t)463 952
-y(de)19 b(d\351placer)f(le)i(commentaire)d(dans)i(la)h(d\351\002nition)
-e(de)h Fr(\\ttdefault)c Fu(dans)k(le)h(\002chier)f(de)g(style.)581
-1102 y(L)-8 b('encodage)23 b(des)j(caract\350res)f(qui)g(est)h
-(pr\351conis\351)e(dans)i(le)g(mondeT)2610 1120 y(E)2648
-1102 y(X)g(depuis)e(une)h(quin-)463 1201 y(zaine)e(d'ann\351es)e(est)j
-FB(T1)p Fu(.)f(Il)g(ne)f(de)n(vrait)g(plus)h(il)h(y)f(a)n(v)n(oir)f
-(des)h(en)m(vironements)d(utilisant)j(encore)463 1301
-y(l'ancien)16 b(encodage)g(\()p FB(OLD)h(T1)h Fu(ou)f
-FB(O)m(T1)p Fu(\).)g(Aussi,)h(nous)e(f)o(aisons)i(appel)e(\340)i
-(l'encodage)d FB(T1)j Fu(direc-)463 1400 y(tement)j(dans)g
-FB(article-hermes.cls)p Fu(.)h(De)f(m\352me,)g(la)h(saisie)h(des)f
-(caract\350res)f(latin)g(ne)h(se)g(f)o(ait)g(plus)463
-1500 y(a)n(v)o(ec)k(les)h(notations)f(archa\357ques)f(du)h(genre)f
-Fr(\\^{\\i})f Fu(\(pour)h(\356\),)i(mais)f(en)h(tapant)f(directement)
-463 1600 y(le)k(caract\350re)f(latin)h(sur)g(le)g(cla)n(vier)-5
-b(.)30 b(Nous)f(a)n(v)n(ons)h(donc)e(incorpor\351)g(la)i(commande)e(de)
-h(saisie)463 1699 y Fr(\\usepackage[lati)o(n1)o(]{i)o(np)o(ut)o(enc)o
-(})14 b Fu(des)21 b(caract\350res)e(latin)i(dans)f FB
-(article-hermes.cls)p Fu(.)581 1849 y(Pour)32 b(tout)h(probl\350me)e
-(s\351rieux)h(pos\351)g(par)h(les)g(\002chiers)g(de)g(style)g
-FB(article-hermes.cls)g Fu(ou)463 1948 y FB(biblio-hermes.bst)f
-Fu(les)h(auteurs)f(peuv)o(ent)e(en)m(v)n(o)o(yer)g(un)i(mail)g(\340)h
-FB(rr at unice)o(.fr)p Fu(.)f(Merci)g(de)g(ne)463 2048 y(pas)22
-b(en)m(v)n(o)o(yer)d(de)j(demande)d(d'aide)i(li\351e)h(\340)g(un)f
-(manque)f(de)h(connaissance)f(de)h(L)2803 2033 y Ft(A)2833
-2048 y Fu(T)2870 2067 y(E)2910 2048 y(X.)h(Pour)f(ap-)463
-2148 y(prendre)j(\340)j(utiliser)f(L)1085 2133 y Ft(A)1115
-2148 y Fu(T)1152 2166 y(E)1191 2148 y(Xon)g(peut,)f(parmi)h(les)h
-(nombreux)c(ouvrages)h(sur)i(le)h(sujet,)f(lire)g(celui)463
-2247 y(de)20 b(son)g(auteur)g(\(Lamport,)e(1994\))h(et)h(\(Goossens)g
-FB(et)h(al.,)f Fu(1994\))f(pour)g(une)h(utilisation)g(plus)g(e)o(x-)463
-2347 y(perte.)26 b(Pour)h(tout)f(autre)h(probl\350me)e(d'installation,)
-g(le)j(mieux)e(est)i(de)f(consulter)f(son)g(gourou)463
-2446 y(local)i(ou)g(de)g(consulter)f(les)i(sites)h(T)1540
-2465 y(E)1580 2446 y(X)f(of)n(\002ciels)f(sur)g(Internet.)f(Les)i
-(derni\350res)e(v)o(ersions)g(des)463 2546 y(\002chiers)e(de)g(style)h
-FB(article-hermes.cls)f Fu(et)h FB(biblio-hermes.bst)f
-Fu(et)g(leurs)h(documentations)c(sont)463 2646 y(disponibles)d(sur)h
-(le)h(site)g Fr(www.hermes-scien)o(ce)o(.c)o(om)p Fu(.)671
-2790 y(Bonne)e(chance)12 b(!)2403 3067 y(Article)20 b(re\347u)g(le)h
-(22/09/1996.)2288 3167 y(V)-9 b(ersion)19 b(r\351vis\351e)h(le)h
-(03/03/2005.)1678 3267 y(R\351dacteur)e(responsable)g(:)k(G)t
-Fc(U)t(I)t(L)t(L)t(AU)t(M)t(E)i Fu(L)t Fc(AU)t(R)t(E)t(N)t(T)p
-1588 3429 1710 4 v 1588 4122 4 693 v 1740 3597 a Fu(S)t
-Fc(E)t(R)o(V)t(I)t(C)t(E)h(\311)t(D)t(I)t(T)s(O)t(R)t(I)t(A)t(L)e
-Fu(\226)h(H)t Fc(E)t(R)t(M)t(E)t(S)t Fu(-)t(L)t Fc(A)-5
-b(V)q(O)t(I)t(S)t(I)t(E)t(R)1837 3697 y Fu(14)20 b(rue)g(de)g(Pro)o
-(vign)o(y)-5 b(,)17 b(F-94236)h(Cachan)i(cede)o(x)2568
-3796 y(T\351l)h(:)g(01-47-40-67-67)2334 3896 y(E-mail)e(:)i(re)n
-(vues at la)n(v)n(oisier)-5 b(.fr)1809 3996 y(Serv)o(eur)19
-b(web)h(:)h(http://www)-5 b(.re)n(vuesonline.com)p 3294
-4122 V 1588 4125 1710 4 v eop
-%%Page: 15 15
-15 14 bop 581 673 2892 4 v 581 1257 4 585 v 995 850 a
-FC(ANNEXE)26 b(POUR)e(LE)i(SER)-5 b(VICE)25 b(F)-9 b(ABRICA)g(TION)822
-949 y Fu(A)21 b(FOURNIR)g(P)-8 b(AR)22 b(LES)e(A)-5 b(UTEURS)21
-b(A)-11 b(VEC)21 b(UN)f(EXEMPLAIRE)g(P)-8 b(APIER)859
-1049 y(DE)21 b(LEUR)f(AR)-5 b(TICLE)20 b(ET)h(LE)f(COPYRIGHT)h(SIGNE)f
-(P)-8 b(AR)21 b(COURRIER)812 1149 y(LE)g(FICHIER)f(PDF)h(CORRESPOND)m
-(ANT)g(SERA)g(ENV)m(O)l(YE)f(P)-8 b(AR)21 b(E-MAIL)p
-3469 1257 V 581 1260 2892 4 v 583 1561 a(1)t(.)j(A)t
-Fc(RT)t(I)t(C)t(L)t(E)h(P)t(O)t(U)t(R)h(L)t(A)e(R)t(E)t(V)t(U)t(E)h
-Fu(:)789 1656 y FB(L)m('objet.)19 b(V)-9 b(olume)19 b(8)h(\226)h(n)1499
-1626 y Fm(\016)1536 1656 y FB(2/2005)583 1821 y Fu(2)t(.)j(A)p
-Fc(U)t(T)t(E)t(U)t(R)t(S)h Fu(:)789 1916 y FB(Ro)o(g)o(er)20
-b(Rousseau)583 2081 y Fu(3)t(.)k(T)t Fc(I)t(T)t(R)t(E)h(D)t(E)f(L)m
-Fu(')t Fc(A)t(RT)t(I)t(C)t(L)t(E)h Fu(:)789 2176 y FB(R\351alisation)37
-b(d'un)g(article)i(pour)f(les)h(r)m(e)o(vues)f(ou)g(les)i(actes)e
-(HERMES)g(avec)789 2276 y(L)805 2262 y FA(A)828 2276
-y FB(T)860 2294 y(E)901 2276 y(X)20 b(2)1014 2288 y Fs(\017)583
-2441 y Fu(4)t(.)k(T)t Fc(I)t(T)t(R)t(E)h(A)t(B)t(R)t(\311)t(G)t(\311)p
-912 2455 291 4 v 25 w(P)t(O)t(U)t(R)g(L)t(E)f(H)t(AU)t(T)h(D)t(E)g(P)n
-(A)q(G)t(E)g(M)t(O)t(I)t(N)t(S)g(D)t(E)f Fu(4)t(0)g Fc(S)t(I)t(G)t(N)t
-(E)t(S)p 2085 2455 742 4 v 25 w Fu(:)789 2536 y FB(Mode)19
-b(d'emploi)g(de)h(article-hermes.cls)583 2701 y Fu(5)t(.)k(D)q
-Fc(A)m(T)t(E)g(D)t(E)h(C)t(E)t(T)t(T)t(E)f(V)t(E)t(R)t(S)t(I)t(O)t(N)h
-Fu(:)789 2796 y FB(2)20 b(mar)o(s)h(2005)583 2961 y Fu(6)t(.)j(C)t
-Fc(O)t(O)t(R)t(D)t(O)t(N)t(N)t(\311)t(E)t(S)i(D)t(E)t(S)e(AU)t(T)t(E)t
-(U)t(R)t(S)h Fu(:)699 3111 y(\226)e(adresse)d(postale)g(:)764
-3230 y(Laboratoire)e(I3S)i(\(CNRS)h(-)g(UNSA\))764 3330
-y(Les)f(Algorithmes)f(-)i(B\342t)g(Euclide)e(B)764 3430
-y(2000)g(route)g(des)h(Lucioles)g(\226)g(B.P)-9 b(.)21
-b(121)764 3529 y(F-06903)d(Sophia)h(Antipolis)h(Cede)o(x)764
-3654 y(Roger)-5 b(.Rousseau at unice.fr)699 3773 y(\226)23
-b(t\351l\351phone)c(:)i(00)e(00)h(00)g(00)g(00)699 3898
-y(\226)j(t\351l\351copie)d(:)h(00)e(00)h(00)g(00)g(00)699
-4022 y(\226)j(e-mail)d(:)h(Roger)-5 b(.Rousseau at unice.fr)583
-4193 y(7)t(.)24 b(L)t Fc(O)t(G)t(I)t(C)t(I)t(E)t(L)h(U)t(T)t(I)t(L)t(I)
-t(S)t(\311)g(P)t(O)t(U)t(R)g(L)t(A)f(P)t(R)t(\311)t(P)n(A)t(R)t(A)m(T)t
-(I)t(O)t(N)h(D)t(E)g(C)t(E)t(T)f(A)t(RT)t(I)t(C)t(L)t(E)h
-Fu(:)789 4288 y(L)810 4273 y Ft(A)840 4288 y Fu(T)877
-4306 y(E)916 4288 y(X,)c(a)n(v)o(ec)f(le)g(\002chier)g(de)g(style)h
-Fr(article-hermes.c)o(ls)o Fu(,)789 4387 y(v)o(ersion)e(1.2)g(du)h
-(03/03/2005.)583 4553 y(8)t(.)k(F)t Fc(O)t(R)t(M)t(U)t(L)t(A)t(I)t(R)t
-(E)i(D)t(E)f(C)t(O)t(P)t(Y)t(R)t(I)t(G)t(H)t(T)g Fu(:)789
-4647 y(Retourner)14 b(le)j(formulaire)d(de)i(cop)o(yright)e(sign\351)i
-(par)g(les)h(auteurs,)e(t\351l\351char)o(g\351)f(sur)i(:)789
-4747 y Fr(http://www.revu)o(es)o(onl)o(in)o(e.)o(com)p
-1588 4976 1710 4 v 1588 5668 4 693 v 1740 5144 a Fu(S)t
-Fc(E)t(R)o(V)t(I)t(C)t(E)26 b(\311)t(D)t(I)t(T)s(O)t(R)t(I)t(A)t(L)e
-Fu(\226)h(H)t Fc(E)t(R)t(M)t(E)t(S)t Fu(-)t(L)t Fc(A)-5
-b(V)q(O)t(I)t(S)t(I)t(E)t(R)1837 5243 y Fu(14)20 b(rue)g(de)g(Pro)o
-(vign)o(y)-5 b(,)17 b(F-94236)h(Cachan)i(cede)o(x)2568
-5343 y(T\351l)h(:)g(01-47-40-67-67)2334 5443 y(E-mail)e(:)i(re)n
-(vues at la)n(v)n(oisier)-5 b(.fr)1809 5542 y(Serv)o(eur)19
-b(web)h(:)h(http://www)-5 b(.re)n(vuesonline.com)p 3294
-5668 V 1588 5671 1710 4 v eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/lib/guii/majecstic08/doc-article-hermes.tex b/lib/guii/majecstic08/doc-article-hermes.tex
deleted file mode 100644
index 03a57f3..0000000
--- a/lib/guii/majecstic08/doc-article-hermes.tex
+++ /dev/null
@@ -1,760 +0,0 @@
-% Documentation du style Latex pour les articles de revues ou de conférences Hermes
-% Les consignes aux auteurs sont en annexe de ce document.
-
-\documentclass[fleqn]{article-hermes}
-
-%%% Commandes spécifiques à l'article
-\newcommand{\cfsect}[1]{(\textit{cf.} section~\ref{#1})}
-\newcommand{\cfsectpage}[1]{(\textit{cf.} section~\ref{#1}, page~\pageref{#1})}
-\providecommand{\figureref}[1]{\figname~\ref{#1}}
-\providecommand{\cftab}[1]{(\textit{cf.} tableau~\ref{#1})}
-\newcommand{\cmd}[1]{{\upshape\texttt{\symbol{"5C}#1}}}
-%%% Fin des commandes spécifiques à l'article
-
-
-\journal{\LOBJET. Volume 8 -- n°2/2005}{1}{15}
-
-\publisher{00 00 00 00 00 }{00 00 00 00 00}{Roger.Rousseau at unice.fr}
-
-\title[Mode d'emploi de \textit{article-hermes.cls}]%
-      {Réalisation d'un article pour les revues
-       ou les actes HERMES avec \LaTeX~2$_{\epsilon}$}
-
-\subtitle{Mode d'emploi des fichiers de style \\ article-hermes.cls et
-biblio-hermes.bst\\ (version 1.2 du 3 mars 2005)}
-\author{Roger Rousseau}
-
-\address{%
-Laboratoire I3S (CNRS - UNSA)\\ Les Algorithmes - Bât Euclide B\\ 2000 route
-des Lucioles -- B.P. 121\\ F-06903 Sophia Antipolis Cedex\\[3pt]
-Roger.Rousseau at unice.fr}
-
-\resume{Cette notice donne le mode d'emploi des fichiers de style
-\textit{article-hermes.cls} et \textit{biblio-hermes.bst} pour formater, avec
-le logiciel \LaTeX, un article de revue ou de conférence à paraître aux
-éditions Hermès Science Publications. Ce paquetage est conforme aux
-<<~Consignes aux auteurs~>> définies par l'éditeur. Il introduit le minimum de commandes nouvelles. La version \LaTeX\ de cet
-article sert aussi d'exemple d'utilisation des commandes nécessaires~: le
-résultat imprimé permet de vérifier la conformité aux consignes. }
-
-\abstract{This paper gives the user's guide of \textit{article-hermes.cls} and
-\textit{hermes\-.bst} style files, for typesetting articles with \LaTeX\ to
-appear in Hermès Science Publications journals or proceedings. This package
-conforms to ``Instructions to authors'' that are defined by the publisher. It
-introduces a minimum of new commands. The \LaTeX\ version of this article can
-also be used as an example of command utilization~: the printed result allows
-to verify the conformity to instructions. }
-
-\motscles{\LaTeX, Bib\TeX, fichier de style, article de revue, article d'actes
-de conférence, Hermès Science Publications, consignes aux auteurs.}
-
-\keywords{\LaTeX, Bib\TeX, style file, article of journal, article of
-proceedings, Hermès Science Publications, instructions to authors.}
-
-
-\begin{document}
-
-%\maketitle % Exemple de 1ere page sans les valeurs de champs
-            % pour afficher les commandes à utiliser
-
-\maketitlepage
-
-\section{Introduction}
-
-Cette notice décrit le mode d'emploi des fichiers de style \LaTeX\
-\textit{article-hermes.cls} et \textit{biblio-hermes.bst} qui servent à
-préparer des articles de revue ou de conférence conformes aux consignes données
-par Hermès Science Publications\footnote{Disponibles sur Internet à
-\texttt{http://www.revuesonline.com}.}
-
-Pour utiliser ces fichiers de style, il faut disposer d'une installation de
-\LaTeX~2$_{\epsilon}$ pas trop ancienne avec le paquetage \textit{babel} pour
-la césure des mots français ou anglais. La section \ref{envir} page
-\pageref{envir} donne les informations sur l'environnement nécessaire et où se
-le procurer.
-
-Selon l'environnement utilisé, l'exécution se fera en tapant des commandes ou
-en cliquant des entrées de menus. Les environnements traditionnels nécessitent
-de taper des commandes dans une fenêtre d'un langage de commandes
-(shell sous Unix/Linux, shell de Cygwin ou MSDOS sous Windows...).
-Certains environnements (par exemple MikTeX) déterminent automatiquement le nombre
-d'exécutions nécessaires pour résoudre toutes les références
-(numéros de figures, de pages, de sections, bibliographie...). D'autres environnements
-demandent à l'utilisateur de lancer lui-même le nom\-bre nécessaire d'exécutions de
-\LaTeX.
-Si vous trouvez des références non résolues qui apparaissent par des \textbf{??},
-c'est qu'il manque au moins une exécution. Cela est parfois indiqué aussi
-par un message à l'écran et dans un fichier de \textit{log}.
-
-Comme il existe maintenant de nombreux environnements de \LaTeX, nous ne pouvons pas
-décrire de manière précise ce qu'il faut faire dans chaque cas. Cette notice
-décrit les tâches à effectuer dans un environnement traditionnel de type
-Unix, Linux ou Windows avec MikTeX. Le lecteur pourra normalement en déduire facilement
-ce qu'il convient de faire dans son propre environnement.
-
-Toutes les commandes standard du système \LaTeX\ sont utilisables. Certaines
-ont été redéfinies et nous avons ajouté quelques commandes supplémentaires qui
-sont décrites dans cette notice. La section~\ref{options} donne les options de
-la commande \cmd{documentclass}. La section~\ref{prem-page} présente les
-commandes principales pour construire la première page. Elles sont
-complétées avec les commandes de la section~\ref{soumis} pour construire la
-signature éventuelle de l'article, les en-têtes de page, et toutes les
-informations nécessaires à la remise finale d'un article accepté. La
-section~\ref{cmdes-corps} donne les rares commandes spécifiques pour le corps
-du texte, pour certaines listes, formules mathématiques, remarques, notes,
-remerciements... La bibliographie s'obtient, comme sur l'exemple de la
-section~\ref{biblio} avec les commandes standard \LaTeX\ et le fichier de style
-\textit{hermes.bst} qui doit être accessible. Enfin, la section~\ref{envir}
-précise l'environnement \LaTeX\ nécessaire et discute des problèmes éventuels
-d'installation.
-
-\pagebreak
-
-\section{Options générales de style \label{options}}
-
-Ces options se placent dans la commande
-\begin{quote}
-\cmd{documentclass[opt1,opt2...]\{article-hermes\}}.
-\end{quote}
-Elles permettent d'adapter le fichier
-de style \textit{article-hermes.cls} aux cas suivants~:
-
-\begin{itemize}
-
-\item \textit{english}~: indique que l'article est écrit en anglais.
-Par défaut, c'est le  français qui est choisi.
-Le choix de la langue d'un article influe sur la présentation de l'article,
-la traduction de certaines mots (par exemple Table \textit{vs} Tableau) et sur l'algorithme
-de césure. Il est cependant possible d'incorporer des citations dans une autre langue
-dans le corps de l'article, en utilisant la commande \cmd{french} ou \cmd{english}, pour
-activer localement l'algorithme de césure adéquat\footnote{%
-L'utilisation d'autres langues comme
-l'allemand ou l'espagnol est également possible par l'emploi de la commande \LaTeX\
-\cmd{selectlanguage\{languagename\}}, mais aux risques et périls de l'utilisateur.
-Certains sous-paquetages de langages (comme frenchb) font en effet beaucoup plus que de changer l'algorithme
-de césure. Dans ce cas, il faudra activer la commande \cmd{initialisation} juste après
-l'appel à \cmd{selectlanguage} pour rétablir la présentation du style Hermes.}.
-
-\item \textit{fleqn}~: cadre les formules mathématiques à gauche d'un retrait de
-   1~cm. Par défaut, les formules sont centrées.
-
-\item \textit{cropmarks}~: fait apparaître les limites de page et de corps du texte.
- Cette option fonctionne avec du papier \textit{A4} ou \textit{USLETTER}.
-   En phase de mise au point finale, cela permet de voir du premier coup d'{\oe}il
-   d'éventuels défauts de débordements en marge droite ou de remplissage des
-   pages. Certes, \LaTeX\ indique tous ces défauts, mais beaucoup sont
-   insignifiants, à peine visibles. Le tracé des cadres permet d'apprécier plus
-   concrètement l'ampleur des problèmes éventuels et de les corriger à la
-   main par les commandes \LaTeX\ \textit{adhoc}, comme ``\verb+\-+'' et autres.
-
-   On peut aussi, indépendamment de l'option \textit{cropmarks}, faire apparaître ou
-   disparaître ces cadres sur la page en cours, avec les commandes
-   \cmd{CropMarksOn} et \cmd{CropMarksOff}, comme utilisé pour l'annexe.
-
-\item \textit{empty}~: pour supprimer les en-têtes et la signature de
-l'article, lors de la remise finale lorsqu'on ne dispose pas de toutes les
-informations nécessaires ou que c'est demandé par le service de
-fabrication. Pour éviter de numéroter les pages au crayon, les numéros
-de page apparaissent tout en bas, en dehors des dimensions de page des articles.
-
-\item \textit{nofirstpagebreak}~: pour supprimer le saut de page de la
-première page. L'emploi de cette option est réservé à des cas spéciaux,
-et doit se faire en accord avec l'éditeur.
-
-\end{itemize}
-
-\section{Construction de la première page \label{prem-page}}
-
-La première page de l'article s'obtient avec un procédé voisin de celui
-utilisé en \LaTeX\ standard avec \cmd{maketitle}.
-On commence par définir les différents champs
-nécessaires à la première page avec les commandes indiquées sur le
-tableau~\ref{tbl:1}.
-Celles-ci peuvent s'utiliser dans n'importe quel
-ordre, avant ou après la commande \cmd{begin\{do\-cu\-ment\}}.
-Il est cependant recommandé d'utiliser ces commandes dans l'ordre
-du tableau~\ref{tbl:1}.
-Par défaut ces champs contiennent un petit texte qui indique la commande à
-utiliser, en cas d'oubli.
-
-\begin{table}[h]
-\setlength{\tabcolsep}{2mm}
-\begin{tabular}{|p{46mm}|p{66mm}|}
-\hline
-\cmd{title[} \textit{titre abrégé} \texttt{]\{} \textit{titre} \texttt{\}} &
-                Titre de l'article. Si nécessaire, utiliser
-                              \verb+\\+ pour couper la ligne.\\
-\cmd{subtitle\{} \textit{sous-titre} \texttt{\}} &
-                Sous-titre éventuel. Si nécessaire, utiliser
-                              \verb+\\+ pour couper la ligne.\\
-\hline
-\cmd{author\{} \textit{auteur(s)} \texttt{\}} &
-                Prénom et Nom de chaque auteur, séparés par un tiret long.\\
-\cmd{andauthor} &
-                Tiret long entre deux noms d'auteurs.\\
-\hline
-\cmd{address\{} \textit{adresse(s)} \texttt{\}} &
-                Adresse du ou des auteurs, sur quelques lignes coupées par
-\verb+\\+. Mettre l'Email à la fin, à une distance de 3~pts.
-             Dans le cas de plusieurs adresses, séparer celles-ci de 6~pts
-et indexer les auteurs et adresses
-            par \fup{*} ou \fup{**}\ldots.
-\\
-\hline
-\cmd{resume\{} \textit{résumé} \texttt{\}} & Résumé en français\\
-\cmd{abstract\{} \textit{abstract} \texttt{\}} & Résumé en anglais\\
-\cmd{motscles\{} \textit{mots-clés} \texttt{\}}  & Mots-clés en français\\
-\cmd{keywords\{} \textit{keywords} \texttt{\}}  & Mots-clés en anglais\\
-\hline
-\cmd{maketitlepage}  &
-                Placée après les commandes précédentes,
-                pour faire apparaître la première page.\\
-\hline
-\end{tabular}
-\caption{Commandes obligatoires à utiliser pour la première page}\label{tbl:1}%
-\end{table}
-
-La commande \cmd{maketitlepage} (alias \cmd{maketitle}) construit la première
-page et réalise les ultimes initialisations. Elle s'utilise obligatoirement
-après la commande \cmd{begin\{document\}} et après les commandes précédentes de
-définition de champs. Ainsi, la commande \cmd{maketitlepage}, placée juste
-après \cmd{begin\{document\}}, affiche un bref mode d'emploi des commandes de
-première page.
-
-Pour le titre et le sous-titre éventuel, les coupures éventuelles des lignes se
-font souvent de manière explicite, avec la commande \verb+\\+ usuelle, sans
-indication d'espacement vertical. La commande \cmd{title} est aussi utilisée
-pour construire le titre courant dans l'en-tête des pages impaires. Si le titre
-est assez court, il est directement utilisé pour l'en-tête. Sinon, il faut
-fournir un titre abrégé, en option de la commande \cmd{title}. Dans tous les
-cas, la longueur du titre utilisé pour l'en-tête ne doit pas dépasser 55~mm
-(environ 40 caractères, espaces comprises, en corps 9). En cas de dépassement, c'est
-signalé par une erreur \LaTeX\ qu'on peut ignorer en tapant sur la touche
-\texttt{\symbol{"3C}return\symbol{"3E}}.
-
-\pagebreak
-\noindent Exemple~:
-\begin{quote}\begin{verbatim}
-\title[Démarche pour enseigner la compilation]%
-      {Démarche de projet pour enseigner la compilation}
-\end{verbatim}\end{quote}
-
-Dans le cas de plusieurs auteurs, il faut
-utiliser la commande \cmd{andauthor} pour faire apparaître le tiret de séparation. Les
-astérisques de renvoi aux adresses pourront utiliser la commande \cmd{fup\{*\}},
-\cmd{fup\{**\}}\ldots Exemple~:
-\begin{quote}\begin{verbatim}
-\author{Paul Dupond\fup{*} \andauthor Pierre Durand\fup{**}}
-\end{verbatim}\end{quote}
-donne le résultat suivant~:
-\begin{quote}
-{\FonteAuteur Paul Dupond\fup{*} \andauthor Pierre Durand\fup{**}}
-\end{quote}
-
-L'adresse (éventuellement plusieurs) est donnée en argument de la commande
-\cmd{address} sur quelques lignes. L'adresse \textit{Email} sera placée sur la
-dernière ligne à une distance de 3 pts de la dernière ligne d'adresse. Dans le
-cas d'adresses électroniques de même domaine, on mettra celui-ci en facteur.
-Exemple~:
-\begin{quote}\begin{verbatim}
-\address{
-Laboratoire d'Informatique de Besançon\\
-Université de Franche-comté\\
-16, route de Gray\\
-25 030 Besançon cedex\\[3pt]
-\{chatonnay,julliand,lasalle\}@lib.univ-fcomte.fr
-}
-\end{verbatim}\end{quote}
-produira l'effet suivant~:
-\begin{quote}
-{\FonteAdresse
-Laboratoire d'Informatique de Besançon\\
-Université de Franche-comté\\
-16, route de Gray\\
-25 030 Besançon cedex\\[3pt]
-\{chatonnay,julliand,lasalle\}@lib.univ-fcomte.fr
-}
-\end{quote}
-
-Si les auteurs ont des adresses différentes, elles
-seront séparées d'un espace de 6 pts (voir l'exemple
-de la fin de l'annexe).
-
-Les commandes \cmd{resume}, \cmd{abstract}, \cmd{motscles},
-\cmd{keywords}, s'utilisent chacune avec un argument qui définit
-respectivement le résumé en français, le résumé en anglais, les mots-clés en
-français et les mots-clés en anglais. Les résumés ne doivent pas dépasser une
-dizaine de lignes et les mots-clés seront donnés sur une ligne ou deux.
-Pour les articles en français, ces rubriques sont imprimées dans l'ordre
-<<~résumé, abstract, mots-clés, keywords~>>. Pour des articles en anglais
-(option \textit{english}, \textit{cf.} section~\ref{options})
-elles sont placées dans l'ordre <<~abstract, résumé, keywords, mots-clés~>>.
-La coupure des mots est traitée automatiquement, de façon différente
-pour les parties en français et en anglais.
-
-\section{Commandes pour la soumission ou la publication d'un article\label{soumis}}
-
-Les  informations d'identification qui sont placées dans les en-têtes
-de page, dans la signature de l'article en bas de la première page,
-ou à la fin de l'article dépendent de son état de finition.
-Les commandes de cette section s'utilisent au fur et à mesure que l'on dispose
-de ces informations, et selon le type d'article, de revue ou de conférence.
-
-\begin{itemize}
-
-\item La phase de soumission d'un article utilise la commande
-\cmd{submitted} (\textit{cf.} section~\ref{submitted} et tableau~\ref{tbl:2}).
-
-\item La phase de préparation d'un article accepté utilise
-la commande \cmd{journal} (\textit{cf.} section~\ref{journal} et
-tableau~\ref{tbl:3}) pour une revue, et \cmd{proceedings}
-(\textit{cf.} section~\ref{proceedings} et tableau~\ref{tbl:4})
-pour une conférence.
-\end{itemize}
-
-Il est recommandé d'utiliser ces commandes dès le début de chaque phase de
-préparation, même si l'on ne dispose pas de toutes les informations~: on pourra
-donner les informations qui manquent juste avant la remise aux rédacteurs ou au
-service de fabrication.
-
-Pour l'ultime préparation d'un article accepté, juste avant son expédition
-à l'éditeur, certaines commandes supplémentaires peuvent être nécessaires
-comme \cmd{logbook}, \cmd{biography} et \cmd{publisher} \cfsect{finalisation}.
-
-\subsection{Phase de soumission~: commande \cmd{submitted}}
-\label{submitted}
-
-\begin{table}[t]
-\setlength{\tabcolsep}{2mm}
-\begin{tabular}{|p{56mm}|p{56mm}|}
-\hline
-\cmd{submitted[}\textit{date}\texttt{]\{}\textit{dest.}\texttt{\}\{}\textit{n\degree soumis.}\texttt{\}} &
-        Commande de soumission, à placer avant \cmd{maketitlepage}\\
-\hline
-\hspace*{1cm} \texttt{[}\textit{date}\texttt{]} &
-        Date de la signature, par défaut, la date du jour.\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{dest.}\texttt{\}} &
-        Nom de la revue ou de la conférence visée\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{n\degree soumis.}\texttt{\}} &
-       Numéro de la soumission (généralement de 1 à 3).\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{submitted} pour la soumission d'un article}\label{tbl:2}
-\end{table}
-
-\begin{table}[h]
-\begin{tabular}{|p{56mm}|p{56mm}|}
-\hline \cmd{journal\{}
-      \textit{arg1}\texttt{\}\{}\textit{arg2}
-      \texttt{\}\{}\textit{arg3}\texttt{\}} &
-       Commande de publication, à placer avant \cmd{maketitlepage}\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-         Nom de la revue + n° de volume de la revue (1 à 2 chiffres) +  n° de fascicule de la revue (1 à 2 chiffres) + année de parution sur 4 chiffres\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-        Numéro de première page de parution, si connu. Sinon mettre un tiret\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg3}\texttt{\}} &
-        Numéro de dernière page de parution, si connu. Sinon mettre un tiret\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{journal} pour la publication d'un article
-de revue}\label{tbl:3}
-\end{table}
-
-On utilise la commande \cmd{submitted} \cftab{tbl:2}
-avec trois arguments, le premier en option~:
-\begin{itemize}
-\item Le premier argument donne la date de version du document qui
-sera placée sur la ligne de signature de l'article, en bas de la première page.
-Par défaut, c'est la date du jour qui est utilisée.
-
-\item Le deuxième argument précise le nom de la revue ou de la conférence où
-l'article est soumis. Ce nom apparaîtra sur la ligne de signature (pour les
-revues seulement) et sur l'en-tête des pages paires. Le nom ne doit pas être
-trop large (55~mm maximum en corps 9).
-
-\item Le troisième argument indique le numéro de soumission. Il ne sert qu'à distinguer
-les différentes versions d'un article et apparaît sur la ligne de signature
-et sur l'en-tête des pages paires.
-\end{itemize}
-
-Exemple~: pour commencer la préparation d'un article à la revue
-\textit{Technique et science informatiques}, on peut placer avant
-\cmd{maketitlepage} la commande suivante~:
-
-\begin{quote}\begin{verbatim}
-\submitted{Technique et science informatiques}{1}
-\end{verbatim}\end{quote}
-
-\subsection{Phase de publication à une revue~: commande \cmd{journal}}
-\label{journal}
-
-Comme \cmd{submitted}, la commande \cmd{journal} \cftab{tbl:3} se place avant
-la commande \cmd{maketitlepage}. Ses trois arguments définissent les
-informations nécessaires pour construire la signature de l'article et l'en-tête
-des pages~:
-
-\begin{itemize}
-
-\item Le premier argument donne le nom de la revue, comme dans la commande
-\cmd{submitted}, suivi du\emph{ numéro de volume}, du \emph{fascicule} et de
-l'\emph{année de parution} de l'article (longueur totale de 55~mm maximum en
-corps 9). Cet intitulé complet intervient dans la signature de l'article et
-dans l'en-tête des pages paires. Certaines revues disposent d'une présentation
-particulière mais dans le cas d'un numéro courant, la forme est généralement~:
-\begin{quote}
-   \verb!\journal{Nom de la revue. Volume 19 -- n° 1/2005}{45}{57}!
-\end{quote}
-Dans le cas d'un numéro spécial, la forme est généralement~:
-\begin{quote}
-   \verb!\journal{Nom de la revue -- 7/2005. Titre du numéro}{45}{57}!
-\end{quote}
-
-\item Les deux derniers arguments donnent les numéros de la \textit{première et dernière page}
-   de l'article, s'ils sont connus. Dans ce cas, ils apparaissent sur la signature
-   et le numéro de première page initialise la numérotation de toutes les pages.
-   Si le numéro de première page est inconnu (le dernier l'est aussi), il faut mettre un
-   tiret comme valeur. Dans ce cas, les numéros n'apparaissent pas dans la signature et
-   la numérotation des pages commence à 1, avec un espace suffisant pour que l'imprimeur
-   puisse surcharger les vrais numéros de page, sans avoir à retoucher les en-têtes.
-   Il se peut aussi que le service de fabrication souhaite une version sans en-tête
-   ni signature, ce qui s'obtiendra par l'option \textit{empty} de la commande
-   \cmd{documentclass} \cfsect{options}.
-\end{itemize}
-
-Exemple. Pour préparer la version finale d'un article à paraître dans la rubrique
- de la revue \textit{RSTI - RIA}, volume 18, n°3, 1999,
-pages 297 à 322,
-il suffit de donner la commande suivante~:
-\begin{quote}\begin{verbatim}
-\journal{RSTI - RIA. Volume 18 -- n° 3/1999}{297}{322}
-\end{verbatim}\end{quote}
-\begin{table}[t]
-\begin{tabular}{|p{46mm}|p{66mm}|}
-\hline
-\cmd{proceedings\{}\textit{arg1}\texttt{\}}
-       \texttt{\{}\textit{arg2}\texttt{\}}
-       &
-       Commande de publication, à placer avant \cmd{maketitlepage}\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-         Nom abrégé de la conférence visée\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-        Numéro de première page de parution, si connu. Sinon mettre un tiret\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{proceedings} pour la publication
-d'un article de conférence}\label{tbl:4}
-\end{table}
-
-\begin{table}[h]
-\begin{tabular}{|p{56mm}|p{56mm}|}
-\hline \cmd{publisher\{}\textit{arg1}\texttt{\}\{}\textit{arg2}
-       \texttt{\}\{}\textit{arg3}\texttt{\}}
-       &
-       Peut être placée en début ou fin de l'article\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg1}\texttt{\}} &
-         Numéro(s) de téléphone de l'auteur\\
-\hline
-\hspace*{1cm} \texttt{\{}\textit{arg2}\texttt{\}} &
-         Numéro(s) de télécopie de l'auteur\\
-\hline \hspace*{1cm} \texttt{\{}\textit{arg3}\texttt{\}} &
-         Email(s) de l'auteur\\
-\hline
-\end{tabular}
-\caption{Commande \cmd{publisher} pour construire l'annexe pour l'éditeur.}
-\label{tbl:5}
-\end{table}
-
-\subsection{Phase de publication à une conférence~: commande \cmd{proceedings}}
-\label{proceedings}
-
-Comme la commande \cmd{journal}, la commande \cmd{proceedings} \cftab{tbl:4}
-s'utilise avant la commande \cmd{maketitlepage}, mais avec deux arguments
-seulement, car les actes de conférence n'utilisent pas de ligne de signature~:
-
-\begin{itemize}
-
-\item Le premier argument donne le nom abrégé de la conférence (moins de
-55~mm).  Il intervient dans l'en-tête des pages paires.
-
-\item Le deuxième argument précise
-le numéro de la \textit{première page}
-de l'article, s'il est connu, ou un tiret sinon. Son utilisation
-est identique au 5\ieme argument de la commande \cmd{journal}.
-\end{itemize}
-
-Exemple. Pour préparer la version finale d'un article à paraître dans les
-actes
-de la conférence \textit{LMO'99}, pages 245 et suivantes,
-il suffit de donner la commande~:
-\begin{quote}\begin{verbatim}
-\proceedings{LMO'99}{245}
-\end{verbatim}\end{quote}
-
-\subsection{Commandes de finalisation d'un article}
-\label{finalisation}
-
-\subsubsection{Finalisations spécifiques à un article de revue}
-
-Certaines revues donnent à la fin des articles quelques indications sur
-le processus de soumission et de courtes biographies des auteurs.
-
-La commande \cmd{logbook\{}\textit{date réception}
-                     \texttt{\}\{}\textit{date de révision}%
-                     \texttt{\}\{}\textit{rédacteur}\texttt{\}}
-s'utilise après la bibliographie et prend trois arguments fournis par les rédacteurs
-de la revue. Le premier indique la date de réception de la première soumission
-de l'article. Le second donne la date de dernière révision. Le troisième donne
-le prénom et le nom du rédacteur responsable de l'article. Dans le cas de deux rédacteurs,
-on sépare les noms par la commande \cmd{andeditor}.
-Pour adapter cette commande secondaire à des besoins spécifiques,
-comme dans le cas de plusieurs dates de révision, il suffit de faire un <<~copier-coller~>>
-du source lu dans le fichier \textit{article-hermes.cls} et de l'adapter comme
-il convient.
-
-La commande \cmd{biography\{}\textit{Prénom Nom}\texttt{\}\{}\textit{biographie}\texttt{\}} s'utilise
-pour chaque auteur, après la commande \cmd{logbook}.
-Le premier argument donne le prénom et nom de l'auteur et l'argument suivant une courte
-biographie sur 5 lignes environ.
-
-\subsubsection{Annexe pour le service de fabrication~: commande \cmd{publisher}}
-
-Pour la remise finale des articles de revue ou de conférence acceptés, le
-service de fabrication demande aux auteurs une version abrégée du titre courant
-(normalement déjà placée dans l'en-tête des pages impaires) et les coordonnées
-des auteurs pour les joindre si nécessaire. La commande \cmd{publisher} qui se
-place au début ou à la fin de l'article fait apparaître en dernière page
-l'annexe demandée, avec un report des informations déjà connues comme le titre
-(version longue et abrégée), les noms d'auteurs, les références du logiciel
-utilisé. Il ne manque que les coordonnées (numéro de téléphone, numéro de fax
-et e-mail) pour construire cette page \cftab{tbl:5}.
-
-\section{Commandes spéciales pour le corps de l'article} \label{cmdes-corps}
-
-Toutes les commandes \LaTeX\ sont utilisables comme d'habitude,
-même si leur effet a souvent été redéfini pour se conformer aux consignes d'édition.
-
-Les commandes internes au style \textit{article-hermes.cls} ne sont pas en conflit avec
-les commandes de l'utilisateur, car elles utilisent un signe ``\texttt{@}'' dans leur nom.  Les
-fontes utilisées par ce style sont utilisables dans les articles. Elles ont un nom en
-français de la forme \texttt{FonteTitre}, \texttt{FonteSectionI}\ldots De manière générale, la liste
-des commandes et des fontes utilisables, des compteurs, longueurs, commandes ou
-environnements redéfinis sont indiqués en commentaire, au début du fichier de
-style. Celui-ci est par ailleurs assez fortement commenté et paramétré, et devrait
-donc pouvoir être facilement adapté, même par des auteurs non experts.
-
-Quelques commandes spécifiques supplémentaires ont été définies
-pour répondre à quelques cas spéciaux, comme indiqué ci-après.
-
-\subsection{Listes}
-
-Les consignes d'édition précisent qu'il faut employer des tirets de tailles
-décroissantes pour les labels de listes \cmd{begin\{itemize\}} \ldots
-\cmd{end\{itemize\}}. Trois niveaux de listes sont autorisés, avec trois
-tailles de tirets, comme ceci~: {---}, {--}, {-}. Cependant,
-les tirets larges sont réservés
-aux éléments de premier niveau de listes à trois niveaux~; les éléments
-de premier niveau de listes à un ou deux niveaux commencent avec un tiret
-moyen. Comme il n'est pas facile d'automatiser ce comportement, nous proposons
-deux types d'environnements~:
-\begin{itemize}
-\item les listes à un ou deux niveaux d'emboîtement s'utilisent avec l'environnement
-usuel \texttt{itemize} qui produira des tirets moyens ou courts.
-\item les rares listes à trois niveaux, utilisent
-l'environnement \texttt{ITEMIZE} pour tous les niveaux, ce
-qui produira les trois tailles de labels.
-\end{itemize}
-
-\subsection{Formules mathématiques}
-
-Les formules numérotées s'obtiennent, comme d'habitude, avec les environnements
-comme \texttt{equation}, \texttt{eqnarray} ou \texttt{align} qui ont été
-adaptés pour la numérotation demandée. Nous laissons le choix d'utiliser des
-formules centrées au milieu de ligne (par défaut) ou cadrées à gauche avec un
-retrait, en utilisant l'option standard \texttt{fleqn} \cfsect{options}.
-
-Pour couper des formules sur plusieurs lignes, on peut utiliser le paquetage
-\texttt{amstex}. Si on ne dispose pas de ce logiciel,
-on peut utiliser la commande rustique \cmd{eqncont}
-aux endroits choisis pour les coupures, avec
-l'environnement \texttt{eqnarray}. Celui-ci permet de décider du centrage voulu,
-comme sur les exemples suivants, qui ne veulent rien dire !
-
-Le premier exemple (formule~[\ref{f:1a}]) n'utilise pas de signe \texttt{\&} dans
-\texttt{eqnarray}, ce qui provoque un cadrage à droite de la formule coupée,
-l'ensemble restant centré par défaut ou cadré à gauche (option \texttt{fleqn}).
-
-\begin{eqnarray}
-\label{f:1a}
-x^2 + y^2 + a\sqrt{1-y^2} +\eqncont
-( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-La formule [\ref{f:2}] est coupée en deux lignes centrées, en plaçant les signes
-``\texttt{\&}'' à gauche et à droite de chaque ligne.
-
-\begin{eqnarray}
-\label{f:2}
-& x^2 + y^2
-+ a\sqrt{1-y^2}
-+ ( a + b )^2
-+ \sqrt{ a^2 + 2ab + b^2}
-+ \sum_{i=1}^{n} x_{i} + &
-\eqncont
-& \oint_{0}^{1} f(x)dx
-+ \bigcap_{\phi=1}^{\sum_{i=1}^{n} \alpha_{i}} f^\phi &
-\end{eqnarray}
-
-La formule [\ref{f:3}] est cadrée à gauche,
-en mettant les deux signes ``\texttt{\&}'' au début de chaque ligne.
-
-\begin{eqnarray}
-\label{f:3}
-&& x^2 + y^2 + a\sqrt{1-y^2} + \eqncont
-&& ( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-Enfin, la formule [\ref{f:4}] est cadrée sur le signe $=$
-en mettant les deux signes ``\texttt{\&}'' autour du signe $=$~:
-
-\begin{eqnarray}
-\label{f:4}
-\Delta & = & x^2 + y^2 + a\sqrt{1-y^2} + \eqncont
-       &   & ( a + b )^2 + \sqrt{ a^2 + 2ab + b^2}
-\end{eqnarray}
-
-Cette dernière forme nous paraît la plus recommandable.
-
-\subsection{Remarques, notes et remerciements }
-
-Les remarques, notes et remerciements s'obtiennent respectivement
-par les commandes \cmd{note\{...\}}, \cmd{remark\{...\}} et
-\cmd{acknowledgements\{...\}}, comme sur les exemples suivants
-
-\note{Ceci est un exemple de note obtenue avec la commande \cmd{note\texttt{\{}...\texttt{\}}}.}
-
-\remark{Ceci est obtenu avec la commande \cmd{remark\texttt{\{}...\texttt{\}}}.}
-
-\acknowledgements{Ceci est un exemple de remerciements obtenu avec la commande\\
-\cmd{acknowledgements\texttt{\{}...\texttt{\}}}.  }
-
-\subsection{Maîtrise des coupures de page}
-
-Comme l'indique Leslie Lamport \cite{Lam94}
-dans son manuel de références, il peut être nécessaire de
-<<~tricher~>> en allongeant certaines pages de 1 ou deux lignes et en forçant
-les coupures de pages, pour obtenir les placements et présentations voulues
-dans quelques rares cas problématiques. Les utilisateurs qui connaissent bien
-\LaTeX\ savent qu'il faut alors utiliser les commandes \cmd{enlargethispage} et
-\cmd{pagebreak} avec \cmd{noindent} pour obtenir l'effet voulu.
-
-Un utilisateur non familier pourra utiliser nos commandes
-\cmd{delaynewpage} et \cmd{forcenewpage}. La première
-prend comme argument le nombre de lignes de rallonge nécessaire (1 ou 2) sur la
-page à agrandir. S'il y a des notes de bas de page, elles seront décalées
-d'autant vers le bas. La seconde commande s'utilise à l'endroit de la coupure
-souhaitée. Elle ne provoque pas d'indentation sur le haut de la page suivante.
-
-Si le placement des figures n'est pas celui souhaité, on peut modifier les
-paramètres utilisés dans le fichier de style \textit{article-hermes.cls}. Voir le
-livre <<~The \LaTeX~Companion~>> \cite{GMS94}
-pour plus d'explications.
-
-\subsection{Bibliographie \label{cmdes-biblio}}
-
-La bibliographie s'obtient avec le fichier de style \textit{biblio-hermes.bst}
-qui s'utilise avec Bib\TeX, comme d'habitude par exemple \cite{Kol97}. La seule
-commande à placer pour faire apparaître la bibliographie est
-\cmd{bibliography\{ma-biblio\}}. Le logiciel BiB\TeX, construit le fichier
-\textit{ma-biblio.bbl} qui est automatiquement appelé par \LaTeX\
-(l'environnement \texttt{thebibliography} a été entièrement redéfini). Toutes
-les références bibliographiques de ce document ont été produites avec
-\textit{biblio-hermes.bst}.
-
-La bibliographie donnée dans la section suivante est obtenue par la commande
-standard \cmd{bibliography} appliquée au petit fichier
-\textit{exemple-biblio.bib} de références en format BiB\TeX. Le fichier
-\textit{.bbl} produit par Bib\TeX\ est inséré automatiquement par la commande
-\cmd{bibliography}, juste après le titre de section.
-
-\nocite{*}
-\bibliography{exemple-biblio}
-
-\section{Environnement \LaTeX\ nécessaire et problèmes éventuels d'installation \label{envir}}
-
-\subsection{Environnement nécessaire}
-
-Le fichier \textit{article-hermes.cls} utilise un nombre réduit de paquetages standard
-présents sur toutes les distributions actuelles de \LaTeX~:
-\textit{ifthen} et \textit{babel}. Nous n'utilisons plus le paquetage \textit{french} de
-Bernard Gaulle à cause des problèmes de portabilité qu'il posait.
-
-Comme toutes les distributions de \TeX/\LaTeX\ fournissent maintenant le paquetage
-\textit{babel}
-avec le mode \textit{frenchb} (alias \textit{francais}), mêmes les articles en anglais
-utilisent \textit{babel} pour les césures du résumé et des mots-clefs en français.
-
-Les distributions de \TeX/\LaTeX\ sont maintenant très stables. S'il les auteurs
-rencontrent le moindre problème de fonte ou d'effet différent de celui souhaité,
-ils doivent en premier lieu vérifier qu'ils utilisent une distribution récente.
-
-En France, il existe plusieurs sites miroirs des distributions gratuites
-accessibles sur Internet par ftp, pour différents systèmes (Unix, Windows,
-MacOS...) en particulier~:
-\begin{itemize}
-\item \texttt{ftp://ftp.jussieu.fr/pub/TeX/CTAN/...}
-\item \texttt{ftp://ftp.loria.fr/pub/ctan/...}
-\end{itemize}
-
-\subsection{Problèmes de fontes}
-
-Certaines installations de \LaTeX\ n'étaient pas bien configurées pour les fontes
-\textit{Postscript} comme Times. Un cas fréquent était que le prévisualiseur
-\textit{xdvi}
-n'arrivait pas à visualiser certains caractères correctement.  Aujourd'hui, avec les
-nouvelles distributions, ces problèmes ont disparu.  De plus, avec la rapididité des
-ordinateurs actuels, la prévisualisation des documents avec \textit{xdvi} ne se justifie
-plus~: on a intérêt à prévisualiser le document en format postscript ou pdf, le résultat
-étant plus proche de la version imprimée.
-
-La police à chasse fixe utilisée par défaut est celle de \LaTeX\ (\textit{Computer Modern
-  TypeWriter}) qui est très lisible, esthétique et pas trop large. Elles s'intègre bien
-dans le texte en Times, mais n'existe pas dans toutes les tailles (police non
-vectorielle). Cela peut conduire à des messages d'avertissement sans importance sur
-l'utilisation de tailles très voisines. Si l'on préfère utiliser la police
-\textit{Courier} (vectorielle), il suffit de déplacer le commentaire dans la définition de
-\cmd{ttdefault} dans le fichier de style.
-
-L'encodage des caractères qui est préconisé dans le monde\TeX\ depuis une quinzaine
-d'années est \textit{T1}. Il ne devrait plus il y avoir des environements
-utilisant encore l'ancien encodage (\textit{OLD T1} ou \textit{OT1}).
-Aussi, nous faisons appel à l'encodage \textit{T1} directement dans
-\textit{article-hermes.cls}.
-De même, la saisie des caractères latin ne se fait plus avec les notations
-archaïques du genre \verb|\^{\i}| (pour î), mais en tapant directement le caractère
-latin sur le clavier. Nous avons donc incorporé la commande de saisie
-\verb|\usepackage[latin1]{inputenc}| des caractères latin dans \textit{article-hermes.cls}.
-
-Pour tout problème sérieux posé par les fichiers de style
-\textit{article-hermes.cls} ou \textit{biblio-hermes.bst} les auteurs peuvent
-envoyer un mail à \textit{rr at unice.fr}. Merci de ne pas envoyer de demande
-d'aide liée à un manque de connaissance de \LaTeX. Pour apprendre à utiliser
-\LaTeX on peut, parmi les nombreux ouvrages sur le sujet, lire celui de son
-auteur \cite{Lam94} et \cite{GMS94} pour une utilisation plus experte. Pour
-tout autre problème d'installation, le mieux est de consulter son gourou local
-ou de consulter les sites \TeX\ officiels sur Internet. Les dernières versions
-des fichiers de style \textit{article-hermes.cls} et \textit{biblio-hermes.bst}
-et leurs documentations sont disponibles sur le site
-\texttt{www.hermes-science.com}.
-\begin{quote}
-Bonne chance !
-\end{quote}
-
-\logbook{22/09/1996}{03/03/2005}{Guillaume Laurent}
-
-\adressehermes
-
-\end{document}
diff --git a/lib/guii/majecstic08/exemple-biblio.bib b/lib/guii/majecstic08/exemple-biblio.bib
deleted file mode 100644
index 93c1dfb..0000000
--- a/lib/guii/majecstic08/exemple-biblio.bib
+++ /dev/null
@@ -1,74 +0,0 @@
- at BOOK{Kol97,
-author       = "Charles Kolski",
-title        = "Interfaces homme-machine",
-publisher    = "Editions Hermès",
-address      = "Paris",
-year         = "1997",
-}
-
- at ARTICLE{DF94b,
-author       = "Igor Demeure  and  Jean Farhat",
-title        = "Systèmes de processus légers : concepts et exemples",
-journal      = "Technique et Science Informatiques",
-volume       = "13",
-number       = "6",
-year         = "1994",
-pages        = "765-795",
-}
-
- at INPROCEEDINGS{Lal97,
-author       = "Alain Lallouet",
-title        = "DP-LOG : un langage logique data-parallèle",
-booktitle    = "Actes des 6\ieme journées francophones de programmation logique et
-                        programmation par contraintes JFPLC'97",
-address      = "Orléans",
-month        = "26-28 \May",
-year         = "1997",
-publisher    = "Éditions Hermès, Paris",
-pages        = "53-68",
-}
-
- at TECHREPORT{BDHR95,
-author       = "Braun, T.  and  Diot, C.  and  Hoglander, A.  and  Roca, V.",
-title        = "An experimental user level implementation of TCP",
-institution  = "INRIA",
-type         = "Rapport de recherche",
-number       = "265",
-month        = "\Sep",
-year         = "1995"
-}
-
- at PHDTHESIS{Naw97,
-author       = "Alphonse Nawrocki",
-title        = "Contribution à la modélisation des câbles monotorons par éléments finis",
-type         = "Thèse de doctorat",
-school       = "Université de Nantes, École Centrale de Nantes",
-year         = "1997",
-}
-
- at BOOK{Lam94,
-author       = "Leslie Lamport",
-title        = "\LaTeX -- A Document Preparation System --
-                User's Guide and Reference Manual (updated for \LaTeX~2$_\epsilon$)",
-edition      = "2nd",
-publisher    = "Addison-Wesley",
-year         = "1994",
-}
-
- at BOOK{GMS94,
-author       = "M. Goossens and F. Mittelbach and A. Samarin",
-title        = "The \LaTeX Companion",
-publisher    = "Addison-Wesley",
-year         = "1994",
-}
-
- at ARTICLE{Her99,
-author       = "HERMES",
-title        = "Consignes aux auteurs",
-journal      = "Technique et Science Informatiques",
-publisher    = "Hermès, Paris",
-volume       = "18",
-number       = "1",
-year         = "1999",
-pages        = "111-120",
-}
diff --git a/lib/guii/majecstic08/figures/GUII.obj b/lib/guii/majecstic08/figures/GUII.obj
deleted file mode 100644
index 1fea8f7..0000000
--- a/lib/guii/majecstic08/figures/GUII.obj
+++ /dev/null
@@ -1,396 +0,0 @@
-%TGIF 4.1.45-QPL
-state(0,37,100.000,0,0,0,16,1,9,1,1,1,1,0,0,1,1,'Courier',0,80640,0,0,1,5,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,2880,0).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(19,65535,0,[
-	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
-	"red", 65535, 0, 0, 65535, 0, 0, 1,
-	"green", 0, 65535, 0, 0, 65535, 0, 1,
-	"blue", 0, 0, 65535, 0, 0, 65535, 1,
-	"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
-	"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
-	"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
-	"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
-	"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
-	"black", 0, 0, 0, 0, 0, 0, 1,
-	"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1,
-	"#00000000c000", 0, 0, 49344, 0, 0, 49152, 1,
-	"#820782070000", 33410, 33410, 0, 33287, 33287, 0, 1,
-	"#3cf3fbee34d2", 15420, 64507, 13364, 15603, 64494, 13522, 1,
-	"#3cf3fbed34d3", 15420, 64507, 13364, 15603, 64493, 13523, 1,
-	"#ffffa6990000", 65535, 42662, 0, 65535, 42649, 0, 1,
-	"#ffff0000fffe", 65535, 0, 65535, 65535, 0, 65534, 1,
-	"#fffe0000fffe", 65535, 0, 65535, 65534, 0, 65534, 1,
-	"#fffe00000000", 65535, 0, 0, 65534, 0, 0, 1
-]).
-script_frac("0.6").
-fg_bg_colors('black','white').
-dont_reencode("FFDingbests:ZapfDingbats").
-objshadow_info('#c0c0c0',2,2).
-page(1,"",1,'').
-rcbox('black','',755,270,835,300,4,2,1,0,16,43,0,0,0,0,'2',0,[
-]).
-rcbox('black','',625,270,705,300,4,2,1,0,16,44,0,0,0,0,'2',0,[
-]).
-rcbox('black','',690,180,770,210,0,2,1,0,16,0,0,0,0,0,'2',0,[
-]).
-text('black',705,188,1,0,1,45,15,1,12,3,0,0,0,0,2,45,15,0,0,"",0,0,0,0,200,'',[
-minilines(45,15,0,0,0,0,0,[
-mini_line(45,12,3,0,0,0,[
-str_block(0,45,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,45,12,3,0,-1,0,0,0,0,0,
-	"GROUP")])
-])
-])]).
-text('black',640,278,1,0,1,36,16,4,12,4,0,0,0,0,2,36,16,0,0,"",0,0,0,0,290,'',[
-minilines(36,16,0,0,0,0,0,[
-mini_line(36,12,4,0,0,0,[
-str_block(0,36,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,36,12,4,0,0,0,0,0,0,0,
-	"MENU")])
-])
-])]).
-text('black',770,278,1,0,1,54,16,10,12,4,0,0,0,0,2,54,16,0,0,"",0,0,0,0,290,'',[
-minilines(54,16,0,0,0,0,0,[
-mini_line(54,12,4,0,0,0,[
-str_block(0,54,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,54,12,4,0,0,0,0,0,0,0,
-	"WINDOW")])
-])
-])]).
-arc('black','',0,3,1,0,700,335,729,360,760,360,710,360,0,58,50,0,11520,19,0,0,12,5,0,0,0,'3','12','5',0,[
-]).
-text('black',715,343,1,0,1,27,15,25,12,3,0,0,0,0,2,27,15,0,0,"",0,0,0,0,355,'',[
-minilines(27,15,0,0,0,0,0,[
-mini_line(27,12,3,0,0,0,[
-str_block(0,27,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,27,12,3,0,-1,0,0,0,0,0,
-	"XOR")])
-])
-])]).
-poly('black','',2,[
-	730,335,730,210],1,4,1,29,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	665,270,690,210],1,4,1,45,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	795,270,770,210],1,4,1,47,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	705,345,665,300],1,4,1,50,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	755,345,795,300],1,4,1,65,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	680,270,705,210],1,4,1,67,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-poly('black','',2,[
-	780,270,755,210],1,4,1,69,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-rcbox('black','',400,210,480,240,0,2,1,0,16,75,0,0,0,0,'2',0,[
-]).
-text('black',415,218,1,0,1,45,15,76,12,3,0,0,0,0,2,45,15,0,0,"",0,0,0,0,230,'',[
-minilines(45,15,0,0,0,0,0,[
-mini_line(45,12,3,0,0,0,[
-str_block(0,45,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,45,12,3,0,-1,0,0,0,0,0,
-	"GROUP")])
-])
-])]).
-text('black',400,308,1,0,1,81,15,79,12,3,0,0,0,0,2,81,15,0,0,"",0,0,0,0,320,'',[
-minilines(81,15,0,0,0,0,0,[
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-1,0,0,0,0,0,
-	"GROUP_REF")])
-])
-])]).
-arc('black','',0,3,1,0,410,275,439,300,470,300,420,300,0,58,50,0,11520,80,0,0,12,5,0,0,0,'3','12','5',0,[
-]).
-text('black',425,283,1,0,1,27,15,81,12,3,0,0,0,0,2,27,15,0,0,"",0,0,0,0,295,'',[
-minilines(27,15,0,0,0,0,0,[
-mini_line(27,12,3,0,0,0,[
-str_block(0,27,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,27,12,3,0,-1,0,0,0,0,0,
-	"XOR")])
-])
-])]).
-poly('black','',2,[
-	430,275,430,240],1,4,1,82,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-rcbox('black','',395,300,485,330,0,2,1,0,16,83,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	450,275,450,240],1,4,1,89,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',365,343,1,0,1,36,15,92,12,3,0,0,0,0,2,36,15,0,0,"",0,0,0,0,355,'',[
-minilines(36,15,0,0,0,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,-1,0,0,0,0,0,
-	"Self")])
-])
-])]).
-poly('black','',3,[
-	405,350,440,355,440,330],1,2,1,93,1,0,0,0,0,0,0,'2',0,0,
-    "4","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-oval('black','',330,185,535,390,0,2,1,113,0,0,0,0,0,'2',0,[
-]).
-text('black',370,393,1,0,1,126,15,118,12,3,0,0,0,0,2,126,15,0,0,"",0,0,0,0,405,'',[
-minilines(126,15,0,0,0,0,0,[
-mini_line(126,12,3,0,0,0,[
-str_block(0,126,12,3,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,126,12,3,0,-2,0,0,0,0,0,
-	"Noeud abstrait")])
-])
-])]).
-poly('black','',2,[
-	550,280,590,280],0,2,1,120,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	550,300,590,300],0,2,1,121,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',3,[
-	580,270,600,290,580,310],0,2,1,122,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',690,368,1,0,1,81,15,135,12,3,0,0,0,0,2,81,15,0,0,"",0,0,0,0,380,'',[
-minilines(81,15,0,0,0,0,0,[
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-1,0,0,0,0,0,
-	"GROUP_REF")])
-])
-])]).
-rcbox('black','',685,360,775,390,0,2,1,0,16,136,0,0,0,0,'2',0,[
-]).
-oval('black','',605,155,850,445,0,2,1,140,0,0,0,0,0,'2',0,[
-]).
-text('black',655,403,1,0,1,36,15,146,12,3,0,0,0,0,2,36,15,0,0,"",0,0,0,0,415,'',[
-minilines(36,15,0,0,0,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,-1,0,0,0,0,0,
-	"Self")])
-])
-])]).
-poly('black','',3,[
-	695,410,730,415,730,390],1,2,1,147,1,0,0,0,0,0,0,'2',0,0,
-    "4","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',615,448,1,0,1,225,15,152,12,3,0,0,0,0,2,225,15,0,0,"",0,0,0,0,460,'',[
-minilines(225,15,0,0,0,0,0,[
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-1,0,0,0,0,0,
-	"Noeud avec representation")])
-])
-])]).
-poly('black','',2,[
-	120,500,160,500],1,4,1,154,0,0,5,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',170,488,2,0,1,234,30,157,12,3,0,0,0,0,2,234,30,0,0,"",0,0,0,0,500,'',[
-minilines(234,30,0,0,0,0,0,[
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-1,0,0,0,0,0,
-	"Lien d'heritage dynamique")])
-]),
-mini_line(234,12,3,0,0,0,[
-str_block(0,234,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,234,12,3,0,-4,0,0,0,0,0,
-	"(type dynamique du parent)")])
-])
-])]).
-poly('black','',2,[
-	120,550,160,550],1,4,1,159,0,0,0,0,0,0,0,'4',0,0,
-    "0","",[
-    0,14,6,0,'14','6','0'],[0,14,6,0,'14','6','0'],[
-]).
-text('black',170,538,2,0,1,225,30,162,12,3,0,0,0,0,2,225,30,0,0,"",0,0,0,0,550,'',[
-minilines(225,30,0,0,0,0,0,[
-mini_line(216,12,3,0,0,0,[
-str_block(0,216,12,3,0,-1,0,0,0,[
-str_seg('black','Courier',0,80640,216,12,3,0,-1,0,0,0,0,0,
-	"Lien d'heritage statique")])
-]),
-mini_line(225,12,3,0,0,0,[
-str_block(0,225,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,225,12,3,0,-4,0,0,0,0,0,
-	"(type statique du parent)")])
-])
-])]).
-rcbox('black','',440,485,520,515,4,2,1,0,16,184,0,0,0,0,'2',0,[
-]).
-text('black',455,493,1,0,1,36,16,185,12,4,0,0,0,0,2,36,16,0,0,"",0,0,0,0,505,'',[
-minilines(36,16,0,0,0,0,0,[
-mini_line(36,12,4,0,0,0,[
-str_block(0,36,12,4,0,0,0,0,0,[
-str_seg('black','Courier-Bold',1,80640,36,12,4,0,0,0,0,0,0,0,
-	"MENU")])
-])
-])]).
-text('black',530,478,3,0,1,234,45,186,12,3,0,0,0,0,2,234,45,-1,0,"",0,0,0,0,490,'',[
-minilines(234,45,-1,0,0,0,0,[
-mini_line(189,12,3,-1,0,0,[
-str_block(0,189,12,3,-1,-8,0,0,0,[
-str_seg('black','Courier',0,80640,189,12,3,-1,-8,0,0,0,0,0,
-	"Ajout dynamique d'un ")])
-]),
-mini_line(180,12,3,0,0,0,[
-str_block(0,180,12,3,0,-8,0,0,0,[
-str_seg('black','Courier',0,80640,180,12,3,0,-8,0,0,0,0,0,
-	"objet dans l'arbre, ")])
-]),
-mini_line(234,12,3,0,0,0,[
-str_block(0,234,12,3,0,-4,0,0,0,[
-str_seg('black','Courier',0,80640,234,12,3,0,-4,0,0,0,0,0,
-	"un MENU XOR WINDOW XOR ...")])
-])
-])]).
-box('black','',65,220,95,230,0,2,1,194,0,0,0,0,0,'2',0,[
-]).
-box('black','',65,245,95,255,0,2,1,195,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	80,245,80,230],0,2,1,196,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,135,180,145,0,2,1,200,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,160,180,170,0,2,1,201,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,160,165,145],0,2,1,202,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,220,180,230,0,2,1,203,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,245,180,255,0,2,1,204,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,245,165,230],0,2,1,205,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',225,220,255,230,0,2,1,206,0,0,0,0,0,'2',0,[
-]).
-box('black','',225,245,255,255,0,2,1,207,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	240,245,240,230],0,2,1,208,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',5,[
-	165,140,135,115,110,185,105,290,80,255],1,2,1,209,1,0,0,0,0,0,0,'2',0,0,
-    "70","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	165,140,180,125,190,125,205,135,190,275,170,285,165,255],1,2,1,212,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	165,140,180,100,225,125,275,230,260,275,240,270,240,255],1,2,1,213,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',150,330,180,340,0,2,1,216,0,0,0,0,0,'2',0,[
-]).
-box('black','',150,355,180,365,0,2,1,217,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	165,355,165,340],0,2,1,218,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-box('black','',225,330,255,340,0,2,1,219,0,0,0,0,0,'2',0,[
-]).
-box('black','',225,355,255,365,0,2,1,220,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	240,355,240,340],0,2,1,221,0,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',7,[
-	240,225,220,200,215,215,205,235,195,370,175,395,165,365],1,2,1,222,1,0,0,0,0,0,0,'2',0,0,
-    "7c","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',6,[
-	240,225,220,215,215,270,205,385,230,400,240,365],1,2,1,223,1,0,0,0,0,0,0,'2',0,0,
-    "78","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-oval('black','',215,315,275,380,0,2,1,224,0,0,0,0,0,'2',0,[
-]).
-poly('black','',2,[
-	230,320,365,210],0,2,1,227,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-poly('black','',2,[
-	245,380,440,390],0,2,1,233,1,0,0,0,0,0,0,'2',0,0,
-    "0","",[
-    0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
-]).
-text('black',185,398,2,1,1,126,30,235,12,3,0,0,0,0,2,126,30,-1,0,"",0,0,0,0,410,'',[
-minilines(126,30,-1,0,1,0,0,[
-mini_line(126,12,3,-1,0,0,[
-str_block(0,126,12,3,-1,-2,0,0,0,[
-str_seg('black','Courier',0,80640,126,12,3,-1,-2,0,0,0,0,0,
-	"Arbre abstrait")])
-]),
-mini_line(81,12,3,0,0,0,[
-str_block(0,81,12,3,0,-2,0,0,0,[
-str_seg('black','Courier',0,80640,81,12,3,0,-2,0,0,0,0,0,
-	"de depart")])
-])
-])]).
-text('black',305,323,1,1,1,38,24,238,12,3,0,0,0,0,2,36,15,0,0,"",0,1,0,0,335,'',[
-	305,323,287,323,323,338,959.974,-280.091,280.091,959.974,-5,-4,286,322,324,339],[
-minilines(36,15,0,0,1,0,0,[
-mini_line(36,12,3,0,0,0,[
-str_block(0,36,12,3,0,0,0,0,0,[
-str_seg('black','Courier',0,80640,36,12,3,0,0,0,0,0,0,0,
-	"ZOOM")])
-])
-])]).
diff --git a/lib/guii/majecstic08/figures/GUII.ps b/lib/guii/majecstic08/figures/GUII.ps
deleted file mode 100644
index dee3c5d..0000000
--- a/lib/guii/majecstic08/figures/GUII.ps
+++ /dev/null
@@ -1,1410 +0,0 @@
-%!PS-Adobe-3.0
-%%BoundingBox: 35 514 479 780
-%%Title: GUII
-%%CreationDate: Wed Feb  6 17:08:46 2008
-%%Creator: Tgif-4.1.45-QPL written by William Chia-Wei Cheng (bill.cheng at acm.org)
-%%ProducedBy: (unknown)
-%%Orientation: Portrait
-%%Pages: 1
-%%DocumentFonts: (atend)
-%%EndComments
-%%BeginProlog
-
-/tgifdict 91 dict def
-tgifdict begin
-
-/tgifellipsedict 6 dict def
-tgifellipsedict /mtrx matrix put
-
-/TGEL % tgifellipse
- { tgifellipsedict begin
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 0 360 arc
-      savematrix setmatrix
-   end
- } def
-
-/tgifarrowtipdict 8 dict def
-tgifarrowtipdict /mtrx matrix put
-
-/TGAT % tgifarrowtip
- { tgifarrowtipdict begin
-      /dy exch def
-      /dx exch def
-      /h exch def
-      /w exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      dy dx atan rotate
-      0 0 moveto
-      w neg h lineto
-      w neg h neg lineto
-      savematrix setmatrix
-   end
- } def
-
-/tgifarcdict 8 dict def
-tgifarcdict /mtrx matrix put
-
-/TGAN % tgifarcn
- { tgifarcdict begin
-      /endangle exch def
-      /startangle exch def
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 startangle endangle arc
-      savematrix setmatrix
-   end
- } def
-
-/TGAR % tgifarc
- { tgifarcdict begin
-      /endangle exch def
-      /startangle exch def
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 startangle endangle arcn
-      savematrix setmatrix
-   end
- } def
-
-/tgifpatdict 10 dict def
-
-/tgifpatbyte
- { currentdict /retstr get exch
-   pat i cellsz mod get put
- } def
-
-/tgifpatproc
- { 0 1 widthlim {tgifpatbyte} for retstr
-   /i i 1 add def
- } def
-
-/TGPF % tgifpatfill
- { tgifpatdict begin
-      /h exch def
-      /w exch def
-      /lty exch def
-      /ltx exch def
-      /cellsz exch def
-      /pat exch def
-
-      /widthlim w cellsz div cvi 1 sub def
-      /retstr widthlim 1 add string def
-      /i 0 def
-
-      tgiforigctm setmatrix
-      ltx lty translate
-      w h true [1 0 0 1 0 0] {tgifpatproc} imagemask
-      ltx neg lty neg translate
-   end
- } def
-
-/pat3 <8000000008000000> def
-/pat4 <8800000022000000> def
-/pat5 <8800220088002200> def
-/pat6 <8822882288228822> def
-/pat7 <aa55aa55aa55aa55> def
-/pat8 <77dd77dd77dd77dd> def
-/pat9 <77ffddff77ffddff> def
-/pat10 <77ffffff77ffffff> def
-/pat11 <7fffffff7fffffff> def
-/pat12 <8040200002040800> def
-/pat13 <40a00000040a0000> def
-/pat14 <ff888888ff888888> def
-/pat15 <ff808080ff080808> def
-/pat16 <f87422478f172271> def
-/pat17 <038448300c020101> def
-/pat18 <081c22c180010204> def
-/pat19 <8080413e080814e3> def
-/pat20 <8040201008040201> def
-/pat21 <8844221188442211> def
-/pat22 <77bbddee77bbddee> def
-/pat23 <c1e070381c0e0783> def
-/pat24 <7fbfdfeff7fbfdfe> def
-/pat25 <3e1f8fc7e3f1f87c> def
-/pat26 <0102040810204080> def
-/pat27 <1122448811224488> def
-/pat28 <eeddbb77eeddbb77> def
-/pat29 <83070e1c3870e0c1> def
-/pat30 <fefdfbf7efdfbf7f> def
-/pat31 <7cf8f1e3c78f1f3e> def
-
-/TGMAX
- { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse
- } def
-/TGMIN
- { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse
- } def
-/TGSW { stringwidth pop } def
-
-/bd { bind def } bind def
-
-/GS { gsave } bd
-/GR { grestore } bd
-/NP { newpath } bd
-/CP { closepath } bd
-/CHP { charpath } bd
-/CT { curveto } bd
-/L { lineto } bd
-/RL { rlineto } bd
-/M { moveto } bd
-/RM { rmoveto } bd
-/S { stroke } bd
-/F { fill } bd
-/TR { translate } bd
-/RO { rotate } bd
-/SC { scale } bd
-/MU { mul } bd
-/DI { div } bd
-/DU { dup } bd
-/NE { neg } bd
-/AD { add } bd
-/SU { sub } bd
-/PO { pop } bd
-/EX { exch } bd
-/CO { concat } bd
-/CL { clip } bd
-/EC { eoclip } bd
-/EF { eofill } bd
-/IM { image } bd
-/IMM { imagemask } bd
-/ARY { array } bd
-/SG { setgray } bd
-/RG { setrgbcolor } bd
-/SD { setdash } bd
-/W { setlinewidth } bd
-/SM { setmiterlimit } bd
-/SLC { setlinecap } bd
-/SLJ { setlinejoin } bd
-/SH { show } bd
-/FF { findfont } bd
-/MS { makefont setfont } bd
-/AR { arcto 4 {pop} repeat } bd
-/CURP { currentpoint } bd
-/FLAT { flattenpath strokepath clip newpath } bd
-/TGSM { tgiforigctm setmatrix } def
-/TGRM { savematrix setmatrix } def
-
-end
-
-%%EndProlog
-%%Page: 1 1
-
-%%PageBoundingBox: 35 514 479 780
-tgifdict begin
-/tgifsavedpage save def
-
-1 SM
-1 W
-
-0 SG
-
-72 0 MU 72 11.602 MU TR
-72 128 DI 100.000 MU 100 DI DU NE SC
-
-GS
-
-/tgiforigctm matrix currentmatrix def
-
-% RCBOX
-0 SG
-GS
-   NP
-      835 270 M 835 300 L 755 300 L 755 270 L
-   CP 1 SG F
-   0 SG
-   NP
-      835 270 M 835 300 L 755 300 L 755 270 L
-   CP EC NP
-   pat4 8 752 264 88 40 TGPF
-GR
-GS
-   GS
-      NP
-         835 270 M 835 300 L 755 300 L 755 270 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   NP
-      705 270 M 705 300 L 625 300 L 625 270 L
-   CP 1 SG F
-   0 SG
-   NP
-      705 270 M 705 300 L 625 300 L 625 270 L
-   CP EC NP
-   pat4 8 616 264 96 40 TGPF
-GR
-GS
-   GS
-      NP
-         705 270 M 705 300 L 625 300 L 625 270 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         770 180 M 770 210 L 690 210 L 690 180 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      705 200 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      640 290 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (MENU) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      770 290 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (WINDOW) SH
-      GR
-   GR
-
-% ARC
-0 SG
-GS
-   GS
-      NP
-         729 360 29 25 0 -180 TGAR
-      3 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      715 355 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (XOR) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      730 335 M
-      -125 0 atan DU cos 14.000 MU 730 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      730 210 14.000 6.000 0 -125 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      730 210 14.000 6.000 0 -125 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      665 270 M
-      -60 25 atan DU cos 14.000 MU 690 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      690 210 14.000 6.000 25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      690 210 14.000 6.000 25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      795 270 M
-      -60 -25 atan DU cos 14.000 MU 770 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      770 210 14.000 6.000 -25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      770 210 14.000 6.000 -25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      705 345 M
-      -45 -40 atan DU cos 14.000 MU 665 exch SU
-      exch sin 14.000 MU 300 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      665 300 14.000 6.000 -40 -45 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      665 300 14.000 6.000 -40 -45 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      755 345 M
-      -45 40 atan DU cos 14.000 MU 795 exch SU
-      exch sin 14.000 MU 300 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      795 300 14.000 6.000 40 -45 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      795 300 14.000 6.000 40 -45 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      680 270 M
-      -60 25 atan DU cos 14.000 MU 705 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      705 210 14.000 6.000 25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      705 210 14.000 6.000 25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      780 270 M
-      -60 -25 atan DU cos 14.000 MU 755 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      755 210 14.000 6.000 -25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      755 210 14.000 6.000 -25 -60 TGAT
-   CP F
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         480 210 M 480 240 L 400 240 L 400 210 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      415 230 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      400 320 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP_REF) SH
-      GR
-   GR
-
-% ARC
-0 SG
-GS
-   GS
-      NP
-         439 300 29 25 0 -180 TGAR
-      3 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      425 295 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (XOR) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      430 275 M
-      -35 0 atan DU cos 14.000 MU 430 exch SU
-      exch sin 14.000 MU 240 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      430 240 14.000 6.000 0 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      430 240 14.000 6.000 0 -35 TGAT
-   CP F
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         485 300 M 485 330 L 395 330 L 395 300 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      450 275 M
-      -35 0 atan DU cos 14.000 MU 450 exch SU
-      exch sin 14.000 MU 240 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      450 240 14.000 6.000 0 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      450 240 14.000 6.000 0 -35 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      365 355 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Self) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      405 350 M
-      428.33 353.33 440.00 346.67
-      -25 0 atan DU cos 10.000 MU 440 exch SU
-      exch sin 10.000 MU 330 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      440 330 10.000 4.000 0 -25 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      440 330 10.000 4.000 0 -25 TGAT
-   CP F
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 432 287 102 102 TGEL
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      370 405 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Noeud abstrait) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      550 280 M
-      590 280 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      550 300 M
-      590 300 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      580 270 M
-      600 290 L
-      580 310 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      690 380 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP_REF) SH
-      GR
-   GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         775 360 M 775 390 L 685 390 L 685 360 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 727 300 122 145 TGEL
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      655 415 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Self) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      695 410 M
-      718.33 413.33 730.00 406.67
-      -25 0 atan DU cos 10.000 MU 730 exch SU
-      exch sin 10.000 MU 390 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      730 390 10.000 4.000 0 -25 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      730 390 10.000 4.000 0 -25 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      615 460 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Noeud avec representation) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      120 500 M
-      0 40 atan DU cos 14.000 MU 160 exch SU
-      exch sin 14.000 MU 500 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      160 500 14.000 6.000 40 0 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      160 500 14.000 6.000 40 0 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      170 500 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Lien d'heritage dynamique) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (\(type dynamique du parent\)) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      120 550 M
-      0 40 atan DU cos 14.000 MU 160 exch SU
-      exch sin 14.000 MU 550 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      160 550 14.000 6.000 40 0 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      160 550 14.000 6.000 40 0 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      170 550 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Lien d'heritage statique) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (\(type statique du parent\)) SH
-      GR
-   GR
-
-% RCBOX
-0 SG
-GS
-   NP
-      520 485 M 520 515 L 440 515 L 440 485 L
-   CP 1 SG F
-   0 SG
-   NP
-      520 485 M 520 515 L 440 515 L 440 485 L
-   CP EC NP
-   pat4 8 432 480 96 40 TGPF
-GR
-GS
-   GS
-      NP
-         520 485 M 520 515 L 440 515 L 440 485 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      455 505 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (MENU) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      530 490 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Ajout dynamique d'un ) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (objet dans l'arbre, ) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (un MENU XOR WINDOW XOR ...) SH
-      GR
-   GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 65 220 M 95 220 L 95 230 L 65 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 65 245 M 95 245 L 95 255 L 65 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      80 245 M
-      80 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 135 M 180 135 L 180 145 L 150 145 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 160 M 180 160 L 180 170 L 150 170 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 160 M
-      165 145 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 220 M 180 220 L 180 230 L 150 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 245 M 180 245 L 180 255 L 150 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 245 M
-      165 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 220 M 255 220 L 255 230 L 225 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 245 M 255 245 L 255 255 L 225 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 245 M
-      240 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      145.00 123.33 130.83 126.67 122.50 150.00 CT
-      114.17 173.33 109.17 202.50 107.50 237.50 CT
-      105.83 272.50 96.67 278.33
-      -35 -25 atan DU cos 10.000 MU 80 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      80 255 10.000 4.000 -25 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      80 255 10.000 4.000 -25 -35 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      175.00 130.00 181.67 125.00 185.00 125.00 CT
-      188.33 125.00 192.50 126.67 197.50 130.00 CT
-      202.50 133.33 202.50 158.33 197.50 205.00 CT
-      192.50 251.67 186.67 276.67 180.00 280.00 CT
-      173.33 283.33 168.33 275.00
-      -30 -5 atan DU cos 10.000 MU 165 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      165 255 10.000 4.000 -5 -30 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      165 255 10.000 4.000 -5 -30 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      175.00 113.33 187.50 104.17 202.50 112.50 CT
-      217.50 120.83 233.33 142.50 250.00 177.50 CT
-      266.67 212.50 272.50 237.50 267.50 252.50 CT
-      262.50 267.50 256.67 274.17 250.00 272.50 CT
-      243.33 270.83 240.00 265.00
-      -15 0 atan DU cos 10.000 MU 240 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      240 255 10.000 4.000 0 -15 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      240 255 10.000 4.000 0 -15 TGAT
-   CP F
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 330 M 180 330 L 180 340 L 150 340 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 355 M 180 355 L 180 365 L 150 365 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 355 M
-      165 340 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 330 M 255 330 L 255 340 L 225 340 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 355 M 255 355 L 255 365 L 225 365 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 355 M
-      240 340 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 225 M
-      226.67 208.33 219.17 202.50 217.50 207.50 CT
-      215.83 212.50 213.33 218.33 210.00 225.00 CT
-      206.67 231.67 203.33 257.50 200.00 302.50 CT
-      196.67 347.50 191.67 374.17 185.00 382.50 CT
-      178.33 390.83 171.67 385.00
-      -30 -10 atan DU cos 10.000 MU 165 exch SU
-      exch sin 10.000 MU 365 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      165 365 10.000 4.000 -10 -30 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      165 365 10.000 4.000 -10 -30 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 225 M
-      226.67 218.33 219.17 224.17 217.50 242.50 CT
-      215.83 260.83 213.33 289.17 210.00 327.50 CT
-      206.67 365.83 209.17 387.50 217.50 392.50 CT
-      225.83 397.50 233.33 388.33
-      -35 10 atan DU cos 10.000 MU 240 exch SU
-      exch sin 10.000 MU 365 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      240 365 10.000 4.000 10 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      240 365 10.000 4.000 10 -35 TGAT
-   CP F
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 245 347 30 32 TGEL
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      230 320 M
-      365 210 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      245 380 M
-      440 390 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      185 410 M
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Arbre abstrait) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Arbre abstrait) SH
-      GR
-      0 15 RM
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (de depart) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (de depart) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-GS
-   305 323 TR
-   [0.960 -0.280 0.280 0.960 -5 -4] CO
-   305 NE 323 NE TR
-GR
-   GS
-      1 W
-      305 323 TR
-      [0.960 -0.280 0.280 0.960 -5 -4] CO
-      0 12 M
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (ZOOM) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (ZOOM) SH
-      GR
-   GR
-
-GR
-tgifsavedpage restore
-end
-showpage
-
-%%Trailer
-%MatchingCreationDate: Wed Feb  6 17:08:46 2008
-%%DocumentFonts: Courier-Bold
-%%+ Courier
-%%EOF
diff --git a/lib/guii/majecstic08/figures/arbre_abstrait.ps b/lib/guii/majecstic08/figures/arbre_abstrait.ps
deleted file mode 100644
index 0954c41..0000000
--- a/lib/guii/majecstic08/figures/arbre_abstrait.ps
+++ /dev/null
@@ -1,1049 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner
-%%Title: arbre_abstrait.ps
-%%CreationDate: Thu May 15 14:17:04 2008
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 582 202
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228346456694 14.173228346456694 translate
-% Translate to begin of first scanline
-0 187.19812942163958 translate
-567.35433070866145 -187.19812942163958 scale
-% Image geometry
-788 260 8
-% Transformation matrix
-[ 788 0 0 260 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 788 string def
-/gstr 788 string def
-/bstr 788 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData:        49598 ASCII Bytes
-colorimage
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/guii/majecstic08/figures/arbre_abstrait.svg b/lib/guii/majecstic08/figures/arbre_abstrait.svg
deleted file mode 100644
index b77cdc6..0000000
--- a/lib/guii/majecstic08/figures/arbre_abstrait.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="arbre_abstrait.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.69177704"
-     inkscape:cx="372.04724"
-     inkscape:cy="584.00319"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="1279"
-     inkscape:window-height="948"
-     inkscape:window-x="1"
-     inkscape:window-y="50">
-    <inkscape:grid
-       type="xygrid"
-       id="grid2409" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="323.91495"
-       y="67.191544"
-       id="text2387"><tspan
-         sodipodi:role="line"
-         id="tspan2389"
-         x="323.91495"
-         y="67.191544"
-         style="font-size:11px">P<tspan
-   style="font-size:12px"
-   id="tspan2403">aint</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="175"
-       y="147.53627"
-       id="text2399"><tspan
-         sodipodi:role="line"
-         x="175"
-         y="147.53627"
-         style="font-size:12px"
-         id="tspan2471">Barre de menus</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="409.14285"
-       y="147.36218"
-       id="text2405"><tspan
-         sodipodi:role="line"
-         id="tspan2407"
-         x="409.14285"
-         y="147.36218"
-         style="font-size:12px">Barre d'outils</tspan></text>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 224.71503,132.22347 L 337.87855,72.362183 L 450,132.54587"
-       id="path2411" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="16.92363"
-       y="227.68459"
-       id="text2421"><tspan
-         sodipodi:role="line"
-         id="tspan2423"
-         x="16.92363"
-         y="227.68459">Fichier</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="118.1972"
-       y="227.63129"
-       id="text2425"><tspan
-         sodipodi:role="line"
-         id="tspan2427"
-         x="118.1972"
-         y="227.63129">Présentation</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="67.257507"
-       y="227.36218"
-       id="text2429"><tspan
-         sodipodi:role="line"
-         id="tspan2431"
-         x="67.257507"
-         y="227.36218">Edition</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="197.83081"
-       y="227.63132"
-       id="text2433"><tspan
-         sodipodi:role="line"
-         x="197.83081"
-         y="227.63132"
-         id="tspan2437">Disposition</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="270.23056"
-       y="227.11302"
-       id="text2441"><tspan
-         sodipodi:role="line"
-         x="270.23056"
-         y="227.11302"
-         id="tspan2443">Aide</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="348.99222"
-       y="226.9865"
-       id="text2445"><tspan
-         sodipodi:role="line"
-         id="tspan2447"
-         x="348.99222"
-         y="226.9865"
-         style="font-size:12px">Séléction</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="409.32019"
-       y="227.87154"
-       id="text2449"><tspan
-         sodipodi:role="line"
-         id="tspan2451"
-         x="409.32019"
-         y="227.87154"
-         style="font-size:12px">Zoom</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="453.87985"
-       y="227.54913"
-       id="text2453"><tspan
-         sodipodi:role="line"
-         id="tspan2455"
-         x="453.87985"
-         y="227.54913"
-         style="font-size:12px">Ligne</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="498.9483"
-       y="227.54915"
-       id="text2457"><tspan
-         sodipodi:role="line"
-         id="tspan2459"
-         x="498.9483"
-         y="227.54915"
-         style="font-size:12px">Rectangle</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="569.23218"
-       y="227.54913"
-       id="text2461"><tspan
-         sodipodi:role="line"
-         id="tspan2463"
-         x="569.23218"
-         y="227.54913"
-         style="font-size:12px">Elipse</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="174.36446"
-       y="158.29811"
-       id="text2475"><tspan
-         sodipodi:role="line"
-         x="174.36446"
-         y="158.29811"
-         style="font-size:12px"
-         id="tspan2479" /></text>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 34.819545,212.83203 L 210,152.21247 L 90,213.14667"
-       id="path2483"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 165,212.17946 L 210,152.21247"
-       id="path2485"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 239.86797,212.50963 L 209.56208,151.89006"
-       id="path2487"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 284.35519,212.83203 L 210,152.21247"
-       id="path2489"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 370,212.50963 L 450,152.53487"
-       id="path2491"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 430.15845,212.18723 L 450,152.21247"
-       id="path2493"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 469.6776,212.18723 L 450,152.21247"
-       id="path2495"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 529.6776,211.86482 L 450,152.21247"
-       id="path2497"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 584.19458,212.83203 L 450,152.21247"
-       id="path2499"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="613.88678"
-       y="227.11302"
-       id="text2501"><tspan
-         sodipodi:role="line"
-         id="tspan2503"
-         x="613.88678"
-         y="227.11302"
-         style="font-size:12px">Texte</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="657.5058"
-       y="227.67133"
-       id="text2505"><tspan
-         sodipodi:role="line"
-         id="tspan2507"
-         x="657.5058"
-         y="227.67133">Couleur</tspan></text>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 629.6776,212.50963 L 450,152.21247 L 679.6776,212.82427"
-       id="path2509"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 5.1584511,272.36218 L 30,233.32939 L 30,273.75847"
-       id="path2523"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 30,232.03978 L 55.130946,272.79126"
-       id="path2525"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="3.2240319"
-       y="279.56174"
-       id="text2527"><tspan
-         sodipodi:role="line"
-         id="tspan2529"
-         x="3.2240319"
-         y="279.56174">...</tspan><tspan
-         sodipodi:role="line"
-         x="3.2240319"
-         y="279.56174"
-         id="tspan2531" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="23.939413"
-       y="278.69385"
-       id="text2533"><tspan
-         sodipodi:role="line"
-         id="tspan2535"
-         x="23.939413"
-         y="278.69385">...</tspan><tspan
-         sodipodi:role="line"
-         x="23.939413"
-         y="293.69385"
-         id="tspan2537" /></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="50"
-       y="278.04904"
-       id="text2539"><tspan
-         sodipodi:role="line"
-         id="tspan2541"
-         x="50"
-         y="278.04904">...</tspan><tspan
-         sodipodi:role="line"
-         x="50"
-         y="293.04904"
-         id="tspan2543" /></text>
-  </g>
-</svg>
diff --git a/lib/guii/majecstic08/figures/grammaire.ps b/lib/guii/majecstic08/figures/grammaire.ps
deleted file mode 100644
index fd20e4d..0000000
--- a/lib/guii/majecstic08/figures/grammaire.ps
+++ /dev/null
@@ -1,1844 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner
-%%Title: grammaire.ps
-%%CreationDate: Thu May 15 15:01:18 2008
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 517 187
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228346456694 14.173228346456694 translate
-% Translate to begin of first scanline
-0 172.79805067346524 translate
-502.55433070866144 -172.79805067346524 scale
-% Image geometry
-698 240 8
-% Transformation matrix
-[ 698 0 0 240 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 698 string def
-/gstr 698 string def
-/bstr 698 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData:       108461 ASCII Bytes
-colorimage
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcCf2!!%TMJcC<$])R9~>
-JcCf2!!%TMJcC<$])R9~>
-JcCf2!!%TMJcC<$])R9~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/guii/majecstic08/figures/grammaire.svg b/lib/guii/majecstic08/figures/grammaire.svg
deleted file mode 100644
index 42e6511..0000000
--- a/lib/guii/majecstic08/figures/grammaire.svg
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   id="svg2635"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="grammaire.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs2637">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2643" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.97026"
-     inkscape:cx="394.66178"
-     inkscape:cy="888.3882"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1279"
-     inkscape:window-height="948"
-     inkscape:window-x="1"
-     inkscape:window-y="50" />
-  <metadata
-     id="metadata2640">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2698"
-       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream Vera Sans;font-style:normal;font-weight:normal;font-size:12"><flowRegion
-         id="flowRegion2700"><rect
-           id="rect2702"
-           width="440"
-           height="291.42856"
-           x="105.71429"
-           y="126.6479" /></flowRegion><flowPara
-         id="flowPara2704"></flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2706"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"><flowRegion
-         id="flowRegion2708"><rect
-           id="rect2710"
-           width="20"
-           height="42.857143"
-           x="128.57143"
-           y="138.07646" /></flowRegion><flowPara
-         id="flowPara2712">BASE  -&gt; ( MENUV | MENUH | TAB | WINDOWIN | BUTTONV | BUTTONH | CHECK )*\\MENUV  -&gt; ( FRAMEV )*\\FRAMEV  -&gt; ( BUTTONV | CHECK )*\\BUTTONV -&gt; ( MENUV | MENUH | WINDOWOUT | action )*\\MENUH  -&gt; ( FRAMEH )*\\FRAMEH  -&gt; ( BUTTONH | CHECK | DROP-DOWNMENU )*\\BUTTONH -&gt; ( MENUV | WINDOWOUT | action )*\\TAB  -&gt; ( FRAMETAB )*\\FRAMETAB -&gt; ( BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU )*\\WINDOWOUT -&gt; ( FRAMEWINOUT )*\\FRAMEWINOUT -&gt; ( TAB | BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU | MENUV | MENUH )*\\WINDOWIN -&gt; action\\CHECK  -&gt; action\\DROP-DOWNMENU -&gt; action\\BASE  -&gt; ( MENUV | MENUH | TAB | WINDOWIN | BUTTONV | BUTTONH | CHECK )*\\MENUV  -&gt; ( FRAMEV )*\\FRAMEV  -&gt; ( BUTTONV | CHECK )*\\BUTTONV -&gt; ( MENUV | MENUH | WINDOWOUT | action )*\\MENUH  -&gt; ( FRAMEH )*\\FRAMEH  -&gt; ( BUTTONH | CHECK | DROP-DOWNMENU )*\\BUTTONH -&gt; ( MENUV | WINDOWOUT | action )*\\TAB  -&gt; ( FRAMETAB )*\\FRAMETAB -&gt; ( BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU )*\\WINDOWOUT -&gt; ( FRAMEWINOUT )*\\FRAMEWINOUT -&gt; ( TAB | BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU | MENUV | MENUH )*\\WINDOWIN -&gt; action\\CHECK  -&gt; action\\DROP-DOWNMENU -&gt; action\\BASE  -&gt; ( MENUV | MENUH | TAB | WINDOWIN | BUTTONV | BUTTONH | CHECK )*\\MENUV  -&gt; ( FRAMEV )*\\FRAMEV  -&gt; ( BUTTONV | CHECK )*\\BUTTONV -&gt; ( MENUV | MENUH | WINDOWOUT | action )*\\MENUH  -&gt; ( FRAMEH )*\\FRAMEH  -&gt; ( BUTTONH | CHECK | DROP-DOWNMENU )*\\BUTTONH -&gt; ( MENUV | WINDOWOUT | action )*\\TAB  -&gt; ( FRAMETAB )*\\FRAMETAB -&gt; ( BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU )*\\WINDOWOUT -&gt; ( FRAMEWINOUT )*\\FRAMEWINOUT -&gt; ( TAB | BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU | MENUV | MENUH )*\\WINDOWIN -&gt; action\\CHECK  -&gt; action\\DROP-DOWNMENU	-&gt;	action\\</flowPara><flowPara
-         id="flowPara2714" /><flowPara
-         id="flowPara2716" /><flowPara
-         id="flowPara2718" /><flowPara
-         id="flowPara2720" /><flowPara
-         id="flowPara2722" /><flowPara
-         id="flowPara2724" /><flowPara
-         id="flowPara2726" /><flowPara
-         id="flowPara2728" /><flowPara
-         id="flowPara2730" /><flowPara
-         id="flowPara2732" /><flowPara
-         id="flowPara2734" /><flowPara
-         id="flowPara2736" /><flowPara
-         id="flowPara2738" /><flowPara
-         id="flowPara2740" /><flowPara
-         id="flowPara2742" /><flowPara
-         id="flowPara2744" /><flowPara
-         id="flowPara2746" /><flowPara
-         id="flowPara2748" /><flowPara
-         id="flowPara2750" /><flowPara
-         id="flowPara2752" /><flowPara
-         id="flowPara2754" /><flowPara
-         id="flowPara2756" /><flowPara
-         id="flowPara2758" /><flowPara
-         id="flowPara2760" /><flowPara
-         id="flowPara2762" /><flowPara
-         id="flowPara2764" /><flowPara
-         id="flowPara2766" /><flowPara
-         id="flowPara2768" /><flowPara
-         id="flowPara2770" /><flowPara
-         id="flowPara2772" /><flowPara
-         id="flowPara2774" /><flowPara
-         id="flowPara2776" /><flowPara
-         id="flowPara2778" /><flowPara
-         id="flowPara2780" /><flowPara
-         id="flowPara2782" /><flowPara
-         id="flowPara2784" /><flowPara
-         id="flowPara2786" /><flowPara
-         id="flowPara2788" /><flowPara
-         id="flowPara2790" /></flowRoot>    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="140.2186"
-       y="95.406464"
-       id="text2792"><tspan
-         sodipodi:role="line"
-         id="tspan2794"
-         x="140.2186"
-         y="95.406464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">BASE                        </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="110.40646"
-         id="tspan2796"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">MENUV                     </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="125.40646"
-         id="tspan2798"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">FRAMEV                   </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="140.40646"
-         id="tspan2800"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">BUTTONV                 </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="155.40646"
-         id="tspan2802"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">MENUH                     </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="170.40646"
-         id="tspan2804"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">FRAMEH                   </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="185.40646"
-         id="tspan2806"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">BUTTONH                 </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="200.40646"
-         id="tspan2808"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">TAB                            </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="215.40646"
-         id="tspan2810"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">FRAMETAB                </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="230.40646"
-         id="tspan2812"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">WINDOWOUT            </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="245.40646"
-         id="tspan2814"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">FRAMEWINOUT         </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="260.40646"
-         id="tspan2816"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">WINDOWIN             </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="275.40646"
-         id="tspan2820"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">CHECK                     </tspan><tspan
-         sodipodi:role="line"
-         x="140.2186"
-         y="290.40646"
-         id="tspan2824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">DROP-DOWNMENU  </tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="172.56606"
-       y="94.620583"
-       id="text2826"><tspan
-         sodipodi:role="line"
-         id="tspan2828"
-         x="172.56606"
-         y="94.620583">           </tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2830"
-       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream Vera Sans;font-style:normal;font-weight:normal;font-size:12"><flowRegion
-         id="flowRegion2832"><rect
-           id="rect2834"
-           width="166.47549"
-           height="175.61134"
-           x="138.56039"
-           y="111.87718" /></flowRegion><flowPara
-         id="flowPara2836"></flowPara></flowRoot>    <text
-       xml:space="preserve"
-       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="263.83398"
-       y="95.128136"
-       id="text2838"><tspan
-         sodipodi:role="line"
-         id="tspan2840"
-         x="263.83398"
-         y="95.128136">-&gt; ( MENUV | MENUH | TAB | WINDOWIN | BUTTONV | BUTTONH | CHECK )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="110.12814"
-         id="tspan2844">-&gt; ( FRAMEV )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="125.12814"
-         id="tspan2846">-&gt; ( BUTTONV | CHECK )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="140.12814"
-         id="tspan2848">-&gt; ( MENUV | MENUH | WINDOWOUT | action )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="155.12814"
-         id="tspan2850">-&gt; ( FRAMEH )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="170.12814"
-         id="tspan2852">-&gt; ( BUTTONH | CHECK | DROP-DOWNMENU )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="185.12814"
-         id="tspan2854">-&gt; ( MENUV | WINDOWOUT | action )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="200.12814"
-         id="tspan2856">-&gt; ( FRAMETAB )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="215.12814"
-         id="tspan2858">-&gt; ( BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="230.12814"
-         id="tspan2860">-&gt; ( FRAMEWINOUT )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="245.12814"
-         id="tspan2862">-&gt; ( TAB | BUTTON | WINDOWIN | CHECK | DROP-DOWNMENU | MENUV | MENUH )*</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="260.12814"
-         id="tspan2864">-&gt; action</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="275.12814"
-         id="tspan2866">-&gt; action</tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="290.12814"
-         id="tspan2868">-&gt; action </tspan><tspan
-         sodipodi:role="line"
-         x="263.83398"
-         y="305.12814"
-         id="tspan2842" /></text>
-  </g>
-</svg>
diff --git a/lib/guii/majecstic08/guii.aux b/lib/guii/majecstic08/guii.aux
deleted file mode 100644
index d4daa1a..0000000
--- a/lib/guii/majecstic08/guii.aux
+++ /dev/null
@@ -1,71 +0,0 @@
-\relax 
-\catcode`:\active
-\catcode`;\active
-\catcode`!\active
-\catcode`?\active
-\bibstyle{biblio-hermes}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\select at language{english}
-\@writefile{toc}{\select at language{english}}
-\@writefile{lof}{\select at language{english}}
-\@writefile{lot}{\select at language{english}}
-\select at language{frenchb}
-\@writefile{toc}{\select at language{frenchb}}
-\@writefile{lof}{\select at language{frenchb}}
-\@writefile{lot}{\select at language{frenchb}}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction et probl\'ematique}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Adapation des IHMs aux priphriques}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Modification des IHMs lors d'ajout de composant logiciel}{2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}L'objectifs}{2}}
-\@writefile{toc}{\contentsline {section}{\numberline {2}Etat de l'art}{3}}
-\@writefile{toc}{\contentsline {section}{\numberline {3}Les axiomes de notre mod\`ele pour le programmeur d'application}{4}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Un arbre de fonctionnalit\'e}{4}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Les ajouts semantiques}{4}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}L'op\'erateur semantique}{5}}
-\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}La force}{5}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Exemple}{5}}
-\@writefile{toc}{\contentsline {section}{\numberline {4}Description de notre IHM final}{5}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Composants de base}{6}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Composition pour des \'el\'ements plus complexe}{6}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Axiome de construction}{7}}
-\@writefile{toc}{\contentsline {section}{\numberline {5}Syst\`eme d'inf\'erence}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Evaluation s\'emantique}{7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Evaluation spatiale}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Algorithme d'\'evaluation}{8}}
-\@writefile{toc}{\contentsline {section}{\numberline {6}Implmentation du modle}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Introduction au langage Lisaac}{8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Reprsentation par h\'eritage dynamique de l'arbre}{8}}
-\@writefile{toc}{\contentsline {section}{\numberline {7}Rsultat}{9}}
-\@writefile{toc}{\contentsline {section}{\numberline {8}Travaux futurs}{9}}
-\@writefile{toc}{\contentsline {section}{\numberline {9}Conclusion}{9}}
diff --git a/lib/guii/majecstic08/guii.dvi b/lib/guii/majecstic08/guii.dvi
deleted file mode 100644
index ebc2d49..0000000
Binary files a/lib/guii/majecstic08/guii.dvi and /dev/null differ
diff --git a/lib/guii/majecstic08/guii.log b/lib/guii/majecstic08/guii.log
deleted file mode 100644
index 0d6eeaa..0000000
--- a/lib/guii/majecstic08/guii.log
+++ /dev/null
@@ -1,298 +0,0 @@
-This is pdfeTeXk, Version 3.141592-1.30.5-2.2 (Web2C 7.5.5) (format=latex 2007.5.23)  16 MAY 2008 16:21
-entering extended mode
- %&-line parsing enabled.
-**guii.tex
-(./guii.tex
-LaTeX2e <2003/12/01>
-Babel <v3.8g> and hyphenation patterns for english, usenglishmax, dumylang, noh
-yphenation, croatian, ukrainian, russian, bulgarian, czech, slovak, danish, dut
-ch, finnish, french, basque, german, ngerman, greek, monogreek, ancientgreek, i
-bycus, hungarian, italian, latin, mongolian, norsk, slovene, estonian, welsh, i
-nterlingua, icelandic, uppersorbian, romanian, indonesian, coptic, turkish, ser
-bian, polish, portuguese, spanish, catalan, swedish, ukenglish, loaded.
-(./article-hermes.cls
-Document Class: article-hermes  03/03/2005 Version: 1.2 
-style Latex2e pour les articles de revues ou actes Hermes, Roger Rousseau, 1999
-, Guillaume Laurent, 2005
-File: article-hermes.cls 03/03/2005 Version: 1.2
-article-hermes.cls : ``fleqn'' option
-(/usr/share/texmf-texlive/tex/latex/base/article.cls
-Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
-(/usr/share/texmf-texlive/tex/latex/base/fleqn.clo
-File: fleqn.clo 1998/08/17 v1.1c Standard LaTeX option (flush left equations)
-\mathindent=\dimen102
-)
-(/usr/share/texmf-texlive/tex/latex/base/size10.clo
-File: size10.clo 2004/02/16 v1.4f Standard LaTeX file (size option)
-)
-\c at part=\count79
-\c at section=\count80
-\c at subsection=\count81
-\c at subsubsection=\count82
-\c at paragraph=\count83
-\c at subparagraph=\count84
-\c at figure=\count85
-\c at table=\count86
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-\bibindent=\dimen103
-)
-(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty
-Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
-)
-(/usr/share/texmf-texlive/tex/latex/amslatex/amsmath.sty
-Package: amsmath 2000/07/18 v2.13 AMS math features
-\@mathmargin=\skip43
-
-For additional information on amsmath, use the `?' option.
-(/usr/share/texmf-texlive/tex/latex/amslatex/amstext.sty
-Package: amstext 2000/06/29 v2.01
-
-(/usr/share/texmf-texlive/tex/latex/amslatex/amsgen.sty
-File: amsgen.sty 1999/11/30 v2.0
-\@emptytoks=\toks14
-\ex@=\dimen104
-))
-(/usr/share/texmf-texlive/tex/latex/amslatex/amsbsy.sty
-Package: amsbsy 1999/11/29 v1.2d
-\pmbraise@=\dimen105
-)
-(/usr/share/texmf-texlive/tex/latex/amslatex/amsopn.sty
-Package: amsopn 1999/12/14 v2.01 operator names
-)
-\inf at bad=\count87
-LaTeX Info: Redefining \frac on input line 211.
-\uproot@=\count88
-\leftroot@=\count89
-LaTeX Info: Redefining \overline on input line 307.
-\classnum@=\count90
-\DOTSCASE@=\count91
-LaTeX Info: Redefining \ldots on input line 379.
-LaTeX Info: Redefining \dots on input line 382.
-LaTeX Info: Redefining \cdots on input line 467.
-\Mathstrutbox@=\box26
-\strutbox@=\box27
-\big at size=\dimen106
-LaTeX Font Info:    Redeclaring font encoding OML on input line 567.
-LaTeX Font Info:    Redeclaring font encoding OMS on input line 568.
-\macc at depth=\count92
-\c at MaxMatrixCols=\count93
-\dotsspace@=\muskip10
-\c at parentequation=\count94
-\dspbrk at lvl=\count95
-\tag at help=\toks15
-\row@=\count96
-\column@=\count97
-\maxfields@=\count98
-\andhelp@=\toks16
-\eqnshift@=\dimen107
-\alignsep@=\dimen108
-\tagshift@=\dimen109
-\tagwidth@=\dimen110
-\totwidth@=\dimen111
-\lineht@=\dimen112
-\@envbody=\toks17
-\multlinegap=\skip44
-\multlinetaggap=\skip45
-\mathdisplay at stack=\toks18
-LaTeX Info: Redefining \[ on input line 2666.
-LaTeX Info: Redefining \] on input line 2667.
-)
-(/usr/share/texmf-texlive/tex/latex/amsfonts/amsfonts.sty
-Package: amsfonts 2001/10/25 v2.2f
-\symAMSa=\mathgroup4
-\symAMSb=\mathgroup5
-LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
-(Font)                  U/euf/m/n --> U/euf/b/n on input line 132.
-)
-(/usr/share/texmf-texlive/tex/latex/amsfonts/amssymb.sty
-Package: amssymb 2002/01/22 v2.2d
-)
-(/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
-Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
-
-(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
-Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
-\KV at toks@=\toks19
-)
-(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
-Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
-
-(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
-Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
-)
-(/usr/share/texmf-texlive/tex/latex/config/graphics.cfg
-File: graphics.cfg 2001/08/31 v1.1 graphics configuration of teTeX/TeXLive
-)
-Package graphics Info: Driver file: dvips.def on input line 80.
-
-(/usr/share/texmf-texlive/tex/latex/graphics/dvips.def
-File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
-))
-\Gin at req@height=\dimen113
-\Gin at req@width=\dimen114
-)
-(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
-Package: babel 2005/05/21 v3.8g The Babel package
-
-(/usr/share/texmf-texlive/tex/generic/babel/frenchb.ldf
-Language: french 2005/02/06 v1.6g French support from the babel system
-
-(/usr/share/texmf-texlive/tex/generic/babel/babel.def
-File: babel.def 2005/05/21 v3.8g Babel common definitions
-\babel at savecnt=\count99
-\U at D=\dimen115
-)
-Package babel Info: Making : an active character on input line 219.
-Package babel Info: Making ; an active character on input line 220.
-Package babel Info: Making ! an active character on input line 221.
-Package babel Info: Making ? an active character on input line 222.
-\parindentFFN=\dimen116
-\std at mcc=\count100
-\dec at mcc=\count101
-
-*************************************
-* Local config file frenchb.cfg used
-*
-(/usr/share/texmf-texlive/tex/generic/babel/frenchb.cfg))
-(/usr/share/texmf-texlive/tex/generic/babel/english.ldf
-Language: english 2005/03/30 v3.3o English support from the babel system
-\l at british = a dialect from \language\l at english 
-\l at UKenglish = a dialect from \language\l at english 
-\l at canadian = a dialect from \language\l at american 
-\l at australian = a dialect from \language\l at british 
-\l at newzealand = a dialect from \language\l at british 
-))
-(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
-Package: fontenc 2004/02/22 v1.99f Standard LaTeX package
-
-(/usr/share/texmf-texlive/tex/latex/base/t1enc.def
-File: t1enc.def 2004/02/22 v1.99f Standard LaTeX file
-LaTeX Font Info:    Redeclaring font encoding T1 on input line 43.
-))
-(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
-Package: inputenc 2004/02/05 v1.0d Input encoding file
-
-(/usr/share/texmf-texlive/tex/latex/base/latin1.def
-File: latin1.def 2004/02/05 v1.0d Input encoding file
-))
-\interligne=\skip46
-\@shtitle=\box28
-\@ESPage=\skip47
-\labelwidthi=\skip48
-\itemindenti=\skip49
-\labelwidthii=\skip50
-\itemindentii=\skip51
-\enumwidthi=\skip52
-\enumindenti=\skip53
-\enumwidthii=\skip54
-\enumindentii=\skip55
-)
-LaTeX Font Info:    Try loading font information for T1+ptm on input line 19.
-
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1ptm.fd
-File: t1ptm.fd 2001/06/04 font definitions for T1/ptm.
-) (./guii.aux)
-\openout1 = `guii.aux'.
-
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 40.
-LaTeX Font Info:    ... okay on input line 40.
-LaTeX Info: Redefining \dots on input line 40.
-LaTeX Font Info:    Font shape `T1/ptm/bx/n' in size <10> not available
-(Font)              Font shape `T1/ptm/b/n' tried instead on input line 45.
-LaTeX Font Info:    Font shape `T1/ptm/bx/n' in size <18> not available
-(Font)              Font shape `T1/ptm/b/n' tried instead on input line 45.
-LaTeX Font Info:    Font shape `T1/ptm/bx/n' in size <14> not available
-(Font)              Font shape `T1/ptm/b/n' tried instead on input line 45.
-LaTeX Font Info:    Font shape `T1/ptm/bx/n' in size <12> not available
-(Font)              Font shape `T1/ptm/b/n' tried instead on input line 45.
-LaTeX Font Info:    Try loading font information for U+msa on input line 45.
-
-(/usr/share/texmf-texlive/tex/latex/amsfonts/umsa.fd
-File: umsa.fd 2002/01/19 v2.2g AMS font definitions
-)
-LaTeX Font Info:    Try loading font information for U+msb on input line 45.
-
-(/usr/share/texmf-texlive/tex/latex/amsfonts/umsb.fd
-File: umsb.fd 2002/01/19 v2.2g AMS font definitions
-)
-Underfull \hbox (badness 10000) has occurred while \output is active
-$[]$
- []
-
-[1
-
-]
-LaTeX Font Info:    Font shape `T1/ptm/bx/it' in size <10> not available
-(Font)              Font shape `T1/ptm/b/it' tried instead on input line 59.
- [2] [3] [4]
-File: figures/arbre_abstrait.ps Graphic file (type eps)
- <figures/arbre_abstrait.ps>
-Overfull \hbox (114.67268pt too wide) in paragraph at lines 178--179
- [] 
- []
-
-[5]
-Underfull \hbox (badness 10000) in paragraph at lines 202--205
-
- []
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 213--219
-
- []
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 222--226
-
- []
-
-[6]
-File: figures/grammaire.ps Graphic file (type eps)
- <figures/grammaire.ps>
-Overfull \hbox (62.47746pt too wide) in paragraph at lines 228--229
- [] 
- []
-
-[7] [8]
-File: figures/GUII.ps Graphic file (type eps)
- <figures/GUII.ps>
-Overfull \hbox (104.23195pt too wide) in paragraph at lines 264--267
- [] 
- []
-
-[9]
-Overfull \hbox (6.79999pt too wide) in paragraph at lines 277--277
-[][] 
- []
-
-LaTeX Font Info:    Try loading font information for T1+cmtt on input line 277.
-
-(/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd
-File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions
-)
-Overfull \hbox (14.22636pt too wide) in paragraph at lines 277--277
-[]$[]$ 
- []
-
-[10] (./guii.aux) ) 
-Here is how much of TeX's memory you used:
- 2579 strings out of 94313
- 29343 string characters out of 1171671
- 90225 words of memory out of 1000000
- 5781 multiletter control sequences out of 10000+50000
- 30721 words of font info for 37 fonts, out of 1200000 for 2000
- 647 hyphenation exceptions out of 8191
- 34i,7n,26p,743b,360s stack positions out of 5000i,500n,6000p,200000b,5000s
-
-Output written on guii.dvi (10 pages, 25768 bytes).
diff --git a/lib/guii/majecstic08/guii.ps b/lib/guii/majecstic08/guii.ps
deleted file mode 100644
index fced5b2..0000000
--- a/lib/guii/majecstic08/guii.ps
+++ /dev/null
@@ -1,6592 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
-%%Title: guii.dvi
-%%Pages: 10
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
-%%DocumentFonts: Times-Bold Times-Italic Times-Roman Times-BoldItalic
-%%+ Courier-Bold Courier SFTT1000
-%%DocumentPaperSizes: a4
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips guii.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2008.05.16:1621
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: 8r.enc 0 0
-% File 8r.enc  TeX Base 1 Encoding  Revision 2.0  2002-10-30
-%
-% @@psencodingfile@{
-%   author    = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
-%                W. Schmidt, P. Lehman",
-%   version   = "2.0",
-%   date      = "30 October 2002",
-%   filename  = "8r.enc",
-%   email     = "tex-fonts@@tug.org",
-%   docstring = "This is the encoding vector for Type1 and TrueType
-%                fonts to be used with TeX.  This file is part of the
-%                PSNFSS bundle, version 9"
-% @}
-% 
-% The idea is to have all the characters normally included in Type 1 fonts
-% available for typesetting. This is effectively the characters in Adobe
-% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
-% MacRoman, and some extra characters from Lucida.
-% 
-% Character code assignments were made as follows:
-% 
-% (1) the Windows ANSI characters are almost all in their Windows ANSI
-% positions, because some Windows users cannot easily reencode the
-% fonts, and it makes no difference on other systems. The only Windows
-% ANSI characters not available are those that make no sense for
-% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
-% (173). quotesingle and grave are moved just because it's such an
-% irritation not having them in TeX positions.
-% 
-% (2) Remaining characters are assigned arbitrarily to the lower part
-% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
-% 
-% (3) Y&Y Lucida Bright includes some extra text characters; in the
-% hopes that other PostScript fonts, perhaps created for public
-% consumption, will include them, they are included starting at 0x12.
-% These are /dotlessj /ff /ffi /ffl.
-% 
-% (4) hyphen appears twice for compatibility with both ASCII and Windows.
-%
-% (5) /Euro was assigned to 128, as in Windows ANSI
-%
-% (6) Missing characters from MacRoman encoding incorporated as follows:
-%
-%     PostScript      MacRoman        TeXBase1
-%     --------------  --------------  --------------
-%     /notequal       173             0x16
-%     /infinity       176             0x17
-%     /lessequal      178             0x18
-%     /greaterequal   179             0x19
-%     /partialdiff    182             0x1A
-%     /summation      183             0x1B
-%     /product        184             0x1C
-%     /pi             185             0x1D
-%     /integral       186             0x81
-%     /Omega          189             0x8D
-%     /radical        195             0x8E
-%     /approxequal    197             0x8F
-%     /Delta          198             0x9D
-%     /lozenge        215             0x9E
-%
-/TeXBase1Encoding [
-% 0x00
- /.notdef /dotaccent /fi /fl
- /fraction /hungarumlaut /Lslash /lslash
- /ogonek /ring /.notdef /breve
- /minus /.notdef /Zcaron /zcaron
-% 0x10
- /caron /dotlessi /dotlessj /ff
- /ffi /ffl /notequal /infinity
- /lessequal /greaterequal /partialdiff /summation
- /product /pi /grave /quotesingle
-% 0x20
- /space /exclam /quotedbl /numbersign
- /dollar /percent /ampersand /quoteright
- /parenleft /parenright /asterisk /plus
- /comma /hyphen /period /slash
-% 0x30
- /zero /one /two /three
- /four /five /six /seven
- /eight /nine /colon /semicolon
- /less /equal /greater /question
-% 0x40
- /at /A /B /C
- /D /E /F /G
- /H /I /J /K
- /L /M /N /O
-% 0x50
- /P /Q /R /S
- /T /U /V /W
- /X /Y /Z /bracketleft
- /backslash /bracketright /asciicircum /underscore
-% 0x60
- /quoteleft /a /b /c
- /d /e /f /g
- /h /i /j /k
- /l /m /n /o
-% 0x70
- /p /q /r /s
- /t /u /v /w
- /x /y /z /braceleft
- /bar /braceright /asciitilde /.notdef
-% 0x80
- /Euro /integral /quotesinglbase /florin
- /quotedblbase /ellipsis /dagger /daggerdbl
- /circumflex /perthousand /Scaron /guilsinglleft
- /OE /Omega /radical /approxequal
-% 0x90
- /.notdef /.notdef /.notdef /quotedblleft
- /quotedblright /bullet /endash /emdash
- /tilde /trademark /scaron /guilsinglright
- /oe /Delta /lozenge /Ydieresis
-% 0xA0
- /.notdef /exclamdown /cent /sterling
- /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft
- /logicalnot /hyphen /registered /macron
-% 0xD0
- /degree /plusminus /twosuperior /threesuperior
- /acute /mu /paragraph /periodcentered
- /cedilla /onesuperior /ordmasculine /guillemotright
- /onequarter /onehalf /threequarters /questiondown
-% 0xC0
- /Agrave /Aacute /Acircumflex /Atilde
- /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis
- /Igrave /Iacute /Icircumflex /Idieresis
-% 0xD0
- /Eth /Ntilde /Ograve /Oacute
- /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex
- /Udieresis /Yacute /Thorn /germandbls
-% 0xE0
- /agrave /aacute /acircumflex /atilde
- /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis
- /igrave /iacute /icircumflex /idieresis
-% 0xF0
- /eth /ntilde /ograve /oacute
- /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex
- /udieresis /yacute /thorn /ydieresis
-] def
-
-
-%%EndProcSet
-%%BeginProcSet: texnansi.enc 0 0
-% @psencodingfile{
-%   author = "Y&Y, Inc.",
-%   version = "1.1",
-%   date = "1 December 1996",
-%   filename = "texnansi.enc",
-%   email = "help at YandY.com",
-%   address = "45 Walden Street // Concord, MA 01742, USA",
-%   codetable = "ISO/ASCII",
-%   checksum = "xx",
-%   docstring = "Encoding for fonts in Adobe Type 1 format for use with TeX."
-% }
-%
-% The idea is to have all 228 characters normally included in Type 1 text
-% fonts (plus a few more) available for typesetting.  This is effectively
-% the character set in Adobe Standard Encoding, ISO Latin 1, plus a few more.
-%
-% Character code assignments were made as follows:
-%
-% (1) The character layout largely matches `ASCII' in the 32 -- 126 range,
-% except for `circumflex' in 94 and `tilde' in 126, to match `TeX text'
-% (`asciicircumflex' and `asciitilde' appear in 158 and 142 instead).
-%
-% (2) The character layout matches `Windows ANSI' in almost all places,
-% except for `quoteright' in 39 and `quoteleft' in 96 to match ASCII
-% (`quotesingle' and `grave' appear in 129 and 18 instead).
-%
-% (3) The character layout matches `TeX typewriter' used by CM text fonts
-% in most places (except for discordant positions such as hungarumlaut
-% (instead of braceright), dotaccent (instead of underscore) etc.
-%
-% (4) Remaining characters are assigned arbitrarily to the `control character'
-% range (0 -- 31), avoiding 0, 9, 10 and 13 in case we meet dumb software
-% - similarly one should really avoid 127 and 128 if possible.
-% In addition, the 8 open slots in Windows ANSI between 128 and 159 are used.
-%
-% (5) Y&Y Lucida Bright includes some extra ligatures and such; ff, ffi, ffl,
-% and `dotlessj,' these are included 11 -- 15, and 17.
-%
-% (6) Hyphen appears both at 45 and 173 for compatibility with both ASCII
-% and Windows ANSI.
-%
-% (7) It doesn't really matter where ligatures appear (both real, such as ffi,
-% and pseudo such as ---) since these should not be accessed directly, only
-% via ligature information in the TFM file.
-%
-% SAMPLE USAGE (in `psfonts.map' file for DVIPS):
-% 
-% lbr LucidaBright "TeXnANSIEncoding ReEncodeFont" <texnansi.enc <lbr.pfb
-%
-% This tells DVIPS that the font called `lbr' in TeX has PostScript 
-% FontName `LucidaBright.'  It also asks DVIPS to expand the file `lbr.pfb'
-% into PFA form, to include the attached `texnansi.enc' encoding vector,
-% and to then actually reencode the font based on that encoding vector.
-%
-% Revised 1996 June 1 by adding second position for `fl' to avoid Acrobat bug.
-% Revised 1996 June 1 by adding second position for `fraction' for same reason.
-% Revised 1997 Oct 1 by adding cwm  (used in boundary char TFM code)
-% Revised 1998 Mar 1 by adding Unicode for Euro character
-%
-/TeXnANSIEncoding [
-/.notdef % 0
-/Euro % /Uni20AC 1
-/.notdef % 2
-/.notdef % 3
-/fraction %	4
-/dotaccent %	5
-/hungarumlaut %	6
-/ogonek	%	7
-/fl	%	8
-/.notdef % /fraction %	9	not used (see 4), backward compatability only
-/cwm	%	10	not used, except boundary char internally maybe
-/ff    %	11
-/fi    %	12
-/.notdef % /fl    %	13	not used (see 8), backward compatability only
-/ffi   %	14
-/ffl   %	15
-/dotlessi %	16
-/dotlessj %	17
-/grave %	18
-/acute %	19
-/caron %	20
-/breve %	21
-/macron %	22
-/ring  %	23
-/cedilla %	24
-/germandbls %	25
-/ae    %	26
-/oe    %	27
-/oslash %	28
-/AE    %	29
-/OE    %	30
-/Oslash %	31
-/space %	32	% /suppress in TeX text
-/exclam %	33
-/quotedbl %	34	% /quotedblright in TeX text
-/numbersign %	35
-/dollar %	36
-/percent %	37
-/ampersand %	38
-/quoteright %	39	% /quotesingle in ANSI
-/parenleft %	40
-/parenright %	41
-/asterisk %	42
-/plus  %	43
-/comma %	44
-/hyphen %	45
-/period %	46
-/slash %	47
-/zero  %	48
-/one   %	49
-/two   %	50
-/three %	51
-/four  %	52
-/five  %	53
-/six   %	54
-/seven %	55
-/eight %	56
-/nine  %	57
-/colon %	58
-/semicolon %	59
-/less  %	60	% /exclamdown in Tex text
-/equal %	61
-/greater %	62	% /questiondown in TeX text
-/question %	63
-/at %	64
-/A %	65
-/B %	66
-/C %	67
-/D %	68
-/E %	69
-/F %	70
-/G %	71
-/H %	72
-/I %	73
-/J %	74
-/K %	75
-/L %	76
-/M %	77
-/N %	78
-/O %	79
-/P %	80
-/Q %	81
-/R %	82
-/S %	83
-/T %	84
-/U %	85
-/V %	86
-/W %	87
-/X %	88
-/Y %	89
-/Z %	90
-/bracketleft %	91
-/backslash %	92	% /quotedblleft in TeX text
-/bracketright %	93
-/circumflex %	94	% /asciicircum in ASCII
-/underscore %	95	% /dotaccent in TeX text
-/quoteleft %	96	% /grave accent in ANSI
-/a %	97
-/b %	98
-/c %	99
-/d %	100
-/e %	101
-/f %	102
-/g %	103
-/h %	104
-/i %	105
-/j %	106
-/k %	107
-/l %	108
-/m %	109
-/n %	110
-/o %	111
-/p %	112
-/q %	113
-/r %	114
-/s %	115
-/t %	116
-/u %	117
-/v %	118
-/w %	119
-/x %	120
-/y %	121
-/z %	122
-/braceleft %	123	% /endash in TeX text
-/bar   %	124	% /emdash in TeX test
-/braceright %	125	% /hungarumlaut in TeX text
-/tilde %	126	% /asciitilde in ASCII
-/dieresis %	127	not used (see 168), use higher up instead
-/Lslash	%	128	this position is unfortunate, but now too late to fix
-/quotesingle %	129
-/quotesinglbase %	130
-/florin %	131
-/quotedblbase %	132
-/ellipsis %	133
-/dagger %	134
-/daggerdbl %	135
-/circumflex %	136
-/perthousand %	137
-/Scaron %	138
-/guilsinglleft %	139
-/OE    %	140
-/Zcaron %	141
-/asciicircum %	142
-/minus %	143
-/lslash %	144
-/quoteleft %	145
-/quoteright %	146
-/quotedblleft %	147
-/quotedblright %	148
-/bullet %	149
-/endash %	150
-/emdash %	151
-/tilde %	152
-/trademark %	153
-/scaron %	154
-/guilsinglright %	155
-/oe    %	156
-/zcaron %	157
-/asciitilde %	158
-/Ydieresis %	159
-/nbspace %	160	% /space (no break space)
-/exclamdown %	161
-/cent  %	162
-/sterling %	163
-/currency %	164
-/yen   %	165
-/brokenbar %	166
-/section %	167
-/dieresis %	168
-/copyright %	169
-/ordfeminine %	170
-/guillemotleft %	171
-/logicalnot %	172
-/sfthyphen %	173 % /hyphen (hanging hyphen)
-/registered %	174
-/macron %	175
-/degree %	176
-/plusminus %	177
-/twosuperior %	178
-/threesuperior %	179
-/acute %	180
-/mu    %	181
-/paragraph %	182
-/periodcentered %	183
-/cedilla %	184
-/onesuperior %	185
-/ordmasculine %	186
-/guillemotright %	187
-/onequarter %	188
-/onehalf %	189
-/threequarters %	190
-/questiondown %	191
-/Agrave %	192
-/Aacute %	193
-/Acircumflex %	194
-/Atilde %	195
-/Adieresis %	196
-/Aring %	197
-/AE    %	198
-/Ccedilla %	199
-/Egrave %	200
-/Eacute %	201
-/Ecircumflex %	202
-/Edieresis %	203
-/Igrave %	204
-/Iacute %	205
-/Icircumflex %	206
-/Idieresis %	207
-/Eth   %	208
-/Ntilde %	209
-/Ograve %	210
-/Oacute %	211
-/Ocircumflex %	212
-/Otilde %	213
-/Odieresis %	214
-/multiply %	215	% OE in T1
-/Oslash %	216
-/Ugrave %	217
-/Uacute %	218
-/Ucircumflex %	219
-/Udieresis %	220
-/Yacute %	221
-/Thorn %	222
-/germandbls %	223
-/agrave %	224
-/aacute %	225
-/acircumflex %	226
-/atilde %	227
-/adieresis %	228
-/aring %	229
-/ae    %	230
-/ccedilla %	231
-/egrave %	232
-/eacute %	233
-/ecircumflex %	234
-/edieresis %	235
-/igrave %	236
-/iacute %	237
-/icircumflex %	238
-/idieresis %	239
-/eth   %	240
-/ntilde %	241
-/ograve %	242
-/oacute %	243
-/ocircumflex %	244
-/otilde %	245
-/odieresis %	246
-/divide %	247	% oe in T1
-/oslash %	248
-/ugrave %	249
-/uacute %	250
-/ucircumflex %	251
-/udieresis %	252
-/yacute %	253
-/thorn %	254
-/ydieresis %	255	% germandbls in T1
-] def
-
-%%EndProcSet
-%%BeginProcSet: cm-super-t1.enc 0 0
-% This file is generated from `T1uni.map' and `glyphlist.txt', `gl-other.txt'
-%
-% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;
-% LIGKERN quoteleft quoteleft =: quotedblleft ;
-% LIGKERN quoteright quoteright =: quotedblright ;
-% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ;
-% LIGKERN greater greater =: guillemotright ;
-% LIGKERN f f =: ff ; f i =: fi ; f l =: fl ; ff i =: ffi ; ff l =: ffl ;
-%
-% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;
-% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;
-% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;
-% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;
-% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;
-% LIGKERN nine {} * ; * {} nine ;
-%
-/T1Encoding [
-% 0x00
-/grave
-/acute
-/circumflex
-/tilde
-/dieresis
-/hungarumlaut
-/ring
-/caron
-/breve
-/macron
-/dotaccent
-/cedilla
-/ogonek
-/quotesinglbase
-/guilsinglleft
-/guilsinglright
-% 0x10
-/quotedblleft
-/quotedblright
-/quotedblbase
-/guillemotleft
-/guillemotright
-/endash
-/emdash
-/afii61664
-/perthousandzero % PERTHOUSAND ZERO
-/dotlessi
-/dotlessj
-/ff
-/fi
-/fl
-/ffi
-/ffl
-% 0x20
-/uni2423
-/exclam
-/quotedbl
-/numbersign
-/dollar
-/percent
-/ampersand
-/quoteright
-/parenleft
-/parenright
-/asterisk
-/plus
-/comma
-/hyphen
-/period
-/slash
-% 0x30
-/zero
-/one
-/two
-/three
-/four
-/five
-/six
-/seven
-/eight
-/nine
-/colon
-/semicolon
-/less
-/equal
-/greater
-/question
-% 0x40
-/at
-/A
-/B
-/C
-/D
-/E
-/F
-/G
-/H
-/I
-/J
-/K
-/L
-/M
-/N
-/O
-% 0x50
-/P
-/Q
-/R
-/S
-/T
-/U
-/V
-/W
-/X
-/Y
-/Z
-/bracketleft
-/backslash
-/bracketright
-/asciicircum
-/underscore
-% 0x60
-/quoteleft
-/a
-/b
-/c
-/d
-/e
-/f
-/g
-/h
-/i
-/j
-/k
-/l
-/m
-/n
-/o
-% 0x70
-/p
-/q
-/r
-/s
-/t
-/u
-/v
-/w
-/x
-/y
-/z
-/braceleft
-/bar
-/braceright
-/asciitilde
-/hyphen.alt % HANGING HYPHEN
-% 0x80
-/Abreve
-/Aogonek
-/Cacute
-/Ccaron
-/Dcaron
-/Ecaron
-/Eogonek
-/Gbreve
-/Lacute
-/Lcaron
-/Lslash
-/Nacute
-/Ncaron
-/Eng
-/Ohungarumlaut
-/Racute
-% 0x90
-/Rcaron
-/Sacute
-/Scaron
-/Scedilla
-/Tcaron
-/Tcommaaccent
-/Uhungarumlaut
-/Uring
-/Ydieresis
-/Zacute
-/Zcaron
-/Zdotaccent
-/IJ
-/Idotaccent
-/dcroat
-/section
-% 0xA0
-/abreve
-/aogonek
-/cacute
-/ccaron
-/dcaron
-/ecaron
-/eogonek
-/gbreve
-/lacute
-/lcaron
-/lslash
-/nacute
-/ncaron
-/eng
-/ohungarumlaut
-/racute
-% 0xB0
-/rcaron
-/sacute
-/scaron
-/scedilla
-/tcaron
-/tcommaaccent
-/uhungarumlaut
-/uring
-/ydieresis
-/zacute
-/zcaron
-/zdotaccent
-/ij
-/exclamdown
-/questiondown
-/sterling
-% 0xC0
-/Agrave
-/Aacute
-/Acircumflex
-/Atilde
-/Adieresis
-/Aring
-/AE
-/Ccedilla
-/Egrave
-/Eacute
-/Ecircumflex
-/Edieresis
-/Igrave
-/Iacute
-/Icircumflex
-/Idieresis
-% 0xD0
-/Eth
-/Ntilde
-/Ograve
-/Oacute
-/Ocircumflex
-/Otilde
-/Odieresis
-/OE
-/Oslash
-/Ugrave
-/Uacute
-/Ucircumflex
-/Udieresis
-/Yacute
-/Thorn
-/SS % Germandbls
-% 0xE0
-/agrave
-/aacute
-/acircumflex
-/atilde
-/adieresis
-/aring
-/ae
-/ccedilla
-/egrave
-/eacute
-/ecircumflex
-/edieresis
-/igrave
-/iacute
-/icircumflex
-/idieresis
-% 0xF0
-/eth
-/ntilde
-/ograve
-/oacute
-/ocircumflex
-/otilde
-/odieresis
-/oe
-/oslash
-/ugrave
-/uacute
-/ucircumflex
-/udieresis
-/yacute
-/thorn
-/germandbls % or /germandbls.alt
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginProcSet: special.pro 0 0
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
- at MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
-newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
-closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
-/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
-currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
-N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
-neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
-rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
-scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
-lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
-ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
-/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
-pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
-restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
-/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
-setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
-moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
-matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
-savematrix setmatrix}N end
-
-%%EndProcSet
-%%BeginFont: SFTT1000
-%!FontType1-1.0: SFTT1000 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv at vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ectt1000, tctt1000, latt1000, lbtt1000, lctt1000, rxtt1000.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Typewriter) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/Weight (Medium) def
-end readonly def
-/FontName /SFTT1000 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-208 -360 1374 838}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6B55C6E47AD7A9A958A6E22E00FDD4D6492D53ADDC90ECD778346C06747
-57609FE8907DFFFED75E2CF963A64C7F72488F4A02372BE681E9BBF09A9CE5A9
-3894F6358C244FCD46C148F1EB60DE2137E6D3079D6AE03B3724F7D7BBA47BC4
-41C27FFFDFF9FB7B7738A8D88C27573A53E244723E07C995948DED2516B6044E
-ADED62C496A56BC14483D307884467ADE985655A4712DD06ED00811F9A05BF9F
-BF2AC66203817289FFB5BDCD0445293981AF6F55928C132E885ED009DE1B5FB0
-C230370EB5156A8B609E466F00F768F0A52ABCFBFCE3514C0FDDE31E601AD508
-2666AD26D9DB386B9FEC80AC197C9FE7447928C0C6A2858375F0A1D7AD3BE53C
-9A926DDFBAC60D846783AA97CB86F804701BF53F7C4D18B925FD604F60231215
-EBDF4FAD73F2D13518E1901C3DA00ACE65647765106EFCA89D1F7797042A1CE8
-F39E2475DC2936BFA24A71D879CF46FE753E2C63BEAFDC65589FD17B18155220
-1044C366077F0DEDA5BFC03931758CAD2A066BF49A7C1889BB0582A174CE59A2
-59693720FDAA7CA1BB8015F9BD51B468C01600BEA3AAB225F4B800EC1614FF01
-B5B9AA6122750A57EF7694D92C4128F15BC6AA1BFFF59BD99696A942A03329A4
-DA4A4BB6688CF1633E3631EFCC8BBC4E1E846D5B831E795053288965201B6D62
-C485D993C7676717C6F652970F8C71AA5948C43E2613965EA9CB1FDBEF39EA12
-9804EF497008E1665E769A11316D98C991D65B35E667629F1A83377B4440FEFA
-2316C3143FAD6F4EFC2480E093CBBB3B0D57290ACBC802CE585B70BC8C0F2901
-775A2B0C7F20E4430D52D11FF6B410D7439F2C26A4DA4002A215A349CA38D1B9
-CA04678D93A990A068683CE79EE35D3A5D180673DE5FBB8B03B7DC8D436FF5F9
-006F358DC65C1D90A7738F2680135B76C747047E3197B6420106488938A6BAE1
-7F412EFC01B0349E045368487AD50EE80930D39DB92D17AF75A8B079A6A93045
-C670C8CFB01373D774E7BC3D775CF8635908D0EAD76F78803173922F118C668B
-2A50B39F367052834C6FCD4B7F6B0ADDEA73EB9B1C32601E2F8ACB2AA8967F72
-57E124AA2393FA083EF443EEEEF9478C3CC88384C3AFC869554CE7D5A283C288
-175E481411FBADD11B2BBB6F4E6346335F25129DC24505684317246BB632B501
-5F8545F68132143E9C3CF13C6DFE44E88EE24ED42A51B8E798BA91F2D11B76C9
-7158A7C9038C65DA6EA2C3B253D37B24BE29C2C1640463BDD1BCA24B8C234A8F
-1D6928EDE06BBE8F9347E3CA85CF77CCD0970592075AE95E7194A903FF2EB15D
-4269E2126F059B6DF00C90AAFFFFAAFA085DF6E55E2DA1408073FBFA39CABD1D
-3E00537470452B3735A911C968B1B60B3BBA37E6290DB3AEB114CEFA9F875DD0
-510CEFD3137374C7B1D1051BE3DD96CFB4E59BBAD6142658ED018742A60DF1DC
-4A1867AE20D08DEBECA01E0612169213214E89E0232D4F32660C66B043266090
-733BA17E4529A5E0CB97C78C561677E8ED3B3DC02A44D1B94F529726A26CE338
-CFE5F50CF342B270B725819E37129BAC144B55EBB996781212BCE4930FE40525
-17107A32A7E9079C4072E6FA8077CED5E9EC06945FA7216D19861EFD66C750BC
-1FC4988F6D39C1F8941CA9BC1A3FA2E411C90A03FD7205C997CE1B6D96135881
-5A314A5341570EA39FA4C17F3171847E6467D40C440A11E0538C2BE1948CD96B
-9C5CA6F07F6FA5DDE1E2D6593BEAB1E67972EDD1D809661FACC93617117D54E3
-9521E10288CC0110CE0EA79FA93E8A597F177401E48A7111A07846C1D0436E60
-5DA8420AF7D04295078D08457351D5E7E10B17D5AED7847B01149AA7AE6FF305
-8F61DA3D0FFC42DBA8939FC28A56515F282602FD4E98A6FB664F3D46D9FCB377
-2DFF81306022DAC974F2B0FBBC21BF5252C84E8769E01E9DCA145A51E9571771
-DC8C76A8F121FE5E7B9845BB1D88690A3845A543560953425B85B62BC0F7804E
-1A66E8E5F38F3762333B78B036BFFEE86744AF31239E7500F020FE8F347351AA
-B7080813474EE8513BC6B7FE539E1F59F8EE27AB1903624503FF1F8ABAC9B1A9
-ACC5F02B87B2E228F211E5787C9BBB3D833C013530F980B348598A37546F5AC2
-2106CA436916A141F41BF0470E0BB7413FD5E2288C709213FA3E00527E587B0E
-DF6AB622BD8F8563EAAFECE68A50916425C308D02B1083DB616CEAFBA2C9633E
-926B742368FBB56689C7B3070A231D325357A24633301F49C056111CAC15749A
-54893931D0539DC50A2A97FA59E8822A8782CDF9E1AF675D0867ABFB68C703BA
-5F08E67DA86AB45C9E96A54A6497212FBA8D9CF427917A69D2B31355B3CD4B9C
-2DE7EB1F6F386B924491D64E133F4332E61F3DBA30CBA0C54E1F59887AEA45F9
-C3D2D7DD4B17F8B7C2226896C56FD93713226D0A5C65FEEF6BBF242DD8C69E20
-DC470F09463358BB5B9CDBB5FBA123444AEC233ED6F744156876340C5A300B89
-10A7453E1E0EAD6D50AA98EBDA5D2C7860DDE223A371C66EC8B3BF174EA931FB
-D031C430AF2BD7342373D4E52A527DDC93BDAEF846DB39DB4F8C26CEEAF3EB7C
-BFE7BED6E33F9001E5DB53921227594F99F206791BFC1774FFC12FB1643B3BC1
-71AECAA0026827D50218E2E0E06EF31A4368603D624914EB7405F4E213B6F5A0
-B75C53A9DD360E2C7D0B0D2DD057C10FDA8B73C48467621D2BC0FE8B88946A73
-924FC20C19BDF7BC8263EB80C857C85392F1B4CA79AF36E1CD12D8593FA6DC92
-9407067074AB9D9E3489CC5163C0AFC93110751B5593A34F1E15113F0F6579B4
-3E757DB21AFED77118A7DD9171A6C04F49A5E527768405400EC116FA71C9BCA5
-0E8DCED4CCB7CC89A9E7AB94D022EE2F88B276E5AAD1177B81E5D4B48DBA6D51
-019D9DB3EDC6160932D9BEB202422B0DF8A4E2478D594FF6202FBD0042274B94
-BEAF0EB7FDE712F96A32A8F92568C61E21FECFAF81971A1E40A8782F4EF7082E
-A8A7DA911EE06951619682E36AC1F1000681912B1861065C1F6B99E83BB38E8C
-5A324D31B1526CB201DA5D81B928134E9EDD96EBF64FBE157308705CF9E462B8
-073894F45DCC877253324B87A4C12A18D08F7EDFE5626BE8C9630F5D2439BA30
-E8927FEB98EB1A058B8B81BEE724A1EB1C56B5AEEDFDED25DFC098A943F8C320
-2587BA00319CCBF0D9F2F4CD8ABF006B7A778429292BC3DBC323F41AD615599B
-32D410938C5BC5DCA1C55DC8F1285B19EF716712847A209787E662CE0D54BCA1
-10E3A9044E458AFBEE2418D3CB2A900A60C03E7321249CA1D662D1A895E9D01B
-85C3A755449A1D09552603A20B8ACA695D49BBFCF53A39841CA1E81B31447C89
-9B58F70E9D6D45AF3B296D8E1B1611D076DCA430ECDE689085121C250F9B6C1E
-27771D1C09E1C5281C9585356BE260790E2A14C9BECAC423EFCB4715E91E84D9
-573C79240EDF0435BBEF52C0888144686AFE62DBE3F6BF6676A55D0307F38689
-2FC8E6E9E1E741707A086BA03B18B17EA26549517E0ED9AA1471D434A1F631EA
-0521D32022B8FA2F78AFA009E64FB9E87AB4B76D7E03B03B965EB8E798BA91F2
-D11B76C97158A7C90389EA7A59E6FC97ECE310E0D03A3A1B7138B3DBAC4B0F98
-A472F9427C185ABE396DA98413AA32DF5B73C412376869A676906BA08CD8FCE6
-81616FEACCB5DA798010F76FBB2A57CF9BBD35E7FBADB310233895B9C85CB66B
-2EACA33026378B999306921828C1D132B839F79D3EB87A1A94E5894C524D7AB8
-8CD88C5D6858C24F86D974D88D55F4B2AAE75136F1ECABF64BC9CA3F7B1DB6FF
-17B2247D3EB466D4E4A43755D4C596C312FC354DF70AC58AC8FDC25460DC767F
-0D69039D0383933C315BCBD961DE571D13D190FAC5D247CA1DB554AC724FE3B6
-1B2A55278FECB289829E2E49EF42D70EC606501B0FC530085EDF77063F6ACB2F
-34AF8FC1D75FBA7F4E549B8C92B1B7E87D9AD0394044E42E9B92DB572724F90C
-FDC258B7685B89D4019D0198997F145A961CC504D3A891F7C4EB8EA19BE187D0
-A67906F8ECE9496EDAFD87420E60D8EF7391E1598DB4AD7EFFDD05D4EA526FFD
-5FFDE7E732CC90B832C1F958142269684F5C784E1A2BF3AC58B87686F7F28B32
-77A7277FD1153A24A1B0BD174CA5E3CFB39B12568A4CD5B20AF29946DCEFE11E
-A056CA7D5E16480AFFA480B064EF7FBCCADEA230888A02320CD6BBA271005892
-6158D7178B95DEF66B69FE7AAAB765CC2AD57E247094737DFE1DC582BB9D7575
-6073B85FEADFBFDC9D5E2B4D3F4C5DB71B2971DBFDB7A5E82973E9266C9D27B2
-A4E142758EF9A1F78597F7BBB484AE50E04F300AB0844D276DF34F0C2BB85254
-3BED115A85A7C58E02FC30A2E55723BBDD898E586DBD8B79045DF47BABE13B44
-CBBD7EFAA40F133E5B492B51508F0BE22F7A4FA37020E199660202372BF05A63
-950D1B9DA8BFDDB658A581597ABEE5AADD5025E5DBE1ADE9DC4C9888AD0E72EF
-DF22BB9C2109B7FF6B4E53B82F334524F4E1280021B01C1C960395395CDA0886
-B88BB8DF71CD39F600EA6613C24B94E5EF75AE5B38C362FDDF44773F34E1E727
-FEECA5D3015928243B9E03D8B50E9BD56E8C4FD897B4E79BC756839C446D4473
-42C77369C0D93CE8B272D5C03513CF9E1059BA3B8B166C80386AA6BB0516D252
-EC9D6E9C1B54E43CB3BC188D605AC278F5E57DC8F688D1740269E31463B6C4BB
-09FE62DDCE224AD9C8A233B00BD9B60270A231FF14211B6E58D106DA6AA4E0CB
-4FD474584A42B0FD920C403F771BFE51CF8D13ABC39F8ABC8D9191B737FD9DE8
-5F74DE02102EEAC3383DC104274C294C7B3FAA21716E6E55456DEAD9545156A3
-6EE65C2CE73A3285DC9898E7D701D7930F568CB5A871D2B660C4377562BCFC64
-A2053D2F6D7B66DA87A1533DB0EDA641E682B0170EFEF25CC1F5B90D0C420E2A
-A97B6B225BF58F4DDE66BE04A4516DD5636D60235A2A1DD613C7D6A212592308
-842743187169EC42D82A3DC880AB95B617ED938538861C5C69BD5ECC9631D639
-413858E8AADBEC6231C2174D0E74C9C18810A6C4B29C162DFE2E39D7416C1481
-C8B124110BEAD409A6E3A3D009108A5595B073EB8B805088E7F37CA9323AF83F
-51551C93FBD68E47B3918B52EE6A05556338A6DDBECF1D09D621D3DCAF2A67BE
-A5264426B6761AA791766B41F7316FEB64D096BB36A71F730CEA3CF50FE6D915
-E69E3F9102398C2E26CCD1364E049EBD5910EEE107FAA1223824AB96AB9FBD30
-EF71F4FA68D63650ACAF539AA945A9863F2FC1150C71BBBE6ABA94387BC6A7A5
-81910E7A529C86EEC2EFAF62E431D578E4ADC6B588B271DA22DA1D9EE416A880
-9BC39EE19C67AFC5ED9479D372A950EB7286B4239D6F718DB031DCE568313DD9
-86B213BB2B20D2B1D627D9F3D0991E8D41B17F7A181AA56A6FA98EE42D34E52E
-CEE16E00B9AE06199AA3632ED785ADF3A6841CD8A6797EA988B1A28CD4CBF1BB
-3D95A7B4F2653039702F38033BA614136FBDD311B1CD252C8B471113CDEFB8C3
-61D462CD6155C7F746DEE8020CC8113FBD5B7A49FF377486A6E2D30395697F49
-E29BF2210B4D8FAD6185729890309925CB0BDB315CE274CFB186696DB53ED348
-A52171592A28F98A3D9D962E22585AE2CB58E6FD10C5A3EA85B1386693DAA839
-5F026913962964BBB977089E488167D0DC200758A2DE86A7F54F8669DF366D3E
-120F7184588B5623BF8E5AE5CC8EE4CE02FDA2F5957BE9460952CCF3EC843B26
-BC2489F6FAC481443420FE8766888A5254BD7D6FA7BD97536504D777BE0C6289
-9B0F39A7F42EF141E31DCCC49DBCDCC2FD5D15F53B62EDA2FC5209958E19D7EB
-5FCFEAD8AF1AAC03C427F3887DA412CDC7DCB0AF2F35E7B70B6A54C5E32F7973
-650E4741BE612088E167AE4B5DFC9D36089F9E63D897BA0934A5409D7F1F67B2
-CF357B39BD20D16ABA9E1F2C93F7775414D07B2FB20514D1B53818B7898126D6
-05FEEF0EAB800C16D94C4A34183A2F6AD375DC1F42C06D0C5C8291E76A3CEEC5
-C142DB157E146BC13D87D14A7C115EDF91047C6B3CBF936C607DCC6C3A84D3D4
-D04FE77441873B6D91D79D60BE6CC01F83F04C50BCA3EFEBEEAC94B59035CFC5
-D319891E24EE5D80ECFC1D340A12D509E1A6200B7F1FA2B81AE01A8ACC72FF67
-FFA5F6BEC01EFC74991F4179667E2A31951C63F5EDAE4B00B12ABB49BB6D98B0
-7D6101E2D5C9EB71172DAB427ED4553C7BD5364B1D5B9E463EAE54C5D409D423
-B5B59C18D63A25836268E313143A452A70E739C4D2B23690AC9FC597D57AEA87
-619729FD9C05287689E49BC9550D1B576980E7AA3D1C010A40A2D5B3DC539A60
-46DDDB413FE075521A8C020C710E8D91A3E30C0E316092724DEDA7987B1F95EC
-B0E3ABA184901836F65067C3C49500483E7301A66A43170E08ED1AD4B59F7916
-9012568A4CD5B20AF29946DCEFE11EA3FE7CA36A2B614C3E72F49E17C7B41D72
-1180E2147F7EB2755A7BCBE42D82F098BB7C2504027B69F1617257D5403E9864
-4BEC821DDDA3A71F84A52F3B8D3E938C8C15B972D6F541B3DBBE73BCC4E69363
-3184CB857DB8739DDDA068E597CB975868D0B7F04511F58517DD8B7F26F891E8
-19C80944DEFF5FBBA9AB778A86A3AE580F2C5612D010DD516ABEB27B34A8908A
-3C336C6131859F597F1ADDB4736E2BAF093D9C0AA88D7A7556364F1679F5D3AA
-C7BC5C677E9AE564B4024DF9A6AA4FCC3D5CAEB45B0EE4C38271928B367A31D5
-EE5C828A9A799AE5E8FEAA8D4F662D596E3BC16C26570B3DAC800159B49E4903
-73E0FB4A45F2F91B6F656B00CD218DB15DDCC5B7DCB29A2AE6CAAC763D25AEFC
-C234A2E4D6AFD9DF0FAE7A4A45148B7C672A3AD6739D10729D25AFF96C840718
-92EAF0687B6B08C2C2B9BE6A6FC053205C111187A823D24BA94DD99E0A9FF477
-531712CEAB910B69C05A59E318EEADEEEE6E1DE6FF17FD8BADB64DAD460D8B27
-63473C5E2AE2279B72EEB307064A477D4400FA73D978E176EB91089B21D067CD
-D216DCA396EB26D3A806B07FF1CD17B88DB8F1AED575F353B94A7CD116EFD5E3
-4D5A5C727D1459BC80B7BFF0693438FA03274E097D65D1F22B1B03020A44AC67
-47ACD6D97E550E475C4970EFFEBA7CB91EC948B68488F1462668675983B67E84
-5AC278D513C4D6AFC7333DCFF7AC26476EF330D96DA23B57FD692652886BABD9
-4AA231BC5E0E60A658BABBDAF34C4254E63AB16454B8827E818F900620B43981
-FB84CFFFB281AB0AB47DD9CD5BD012DC48E56F9737A854D3848E5B49B1C0AAE1
-F2A93B9C39658072A0443B8CCE3D3D75DB1F5D1DCBB47B3F8174447A8750E4F4
-9F2E536C2A9F96FC4034C49A51239F11AC22ACE46B4B4225C75A6D6066D0F224
-B3E8A9F72055812D21D0C85328B1896F37A3569C59D057CD5A04B9BE4B922049
-7280C3E7B8C6FFAF9556EB8C22F6D62D48BAEB7235F756077542B679B2EE2026
-AD8196D83B69E0A83A5560758AE73016C82FB520CEB3DD66C24C53435AB130B9
-06E648AE13A77F6FBC914A6FF34CDB9175ABFECE28297CC615584AE44B5CCD17
-5E05511207FD7E66E2111FF1EBC255FE1A56586B3AF37058E19297BA56FF7B59
-C223274411A44682DD740BE711C889B7DF3CF3DB9C6BACCDF856B68E8E97CCA8
-A88310E05DCF4C7404646E565B43E758D3364F49A7A0FF25F89289C6069B4372
-1932EED1B7A30F8C0F3266FE2BDB0ECDC694C0A0BBB72C39794465201D6C335D
-A2DC7981C82CB731C12D34082E154839D2D146296AA6AB671828ABF1D5E115A3
-FFC350E7F23B3A45CD01919C124985C9ECFD89C1FF6B34CFC15FD2FA95BF8D91
-5F8500FB15491E2407EA7844288473740C94B6C260EFDA321359FA0A7C7551BF
-1BB7D7FA4FE04C3C256A09636DC4AF42A11BBAB329C0C47B97D88F0FB9F5605A
-E91894B1B2BEBD0AE160A6453D3EFB2A24B5E0BB60EE3BAF4A03DA890E6CB8CC
-47D1B901D961881B6BDE55C6640ABCAD1233E8B56FF433CF95ADB766EA4D2CAF
-A4FC3D93B3E12DB311F6598ACD1C1E1DAEE58C5949E502F7D481319C0817B39B
-9A83EE432F8F5E69A2BE9F91E09188B6DC71C84AB6949FA7DC25ACA8BC1BDF2A
-0BAFC0A4A1D637205BF693D7A85A15EEED515622A8EF0A3FC81907EE8C40C1EF
-AE471E0CCB5A9526A5A8CB2FB58A5ED9139965CB3278F5B23DFE76311A8CE50A
-9F503A7EADCF5EA73EABB33E71CA3005D133A6E28DF04768CC0D7EB90EC5884D
-57A704500C011D87AA5F06BD7C6C4CE520AB3F2B474B043F9162C39CECB47762
-5F80F2385624932E27A0174B3D51B2E7C371F0EA994DFFE1274C11555E017E1B
-380DE970989664EF6E320AB25C8D77461D42219AA07500BA4464C9152A95B64A
-8EF5E84457B33AA6F121512D73A7B25D94A60D1F04A2C9E2D91E6DAB8619663C
-9B56A70B9ADEA53634E02C5BEC13B783E6A8753DC858ED77CFD971A7C1A90327
-CCA074ECD72DDBC7F9ACD67D417FC07D5961FE0E3A2AED3BE70A99DFD6D26F89
-E617010777DFD3CFFC3206067000EA6EFBBCE12A8FA5D6574E8217A7C294028E
-A0BF223324F46597667E605BC651977A5C7391D8A704B6AA412ED1E95B7F0273
-630E1339008A3DFF044EAB8338FDD48D9DDB4A99ADDE3C2EADAF4B5C88F53908
-93662EE051A1FBF640CC91C47CB15EBB3D4B66A0115274A883E3F24E58576773
-BA8A8E06B16A97268DA46F53D84B03C03E57507D65FD58E0F746526A25833135
-ADB098023E620A208FBB70137578EA7EE22B5AFBC20544F7DBBB387CAE553284
-0243156AC4B02DBE2116D50CB7FFF016E2BAEB532CF9119CC8201090E753792A
-93D90810BC0412FF0AC805E832F016A7FF29A2CAA0CAC9C09653871907E8E5BE
-D7DC977F0623A21D85FBC05801A766219CD91FB9CC54E3B716993CD732FC2DB9
-F8C32D75D1DEC78775F03A6093BBFB42BCAA36262EA22A2EB3C71B994C959628
-26C313F48E11B8074AD2AAB9AAF8C81656B6A7E1A6BEA6E93A51E877E5F31ADD
-A48B841A58D7F3BFF731AACC31E04708E04D159DA667468783A67966094DAD9B
-9CA53FC19A7C4447E7E881E43E8846D0EBACBF4F9CCD0A89C7B57892A1720633
-3DF9ACAC693258128CEB7E5AEB0836306C4F413DB06153C1683D296A92486040
-0B8CA867382523088C72AF4B9FF599B56A849EF8FACBA913A83809DADFF4907B
-91B4E728F890512FC935C17762B43E6DB9413A1897D9E0EF79DA6031E445F889
-C941FA80B2C63790AEF53D7CFCEC4B5D63D0BC4867856119AA495D99A68C51C1
-39D729C83A60EA5DD0DCE57F9FF8A0B223B1189C97C5A9B6B985FD54A36C910D
-A86F7C5E1A41D9D4994219F7E099C1E31CEE59A30E3E13F6CB8AADAEDD953D60
-8C8356F070397062448FA4C886317977A2832A86A99F4D557DACD236F9DDC74C
-374C694E5D0DA0864669504461F97A4F4A3B4E92D24CEA54F2A9100637FC5E43
-5A5F47942ABB2470BC1B9DE214E3273CC0A079F57C2F05199F5EB90014FB88CB
-321570A9846CE44054E62F752958C3E42CAD8B6FD112558898149099FA679AE1
-1A0F23E26AA0A3D7F6E292731C73737EE99EEB06BC9103402222535601831E80
-099D13E30AB286E17242A955D68A530698BB1566E7D2EB22BCEEE8017EB2E0DE
-91E4C7CFC84A00033A28AA9ABC971AFDB87661533F94AD63822A22B75AD994C2
-B31CC6F7F111B52B57553169D195DB9910583873EAD851BCA22ADDB016DC25FE
-0B206326C7E652561713DDD8492C08D9FF7B56091AB663B1B3B5DCBBD3211FE0
-5680284BD50D9DC9B71906660A5B0ED181C18D39EA0FBC49C449DBF8117581D1
-D2699F0BB1E027C2A23F29EEA00AC1F67B05825262E680E5344B9402B53B612D
-08DF3676C30171769340728630A5B1EA64A837C25956B249AD29281A24400945
-36758960584F560DDFF08EA7AC12613EA7666DD882A1B0423C40DF4E03CF617E
-70949807B13AF4D80783A7BEF609DC639DEF78D210C09BAA4E213BC9B58FB6BD
-E2A9E045D66996232C6D16C43C466B698F5C94313A6A1B1C21704FE57D96AAF7
-3F063FC1B0AEA18BCDC5FA49F9D159D0135EE2970B66ACC4B8267CBC7849FEDE
-B61A59B82861F4052F95726CA347456870BD7E64EC788AC898CF09B5CCE63304
-0315E45F1353E60E6FC4D29579B6B20FE1A5127BD552B9E6A5B62AA2F7106912
-3EBDE1C84F40FBD93A6259C236108C915E7844D7CD0470F350D82D5AC3105FB0
-46DB7200531F4EE7941C13FC11459E72A2133904D031CBE64808E61F47636D72
-DFCFC9B07FDDC71CEBA885B22A673EA07C9DC5DF7A50916E8A5F1EC10164A8E4
-766C0FD124FD78F533359B651D485E222D52602220EFCC6C6B64B177C97BD15F
-31EEEC0DDE35C1C2C5900EA4E259A6A16303E76C302D3DF5F552FD0E05506A82
-7D25A032336132D0AD64D219A8EBFE2F44AA688729E5AC3CEFBAE9E9CC4CF684
-D61B3646C64FA5913F3E9AF46819DB607861CB7A50327BE70373AF6BF237AB59
-16C1A6B49352CBC3DB21C8F89409857DDFDFC7D308B5A4215E3A4F4E957322A9
-1CC8E31084024D0BE8C390B75F42D8F79C53EB0D6C7FD73E912CE6E09BAAFB00
-958840354F07B8B0680E3FDD67028B96B1B0762D444818AB259FF9ACFB236553
-57A86D168474042DCB2011E2EE5A24ABF466A2229AEFBB9AA05D395286E60AF9
-CCF8588EEE109DA5115C8C5DF997936E6907C732CE00E610E5A7DF298B8C2317
-83A92834594DBE02E011AC9D14E753A3C9045FC652B3EA6C98122039392E35E6
-5D591A462AC4E835372D53665C46A1425D47013078727DF5515663FC7C36B47F
-985276600D01EAE7450F90F4BE84344432F60E70996E589E8BC97D737A251FB1
-4FF2F91B779C81ABAEC31E636E5AE5D73CA1A507FC6FE79CA0E60E26988219BA
-EA456C51466E9CC788CA766DB7E79308A424BB9596C012214A78A9784185BEE7
-A66CE1A4FE3F10AA4408AA8EEF1AC1693D01466E628A1D94FA90A592377A4933
-70A16E12800C6827F7D5A93D85F3D5320395271819EEEF8EE302DA291DE05817
-056D23C2A0B5DCFE7EA3CBCCFFDF4947CB799B8F76BEC09606228CF925588621
-5F72E2824C604A5A5380E645F7AEA42542F4074B66BC3EA630961457A7B9AB9D
-FFFCDF573BB7F6E339C06FA471576D48963AD1146BE410C00CC6DD4C5C487A00
-CD29B6D6EBE07456E08541893C6FF1EC54033EA18DA3E48884D5D9CA813E365F
-3AC660220F83663A2D91481232514057E210657C6940BFF1AEDE14027B1A9302
-325960805A5CDBA47D7DAA49C0B0288ECF7A4CBBCB1EC7667BD4F47150D3374E
-A4B8DD3380C54399851A3E4C455E196C3D03193CCE50E1E3D5B60DEDF8886600
-11E1BB31F76574B9CB38A238179C285FBE99A3485BE6F550F9392392BF353D22
-8E6D2898E8CBCA8CDEFF0EC46384C61DC4327D30A491ABA63FB77C9BCC66CD18
-5CB98D42D4105067CB41F763FC0F6895B02DDF53DCCBA264090783923C878E24
-A21D138C51DFAC545CC494D6189EA603825B990611E3D65A4798B908F5087CBF
-8A9FF603A8F31D7164431C8F26E0A57B695A966338DF0B5946B87E0A5180B4A7
-D80DA4C1BD30034DA94CFD57E7F215BF69090B7378F5C24D0AF11A160E3A20D7
-A8C38D77498D705ED9770942EB982C5B73349DE530D5AF6C37B0FC97237AFAB1
-83C398377A8B3E2C4274679E9C6D455CA8F027AAC3DFA31E9FD6B64A8734BAAD
-24DC4BF8E9D019B06AA82A73FD4EE364B2C63CAF8AE438EB03B05B16DB2A35A3
-FEA7D9B218EDB183E47158FB17CA27A1E9D5DF0A7146E96053CE27868D0B3F70
-482597F93C05E78C1E42A8910EE8553597B4AAEB7EB242F3117BEA075ECD84F1
-6684E0D805AD13F5A05AC92CA48A1A61E4E5B4F18D8180E827186BE82080C782
-7B854EF9997B82D0F91F6052CF8342120E33966E46A4AA93DC76AE4ECB18C2C4
-F91D65BCC472C289DC70A5BF30D50A27D94FB6F4A76BE64E01A4EC8449470236
-D719FF66C5F82A3387C36544E2FF576BE5C494D3BF1BB7D5AC5B90FC43952A32
-EFAAEE178CD2EA95709D640B155D3864876086D2C2D95AB98657698A28F152C4
-44ACF028E491BDEC6F900558A40762A52671E793382B7F1B2D649BAC3BD6BD20
-77AB23421FE15AA93FE516C91BF112901AA07BC7A0A0FD447F078F6547C6F19A
-E914D2F2700C0DC10ED188D37F1CBE3C27572F34398860224F213FE622F3D3F0
-921A02B0D1F62D6DD2B8DC10DBEB52FBAD00FD239929469951B5437D587ED948
-77D119A77303FC025BF72293FA812D80438B635624B631DD018F6FE0A34913ED
-490AED2EF2F4D1EBADDB63C2553F8D126799C0C89C88D6E4973E1B597FB63A3F
-D4CB6EF05866C05375DB00840E8D41A4B19E695C1CDF74B2EF47D9D67AB32287
-0A4AD588A33E086F40B0267920B5594001DC5B6D341040D2EE41CBB53D532B0C
-915B4735481E2974E4BF6EED5220DD6DFA00B9C7874C114A57AD03B9A0085CB9
-DC06EFFED9F2798B3F0CD726C85EFD2E4FB4E473A751137683D60CB238CEEBF5
-D0185C54EFB79F9A6C1DCE963D37597B2A807669B37EADF65179AACE41626E53
-08B0B80C7190D1FAD81AA210A77CF2E9D30E9BA2F11EC991EC24B2BCA0BBC127
-7B727C428CBBF7EAC2ED2E000BF86434FCBC82DF8363E4743916312E4F078CC7
-2687D865E7CC4240EA70147CAEF216A5A1F4DD0488E72C81E3A4BA5BF6E400F8
-E6B3A5852906D96939D645FE4C5815E0FFF7B9D930BEC9C15DA4163F3CD927B2
-581AA05B02F2A9442AC60D709793C93BB0D3F91FCAC6CC0B2D0D264ECACAB22B
-129E3D8F30844EFC16E57FBD50609AAAFD65EA43C140691384AAB4330B2460AE
-1575A17235FED8ABC8278854BF1E7E170BFFFE4485A77247B56EFFA1CB405BFC
-DACD080CA9C04B43955C0F55491668214C92129A46B9E1B59954F3C763C29C63
-2713646137A71E9FC635A97801C8FCB7B2B778394AE8DFAEDFDA070645D99DE0
-76C9D35A94AFC43759F70E372170D46A5A07D8049D5A0769129F43D0E7FC24D8
-3A93B2602A890FD5492C13D0DD0D4B50C659AC906CDFC033EDE15D9E907FECF4
-7C31E9FD780701C11A3D36CD00AD9EB3801078BA3C57F343E143AF3DF0552F7F
-63440FD24FB1E5F3C0096A51F7030D2A06C44FD58C527ADCFDDC4A58479952D1
-9F81B2125B58A57204AE358E7DCFDFC7C213FBEA06ED9CAEB41DF10185FD4482
-9DAFF653300EEE6C62C1D59C82FD021860F5EC09E266A731FFA1386D63D8E34F
-821E98BBA740CAD4718EBB6BFCACECF7635F76AB33A85F5D17576A5D4ADFD19E
-24E3291E6E0E7D6384152A647158C41FE032096BA239BB81496BCCDA6E55A72C
-3E0D4B869FB84BDB7E5464F6CF6C60E6475ED42B17733139ED7BFAD3CAB9C734
-4A2EBDBEE1368AA616B1432225CA43991A3EFE905C3A53DB1CBB576FA71515A8
-9D7A67C645B04FA6AAB4A4960FCE4C041A2EC976528130235B44A1FE2107B371
-CE5949EDD4C804E944FB8D954CE4EDD9144797EBB457C95D9892D3E1C0D7FA6E
-43AB2422FE28381E8B9336A5846E61C5DF64F292EA4F228CE0BD513B1AB71967
-0B422DF1DF7AD15288ED740BB8936DE1867D7C5CFDF283232DF979D74A4371FE
-BF1BEE0993D38EECCCF7B957DCDB4013090D78906ACE661BF28B4BF93AAC1DD9
-A616421ECE4982A6E068F68603DABAC9DB85FDC38A9CB92C96236C00321B8D2D
-DEB16FF80F5014FA64B96657355D2DEF8BDB5B4F565A49E963B3FEEDA4296D06
-566C19FDD84A3228959F428EB9173F9C61B55B2F97FDF845E3316E2573D900D4
-D09562D1FF2E4D83E0E877E87B645C9598311372D8AB907CF2007432A6D79718
-206CC2BF590F85CE86B6A65A82B3C9EC9D848C007BC71FE1B30221D4BED58C17
-846DE6DE854D381A628456529ADA2D26C28668CE6E484216BA8D41F8E968DE68
-B85A208F1A945124AE7CCF549F6611F3015452EE319FB9B8EECC5A3C5EE547F0
-BA79FEF8377A007A9166CF7F8B7C5C4CCF8CCB74BF1B5AEA881F3E4DC7175221
-363CE32BE970E6C4DB1A3A18F6D3A8F8BEC5666EB8DCCDEC2DDA279BF49583EC
-E9B8E280F678A62ADC9A5E463189135A5537A585EF6A8A8FE7596CF3A691C554
-7B24BC46A09A10D1D2048FE038B48E082417215F117E79508A26591C2581A930
-06954A8340390BFAD74BADDEFB530C0F04A6913EDA0CB2481E07D4D78057167F
-EDA4DC391E906EFE78F57E196E9904620504C095CC52B7323951E608C31C68A7
-AE90FBD65FD1FF5396CBC9303EB1126317F7E91AF93DDE86545762C2B96F9926
-F02B1D5D7E00D694046197D6D24FEF078F605903328617E8DC8A1B569CC79368
-498021970206490D204E127C55863C43F95934F684959A1BED53639AD5E97871
-313F29015CD4140E66F5DC24026B9C44217F7B40CAB36919BB748BF19F81C460
-C12F474983F82EC2C2454AEDD2457B48A70A47D0C01F04692076EF74E03A7A47
-B495F6935FB6A29144F3A4045E364BDD9AF5E39658B3DAC8BC23B0EF1356D6EA
-87BD5B92A63C8DDE8808DC922FBA9B543AFF147DD5A49D0EE32743A15F8A9774
-2551B8E7C232FE3BBCAE37BCF5B4CDA1AA8BB26A47D879D69F40D8711229E2CC
-5DB7C24C982DB75204D99EA63CBCF0FCFC531A993DEDA20FF38F97F6B2B90DF8
-471973651FC384BFD6ED2D9A5A389180BC218B464CE828E5204DDD6F99441DAD
-D217940B20C2AC577FE9448CCCD1627DCFBD56AF94BDD578492FF2C6CDD5B9EE
-1C5004426EFCACC94FF5CC085037A2E5F0DEE29BEC3089D543F8442F026D1CF8
-42CC334383D669A54B3AFED3B4C354E5E7F67D1303186A29C682D0B1476738B3
-5E6857B68F95BCD78139D27D615474BBEC9B0878CE9547B5F5B9E5E266F2CE6F
-371D04C19C3F1AA8EA33F54123F88EB956E878DE9EC2546C87C041F4CB96170F
-7835D5548FC8C4FE74C69835A319104181EBF194A937C2948F8BFA46C14DB12D
-4470540B257B6B51320C89EBF94C4754E8B3EEA3BA85107930A646E3308B047C
-D43EB9136CF8A31CB87FE343C0D47AB26795517D0343E5537EB153AED7F0F39B
-860BDF9476001E2C25B3B563C82556A0D4E6482409BD07D5070100F1F62EA800
-953BD8BDC13BC99050AF7D61D5A73C7EEAD5B0AAE65FFC5769CA14C9654E869C
-42A5FF9059D3EA7F8FB97E6CFC795228922E278087B358D2BBBD6AA2A9E4871B
-AF481F98BB121FD24A99776DCFCB0D7B07C666B5999AAD06E09E58B159673DE5
-6F0E0F0C4AACA36895C3013E9C6ED50D3404E63A87239957A620C0DC3997044B
-7C460252762E426C3EFE551EFF370110459E72A2133904D031CBE64808E61A46
-BA8A56027423CA2983953F359219DBEFB10505A972A8DBA14E748B77C9188179
-3E89BFD173E055CF906044D357D067A939E88002E876B729C9D85BA2E1B65A20
-AA80186AA6053CFC1235AF801E9EE7F47D34C41E03454215B619E659834B6DF6
-4D1B5101E334AF87FE16F9FC4B68495B941BD639BCBB26B8F614B1223159B5D1
-DD88DE5EEF09429ECD8AA2479964AB7A31EAC3BBD518E5832841004F4AD1B4B9
-1F7E9EA944138C5416DE9D4A9FA306E23441083B7F552BDC9BB190A5E46A57C9
-8EBAD496BC95ADBBE87B2EB98B1831A3DCBFDC6391C0AD4D82A933A8A6A17905
-9DCCED73F941986C67201AC4B82130C9A5FAA23F6B6E049C6BD28C248A3E0067
-4F8CC822BF9595F0F16989E85FCA26A74238646A8E57D1641EA0648298FD3610
-6DB35E65BD79BDC68C0DA609DCF57EF4F1F871AE158B3F90C1CE8143054008FC
-5CFDB6F88BAB7FA82E77FFEF495378CC4B76F928F217C2BC3BF6CDDD4D6DF1B7
-48FDFEAB6454FDFA1B82202EE7775EEAF17A4FA9A9EF743EB466D4E4A43755D4
-C596C312FC32209EAC8C8169AC63B5C34BE3FECFBF56C09237D82941BA552FFC
-5F91C0E1BC5DE74A3644EE95D417F74F76780D14DE79D2D8C1A71476F990EE0A
-70477572CFE7238BDE69DA5B6FB381AA8928860883A6DBD00991210BCE376F5A
-199D052FF2E65C2C7CD975B6E0E1BF8168BF2740EDF862B406A8E5451B8EF469
-82A7CE74E839B02D90424C7B39D99233AE840838D843596F01F777529685872E
-D9A432703037320B0C4B5B596817F23280FF3546E601E638034C7A81E3E6A516
-B251B262BC519E0381DCF47B7DA629D93C164E29F4433EC880CEB701C9F46491
-EE8653E69200BE609FDE11960D4E95225E5552C903D45D9ACC5DF8B4D91CB92C
-B9AE8BA6D4A66947C3C1EC2CAE15AEBD5DADC1B84A54C811F8BDF57AFFC37237
-4BF35F9666BF2B6D85CCFAB7A0DE5D3531FBC95992607C9BAB14A81BCFC6CB54
-BD44B460B6D4FA7E39FC7EE1C0CA78765D043154DBDA49C6C7CE3637487DC980
-2158F5332DB5E996FFCED90B83E24D53F3CBEAA95D8D6BA754214E92535DE7D9
-50263320DC65DFC64D29B8D53F863393E06BCA9E09D419FE1B820E7D29C87EAF
-552829715C8565D53407B087EAB33BEC46BFA0F166A34B8C9637F965219C6621
-5F2D93EC5E3A2EAB3BF7608DD8EA2571C9B434AE57BEE40ADEDDE7C4BC9BFC6F
-9E921B4E61F449D6F83911782DD1D4D1EE1920C4D82445483470F29A9D793D31
-94EACC20EC5A82D625BDC5E5776F50DE6A0C9DE81DA4EFC6BF96D598B5558BAC
-1FDD83FFDA14396954753C607593DB88862B2BE3AF10D9CE8408575F944970EB
-57107BB8FF0113F2E3A6224952E9325C1A491C31F98EF3E464ABE7C6D3148452
-A0BAF4DDC008B69549C9BCE69EEB06BC9103402222535601831E8571BDCB92D4
-167656BF386C119CB44204B51F15AFB7E9057FD57251D4DBF39EC35FE6F27EE3
-47A0E68AAD4A634041BD8CCC4FB8D2E926ACF6ADCB8666096B54D067FC40C152
-2ADD78FD3ABF42E53A2E825CB3EF2A7B4283A23C6D04241ED8D7902CEB4D2B53
-1E5FB94BF1B1C3732FFBD955E9CE2A2621975B780BD474FE8E1F175B9983E2B3
-C57030EE69A277DD764C5A29F8A7ACA13BCDBD12ACC479368A13C6476E0AAECB
-6F86A9427344803CF8515D7191F0C2F5C8B747F6047167CEF39094E0B4A6D9B2
-CE44978CB3DDB29E87A4C24696186AF45F946F7BC232B8460B613689CCE33C38
-9F438BD3958C62CD9DEDA9516C1626ED96FD1DE9CBF812D3F5259C304AE3CAB3
-BDDF020F4B086BDD81351D922C96FDAF3809DB3CFA1796FA4C467944FBB1392B
-6F93AB77C10207D2C8B193113F1B68A02151A650633AA85A8C2816E4F17F5579
-6608CCD92057E884EB1D93F7C2B3205D96B1D34F6D0BB47D8B5AE4EB0C6234F0
-2389B7E5A259CC40563EF170607C4FFA2E5D500C6B36493C693B4C160B584FBD
-450C1382A3166F4A7E662AB81148597A0D1D2B0EF70840FF2DFB49866B0262D8
-9D13286C08723265EF75666FB562801ED5B97A1064276289DA4F8DA0620A9CCA
-F306EC12F6276150BEFB6FD88069190549142FE8D130092E0E3681542535A236
-D544E6887D1A3A4DD053D0F503B4B1FBBDA2C09F59F29355054EC9E69566D09C
-DD37CD71D24892C602144DD987DD09139ECD9274C03F5AF5E709F0F0050969C1
-CDBAEEB20E7ADA891F6B6C2B7621934FBCB6531F805789A74A7F2AD8A761BA41
-24D5F9BB1FB1585EE99FD49D0BF5C8F54A528D29C32EB482230E55E126E1DA21
-EDCF12416F2ECCF7B1D72D5B4AE3224F79E0DEC8F02D57372A1993EC5BA6D5FA
-DE2F73756E944F71743CBCFCA7D6635234162A1975381196DFD91930766BAFED
-C399C96248477C48996BC29BB929856F457DD15DFA4BC64359098F03F241A37F
-77D5075DEAE5ADB4EBE43B9243606D313E3239CADEC41CF0750AEDE178572BFD
-C8720F72167FF335F0ABCB2C686150C7C9FA49CABF39201F36AA9695CB8A7E20
-CBF121263707E73B9DAA1857B49B0E6552AA1BE552B7166BBE86AFFCF0DF307B
-0947F79BE054EEE1BA194F39511F7B6FE29CCAF1010CFF41E45F6075425DCF94
-08254D3E20E2DADE5CA80F909DFD09ABF69816E654BB8BEAA05471D5CB6E4AD2
-C90C16785E0F345A0270CD53E72374B6CB8CFB8C9434BE19BD958CF5733C7DB2
-51D4337814E5A7DEA2710BE5A47692A30E4C3453527AC2FDAFF6BE85ADFC6DB6
-742BC1F59BBF8260A33C25934AB7EDE932FFDA24278D0DDA7089D393A5246948
-CCE7C86BA6114D19912E56D9EC18693FD7CC6E94C1EF6282A123CE4EA6A933A3
-5575678E1455397390AEB6705EFC9C02170EEA1D0323E91A7296BE04D8E707F9
-6D5D6FB93D36F63D9ECED88D82838719825D4AF6B87A2BE3E3CA3AD544AAE5E2
-1F5D838B984479B2CDD4CD91B749837278892F88C39096D27D3D6B6662B9D930
-8ACACF64AD1070F88ABCACF52908526756E635336199994E43ABAEC2B2DF6A2F
-3732CEA7241CD77537FC3D5A6F2E1E2512B4BEE355EFFD660A22C4B85FDC004B
-E638F963EED520406ECF44C196954CA9E5203D39D4204B6D3412E449DFF88D61
-AD1F5289C7764850FF9D8287D6241D2D9C1FAF908BD94A35F727AA9A71C33D36
-8CE0385DB2AC9B5CAE3AEC505B2EA14B01848773BB0AAA3BD8E56243768D7751
-D3135CABFDA665FC943C42FFCC0733D227522E90E1455674098325E268680BCC
-4A71CE34FB84E3764752246F231F3AC50257C6D51189F6C37C280A8964FC6F72
-A43C60A9BA6A5DACD2EDEDEA390D2DE1C38A0828FC2A6D8B62808A84720EAA25
-2F6AF994E815B399C243997F9901CD540DD19CA901D283A3B8E481D6DDC7E630
-172CB5442A6FC553C1FA5A97C3A4B21D286ACAE96B20F678DCCC08131990C561
-8B421A3386BCCF992584C499D5C2F1EFF3DAD463E4C9A8F6CFAB6DA6C1BC54F7
-219F518687A54A7AD0AE293B0068BC64EBA2CD9AB2CE69E6F4401A11DBBF70DD
-34918B12A6C7817D55875817BBA49922824A40812F3BE1BD50BA8E4B5A0154B0
-72450D23FF3475C52C641A2497BB4BDAD51797ECDD74ABF94573C0E001F43C98
-F6714D41A2D1CC389A00D02F1ABC98DAAEA5A0AA4B9C115D43BCDEED2CD7D3C7
-9F3B5DFB9E11A2CFC93D8ADF7E02FCC0D043239C9E1A4FDA3AEA3A7592317478
-DB605C6AB0224772F812935ADA416DD0F3DB35CCD8B85C5DB458F837BD72EDB0
-F4C7435770EEE4394A3AC5C4134E362BBE9F6864FC60FEB5FAD58C121B567279
-FE00DEA509EE6D0B3507A4528B2445F330C217896BA708506E1E6C1383C1F625
-74C35CF4152C2962FBEAB15F5DB32FEE89DE118BEDDC0F7A52DC43E9C306261A
-BE869DB6B9CE465A5C8783BF5A324F045880A3A15EE82F0116DA051E820DA5ED
-34C0BE8A48A0065C3205A4A174C116544865D2B765E13449159CFA6321228CF1
-71B560B8B129F80EA04ED871528708382B1DB30E28AF6A1251535DD8D3438C1D
-FA98C0F7C6398E624C2437B34B5C1352CD5FC76595250BDDE99E77670D76CEE5
-DB6C34F26EB3D220BC7F603BDE01C52B9717D794624D902AD5B65FA2D308CFC6
-BE2EDCAA70B3B049167366D37961D2530FE7EB85ACC34BA7200907625421062D
-4B25C77BF87F1A8F2D234A96C11F589980D2293B26FB3F8CE6D698DCADB9CA5E
-6D5FF70F0BF587E722B82066502C526BBCEA4489304F694991F3A3B2C1D801A8
-FAD11F680B3067FD309283FD05C100AFAEA3746BB578ADC22A90A947A8A31354
-D347B27D79CDB0A26FA786ACF4324AA344FBA66D4039BA19B37938E2050DDB4A
-5AC07CC4B55251AEEA82881A91497EC290301225438C75B698DB9E6748C471EE
-5CD2B6E580C993F82943872FEBA0498E122D427CE3773057AABC817A74BFFE3F
-378F0C2F43E70DBAB1BEF3DDF1175E32701E366D1FCD9FA0BC065C8E76867463
-97DC51E50216C04A4A85727C01ACC5658C9196EFEBB5827212B89BD64E544959
-B43E5895AF593DFE44FD37DAB2623067E7E16CEA43638905418FC80268DBFA30
-45942DB1C91F8977AE451A303D6A41159F56CC2695CB24E685F58D1B7E72E773
-B24176C9184F8DAAFDB598E393EE5B7F5D7A38EF467C870B16489C07DCEE3357
-3CF3C7CCD144507CFCBA8D249EC203D44D54EA89132B185D5F501E2D4DA2CF3B
-E42D857442AD1DD294CC46C3B195FDE9781F6726B0187CF78E246AFA8AD1DC20
-56BA20BEC7A9A2CDDD2F4032E1AC2BF681C3BF9AA6A8684F6580135449D0974F
-D89D48A70867881969612AFEB2FD43716798A4A59A4EF45F65633306029B1D45
-2090B2140934066380400B9BF23C4C6B1B4EAEBCDC6D1C61880F272FD5C1E770
-99FE376220B434C37F65A469D31A4AF6733B6247C94EA0FAE9BF4FFAB1776DFA
-4D65A0A88FC3C6813230D8E4E1F6190FCDF8013B9931201D69EDFB7180F7618C
-6296AC4411B5239C997C010428211E581E5FDB2C22E52F1FC21440A29EE34FD4
-25737DC1C4C6E8A6A87593EA999FD0198C118914A9EAF6D6FAC28227C6F2F9B6
-1F886458BCC944F65DF8E223D8B46EE58B57371EF4E3DDCCA9F46ACC7A4365C9
-5BA0C4267E87268E26E9D4D711DDFF51F599272BBAEEA241F337A37A1C9AF4FF
-497D5482472D90709AABDC0CC32A09318A9C95D8F77FB3C5F2B8C944DA40BAF1
-7E1FAD3CCADF649B8FD474E1BFF945D90AE37753FE13B5BE2D98D40D424BF338
-A1F73B6A08D3C975E3D23ED0AE220E4824878C379E33FFEBB1B1EA80CAD88307
-A980744643AABB489BF46704B4BC789B4AFF1F5BBDD8E09F25D875B88F52ABE8
-314A3BC2A9A65CB16A053495FC3879837C0588F602CBF39D08F3896967ABE75A
-08CA5EB2BE43929CF81ABE50E75607542920C6759C46CF330146F527CB4D8CE2
-ED38F51DC302546FAC8360A5E5E43509BAFCC1EE21A4F1027CDF5266EF32D7FB
-3ED9CDB35BC6333C882FCB3FB67155D3D5F36D3D3E28AF8AB3B19DCCF734CB18
-6A66D83798B339398507F621F46178C93D0CC4FDCF5439981CFFF0A9387FCAB2
-633CB3A1A0EC59B5C0482610F9D20F5FA45491CE702EB61AE18319B9063FB7DB
-71C5E1D3C283E83AD74011753CC2F169B785AB3286DD4D2B345E9788B816B3F8
-D818EA9EF55717B85D1DEF007C70AD6B3ABE2F9E0CE537527D0EC92E4AF2F827
-0E78DEF6B3A25F8094A535281BE7C0E9D6A3ACA61B7267B21B649DA914BC3576
-20A160C90B12E10F86950C5AE365D9ADB782CE3CC46227A84A8575241F00E700
-B76A16850DEDE41EBC7BE243AD022BDCF275C7B551B8C6F6FF275D1E4D9C0600
-9F37F439C19530E3C0D286CD9D58A02FF968C5549BBA645FFA5299A6343114E2
-9576ABFC52C4DAA51F9E04836A947E51275650F4A06CB5CB22F05212801CD80F
-D4D6D136F91068E9A75F5E9BC49C59E290F73D800E8063E468DDC0E36EF8806E
-03646BC0C51DC516D2B0CD78A4D5246D21E1C8F71D596A7F34235EFB584C8A96
-98485873D3EF6235BE8502FA8EA44CD7DC6F71465D43E53ACC657BFFC49EF218
-59FF867D151F4E24DC1ED21677FFEBD9FC151ADB4DC2CE591AA032735D2A6815
-5310794385AC242E1808EC817B0C0E0CBF6C372E0D7EE6C00A35F40E851943C1
-7820A0CF54F0BA788AC88FC2D52A4641E53CCE32565FFF84A6E421198D44F4F0
-DCA665A98702D1A7ED756987201B7A1E362E36CFAA91063421988EA0A7D5B97E
-53A34DB9AC1F2149B2D601695384EDE4514ACD125253A619DB3E6149D198212D
-162787A30B06FAD3C3E53C67417FDD313DAD8DEB5E2B41B88EA466017F9788D0
-5668785C057D0DE2A6A4DF7A4D35239FAFD22BD2A48A20D9EEF1391E8D594734
-80B3CE799AE695303DCFDCF5774FAFE8B84B7B713B63D06E1CE8A78816431DA4
-E5AC164AFC42453592C34DF62217946ADE406C3FD293CC436386D3892E2BBD1B
-A8EC9B392901A965A81936B479BB57DB6532FB8A48D2F5B92469B09509DCA20D
-A83E153D392D67E486248EFC39D0698B13F0EE51BB8C838848058B25D18ED930
-C80A29941CDB5C49EB6EF863A819791E4C5A035E8641999E12C87EB05F6EC238
-EBCE36FB590ED2ADBD67DED04BFE669D19EB78D5C9A2E3BD67DDBD29E976A242
-72430741AC698C892FE23A29BF9842C0D7002276FFDC93E4FC2D3D95149C3EE8
-DFE8579B9E18691D9AC47BC5FBC9E8A17FFA5B8962B8FEAD85B5A4BA814CA2B2
-58558D55D57755483D5A43557F03F4644BF31F27E8C2B1F92B2F8E2E05CAD722
-ED035536E8F7D4724E6A69B73CA6695634A2486C0C4E1D88466D4131C6D85040
-8DF96B4269F936D2AA9F4C19504541E549EDA5120EE98A018EF175D6799A1888
-9FFAAE35686F574F1EB9982507CCC61FE6F6A66F42B6E5E10940A368BA71ACDF
-86579FE6F14E9CC2B83BB642D397B7DD2931F830BF20BAE2D5E681E7D260AAF1
-7FD73BED3ED3BBA4EEF62A61BB5B25F7884CDD999092815E677FA60B2B187AA6
-2A6A1D8A745CA880395AAFAE7EB5185BC4CC0582B968F05D01DF4881A86E02E6
-0D5ADEA4AD5B5344787B394B6FB07DCCCE852E3F711F4D35D23389E00610266C
-8460BBC15FF191604183E0DA7104EF79F8FB001F58FA74D802D45238AE2DE627
-4E9D407174A704600CCB8955D624091C8A0BFBAC2406F11E8AEE2DC2C3E42350
-E2F6B63A04FDCCFA618370FE84C36CD71738DBF833F67F5368BFCA054AB2ECDD
-EDF94D9EFECEA221E4EEDF98E57A34871445A02C839AB44CD1EE47292E0E0B6E
-DC3A0069265D1A8ACA3A71DE71000038D5E7AE9B5B6E159B68A2E6DD06099904
-D05746714E7BAF20D77D0059A63541DA75B3EDBBD28FC98B80B7E29E18CA8063
-599D8F554D2E4BDF38383587CB19E566E926693771CDA55EC45A9E731920A857
-D85FA0EE86EF5D9E212726C674D628FDAF5D00B3AFD10752C8372C59F4AE9476
-60302EC726211915F954B32D92BF326C93E50FEA935CE23C401A55170F95D619
-1F328A0B8AF7AF5B24BF2521CEAC75F7A95632A06266F5AA603DE4FBA33DF644
-2669E85243310C843C952897FC81AAAFF54581052B6DA4E2A241F337A37A1C9A
-F4FF497D5482467DB47CB91EC948B68488F1462668675988B98567423AF6BAF1
-520CD75F1762444C5EEAD3A91D53E5EA41B43A8F7D0E99953A61F44077C62E53
-36384AE88D2154A8F5639F2BE1A55314FD4581B038C2F7A86A5178752B6A50B7
-E54047267A1C2A8C3AFCE0E7A496D25A392EE5C064692BC6F1FB9AC55348C9C5
-3B43D62809BBC2F805F7A02452EEAD776B4F9E34ACC2BE0340FD6F4455C080F1
-9A25B495836B3A3B23CD2AD4627873E13E89BAF9DC8ED1F4782E29288AB0A8AA
-1BFEFC9FD4BF8ADF970110CE6A1C7B8E21476EF330D96DA23B57FD692652886B
-A02277EEA3BC8BC0DB944ACEE1A51AF12867992BA2EC4D219FD974FBDC573D00
-544F95E7444F14E05EA522EA0C4EE73CAE558ACF49CFA5F4F2583F6331B809D8
-D3AAAEC15094DA856FDD494498B2042B939680912BED43E4390034503C71ACAD
-5790A4F95E54094E39EEE2A9FD82ED56CB432284702C5F635B873135ADB09802
-3E620A208FBB70137F69F67E49C52836CD6173F2A93F60D8B87B8DC9C0962425
-B7B7868B9D951AF23FF68E09B53B612D08DF3676C30171769340728CEDA848FA
-2D631A941A08AA00186A7C0EF5A60FFBB304BAC7D7E8EBAD3E49030BF70CE4F4
-13BF37BE6AE35EDE6659E5683A561BC808BD29519D70ECC306DD831294E2A26F
-3543751C331DCBE99428301F480A949D4444ACD7E56B91025F353124D00BAE46
-A4A1C69698A882DA14ACAED323D61FD64FC534EC6FD752B2453E9A3C0BE49CBB
-9FF1640E1E4BDF8F4B6F8A5E3A74345085A9EF2562EDDBD193A5D9F712F452B5
-233002D441BE5B914AC3117E8CFD0877E8DC924B162186CF3DAC35000E702E81
-A86687FE42291139D7416C1481C8B124110BEADC912260BACEDF36B41E0E0546
-8E12CA2458FECB69F2FFE8E5FD27DA7E72E57DEB9A285AD126CA958770254F8C
-4DA03A85ECEC267F29B1517B74615BEFB43ED490A0EE6A8577B1FB7FC986E5F6
-DB7D7385C74B44F1E033205C610FB2D6482D1A7B9D373539E8A76B5B63C0E2C5
-2FB4C96D6C22A99E04D659DB68755A3A00A346BB21697F451A8177E8794EDD2B
-B541D68604545030A41C72B88F35A53866EEC0B930F855F2532796B42E85B3C3
-DDD4D3A7F8BB25FAC179898DE54B54006F6B5CD2D8AB364B6BC84F566E8880DF
-CE0DAFD5887F20BCEDB43D7FE734A9597B3DA5642F4C70BC0A4D7DF5E6D6F665
-33622FC3926D03E4312FA7C8C829545A65BB96D9A42E3A6E6B3D8D4464C89DE9
-44C25FE8857D6CFC1E60C22B666809B720DE733E20E4C2C1F0A9EE6D9E4C7A49
-268B60A9384C36C8EFD5428E480ACADF75E07F3021023B12895D765F2F94AA4F
-A23C0ADA3AFE7429E7267D49D0112AE5696DEE44C34D405059228C6C12DF184A
-2FA8E6F3F0880BF4EC2B16E2A016F2BB4C383DD9452A31A753496EDBEAEEF855
-A759E5C9DE78EEB7407B24BB45C476A5E2DFC2A6B3B714EC42C7BD5F331FE38A
-520D2F53BC67931554768A9F1D03837B3C6A974E47E0B5408C0D636CE7CE2443
-0DCB120C5A841CC9BBD66D7DA8023731722772EC6219758FF0516FDDF7D86DAC
-DA93E7CB7F4B6A74DD81E8E2E9F55B5E1B11C4C4AFD52A177BE84F2C5B07E1FC
-FF585633EBE64B9F60BDC5FD874A878ED1930463138DA53179A5B0BB8672937C
-0D843F9BDA7D8CCD325533842A14BDC49FD3DB850952B3788E7F079E0DFC9F87
-AC57192AFE78155BFB21F8F4F08098FF6D38486CD8BEAF8AEC0D8C6800389CBF
-12C7B9891C8E83FB9D37640FD8651A9FC027B2B1BD4AD8A9D111E24EB0286092
-7D32A783E9DC36C12BAF01F104FEAC59113402DEDAE052D32CDE6C25992D02AC
-03E509E4E648F4E9A6BF74DD7109361543015F06CA5583DE4FC77EEF52CE8207
-1FC2EE64A973789707803A9EA65B23B88AD8E5FFBA53EE47B679B12404FCFB9B
-6BC12C110FFA2FFF9F8640326A0DF7E8EB34DBDDE941315271D10F2015F8C858
-E7140D47F5267E2E2BE0AA2CB64CE6A7755578A057B788DD63EF2E273FC3F3A5
-F910F3290D781FD2FD8661BEFA2DDB354E639B90933AAA6315E6CF63B4FD2242
-3BA9BEEB03DCDC471BC02182F2C39F9BCB5E822A994DD3361E7D158BCC380735
-F021B3ABE169E3F8FF9ECF4E5CB80644208DC1F0A39B4C6439A262F4F16448A2
-E37BAB2D75859C910CEB157989026F6D1ABDC3EBF91E0743E7D8959DDC2B92C2
-D4B4ED1204D864BAFBCD7999C7DDDDE8A8696C5AC192C88D05EF7E9DB71AEBFC
-E712B72CAEBA74F44056E92EE1CDBF82572A4CB9BDBCD50DEED0039822B22901
-C4F7A907927AFC2D8E6F35780EA042EC97040926761AB681AEAA9A670581F62C
-F81AA215F67577A4FF4E6111CEE2E9AFF8C88AA2479964AB7A31EAC3BBD518E5
-84D71DD05FD07D9B8C9610951D64D9C7293989DA4D47B5D300D2CE49E53635D5
-DAECF77E2139D3000278B08AF3A5A1D21800D722A9A3BD6E16788A699A8A8EFF
-D3BAA441DC9D15ADF1C9D3E34683E13F89FAF4935FB67016A5054895FA160103
-E86A4492CC1FC66DD89C925C73A35526FC083C8F318BC8F56B9279364FB84352
-3CA6B1BA22E733B3FDA9F9B21E328A19BBF1A4C6B4AC7858B02D0ADCABCECC56
-BE576E59215B6ACD05F0492364C5D967938D3225351F5F90E91C7EB0F9308DE4
-2DA381FAE7F300C8A24886CCE98FFA0914CE582BD55C1EAC60397EFE2A8137DA
-09D66B0582EA857364EFDDBC51692BCCCA9ED6E16F00AB735FC84B268E32F0CA
-68CC85972E451BC1053EDCE4112DB181A0E72EF20252A869A5D05695FC1F275B
-93C7C686C3BBDC875A1C35795CA2DD5DEDD4BA13F0720D417DC1009F8BD6C242
-F3101F449C2B29CFDD70925E00B4791D0D1DF7CA971E36C1E6F79968B4933C9D
-355E46FD06EEE9950AC049342CC451FC0FED808D14E339FA60C75D35A9B65136
-93FCA3D385BC8A7159F5E75763878C7988E2047322EB4261CEDE87AA82D152B2
-EFEE8EA8845351237ED98393191A1534BDA2501FAE8A3A6E1515911BE1AB0FC2
-2936292AB37C99038A7EA64717FF4788F8D84CE7E97F0B879746810462A64206
-6CCE02A627B76E2FF3273E148C006E8A97078EB2F12BBDECD29C9BAAD87A4538
-6F9DD5BF223D7358A6A00DA9C4BCD3F778A7D98C58145BD76F8CBCB04FD80856
-A72D727146622E76B9EA470066F368AC328A39E67D270BA72C9D4A63D976949A
-48B977F210D8E09B6D34CD109BFFFAD84AB0CF48952F51B7E47C20CA2F345C34
-B551077512041C2D067EA1AF0BDFFA3CFB655957F1D1D4A6A179AB12D43834E4
-E89BE8C78D51F0A7E25E56A7F7DC268533FF40B8AC03FA7386312E1901F1A491
-00BEBFAAD5FC505262ACAA578CA61A7ED9AD8C8B6B187F1B457BA89C4DBFFEB8
-DFF2A539E404AEE2EF8F1D78043584B70F1781AA9FD69DE4513ACBF8C526A104
-2B12AC07CDA2DEBAEF3A1AD4740B89E81B78C1DD1B597BB604A8F2391DB2EC47
-04E4C7DB807BBF024D3C99F3B1C3BEC3EC0E1AF48FCC5A3997746AEBDF55B68C
-C2F155478E78F747692870225942F1C51532B549F3DED2DE827973AE37097BE4
-BAEB532CF9119CC8201090E753792833650F2C81E842C1850B7FD992FBD13388
-47490E5F9519EB11906498A5D420C9D2D361E8C9D98616FC14B35474358EC5C0
-1123EFAC501BE24ADAF91D18D83AE7953331F59BF1C26E07BEFD8BAEBAE13EBD
-4C84CB5397D17943439155C6241015ADA7C40006DFC20A8E023AEDE149D413BC
-3526A79604EF931C354506C4DA1CF01C7C8975A3938AE35B5FA5BD6D0F4E8699
-C1AEDC3618E6A084970BD23F85BF2826465A02CAE8B99EECE744051CFFD75466
-F1B50C40DF2FD8112BA229C311B7DF9912C781544503EC42449DBCD6EE568C42
-4D98BAB18372C9271C73C5773EAEA9352D54FF96C260CF352A2D294A42E0A4D7
-7752FC73B81E95714793D3158B81A28F8D5A69CFEB74AA66885ADB605AF2CCAC
-6381F593D01026AD7D9AE659559E91EDC5A5CB7C1F6E6075F741EC1BF41ACD72
-DA9C60B77CB618DF1F41A458B8734B633C9823848461D413B254639627C4AE52
-F67A3160ADF8C9507A0C20509B2CE77925610B870B20DA0331C1A85C4123C115
-54273DF931022D46BB1290D5C6DC427DC0A500228D3C4AE52D0018568720C9DE
-B76C265EF862755F81BC20AF0B8EF3417B552ABC9B370FB7E693390FCB59BB4A
-9961E1DCDC504B38EC1D9049E4AB223FCC72AA9E874B15D889F4079D4C964ADA
-843674479257AA8C81BFB345E7EE63276566523745F1BC88B4055BC3C43B6BF8
-EA00A6FA40FCC218808E164ED346ABB02152802FD80B579D075355392930D08E
-CB7AB84CF2A18F865240EB8536B7D1A4261EAFAAE7A11D5553F3C5C3BBCCFB3B
-49541267FFA78FD367927E16F3C221D07CBC2AC39D0A1CEF08AA37D4C5BA15A4
-4BB1F34485077AA3E2A2B8F0983B824457852CE6F831AB57BF1FFF10C19EA3ED
-28F07755A8D6321F93B75C3152DC3C07AEC932F59D55EE778441DB07F0908B6D
-D9F42BDAD0FB7702D8539AAB68E8D4D674F1CED8D74FB698F2DE057AED127EDA
-762A83D70A84332574EDBF2E2BC02BD7727F3697AC9ED08EE4614D4FB1125E11
-EB7560ABB0434E78AD9C88F1AAD0526949BD395F65E59B15E932138CAC1EF93C
-280ED5B68686F58A154C52467350F14A9209DE8A4D5B74C6B259A56AFCC9657F
-0DC1A090109733A42DCC348C55ADE90C1010D1C3524F6F89EFBBA3030710BD68
-2DEF518D2B1578898052C166F6CB3031F135200C562F7B3E5F212D9121FFEC0B
-5015D3D52FCF448F4C4AE05DACE3C823571260A3395B19DCFC0552A31A46FD5F
-2C40B033012F989F670CFA1119EA64AA88C3C43CFACE211B47C9EBF1F1EC386B
-B249CF5A6692F3E692694769B9A7FB05FC3974E19DEE2FC3F8F23E9C926C1CF7
-2638474B2F2784D24C609E988E089DBDE2132F0E5EC0F6AC2DA72E6780556CB7
-7E73602F45C754649A26D94F04A5C2452E993DA7E61C0DB56FE9364998A2FDFC
-5432146FA0EF9A2CE6F8B1436B65B80B3EF366571040F921CCAF57916D6F518B
-0DC2539619307CCE15508AE417718F8E96EBE70EAFC3DFF55143DEF447A644FF
-375C57AACA10BB25E8D4ADD70E4A83478A6D2BF6F6E99F21B3BA68B0B4104996
-1E18879BADD3EFACC0A59FB8B2EE9C30F8089EC52986F50FCA28BF711847AEEC
-769C9F6FB84C974C446CAD65DDE0C85381B91890F46B6ADAA13FC31E262B7731
-4B3418696B5A4DBDF58ED9D6AD9C4DE8EEAB779B5154CBDC7F661FF61B7E98BF
-55BEEF99C2453C9C74567E85B8ABF212525E5435E5A6F3FEC1427B222F8DC500
-9774C67B96311F8EFB9B058A2B4188A4C892E48EDF96CE83F054988A102AE80F
-18F485371A6A45105B9738CEB688DAA73229492316AF4A6179CA9B40078FA52D
-CF9CC4C6641266B5149B2E1DB863F63DE56651E687BEE894323D1E214961DF4B
-4C685581B9DE83181D75E60C134613631837410E4E7475C4D919143E8D649B9B
-B3C2E69ED8A26E24C45BE4A609EA9624781A62EAFCA393AB81DEEBA5F0BCD4CE
-AA8146BB137DF75A468CE43ABD2375CF9AADCDF9724B14771C27251A57E91E66
-AC79C115879F52F3BF4FE9CD4ACE1ABDDAFF0377AD24ACA790A0027CB712C104
-9B9D8B8B91B2610EDE8FFE3163EC34C3F736494C1485524E8F6C1F0ADFFE7995
-8197A3351735D60B71C4FAD235F5E637CE7842A0DE4B478CA4EA566020A5D75A
-40E5803D91C6E719596F72449BFB27715DE1D5BCC2DE25A0C58C9F0A72894A87
-0C33E1BB3D1857DC697A1C20A119565B1FABB1A76969C6232D6EE266358CD2C7
-F555FC8196837AD7A50A9784447B363872C0F638917D22708D7DCE5EBD43D5F8
-211C913772FD318DD8D3B31212C15AF14F86FF697408D98F0E32FA7607C3C744
-635406CF60DC02A20F71AA89474AC1D8BBA18E26E068F16140D742EBAF5E66C2
-0A44576F0ADE432ABC8F6958A765525184921BBA06EBFEFC041141C382590FD7
-B92D8CE067C5EA063C84FC653EAE2E35DD8312230D72F6268D45AE3BE831209A
-CB2EE605A75885A54B561FD72427DBBE528FFED556FA7B1D40AB76AD9211938F
-391A1179E525C4DA1B82FD19C81CCA2CFB1E522619EABD48431CC50BA2BE9855
-393760FE201E2EF622096BC4F2B71336FE2CC7E809E9A6A9F68CADA4BA07489D
-6D94590E29E0BEC5232D48677A4A7421F36B7462837E821005F70710DF9C909A
-673556644E79D3211EDB6857B1565FE02E253E00F4493168B136EA1736F734CB
-3B071A7AF77C6155224B10367AB765E456D085F392DAF59B019C91F58ECF2774
-40AF61A15C789B8B97A7DA4F979488DC723FD2DD285F249B23824C9F58F5899A
-FA1310FE5C74969A1FC95339267F8B4452EA785ACB68463C2C73438906B83CF5
-3219ABE19A98F9A03D602EEC2931708EF62266FA2BE780C76B366FB6DDF44F26
-5EF177A89FD9E37BD74A576BC6CEC6454D27E80A6027ED59AF6F19CD7A13BF62
-41784D731C005BF9512FED3E63B758FCD495A44E006FB0D93113A674D5C8E5B4
-21500BACC12DD93E953871C3EA8F342DE973A971B4576EC29AC37A6BFB23E356
-0AFC772FF856D60F007C12820B26220FBD7B529FCE7287E2B4D1B82FD0AA1BDC
-FBCE9239F79557DC32912123D72E780E2DEF309B862103D2CCC4FD700E8131D3
-12A1ED932E73AA8BBF8648AB73F66798B063FA07A6A87A1DA12FFB5346D7B5EC
-FBAD7FAE19BEF9FB86CA52A8C876A4FEBE945A91BBF8C1F6E8187C24238AB63A
-27177E28CF38D376450FA9CE935F2303E35D5DEDCFEA833004F4689476BD9648
-0F672BB0C3CF1793A09177701C73BCFA44B42ECD48C15BE3CF3E221806D7B482
-6A3E188A21F060EF50708B57354447371F9033D7929F1D1FB20805BF34D8AAF2
-9905ECD40E28C4B769A926CE4C6EF2562529D99246B2B4F02FEE1C15C45F718F
-CFE554B315C6B061EF8B5B306BC93B3786CC3276AC94DF755F2C36A21FAAA93E
-138F2A8524258456647C3240A026B3D0AB500B13EFDD792DF12A7CC63B5B75FB
-E369C7B2212C74A047460159C7BA143BD9074F85D1930463138DA53179A5B0BB
-86729B8F66FA7D807B0D8F05759D85577FB496F376723A6840D97260B6B7D069
-203627ABE7BBB6C3DDBBDBBF2E83B5CB0734B6D3B9B6DF0D0F685265587E6779
-81F6FB1A3A6C4129BA5A3314CB04259719E9F3A9B85EC85E61CAC2221E901E4E
-E850C7AD6D74ECD907CBF17E8709DBFB206FD7452A14A1AD32C5E472D5998FCA
-80EE8EAFD7D0A9575761A5D6627FAA68EBE498B32C2A25AFAF2F3FE78D8A64D4
-F5BD7BBB3268C23FE8D41313F2B95DEAFCB5888117010FCB7A66C7B3A2D6F721
-A4280D5CFC24750FB79496C909D9B296B9200FAE7A4A45148B7C64865C19922F
-1910F980611DB8B7689E5EC508FBD252D101110DEC85E7A7DDB93250698AA65D
-4203D48F56C5F47577F13C1C7D563C43EC5BE494BFC14970BE8FA0F3F63E76BE
-9897B983187963ABAF28FA6AB8317DBEAAFE36D39CAFFC8EFB6F2BD05FF531EB
-E94E3B4FF2364AB357B9984CB3240338447FC61795C412FF957C8E243D34965F
-875C932BC77E20E79BB89D991FC04ED02387A9E7B2A04AA783B67E1FE4B9AC9B
-515AF333A7E2D5BBDE2DF68BD1A01C76E13145CC7EA6AEC349A681931AADA4A4
-C9159F572610C7EA038CE49223A64B5350CBE1B9907EE346DEF8433E83D88C2B
-C6D6DF576A9C8DBE24320A9C9CC5285367B5A9B8E0C471EC7E53897742E80DCA
-7795FF5F6BCEB8469769C0FDDF58F1C5D3C625D2F5C5ECAC8E55DD54672F8A7A
-BCA6F167C9173ABFC51EA0DB9B7A568CBC983E89208FD1A6509EC4EFA5119DBF
-9A7E728FBBC14BB7577F64CC768BB8F13AA33966F7B04FFC09B1DC5938965D4F
-6C75CDB1B9BBA7B1FBB24E3BD377B52201AC3BC107241FD2C76B8D7AAFD09B63
-78A9B1FE313B0562A5D3A49203C9074924B6EE5D0D6F49D45D50F0843AA6CEB0
-C54FD6770499060FC8F916F49CE274461289141BD0F72B8BA4F1C73CFB18DD03
-CCC7E04D4F371005E9B35A2390E5D04B947E1D6AD03A60D46D0D59A1AB8C2DD0
-269CADF1834565AE45F8EF2687A54C49F6F0B5823D2F87C87A3253360886F9B7
-FA9B5BD6774A99E49FC47A0F57EC5E7BD24DE5DF820F1C4F4907D8117C98445F
-4F0D1BA2921380049E2AB9AA3345857466CBDFF0D87104631410AC7F3F70D6DF
-AA4D566F5C53273542205C6B559C84B706F8C25D723B09E6EF59C97FF1C86307
-C998E5273E32C33417669CAC84C427E5F7AC8162800A791895707892AED120E5
-57A1A3333017C4487A24189C7EA7199C9BC87BFA25D6CBD7806E3BD546B967EC
-0FDF29957EEEC0824277CD67580EC1D598682BDFC60E9189F48921CE16E8D9CC
-F1D604293A7A29232781E50F147AE0BFCF8B2618FEB77D0BB76BBF5D7E1836F0
-0E9B5B4BF3C32D980828126224013D6E049F4E85EED34938C37F402BC0E48FD1
-CA030C8D85751C0ED6C25E658441B448DB30DACC2D563886ADC0EB2331C1C1E1
-74DE09AF16BF5BDAB87D0598D602E38CF3FE40A4E79683F75620CE21BF15B982
-54EFE65371B34239CA2978C91082C4E77784597684AF1E41B8594BC78D8590D4
-04023AC08A348B7359242CBA16E4713CDE4EB834103EE582652EF68A50318C50
-23404BEF64A837C296BA6F024745D5B99A3BE1C893B0BADE6FD3FF222866C8BA
-5325DE08F9C00ECA7539A2112EBE2D030E0EF8C4F423BFCFD45FCD8E7A58DB40
-B2EA47A2D3CC49CD29F774E511C7031B1A1A90A079631B090627839096AB862C
-2434E0CF07733D25D3ED1C46B53A98914821A6567B36A5543E7143160A6187F4
-F2851C8AC2BC165CCC7C0A6059B51C7BB51D2EC02E9360D94FF8F3481CD8C148
-85EEE4FBA4045FCBED4E33B17E63A0B582AA23104E330D8734F35EBE1A14F8A5
-ECC230BEB4D65190D828DE5D7478F954C190A3482710B9B7B9A2E8D5F0619615
-4521FFDB245CDBF8A3B5978939A5092CDEF15C191E34D098CEB7AE8A8E4744FE
-6929AC80A8675B06F25AAFD18B01DDD054C3D39C2E2FD29E3F8DAC187A063626
-971093BCFDAC38CAB84ED101D387CEE80626C26560B222AE4424AD7197C90B15
-FA828469209E3D4AA9DBB7FCCB31DB18D7FDC7985E5B1A6B15FBB3E3B6FBC42A
-03CA58D9E866288E667566DA9420C7CADDF395BDFF4FF6120DB14D57367B689A
-C43067088B9CB067692146BFC060C21775B4D0D30352B29EE539FF0B02DD6C9C
-A7A8BFF31ADCE16179509D3FD411322B1CD0A7BE535649D78FCC774C1D1B9CBA
-EE24763948D0F138E2F7C139DB6968670A034AC4C917D27B2184CEEE25DF4227
-64D56B9FE5ABF823D39EA393C81FB45743F9D29DABB0F84890CCE93022021629
-79921C1E5139AFB445BAEBCC06DD6318E3DA24D34C9216B3E260FC5989D01607
-69D6E11171F8A81E6AA17850980A59D79C7EEFD407E057635677736711BFA114
-91BF0DF3B66259F9811ECD1CA5FF66B941D20084E9C997E40B51D396F91620E4
-D7626A82E52BBA81D98BEF15E9ABFFCA42065A7AB2F07EE0771A4512633A27D7
-EC8C0E02A8C2AB4B1B9A2EAFE832AC6A5553EA01F77EB03643439A72A5FE5C7A
-60C08DBF8DFA8881F8B9D47B8AF71FAE506D0370DB54100F3E9DBFBADB15D51C
-40DA022A06E2246CCC9AE80CB5C65BB7DB7727F9F034F4BD46B8AE0B93EE1F37
-8A204F290D3A80EA2BDFDA9041725D55D83BC69AFB5233B86527E5EAFE0CFFE4
-6FF204E6F566CF10CFCA07F472BAB2D88C3DC9F4277F833F82B2D6ACED2DEFEB
-45A623AE0F249DFBFFBD7489D78FA73BFCEC29F2A59DE2E19E2CB2A3CA34FC30
-DFFF8275B710E9AE68615516C6C9016D1D39D1F91E87D066CDD4AE4210FF453E
-4893558D07E1152C6DD918161EEF0794FEA08AD171D06BBA47C70EC80D5D65DC
-62BB31B418F820801B6F6B002F722BB0D0C75F0A865F354338339EF413BB3621
-1DB34AD80E22F2E757873785CC96BE9E43D59EC0AF47235CF66EB23024118985
-01A4C218B00552A29D2B3A873780F3B45E9F585337BF65A02F4C27F4B1B9E886
-428A421F073F44DD092EFF6A8197C3E688677A061F9222B33B39DBBFAEACBA8F
-C1CB9E969E8BBC1DB4AC6EF6F2DBC97A8A0962E20CDEEC05128ACEF5376A6F3E
-094C88C7A27C4E0065D72E6C82745B0597A004F246B640B4C9D1CE0A68ADC65F
-1D15B26E8820F60E7BB4F56D5E6407E7F5CA32F92D7684B87975608D08181AA4
-EE7CE993F63791A3D50291937D2C715BFCB7FA9CB0DE6BEEA8B40C8B67FB11E8
-8680C85639C51B6C1613AF428D705EA599D7EDA758A0F3C6F59040CD3F5548BB
-F61E6FF9B19453674E87126FA9E87200AA1CF6C80A25D2BF60223F70C4014E3F
-99A8DF4CA1559120DF599726F36FFCD1D6E692B5F29512A1328DF4B3D676DAE9
-D5CED4D0DCF2D3B65D0A0220F8C8EEF55E56FBD16DAA41D9E662826F9BB8F8DB
-976963C6616F46F713DC52582C2B015DF5F6D5DE8CA8DDFBB0EDCEFE9BFFF255
-7C0ED42817BB35339C0A301A234D83A2535602192E5A51D4763CBB4A83D819AA
-EEDCF581926F0BC18B16CB7F98E60EA001A46E346C8D07B0295124762A8F469E
-C74F4542617D281AE1AB58E5BAEE86BEA1CD1CD3EB355CFC08EDA0DF07F0CF98
-5B0A4C3FB3C3723B74AE8970E024F04BA0A46E2AF7E8DEC02C08904E91637073
-FCBBEF7CF76C5B66E20955CCCF8262209168779E9B02FB822FC751F27E84E761
-F129A7DF1CA4BED84D7F3CB427B6C7467A5D8E5A1C899816C9A76B421438E7D0
-E443AD98AD197E7C2D173EB0C640C4363FD5CB7AE873D1CDD4DBB66800C8C134
-D6151304A509BB92569F326B1EA834B88844ACE52DD9F6D401B916DB23A0599D
-18D2CF4CF00389B82655F6F6AB23D677361C8A7AB4420387A6094F0C03050A75
-10D7A15295491D6CF4C0526B8A27B318933913D725A3CC2FC4D94E470B99F92B
-F09501AB251D2795B3E7C8354C21C2B737E56EA2703A1A6FB0EBDD11639A5A34
-65BD440E7B1BFF6F53FD1682384FB59FB7CD8376B96DDE77D24E595263D3385C
-6B582FAF2E0D464BDF5BBF16406913A9B991A2F63936149E1A89C247C4DF0BC1
-7C102E6B3F1723E431845894F8EB78FFFA66C5D28ED21C46D59CFA93F925FA2A
-D83CB91DDC2DA9B76D116772DC119BCF8BFD63F8231E78DA4EA07D240291E39A
-EB57ABA44B3FAE4F2B0A91DCCDB2B7A943D186660939240302554983F16F817E
-2265057EAA4D6A2D8E913844AD67E82642EB17E42A8323AD21CEF1130356EFEB
-4A3271076C5FA2944BF496023CA1C47F15EB07553060D73FF637B963AB14309F
-45BD7A141751B14483FE80FB1FEDB7A79383F3C1508E02F9F0EB44EFD7336DB8
-9DA5D26360CBE2CC57EF75B1C0C78879179CC450F65E0536C076F5F969C84031
-7D163B97CF9D202595D3D87079780876FCB50CD8510CB236A5987D0513AB35D6
-D194A6B49CB52306E81885729D05D1F495947C0CCA47D29692B672EA8CC9365C
-9EC9C55D962FF3B7113B4BCDDFA76291EC4A23186ABF5695542C1A9F70DA62BF
-7C57BE3A323B01D47B4E68E40DC21125B39C33A982AE3D40A48F22DD70C34A22
-4AD661875E1977C65412B3546E9CB30974BC2F064C09E4B0B5EB436C74F69EFF
-37DF0933CC92C88706A3DA3B8FD675A6DA9CFBE0754E54450EC050FE4E4079E2
-2B30F1CCC55AF2D0B674D9964AD6D75A1E764CB431A52BBA74C276E757FC397B
-16FFFCC7784DCA5E35D6AB4C8E561FC0D5575C07BFFEE871E5CDB606457D093F
-5FF63559780210A0C9EA02881F64A77FFA4EB3B3F0024D41CA5A101344F2E7E8
-0D05E66FECEE5A188CA4CD9F29C7661AFEAAF3770831C73402B2BB4F168E7C21
-C38E37CEF41329A1014005EA1A59B33E29EC5A723D899413C019EF5B54680ACC
-AADFFCEC0BB7FCF5EBB8C605F5D7654E8EEE94F75A84ED7D4A790FEB359F36B1
-9ADD04F4810CC53459471C6637586578BB3C66248F7A1EA1FB1ED3C0DA411BA7
-BEC2C6A76E4CD873A0E3467546FA056BA60F19EB0F2B92E49F6C78A2116119E8
-DFE18F438041204425E882B2B47B56BE3D1C4E993C40D8B1AFC808A299857755
-EB6923BDC4C7BD7D619AEFE7F72515D423861C39C91E7106923574A6C32237CB
-D28CF89DD714FF0CBC9231CE72BD580279E03DAB3DED2412FE673B9D16B1A0FD
-2F6D53743E1DE5E32FB4A1E358012CA4D0BA47B41A65CAB66FAC5C3ABA9E73D9
-6403BA68651E8788F4A408BFF07EC8400FDCDB9FF939837CD2A9757CA60D00DC
-4407BC8EEE0F6DC99E42662F093C3A35957C8DC4063A7682F8F7F949A6ABDEEC
-522C2F11FEA33395E51272C83FB196A150BD47E95DF4D252B513CFC435A8C68F
-559665CF15E429B172AB361BB7DE5AC2694B6D5496F1F755D8EE84910C196441
-89E7FA645FCBD610662D5ECD4B5448DDC29B008C8C0FE676872DC320953A7D96
-D168B47D03B49785C3A90A86D2E74DB395B4239AB39D0BF4A3A8A9B4100D700F
-05AE651A96D1738F4C6CA8AB4FF637E8D16913C853893C899A8EFC12F308B4AE
-7102E903FBBAEBB246A6624A36110203521C11FA6B15BC9D40BACC709D1621B9
-822A12A34420EFB6BC0B74404472A8594E00FE5DA0F9D388538382E11836F16D
-04D0C6FBA128314C5F155650E36FBC98AAD5B8B368175C7C7BE12D6FD4F6B5D8
-7B56B7A71CDF98330DE206885D258AD5BC8B6D410A629CD2CFD7980DFAF09CBF
-68B02B0D7B9B35D9D9E02256FB765150E8E905F4AAB6B647453236A746D1C5B4
-D43C060E2F53C1C64DA990D75B0EEC6CD9E4351747674969D2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (guii.dvi)
- at start /Fa 136[44 44 44 44 44 44 1[44 44 44 44 44 2[44
-44 2[44 1[44 1[44 38[44 10[44 44 44 45[{T1Encoding ReEncodeFont}20
-83.022 /SFTT1000 rf /Fb 190[42 65[{TeXBase1Encoding ReEncodeFont}1
-58.1154 /Times-Roman rf /Fc 54[41 111[48 2[48 48 41 37
-44 1[37 48 48 59 41 2[22 48 48 1[41 48 44 44 48 65[{
-TeXBase1Encoding ReEncodeFont}20 66.4176 /Times-Roman
-rf /Fd 22[37 111[37 42 1[37 46 23 32 32 42 42 42 46 65
-23 1[23 23 46 42 28 37 42 37 42 42 11[60 2[55 4[74 51
-2[32 65 2[55 1[55 1[55 25[28 36[46 2[{TeXBase1Encoding ReEncodeFont}35
-83.022 /Times-BoldItalic rf /Fe 11[42 5[23 3[37 37 37
-37 4[37 1[37 73[42 27[37 42 42 60 42 42 23 32 28 42 42
-42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 3[28 1[28
-1[60 60 78 60 60 51 46 55 1[46 60 60 74 51 1[32 28 60
-60 46 51 60 55 55 60 76 37 47 47 2[23 42 42 42 42 42
-42 42 42 42 42 23 21 28 21 2[28 28 28 4[34 31[46 2[{
-TeXBase1Encoding ReEncodeFont}84 83.022 /Times-Roman
-rf /Ff 22[37 37 110[42 42 1[42 46 28 32 37 46 46 42 46
-69 23 2[23 1[42 28 37 46 37 46 42 12[55 46 60 4[78 55
-2[32 65 2[55 60 60 9[42 42 42 42 42 42 42 42 42 2[21
-6[28 36[46 2[{TeXBase1Encoding ReEncodeFont}45 83.022
-/Times-Bold rf /Fg 31[33 73[37 32[37 21 29 25 37 37 37
-37 58 21 1[21 21 1[37 25 33 1[33 37 33 10[54 54 8[46
-2[25 7[54 7[37 37 37 37 37 37 37 37 37 37 21 19 1[19
-4[25 39[{TeXBase1Encoding ReEncodeFont}39 74.7198 /Times-Roman
-rf /Fh 22[33 111[33 3[37 21 29 29 37 37 37 37 54 21 1[21
-21 37 37 21 33 1[33 37 37 11[54 42 6[62 42 2[25 54 54
-26[19 44[{TeXBase1Encoding ReEncodeFont}29 74.7198 /Times-Italic
-rf /Fi 54[36 111[32 1[48 1[42 32 29 36 2[42 1[48 32 39
-5[36 42 39 36 36 6[19 11[15 19 45[{TeXBase1Encoding ReEncodeFont}19
-58.1154 /Times-Italic rf /Fj 22[37 82[42 28[37 37 1[37
-42 23 32 32 42 42 42 42 60 23 37 23 23 42 42 23 37 42
-37 42 42 8[51 69 51 60 46 42 51 1[51 1[55 69 46 1[37
-28 2[51 51 60 55 51 51 76 7[42 42 42 42 42 42 42 42 42
-23 21 28 21 4[28 39[{TeXBase1Encoding ReEncodeFont}60
-83.022 /Times-Italic rf /Fk 22[44 112[50 2[55 33 1[44
-2[50 55 83 3[28 55 50 1[44 55 2[50 8[72 1[72 72 66 55
-72 1[61 78 72 94 66 1[50 39 2[61 66 1[72 66 72 20[25
-44[{TeXBase1Encoding ReEncodeFont}33 99.6264 /Times-Bold
-rf /Fl 22[52 8[58 102[58 2[58 65 39 45 52 65 65 58 65
-97 32 2[32 65 1[39 52 65 52 1[58 20[78 36[39 39[{
-TeXBase1Encoding ReEncodeFont}23 116.231 /Times-Bold
-rf /Fm 134[75 75 2[83 50 58 66 1[83 1[83 124 42 2[42
-2[50 66 83 66 1[75 11[108 1[83 9[58 33[50 39[{
-TeXBase1Encoding ReEncodeFont}20 149.44 /Times-Bold rf
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 463 869 2835 2 v 463 1231 a Fm(Systme)38
-b(expert)g(d'Interface)g(Utilisateur)463 1540 y Fl(Les)c(pr\351misses)f
-(de)h(la)h(construction)d(d'interfaces)g(utilisateurs)463
-1679 y(automatiques)c(et)g(adaptati)o(v)o(es)g(dynamiquement)463
-1819 y(\340)h(un)f(p\351riph\351rique)463 2094 y Fk(Maxime)c(A)-5
-b(udrin,)26 b(J)o(onathan)f(P)n(ont\351,)h(Sonntag)f(Benoit)463
-2294 y Fj(ICPS/LSIIT)19 b(-)i(UMR)f(7005)f(-)h(ULP)h(Str)o(asbour)m(g)
-463 2393 y(Ple)f(API)463 2493 y(Bd)g(Sbastien)f(Br)o(ant)h(-)g(BP)g
-(10413)463 2593 y(67412)e(Illkir)m(c)o(h)i(CEDEX)g(FRANCE)463
-2717 y(maxaudrin at fr)m(ee)o(.fr)-9 b(,)18 b(jponte at fr)m(ee)o(.fr)-9
-b(,)19 b(sonnta)o(g at icps.u-str)o(asbg)o(.fr)p 463 2916
-V 463 3049 a Fi(R\311SUM\311.)e Fh(Le)i(r\351sum\351)463
-3174 y Fi(ABSTRA)n(CT)l(.)e Fh(The)h(abstr)o(act)463
-3298 y Fi(MO)n(TS-CL\311S)d(:)k Fh(IHM,)f(Interface)i(gr)o(aphique)o(,)
-g(langa)o(g)o(e)h(objet)f(pr)m(ototype)o(,)f(Lisaac)463
-3423 y Fi(KEYW)o(ORDS:)f Fh(IHM,)g(Gr)o(aphics)i(User)f(Interface)o(,)g
-(pr)m(ototype)h(object)f(langua)o(g)o(e)o(,)j(Lisaac)p
-463 3556 V 463 5390 a Fg(L)-7 b('objet.)23 b(V)-10 b(olume)20
-b(8)f(\226)g(n2/2005,)h(pages)g(1)f(\340)g(15)p eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 463 490 a Fg(2)95 b(L)-7 b('objet.)23
-b(V)-10 b(olume)20 b(8)f(\226)g(n2/2005)463 753 y Ff(1.)41
-b(Intr)o(oduction)19 b(et)h(pr)o(obl\351matique)581 952
-y Fe(A)-6 b(v)o(ec)21 b(l'\351v)n(olution)f(des)i(technologies,)d
-(l'informatique)g(a)j(pris)f(une)g(place)h(de)f(plus)h(en)f(plus)463
-1052 y(importante)e(dans)h(tous)g(les)i(domaines)d(du)h(quotidien)f(:)i
-(transports,)e(t\351l\351communications,)f(ap-)463 1151
-y(pareils)30 b(\351lectrom\351nagers,)d(m\351decine,)i(etc.)h(La)h
-(miniaturisation)d(des)i(composants)f(electro-)463 1251
-y(niques)24 b(a)i(permis)f(l'int\351gration)e(de)i(syst\350mes)g
-(informatiques)e(puissants)i(dans)g(toutes)g(sortes)463
-1351 y(d'appareils.)17 b(La)h(di)n(v)o(ersit\351)g(des)h(composants)e
-(mat\351riels)h(permet)g(\351galement)f(de)h(pouv)n(oir)f(ajou-)463
-1450 y(ter)j(f)o(acilement)f(de)h(nouv)o(elles)e(fonctionnalit\351s)g
-(que)h(ce)i(soit)f(par)f(l'ajout)h(de)f(composant)g(mat\351-)463
-1550 y(riel)h(ou)g(composant)f(logiciel.)h(Si)h(cela)f(permet)f(de)i
-(rendre)e(de)h(nombreux)d(services)j(dans)g(la)h(vie)463
-1649 y(courante,)d(la)j(t\342che)f(des)g(concepteurs)f(est)i(loin)f(d')
-o(tre)f(simpli\002e.)463 1948 y Ff(1.1.)40 b Fd(Adapation)19
-b(des)h(IHMs)h(aux)f(priphriques)581 2148 y Fe(L)-8 b('informatique)23
-b(embarqu\351)g(propose)h(une)g(lar)o(ge)h(gamme)f(de)h(mat\351riel)g
-(ayant)g(des)g(possi-)463 2247 y(bilit\351s)d(di)n(v)o(erses)f(et)h(v)n
-(ari\351es)f(en)h(terme)f(de)g(p\351riph\351riques)e(d'entr\351es)i(/)h
-(sorties.)g(Les)g(interf)o(aces)463 2347 y(hommes-machines)27
-b(sont)k(fortement)d(li\351es)j(cette)g(v)n(ariabilit\351)e(de)h(ces)h
-(p\351riph\351riques)d(\(taille)463 2446 y(de)e(l'\351cran,)e
-(pr\351sence)h(ou)h(absence)f(de)h(cla)n(vier)f(ou)h(de)g(souris,)f(.)
-12 b(.)g(.)g(\))27 b(Pour)e(l'informatique)e(de)463 2546
-y(b)n(ureau,)h(nous)i(v)n(o)o(yons)f(l'\351mer)o(gence)e
-(d'applications)h(communes)g(entre)h(dif)n(frents)g(syst\350mes)463
-2646 y(d'e)o(xploitations)17 b(et)k(dif)n(f\351rents)d(supports)h
-(mat\351riels,)g(mais)h(ce)h(mouv)o(ement)c(\351chappe)h(encore)h(\340)
-463 2745 y(l'informatique)f(embarqu\351.)h(Les)i(plateformes)f(Ja)n(v)n
-(a)h(intgr\351e)f(dans)h(nos)g(t\351l\351phones)e(portables)463
-2845 y(permettent)e(une)g(abstraction)g(du)h(mat\351riel,)f(mais)i
-(l'interf)o(ace)e(utilisateur)g(ne)h(s'adapte)f(pas)i(aux)463
-2945 y(possibilit\351s)27 b(r\351elles)f(de)h(nos)f
-(p\351riph\351riques)e(d'entr\351es)h(/)j(sortie.)e(P)o(ar)g(e)o(x)o
-(emple,)f(les)i(applica-)463 3044 y(tions)k(pr\351vues)f(pour)g(les)i
-Fj(poc)n(k)o(et)f(PC)p Fe(,)g(v)n(oulant)f(of)n(frir)g(un)h(sous)g
-(ensemble)g(des)g(possibilit\351s)463 3144 y(acc\350ssibles)22
-b(par)g(un)g(ordinateur)e(de)i(b)n(ureau)f(ncessitent)h(une)f
-(reprogrammation)d(compl\350te)j(de)463 3243 y(leurs)f(IHMs)h(\(Ex)o
-(emple)32 b(:)21 b Fj(W)-8 b(or)m(d)20 b(poc)n(k)o(et)p
-Fe(,)g Fj(Excel)g(poc)n(k)o(et)p Fe(\).)463 3542 y Ff(1.2.)40
-b Fd(Modi\002cation)19 b(des)h(IHMs)h(lors)g(d'ajout)e(de)i(composant)d
-(logiciel)581 3742 y Fe(Une)29 b(application)e(de)n(vient)h(de)h(plus)g
-(en)g(plus)g(adaptable)f(via)h(l'insertion)f(dynamique)e(de)463
-3841 y Fj(plugin)p Fe(.)j(Ces)i Fj(plugin)e Fe(sont)h(des)g(petits)h
-(programmes)c(ajoutant)i(des)i(fonctionnalit\351s)d(au)i(sein)463
-3941 y(d'une)24 b(application.)g(Ils)h(sont)h(l'\351qui)n(v)n(alent)d
-(des)j(gestionnaires)d(de)j(p\351riph\351rique)c(\()p
-Fj(driver)p Fe(\))j(au)463 4040 y(ni)n(v)o(eau)20 b(logiciel.)g(L)-8
-b('insertion)20 b(de)h(ces)h(programmes)d(ont)i(un)g(impact)f(sur)h
-(l'IHM)g(global)g(d'une)463 4140 y(application)k(par)h(l'apparition)f
-(de)h(nouv)o(elles)f(fonctionnalit\351s.)g(T)m(rop)g(souv)o(ent,)g(le)i
-(choix)f(des)463 4240 y(concepteurs)e(est)j(d'ajouter)e(un)g
-Fj(panel)g Fe(repr\351sentant)g(les)i(fonctionnalit\351s)d(de)i(ce)h
-Fj(plugin)p Fe(.)d(Ici,)463 4339 y(nous)18 b(soulignons)e(le)j(manque)e
-(d'int\351grit\351)g(et)i(de)f(la)h(dif)n(\002cult\351)e(d'ajouter)g
-(dynamiquement)e(des)463 4439 y(fonctionnalit\351s)j(aux)i(sein)g
-(d'une)f(application)g(ma\356tresse.)463 4738 y Ff(1.3.)40
-b Fd(L)-5 b('objectifs)581 4937 y Fe(Dans)27 b(cette)g(article,)g(nous)
-g(d\351non\347ons)d(le)k(caract\350re)e(trop)g(statique)h(des)g(IHMs)g
-(actuelles)463 5037 y(et)21 b(la)g(n\351c\351ssit\351,)f(de)g(la)h
-(lourde)e(t\342che,)h(de)g(reprogrammer)d(les)k(interf)o(aces)f
-(utilisateurs)g(pour)f(les)463 5136 y(adapter)g(\340)i(un)e(nouv)o(eau)
-f(matriel.)p eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop 2158 490 a Fg(Interf)o(ace)19 b(Utilisateur)g
-(Automatique)95 b(3)581 753 y Fe(Notre)17 b(objectif)g(est)h(de)g
-(lib\351rer)f(le)h(concepteur)d(d'une)h(application)g(de)i(la)g
-(repr\351sentation)d(de)463 852 y(son)k(interf)o(ace)f(homme-machine.)e
-(Ainsi,)j(l'int\351r\352t)g(est)h(que)f(l'IHM)g(d'une)e(application)h
-(puisse)463 952 y(automatiquement)23 b(s'adapt\351e)h(\340)i(la)g
-(taille)g(ou)f(type)g(d'\351cran,)f(aux)h(\351v\350nements)f
-(mat\351riels)i(ou)463 1052 y(au)f(type)f(de)h(p\351riph\351rique)d
-(d'entr\351e)i(\(cla)n(vier)m(,)g(cran)g(tactile,)h(...\).)f(Aussi,)i
-(l'ajout)e(d'une)f(fonc-)463 1151 y(tionnalit\351)18
-b(doit)h(permettre)f(une)g(r\351adaptation)f(automatique)g(et)j
-(dynamique)c(de)j(l'IHM)g(en)g(vue)463 1251 y(d'accueillir)g(de)h
-(mani\350re)f(la)i(plus)f(agr\351able)f(possible)h(cette)g(nouv)o(elle)
-f(fonctionnalit\351.)581 1400 y(Nous)i(proposons)e(un)i(premier)f(tra)n
-(v)n(ail)i(de)f(mod\351lisation)f(de)h(cette)g(interf)o(ace)g
-(calcul\351e)g(au-)463 1500 y(tomatiquement)f(en)h(nous)h(concentrant)d
-(sur)j(l'inf\351rence)e(d'une)g(IHMs)j(simpli\002\351e)e(d\351pendant)
-463 1600 y(de)f(la)h(taille)g(de)f(l'\351cran.)581 1749
-y(Ici)g(nous)g(e)o(xposons)f(le)h(plan...)463 2048 y
-Ff(2.)41 b(Etat)20 b(de)g(l'art)581 2247 y Fe(La)h(recherche)e
-(informatique,)f(dans)i(le)h(domaine)e(de)i(la)g(g\351n\351ration)e
-(automatique)f(d'inter)n(-)463 2347 y(f)o(ace)d(graphique,)e(n'en)i
-(est)h(pas)g(a)f(ses)i(d\351b)n(uts.)e(En)g(ef)n(fet,)g(il)h(e)o
-(xistait)f(d\351j\340)h(des)f(outils)h(connus)e(sous)463
-2446 y(le)20 b(nom)e(de)h(User)g(Interf)o(ace)f(Design)h(En)m
-(vironment)d(comme)i(HUMANOIDE[1],GENIUS[2])463 2546
-y(permettant)32 b(de)i(cr\351er)g(de)f(mani\350re)g(automatique)f(une)h
-(interf)o(ace)g(graphique)f(a)n(v)o(ec)h(comme)463 2646
-y(contrainte)17 b(de)i(fournir)d(des)j(mod\350les)f(et)h(des)g
-(sch\351mas)g(graphiques)d(tres)j(comple)o(x)o(es.)e(D'autres)463
-2745 y(outils,)29 b(plus)g(r\351cents)f(et)i(bas\351s)f(sur)g(le)h
-(langage)d(XML,)i(tels)h(que)e(XML)-8 b(T)h(alks[3],)28
-b(XIML[4],)463 2845 y(UIML[5],)18 b(TERASAXML[6],)g(USIXML[7])g
-(permettent,)f(eux)i(aussi,)h(d'atteindre)e(le)i(m\352me)463
-2945 y(b)n(ut.)30 b(En)g(ce)g(qui)g(concerne)f(les)i(quatre)e
-(derniers,)g(on)h(observ)o(e)e(une)i(\351bauche)f("d'adaptation)463
-3044 y(dynamique")19 b(mais)j(cela)g(reste)g(e)o(xclusi)n(v)o(ement)e
-(une)h(sp\351ci\002cation)g(\340)h(donner)e(au)i(ni)n(v)o(eau)e(de)i
-(la)463 3144 y(cr\351ation)k(et)i(ne)f(se)h(f)o(ait)f(pas)h
-(dynamiquement)c(pendant)h(la)j(phase)f(d'\351x)o(ecution.)d
-(Cependant,)463 3243 y(tous)i(ces)g(outils)f(permettent)g(surtout)f(de)
-i("simpli\002er")f(le)h(processus)f(de)g(cr\351ation)g(plut\364t)g(que)
-463 3343 y(de)c(l'automatiser)f(car)h(il)h(f)o(aut)f(y)g(apporter)e(un)
-i(nombre)e(d'information)f(assez)k(consequent.)d(De)463
-3443 y(plus,)f(la)h(possibilit\351)f(d'adapter)e(dynamiquement)f(cette)
-k(interf)o(ace)e(a)i(dif)n(f\351rents)e(supports)g(reste)463
-3542 y(e)o(xclu.)i(D'autres)g(tra)n(v)n(aux,)f(plus)i(int\351ressants,)
-f(peuv)o(ent)f(\352tre)i(cit\351s)g(comme)f(PUC[8]\(Personal)463
-3642 y(Uni)n(v)o(ersal)k(Controller\))g(qui)h(utilise)h(un)f(arbre)f
-(de)i(d\351cision)e(ou)h(SUPPLE[9])g(permettant)f(une)463
-3742 y(gestion)d(dynamique)d(de)j(l'interf)o(ace)f(graphique)f(lors)j
-(d'un)d(changement)g(de)j(support.)463 3841 y(N\351anmoins,)c(il)j
-(reste)f(le)g(d\351f)o(aut)f(d'un)f(apport)h(en)g(information)f(encore)
-g(trop)h(important)f(et)j(l'in-)463 3941 y(capacit\351)g(de)g
-(s'adapter)f(aux)h(possibilit\351s)g(d'entr\351es/sorties)f(du)h
-(p\351riph\351rique)463 4040 y(Contrairement)15 b(a)i(ce)g(qui)f(a)h
-(ete)g(f)o(ait)g(aupara)n(v)n(ant,)e(nous)h(proposons)e(un)i(mode)g(de)
-h(creation)e(d'in-)463 4140 y(terf)o(ace)h(graphique)f(le)i(plus)g
-(simple)f(possible,)g(sous)h(forme)f(d'un)f(arbre)h(de)h
-(fonctionnalit\351)d(a)n(v)o(ec)463 4240 y(une)k(quantit\351)h
-(d'\351l\351ment)e(semantique)h(lar)o(gement)f(inferieur)h(permettant)f
-(une)i(automatisation)463 4339 y(aussi)h(compl\350te)e(que)g(possible)h
-(du)f(processus)h(de)g(conception.)d(En)j(ef)n(fet,)f(celle)i(ci)f(se)h
-(cantonne)463 4439 y(a)d(trois)h(principales)d(informations)g(par)i
-(composant)e(de)i(notre)f(interf)o(ace)g(que)h(nous)f(detaillerons)463
-4539 y(par)23 b(la)h(suite.)f(De)h(plus,)f(elle)g(permet)g(non)f
-(seulement)g(l'adaptation)g(a)h(la)h(v)n(ol\351e)f(de)g(l'interf)o(ace)
-463 4638 y(mais)e(aussi)f(de)g(prendre)f(en)h(compte)f(la)i
-(sp\351ci\002cation)e(du)h(materiel)g(au)g(ni)n(v)o(eau)f
-(entr\351es/sortie.)p eop end
-%%Page: 4 4
-TeXDict begin 4 3 bop 463 490 a Fg(4)95 b(L)-7 b('objet.)23
-b(V)-10 b(olume)20 b(8)f(\226)g(n2/2005)463 753 y Ff(3.)41
-b(Les)21 b(axiomes)f(de)h(notr)o(e)e(mod\350le)h(pour)h(le)f(pr)o
-(ogrammeur)f(d'application)581 952 y Fe(Notre)29 b(mod\350le)f(se)i
-(base)f(sur)h(la)f(description)f(formelle)g(des)i(fonctionnalit\351s)d
-(de)i(l'appli-)463 1052 y(cation.)k(Il)h(s'agit)g(pour)f(le)h
-(programmeur)d(de)j(construire)e(une)h(structure)g(repr\351sentant)g
-(ces)463 1151 y(fonctionnalit\351s,)25 b(munie)i(des)g(informations)f
-(les)i(caract\351risant.)e(Ces)j(informations)c(sont)j(n\351-)463
-1251 y(cessaires)21 b(\340)f(l'\351laboration)e(d'une)h(interf)o(ace)h
-(graphique.)463 1550 y Ff(3.1.)40 b Fd(Un)21 b(arbre)f(de)g(f)o
-(onctionnalit\351)581 1749 y Fe(Cette)f(structure)f(est)h
-(represent\351e)f(par)g(un)g(arbre)g(de)g(fonctionnalit\351s)f(de)h
-(l'application.)f(Les)463 1849 y(fonctionnalit\351s)j(sont)j(les)g
-(feuilles)f(de)h(l'arbre)e(et)i(les)g(noeuds)e(sont)h(les)i(\351tapes)e
-(par)g(lesquels)g(il)463 1948 y(f)o(aut)g(passer)g(pour)f(acc\351der)h
-(\340)g(ces)h(fonctionnalit\351s.)d(Ces)k(noeuds)d(seront)g(plus)i
-(tard)f(mod\351lis\351s)463 2048 y(par)j(des)g(pattern)g(qui)g
-(composeront)e(notre)h(interf)o(ace)h(graphique.)d(Un)k(noeud)e(pourra)
-f(\352tre)j(un)463 2148 y(menu,)g(une)g(fen\352tre)g(ou)g(autre,)g(et)h
-(une)g(fonctionnalit\351s)d(un)j(bouton)e(l'acti)n(v)n(ant)g(par)i(e)o
-(x)o(emple)463 2247 y(\(v)n(oir)19 b(paragraphe)f(Description)h(de)h
-(notre)g(IHM)g(\002nal\).)463 2347 y(Il)31 b(s'agit)f(pour)f(le)i
-(programmeur)c(de)k(mettre)f(en)g(commun)f(des)h(fonctionnalit\351s)f
-(qu'il)h(juge)463 2446 y(bon)c(de)h(re)o(grouper)d(sous)j(un)f(noeud)g
-(de)h(l'arbre.)e(Ainsi)j(chaque)d(noeud)h(est)h(une)g(description)463
-2546 y(des)c(noeuds)f(qu'il)g(renferme.)f(Plus)j(on)e(descend)g(en)h
-(profondeur)c(de)k(l'arbre)f(plus)h(les)g(noeuds)463
-2646 y(gagnent)18 b(en)i(description.)463 2745 y(Si)26
-b(nous)e(prenons)g(l'e)o(x)o(emple)f(d'une)g(interf)o(ace)h
-(traditionnelle,)g(les)h(fonctionnalit\351s)e(permet-)463
-2845 y(tant)17 b(l'\351criture/ouv)o(erture)c(d'un)j(\002chier)h
-(\(enre)o(gistrer)m(,)d(ouvrir)m(,)h(nouv)o(eau...\))f(sont)j
-(disponibles)f(a)463 2945 y(tra)n(v)o(ers)h(la)g(barre)f(de)h(menus,)f
-(puis)h(le)h(menu)e(\002chier)-5 b(.)16 b(Nous)h(v)n(o)o(yons)f(f)o
-(acilement)g(que)h(la)g(barre)f(de)463 3044 y(menus)21
-b(est)h(un)f(noeud)f(donnant)g(acc\350s)i(aux)f(menus)g("Fichier",)f
-("Edition")h(et)h(autres,)f(qui)g(eux-)463 3144 y(m\352mes)16
-b(sont)g(des)h(noeuds)e(donnant)g(acc\350s)h(a)h(d'autres)e(noeuds)g
-(tels)j(que)d("Ouvrir")g(\(aboutissant)463 3243 y(g\351n\351ralement)h
-(a)i(l'ouv)o(erture)d(d'une)h(fen\352tre\))h(ou)g(a)i(des)f
-(fonctionnalit\351s)e(telles)i(que)g("Enre)o(gis-)463
-3343 y(trer".)g(Nous)h(pouv)n(ons)e(de)h(la)i(m\352me)e(maniere)g
-(d\351crire)f(enti\350rement)h(une)g(application)f(:)j(chaque)463
-3443 y(noeud)29 b(est)j(une)e(description)f(g\351n\351rale)h(des)h
-(fonctionnalit\351s)e(qu'il)h(renferme)f(et)i(peut)f(donc)463
-3542 y(contenir)22 b(des)h(fonctionnalit\351s)e(satisf)o(aisant)i
-(cette)g(description)f(ou)g(mener)g(\340)i(d'autres)d(noeuds)463
-3642 y(re)o(groupant)c(des)k(fonctionnalit\351s)d(qui)i(gagnent)e(un)i
-(de)o(gr\351)f(de)h(precision.)463 3742 y(La)j(racine)f(de)g(l'arbre)g
-(est)h(la)g(description)f(g\351n\351rale)f(de)i(l'interf)o(ace.)e
-(Seuls)i(ses)h(\002ls)f(seront)f(af-)463 3841 y(\002ches)h(sur)f(le)h
-(p\351riph\351rique.)c(Il)j(appartient)f(ensuite)h(\340)h
-(l'utilisateur)e(de)i(l'application)d(de)i(f)o(aire)463
-3941 y(appara\356tre)d(les)i(noeuds)e(de)h(profondeur)c(superieure)j
-(en)h(acti)n(v)n(ant)f(les)i(\002ls)h(de)e(la)h(racine.)463
-4040 y(Or)f(cet)g(arbre)f(\340)h(lui)g(seul)g(ne)g(contient)f(pas)h
-(d'informations)d(permettant)h(le)i(g\351n\351ration)e(de)i(l'in-)463
-4140 y(terf)o(ace)g(graphique.)463 4439 y Ff(3.2.)40
-b Fd(Les)21 b(ajouts)f(semantiques)581 4638 y Fe(Notre)30
-b(mod\350le)f(pre)n(v)n(oit)h(l'ajout)f(d'\351l\351ments)g(semantiques)
-h(lors)g(de)g(la)h(construction)d(de)463 4738 y(l'arbre)22
-b(d'une)f(application.)h(Ceux-ci)g(permettent)g(de)h(d\351crire)f
-(d'une)f(part)i(la)h(relation)e(qu'ont)463 4837 y(entre)31
-b(eux)g(les)i(\002ls)g(d'un)d(noeud,)g(ce)i(que)f(nous)g(a)n(v)n(ons)h
-(appel\351)f(l'op\351rateur)e(semantique)i(et)463 4937
-y(l'importance)21 b(d'un)h(noeud)g(dans)h(l'arbre)f(d'autre)f(part,)i
-(ce)h(que)e(nous)h(a)n(v)n(ons)g(appel\351)f(la)i(force)463
-5037 y(d'un)19 b(noeud.)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop 2158 490 a Fg(Interf)o(ace)19 b(Utilisateur)g
-(Automatique)95 b(5)463 753 y Fe(3.2.1.)39 b Fj(L)m('op\351r)o(ateur)19
-b(semantique)581 903 y Fe(Il)i(y)f(en)g(3)g(:)h(XOR,)g(OR)g(et)g(AND.)
-463 1003 y(L)-8 b('op\351rateur)25 b(XOR)i(pre)n(v)n(oit)f(que)g(le)i
-(noeud)d(ne)i(peut)f(pas)h(\352tre)g(actif)g(en)g(m\352me)f(temps)h
-(qu'un)463 1102 y(autre)20 b(:)h(on)f(ne)g(peut)g(pas)h(appuyer)d(sur)j
-(le)g(bouton)d("Fichier")i(et)h("Edition")e(en)i(m\352me.)e(C'est)j(un)
-463 1202 y(choix)d(e)o(xclusif.)463 1302 y(L)-8 b('op\351rateur)27
-b(OR)k(a)e(l'in)m(v)o(erse)f(permet)h(au)g(noeud)f(de)i(rester)f(actif)
-h(m\352me)f(si)h(l'on)f(acti)n(v)o(e)g(un)463 1401 y(autre)20
-b(noeud)e(:)j(une)f(check)f(box)g(par)h(e)o(x)o(emple.)463
-1501 y(L)-8 b('op\351rateur)18 b(AND)i(n\351cessite)h(que)e
-(l'utilisateur)h(acti)n(v)o(e)f(ce)h(noeud.)f(L)-8 b('acti)n(v)n(ation)
-18 b(de)i(ce)h(noeud)463 1600 y(est)i(conditionn\351e)d(par)i(l'acti)n
-(v)n(ation)f(d'un)g(autre)h(noeud)f(:)i(par)f(e)o(x)o(emple,)e(le)j
-(principe)e(du)h(login)463 1700 y(et)c(du)e(mot)h(passe.)g(Il)h(f)o
-(aut)e(remplir)h(le)g(champ)f(login)g(et)i(mot)f(de)g(passe)g(a)n(v)n
-(ant)g(de)g(pouv)n(oir)e(v)n(alider)463 1800 y(une)20
-b(saisie.)463 1993 y(3.2.2.)39 b Fj(La)21 b(for)m(ce)581
-2143 y Fe(C'est)g(un)f(pourcentage)e(qui)h(repr\351sente)g
-(l'importance)f(d'un)h(noeud.)g(Certaines)h(fonction-)463
-2243 y(nalit\351s)e(sont)h(optionnelles)d(et)j(non)e(necessaires)h(au)g
-(d\351roulement)e(normal)h(d'une)g(application)g(:)463
-2342 y(ces)j(fonctionnalit\351s,)d(une)i(fois)h(retir\351es)f(de)h
-(l'interf)o(aces)e(graphiques)f(\(et)j(donc)f(inaccessibles\))463
-2442 y(n'emp\352chent)i(pas)j(le)g(programme)d(de)j(fonctionner)-5
-b(.)21 b(Notre)j(mod\350le)f(pre)n(v)n(oit)f(donc)h(de)h(retirer)463
-2541 y(ces)k(fonctionnalit\351s)e(en)i(dernier)f(recourt)f(a\002n)j(de)
-e(proposer)f(une)i(interf)o(ace)f(graphique)e(plus)463
-2641 y(l\351g\350re)20 b(et)g(adequate)f(au)h(p\351riph\351rique)e
-(d'af)n(\002chage.)463 2934 y Ff(3.3.)40 b Fd(Ex)o(emple)581
-3127 y Fe(V)-11 b(oici)17 b(l'arbre)d(abstrait)j(d'une)d(application)h
-(de)h(dessin.)g(====>mettre)f(une)h(copie)f(d'\351cran)d(?)463
-4579 y @beginspecial 14 @llx 14 @lly 582 @urx 202 @ury
-4544 @rwi @setspecial
-%%BeginDocument: figures/arbre_abstrait.ps
-%!PS-Adobe-3.0
-%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner
-%%Title: arbre_abstrait.ps
-%%CreationDate: Thu May 15 14:17:04 2008
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 582 202
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228346456694 14.173228346456694 translate
-% Translate to begin of first scanline
-0 187.19812942163958 translate
-567.35433070866145 -187.19812942163958 scale
-% Image geometry
-788 260 8
-% Transformation matrix
-[ 788 0 0 260 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 788 string def
-/gstr 788 string def
-/bstr 788 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData:        49598 ASCII Bytes
-colorimage
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$MuWeWJcC<$JcFj3J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE9cp](6npAY*mJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfE6bli-qbJcC<$JcG9?J,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!<;ors8W*!s8Vrrs8VusJcC<$JcGBBJ,~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfEBfs8W*!!WN0!s8N*!s8N*!s8E#urr<&urr<%Ms+13$s7-,>~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE6brVuiss8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfE<drr;iqs8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8N'!JcC<$JcG9?J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;Zcss8W*!s8W*!s8W*!rr;uus8W*!JcC<$JcG<@J,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$RfEBfr;ZWos8W*!s8W*!rr;uus8W#tJcC<$JcGBBJ,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$OoPF]JcC<$JcFX-J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$NW9"YJcC<$JcFd1J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$O8o(WJcC<$JcFj3J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$OT5:[s8W#tJcC<$JcFp5J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$P5kI\r;Z]qJcC<$JcG!7J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$PlL[^q#C9mJcC<$JcG'9J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$QN-m`o`+jiJcC<$JcG-;J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$R/d*bnGiFeJcC<$JcG3=J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$RfE<dm/R%bJcC<$JcG6>J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$SH&Nfkl:V^JcC<$JcG<@J,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T)\`hjo>8ZJcC<$JcGBBJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$T`=rjiW&iVJcC<$JcGHDJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U&Y)lh>dERJcC<$JcGNFJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$U]:8mgAh*OJcC<$JcGTHJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$V>pJof)P[KJcC<$JcGZJJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$VuQ\qdf97GJcC<$JcG`LJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$WW2nscN!kDJcC<$JcGcMJ,~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$X8i+ubQ%M at JcC<$JcC6~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$XoJ>"a8c)<JcC<$KE$H~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$YQ+P$_uKZ8JcC<$L&ZZ~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$Z2ab&^]464JcC<$L];l~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$ZN'n(]Dqg0JcC<$M>r)~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[/^+*\,ZC,JcC<$MuS;~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$[f?:+[/^+*JcC<$N;nD~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$\GuL-YlF\&JcC<$NrOV~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$])V^/XoJ>"JcC<$OT0h~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$]`7p1WW2nsJcC<$P5g%~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$^An-3V>pJoJcC<$PlH7~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_#O?5U&Y&kJcC<$QN)I~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_Z0Q7ScAWgJcC<$R/_[~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$_uK]9RK*6dJcC<$RK%d~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$`W,o;Q2gg`JcC<$S,\!~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$a8c)<PQ1R]JcC<$Sc=3~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$aoD;>O8o.YJcC<$TDsE~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$bQ%M at MuW_UJcC<$U&TW~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$c2[_BL]@;QJcC<$U]5i~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$ci<qDKE(lMJcC<$V>l&~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$dJs.FJcGcMr;_EKJcDYJJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$e,T at HJcGWIrW%NLJcD\KJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$eGoLJJcGNFr;_EKJcDbMJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f)P^LJcGBBr;_EKJcDhOJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$f`1mMJcG9?r;_EKJcDnQJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$gAh*OJcG-;r;_EKJcDtSJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$h#I<QJcG!7r;_EKJcE%UJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$hZ*NSJcFj3r;_EKJcE+WJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$i;``UJcF^/rW%NLJcE.XJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$irArWJcFR+rW%NLJcE4ZJ,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jT#/YJcFI(r;_EKJcE:\J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$jo>;[JcF=$r;_EKJcE@^J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$kPtM]JcF0ur;_EKJcEF`J,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$l2U\^JcF'rr;_EKJcELbJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$li6n`JcEpnr;_EKJcERdJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$mJm+bJcEdjrW%NLJcEUeJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$n,N=dJcEXfrW%NLJcE[gJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$nc/OfJcEOcr;_EKJcEaiJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$oDeahJcEC_r;_EKJcEgkJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$p&FsjJcE7[r;_EKJcEmmJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$pAb*lJcE+Wr;_EKJcEsoJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$q#C<nJcDtSr;_EKJcF$qJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$qZ$KoJcDkPr;_EKJcF*sJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$r;Z]qJcD_LrW%NLJcF-tJ,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$rr;osJcDVIr;_EKJcF4!J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC<$!<;utJcDJEr;_EKJcF:#J,~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcC?%r;_EKT)\`hJcC<$fDg@~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCE'r;_EKRfE<dJcC<$g&HR~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCK)r;_EKQN-m`JcC<$g])d~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCN*rW%NLP5kI\JcC<$h>`!~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCT,rW%NLNrT(YJcC<$hZ&*~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcCW-rW%NLMuWbVJcC<$i;\<~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcCi3!!%TMJcFX-J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcCr6rr at WMX8i+uf`)'Ss8N'!l2Ub`s8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELbqZ,CNrr at WMX8i%sgA_9Us8N'!mf*7erVults8N'!JcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrCgRrr at WMX8`/"rr;rtg]%BVs8N'!mf*7eq>UEpJcC?%J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!!*#urrE&uquH`r"9AH%!<;rs!<;rsq>^?mrr;osq>^?m!<;utrVufrrr3!!s8;rts8N)u
-s8N*!s82kJs5j7\!<)rt!<<)s!<3#m!!*&s!;c`m!<<*!!<3#r!<<*!!<3#u!!*&s!!iN(!<<'!
-s8VusJcCT,J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!W`9#rW)rt"9AK%!!*#urW)uurVurur;Zp!!!)lqrr<'!rW)uurW!$"!!)lqpAk3mqZ-Zr
-qZ-ZrrrE&urr<'!rW)uu!!%TMjo>2Xrr2rurr;uus8W&us8W&urr;uu!<<#uqu?Zr!<<#uqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELbqZ-KmrrE*!rrE&urrE&urrE&urrDusrrE&urrE*!rrE&urrDrrrrE*!rrE&urr<-#!!*#u
-rrE*!rrE*!rrE*!rrE&urr<-#!!%TMiW&cTr;Z]qs8W*!rr;uurr;uurr;uuqu6Wrrr;uuqu?Zr
-s8W*!s8W*!rr;uus8N'!rVults8N3%s8N'!JcCK)J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!*#urW)uuqZ-ZrrrE&urrE&uq>gHnrrE&urrE*!q>gEm!!*#urrE&urr<'!q>gQq!!)ut
-"9AK%!!*#urrE*!r;_EKjSo2[rVults8Vrrs8W*!rr;uurr;fpr;ZcsrVlitr;ZcsrVult!ri6#
-rr;uus8N'!rVults8N-#s8VusJcCT,J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDfnrrE&urrE*!rrDcm!!*#urrE&urr<-#!!)lq
-!!)ut"9AK%!!*#urrE&ur;_EKjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAY*mrr;uuqu?Zr
-rr3*$s8N'!rr;uus8N'!rVults8N'!r;Z`rJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELb!!)utrr<-#!!*#urrE*!!!)utrrE&urrDcm!!*#urrE*!rrDcm!!*#urrE&urrE*!!!)lq
-!!)ut"9AK%!!*#urrDusrr at WMjo5;\rVult!ri6#rr;uus8W*!rr;uurr;uupAb-ms8W*!qu?Zr
-s8W*!s8W*!s8W&us8N'!rVults8N'!qu?ZrJcCW-J,~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbqZ-Zrq>gQq!!)utrrE#tqZ-NnqZ-Zrq>gEm!!*#urrE&urrE*!qZ-Zr!!)ut!!*#uqZ$Wr
-qZ)3Ijo>2Xrr;iqs8W*!rr;uurVu`pqu?Nnqu?Nnrr;iqs8W#t#QFc(s8N*!s82kJs,$c+~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcELbr;ccqqZ-Zr!!)utrrDusr;cZnquH]qr;c]o!!*#urrE&urrE#tr;clt!!)ut!!)utqu?`s
-quD<JjT#/Yqu?Zr#6+Z's8N'!rr;uuqu?Wqq#C?o!WN/qs8N)rs8N'#rr<&ts8N'&rr<'!rrE&u
-rW%NLM#Vu~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcD8?r;_EKJcGQGr;_EKJcFa0J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDABq#H!GJcGWIq#H!GJcFj3J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDJEo`0RCJcG]KoDjIBJcG!7J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDPGp](<oquD<JJc>`MmJqh<JcG-;J,~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDYJq#CEprW)uurr<-#!!%TMK)bfM!<;uts8VZjJcC<$nc++~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDbMp]1<nrrE&urrE*!rW%NLL&_,P"oeQ&s8N)us8Duus7?;Bs+14Cs*t~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDkPqu?`sr;cfrrrDusrrE*!rW%NLM#[GSrr;uus8W*!rr;rts8VZjJcC<$q#>j~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcDtSquHcsr;ccqrrDrrrrE&urW%NLMZ<YUrVults8W*!r;Z`rs8W#t!<;`mJcC<$r;V9~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE(VquH`rr;c`prW)fprrE&urW%NLN;rkWrVultrVlitqu?Wqrr;oss8V`lJcC<$!<7Q~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE1YqZ-Wqr;cZnrrDlprrDusrW%NLOT5:[qu?ZrrVultqu?WqrVucqs8Vus!<;lqJcCE'J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcE:\qZ-Tpr;cWmrrDfnrrDusrW%NLP5kL]qZ$QqrVultq>^Eor;Z]qrr;lrs8VoqJcCQ+J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEC_qZ-Qor;cTlrrDcmrrDrrrW%NLPlL^_q>UEpqu6Wrq#C<nqu?TprVucqrr;iqJcCZ.J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcEIaquHWor;cQkrW)WkrrDrrrW%NLQiI$bq#C?oqu?Zrq#C<nqZ$KorVu`prr;fpJcCf2J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcERdquHTnr;cKirrD]krrDlprr at WMRK*6dp](6nqu?ZrpAb*lqZ$HnrVu`prVu]oJcCr6J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcE[gquHQmr;cHhrrDWirrDlprW%NLSH&QgpAY*mq>UEpp&G!kq>^?mr;ZWor;ZTnJcD):J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEdjquHNlr;cEgrrDThrrDiorW%NLTE"ljp&G$lq>^Hpp&G!kp](0lqu?Nnqu?KmJcD5>J,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcEmmquHKkr;cBfrW)HfrrDiorW%NLU&Y)lo`+pkq>^HpoDedip](0lqZ$EmqZ$EmJcD>AJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF!pquHHjr;c<drrDNfrrDcmrr at WMU]:;noD\djp\t3no)J[hpAb'kq>^<lqZ$BlJcDJEJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF*squHEir;c9crrDHdrrDcmrW%NLVuQ_ro)J^ip](6no)J[hp&Fpiq>^<lq>^9kJcDVIJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF4!qZ-<hr;c6brrDEcrrD`lrW%NLWW2qtnc/Uhp](6nnGiIfo`+jiq#C3kq#C0jJcDbMJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcF=$qZ-9gr;c3arW)9arrD`lrW%NLX8i/!nG`Igp&>!ln,N at eoDeahp](*jp](*jJcDkPJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFC&quH?gr;c-_rrD?arrD]krW%NLY5eJ$n,NCfp&G$ln,N at eo)JXgpAb!ipAb!iJcE"TJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFL)quH<fr;c*^rrD9_rrDZjrW%NLZ2ae'mf3:ep&G$lmJm.co)JXgp&FmhpAashJcE.XJ,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcFU,quH9er;c']rrD6^rrDWirW%NLZiC")mJd.doD\djm/R%bnc/Lep&Fmhp&FjgJcE:\J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcF^/quH6dr;c$\rW)*\rrDWirW%NL[f?=,m/R(coDegjm/R%bn,N=do`+dgo`+afJcEF`J,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFg2quH3cr;bsZrrD0\rrDThrW%NL\GuO.li6tboDegjlMph`n,N=doDe[foDe[fJcEOcJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcFp5quH-arW)$ZrrD*ZrrDQgrr at WM])Va0lMghanc&Rhl2U__mf34co)JReoDeXeJcE[gJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG$8quH*`rW)!YrrD'YrrDNfrW%NL^An04l2Ub`nc/Uhl2U__mJm(ao)JReo)JOdJcEgkJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG-;qZ-!_r;bmXrW(pWrrDNfrW%NL_#OB6kl:Y_nc/UhkPtM]mJm(anc/Idnc/FcJcEsoJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG6>qZ,s^r;bgVrrD!WrrDKerW%NL_Z0T8kPkM^n,E at fk5YD\li6n`nGi at cnGi=bJcF*sJ,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcG?AqZ,p]r;bdUrrCpUrrDKerW%NL`W,o;k5YG]n,NCfk5YD\lMpe_n,N7bn,N7bJcF4!J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGECquH!]r;baTrrCmTrrDEcrW%NLaT)5>jo>>\n,NCfjT#2ZlMpe_mf3.an,N4aJcF@%J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGNFquGs\r;b^SrW(aRrrDEcrW%NLb5_G at jSo2[mJd.dj8])Yl2UY]mf3.amf3+`JcFL)J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcGWIquGp[r;bXQrrCgRrrDBbrW%NLc2[bCj8],ZmJm1dj8])YkPtJ\mJm%`mJm"_JcFX-J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcG`LquGmZr;bUPrrCaPrrDBbrW%NLci<tEirB#YmJm1diW&lWkPtJ\m/Qq_m/Qn^JcFd1J,~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-JcGWJjo>8ZgAh0Qf`1sOl2Ub`JcF-trW(pW!!)?b!!(sWrW)*\r;c0`quH$^qZ)3Ik5Tr~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-K`CrMjT#/Yg&M$OfDkjNl2U__JcF:#rW(mVrrDBbrrD!WrW)'[r;c-_quH$^q>c*HlMlA~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-L]@5OjT#/YfDkjNf)PaMkl:V^JcF@%rW(jUrrDBbrrCpUrW)'[quH$^quH!]q>c*Hmf.e~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-MZ<PRj8]&Xf)PaMeGoOKkl:V^JcFF'rW(gT!!)<arrCmTrW)!Yr;c*^quGs\q>c*Ho)F4~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-NW8kUirArWec5XLe,TFJk5YG]JcFO*rW(dSrrD<`rrCmTrW(sXr;c']quGp[qZ)3Ip&BO~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-O8o+XiW&iVeGoLJdf9=Ik5YD\JcFX-rW(aRrrD<`rrCgRrW(sXr;c$\quGmZqZ)3Iq>Ys~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-P5kF[i;``Udf9=IdJs4Hjo>;[JcF^/rW(^Q!!)6_rrCdQrW(pWquGp[quGmZq>c*HrVqB~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-Q2ga^huEWTdJs4Hci="Fjo>;[JcFg2rW([PrrD6^rrCdQrW(mVquGmZquGjYq>c*HJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-R/d'ahZ*NSd/X+GcN!nEjT#2ZJcFm4rW(XOrrD6^rrC^OrW(jUr;bsZquGgXq>c6LJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-S,`Bdh>dERci<tEc2[eDj8])YJcG!7rW(UN!!)0]rrC[NrW(gTr;bpYquGdWqZ)HPJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-T)\]gh#I<Qc2[eDbl@\CirAuXJcG*:rW(RMrrD0\rrC[NrW(dSr;bmXquGdWq>cKSJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-U&Xuih#I<Qbl@\Cb5_JAirAuXJcG0<rW(OLrrD0\rrCULrW(dSquGdWquGaVq>cWWJ,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-V#U;lg].3PbQ%SBaoDA at iW&lWJcG6>rW(LK!!)*[rrCRKrW(^Qr;bjWquG^Uq>cc[J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-VuQVogAh*Ob5_G at aT)8?i;`fWJcG?ArW(IJrrD*ZrrCRKrW([Pr;bgVquG[Tq>co_J,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-WW2krg&M!NaT)8?a8c/>huEZUJcGHDrW(FIrrD*ZrrCLIrW([Pr;bdUquGXSqZ*,cJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-XT/1uf`1mMa8c/>`W,r<huEZUJcGNFrW(CH!!)$YrrCIHrW(XOr;baTquGXSq>d/fJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-YQ+M#fDkdL`rH&=`;fi;hZ*QTJcGWIrW(@GrrD$XrrCIHrW(UNquGXSquGURq>d;jJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-ZN'h&f)P[K`W,o;_uK`:hZ*QTJcG]KrW(=FrrD$XrrCCFrW(RMr;b^SquGRQq>dGnJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-[K$.)ec5RJ_uK`:_Z0W9h#I?RJc>`MrW(:E!!(sWrrC at ErW(OLr;b[RquGOPq>dSrJ,~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-\GuI,eGoII_Z0W9_#OE7h#I?RKE(oNcN!nEhuE]VcN!kDec5RJh#I9Pg].-NY5a"~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-]Dqa.eGoII_>jN8^]4<6g].6QL&_,Pc2[eDhuE]Vbl at YBec5OIh#I9Pg].*MZN#F~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-^An'1e,T at H_#OB6^An35g].6QL]@>Rbl7YChZ*TUbQ%PAeGoFHg].0OgAh!L[f:j~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_>jB4df97G^An35^&S*4g&M'PMZ<YUbQ%SBh>dKTbQ%PAdf97GgAh'Ng&LmK])R9~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-_uKW7d/X(F^&S*4]Dqm2g&M$ONW8tXb5_JAh>dKTaoD>?df97Gg&LsMf`1gK^&NT~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-`rGr:ci<tE]`8!3])Vd1f`1pNO8o1Zao;>@h#IBSaT)5>dJs.Ff`1jLfDk^J_>f#~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-aoD8=cN!kD]Dqj1\c;[0f`1pNP5kL]aT)8?g].9RaT)5>d/X"Df`1jLfDk[I`W(G~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-bl at S@c2[_B])Vd1\GuR/f)PaMPlL^_a8c/>g].9R`rH#<d/X"DfDkaKf)PRHao?k~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-ci<nCbl at VA\c;[0[f?@-f)P^LQiI$b`r?#=gAh0Q`W,o;cN!hCfDk^Jec5IGc2W:~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-df94FbQ%M@\GuR/[K$7,ec5UKRfE?e`W,r<g&M'P`W,o;c2[_Bf)PUIeGoCGd/SU~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-ec5LHbQ%M@\,ZF-[/^.+ec5UKSH&Qg`;fi;g&M'P_uK]9c2[_Bec5LHeGo at FeGk%~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-f`1gKb5_D?[K$7,ZiC%*eGoLJT)\ci_uB]:f`1sO_Z0T8bl at S@ec5LHe,T7Ef`-I~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-g].-NaoD;>[/^.+Z2ah(e,TFJU&Y)l_Z0W9fDkjN_Z0T8b5_D?eGoCGdf9.Dh#Dm~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h>dBQaT)2=ZMsn)YlF_'df9:HU]:>o_>jN8fDbgN^]+96aT)2=e,T at Hci<kBhuA3~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-h#@?S`W,r<JcDhO!!%TMJcE.X!!&Dd!!(mUJ,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-JcC<$JcG<@rrE*!rrDrrrrDWirr at WMJcD5>J,~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-kl1V_p\t3nqZ$Qqjo>2XqZ$Qqs8N'!q>UEpe,TFJeGoOKi;`fWiW&oXqZ$Qqjo>>\rVultqZ$Qq
-^&Rs0r;Zcsrr;uur;ZcspAY*mrVult\GuR/qu6Wrf`1mMcN!nEli6h^s8W*!s8N'!hZ*?NoDegj
-jo>>\m/I%cir=N~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,N7b!WN/orr<&qs8N)\s8)fms8N*!rr`?%rr<&trr<&[s8)fjs8N)]s8N)lrr<&ts8N)as7u`p
-s8N)Xs8N*!s8N)us8N)]s8E#ss8N)qs8N)4s8N)urr<&ts8N)ts8N)ts8N)lrr<&[s7lZHs8N)r
-rr<&Os7u`arr<&[s8N)bs8)frs8N*!rr<&Us7cTcs8N)^s8)farr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfnc&Rhh#IBSpAb-mr;Zcsp\t3nq>UEpoDegjrr;uuq>^Hpjo>>\p&>!ljT#5[rr;rtg&M'P
-iW&iVrr;uurVult!ri6#rVult`;fi;q#C<nrr;uurVuisr;Z]q!<;rs!ri6#rr;rtrVllus8E#i
-s8N)Ns8N)Hs8N)us8N)frr<&[s8N)brr<&qs8N)Os8N)ts8N)us8N)ts7u`ps8N)fs8E#trr<&e
-rr<&Ys*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Q`srVufrs8Vusrr;uurr;osrr;lro`+pkqZ$Ems8N*"s82lsrr<&us82lss8)fgs8N)u
-s8N'!s82lss8;rss82lrs8;rss8)crs82iss8)frs82iurr<&us8;rss82lms8N)ts8N*!s8N*!
-s82lss82lqs8;rrs8;rts8N'!s82iurr<&us8;rss8)fjs8N'#rr<&us8N*!s7u`qs8)f8s8N)q
-s82lss8N*!s8)fqs82iss82j"rr<'!s8)frs8)fhs8N)ss8N)rs8E#ts8)crs8E#is8N)rrr<&u
-s8)frs8)fqs82les8N)us8N)us82lrs82iss82iss82lrs8)fqs8)frs8N)us8;rgrr<&qs8N*!
-rrN3#s8)fqs82lrs8;rgs8N*!s8)frs8N*!s8N'!s82iss8)fes8E#os8;rss8N)us8N*!rr<&t
-s8E#ts8N)us8N*!s82lns*t~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,NCfr;Qfus8W#t"9/B$s8)frs8N*!s8)frs8E!!rrD]kqZ-ZrrrE*!rW)uu"9AK%!!)ut!W`9#
-rW!*$!!*'!rW)uurrD`lrrE&urr<'!qu at B0!!*$!!<<'!!<<'!!<<'!!<<#us8Vrrs8W*!rr;uu
-s8W*!rr2rurVults8W*!!<<#us8VrrqZ$QqrVults8W*!!<<#us8N-#s8Vrrs8Vrrs8W*!s8N?)
-s8N'!s8N'!rr;uus8Vrrs8W&u!ri6#p](6ns8W*!s8W*!s8W*!s8W&us8N'!rr;uu`W,i9rr;uu
-rr;uu#6+Z's8N'!rr;uu!ri6#qu6WrrVults8N'!rr;uus8W*!s8W*!pAb*lrr;iqs8Vrrs8Vcm
-o`+pkqu6]ts8W&u!<<#us8W&u!ri6#rr;uu!<<#uo)J^irr;uus8W&u"TJH%s8W&us8N0$s8N)t
-rrN3#s8E#us8E!"rr<&us8N'!s8E#us8N*!s8N'!s8E#is8)frs8N*!rrN3#s8Duus8E!"rr<&u
-rs/W)rr<'!rr<&js8N*!s8N)urr<&us8;rss8N)us8N)urr<&is8N)ps8)frs8N)us8N*!rrN3#
-s8E!&rr<'!rr<&us8N*!s8E!!rrDoqJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,N7b"oeT&rr<&rs8N*!s8N*!s8N*!rr<&us8N*!s8N)hs8)frs8N)us8N*!rr`?%rr<&trr`?%
-rr<&us8N'#rr<&us8N)ls7u]srr<&us8N)us8N'#rr<&ss8N)us8N*!s8N*!s8N*!s8N)prr<&u
-rr<&ts8N'#rr<&us8N*!s8N*!s8N)qs8N)ss8N'&rr<'!!!)orrrE&u"9AK%!!*#urr<-#!!)rs
-rrE*!rrE&urrE*!rrE*!rrE*!rrE&urrDiorrE*!rrE*!rrE*!rrE&urr<'!q>eG5r;cltq>^Zu
-!!*'!q>^Ts!!)or!!)utrr<-#!!*#urrE*!rrE&u!!)cnrW)osrrE*!rrE*!rrE*!rrE*!rrE&u
-rrE*!rrD]krrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!*#urrDWiqZ-WqrrE&urr<-#!!)or!!)ip
-rrE*!rrE&urr<-#!!*#urrE*!rr<-#!!*#urrDZjqZ-ZrrrE*!"9AK%!!*#urr<-#!!)or!!*#u
-rrDZjrrE*!q>gQqr;cisrrE&uq>g-errDlprrE*!rrE*!rrE&urrE*!"9AK%!!*#urr<-#!!*#u
-rrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!<;lqs8W*!nc/Uhqu6WrrVults8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&Fpirr;uurr;fp!<;rss8Voqs8N'!rVm!#s8N'!rVu`ps8N'!rVult!ri6#
-rr;uus8N'!rVlitqZ$QqrVults8W*!s8W#trr;uurr;uu!ri6#rr;uu!<;rss8W*!s8W*!rr;uu
-!ri6#rVult!ri6#rr;uuq>^9ks8W*!s8N'!rVult!<;lq_#OE7!<;lq"TJH%s8Voq!ri6#qu6Wr
-rVult!ri6#rr;uus8N'!rVlitp](6nr;Q`srVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pkqu6d!
-s8N'!rr;uus8W*!rr3$"s8Voqo)JOds8Voq!ri6#qu6WrrVu`ps8W*!rr;uu!ri6#rr;uus8W*!
-!<;lqoD\djqZ$Qqs8N3%s8N'!rr;uus8W#ts8VoqoDegj!<;ips8W&urVultrr;fpoDegjqZ$Qq
-rVult!ri6#rr;uus8N-#s8Voq!ri6#rr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!!ri6#qZ$Qqnc/Uhqu?Zrrr;uus8N3%s8N'!rVm!#s8N'!
-rr;uu!ri6#rr;uup&G$lqu?Zrrr;uuq>^Bn!ri6#qYpNqrVm!#s8N'!rr;uurr;uus8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$QqrVults8W*!rVuiss8W*!rr;uu!ri6#rr;uurr;os#6+Z's8N'!
-rr;uus8N'!rVm!#s8N'!rr;uuq>^6j#lal)s8N'!s8W&u!ri6#]Dqm2!ri6#qu?Zrs8W*!qu?Zr
-qu6WrrVult!ri6#rr;uus8N'!rVlitq#C?or;ZcsrVult!ri6#rr;uu!ri6#rr;uurr2ruo`+pk
-qu6d!s8N'!rr;uus8W*!rr3*$s8N'!mJm1drr;uus8W*!qu?Zrqu6WrrVults8W*!s8W*!rr;uu
-!ri6#rr;uus8W*!!ri6#mf*7eqZ$Qqs8N3%s8N'!rr;uurVuis!ri6#mf3:es8W*!qZ$Korr;uu
-rr;uumf37dqu?ZrrVm!#s8N'!rr;uus8N3%s8N'!qu?Zrrr;uus8W*!p]#a~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Qm"s8N'!qu6Wrrr;uus8W*!s8W*!qu?Zrnc/Uhqu?Zrs8W&us8N3%s8N'!rVm9+s8N'!
-s8N'!s8N'!rr;uup&G$lqu?Zrrr;uup](6n!ri6#qYpNqrVm!#s8N'!rr;uus8W&us8N'!rVult
-!ri6#rr;uus8N'!rVlitqZ$Qqrr;rts8W*!r;Zcss8W*!s8W*!s8W*!rr2ruqu?Zr#6+Z's8N'!
-rr;uus8W*!s8W*!s8W*!rr;uuq>^HprVult"TJH%s8W&u!<<#us8W*!rr2ru`rH#<!<<#us8W#t
-#QFc(rr<'!s8E#us8N*!s8E!#rrE*!rW)uurrE*!qZ-Zr!!)ut!!)iprrDoqrrE*!rrE*!rrE&u
-"9AK%!!*#urrE&u!!)ZkrrDrr"9AK%!!*#urrE*!rrE&u"9AK%!!)EdrrE#trr<-#!!)orrrDrr
-!!*#urrE&urrE*!rrE&urr<-#!!*#urrE*!rrE*!rrDNf!!)lqrrE*!!W`9#rW)uurrDusrrE*!
-rrDNfrrE*!rW)uu$ip>-!!*'!!!*'!!!*#urW)uurrDWirrE#t%KQP/!!*'!!!*'!!!*'!rW)uu
-"9AK%!!)orrrE&urrE*!rrDfnJ,~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srr;lrs8N'!rr;uus8W*!s8Vrrs8W*!nc/Fc!<;lqs8N'!rr;rts8N'!rr;lrs8W*!
-rr;uup&G$lqu?ZrrVu`p!<;ors8Vrrs8N'!rVlp!s8W#t!<;lqs8W#t"TJH%s8Vusrr2rurVlit
-qZ$Blrr;uu!<;ors8Vrrs8Vrrs8Vuss8W*!s8W#t"TJH%s8Vrrs8W*!rr;uuqZ$Qqr;Zcs!ri6#
-rr;iqrr;lr`rGl8rVucq!ri6#rr;iqrr;oss8W#t!ri6#rr;osrr2rurVlitqZ$<j!<;ors8Vrr
-s8W*!rr;uurr2ruo`+af!WN0!s8)frs8N)urr<&us8)fes8N)ts8N'!s7u`qs82lss8;ots8)fr
-s8N)us8N*!s8)frs8N*!s8)ffs8)frs8N*!rrN3#s7u]qs8)frs8)ffs8N)us82iurr<&us8Duu
-s8;rts8)fes7u`qs8)frs7u`qrr<&us8)frs8)frs8N)ns*t~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-n,NCfr;Q`srVufrs8N'!rr;uus8W*!rVufrs8W*!kPtP^mJd.dlMpkaqu?Zrr;Z]qs8Vusr;Z]q
-s8N'!rVlitrVults8Vrrrr;rt!ri6#rr;rtrVlitrVlitqZ$Hnr;Zcs!<;rsrr3!!s8E#rs8E#t
-s8;rss8N)ts8N'#rr<&ts8N)ts8N)us8N(Ms53kO!<<)t!<)rr!<3#u!<3#u!<2uu!;-<f!!3*"
-r;R!%rr<'!rr<&urr<&ss8E#gs8N)ss8N*!s8;rqs8E#ss8N*!s82lss8N)us8N)trs&Q(!!*'!
-!!)utrW)NhqZ-ZrrrE*!!W`9#quH]qr;ccqrW'e7r;ccqrrDusrW!-%!!*'!!<)rr!<)rq!<<*!
-!;HMD~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3="9AK%!!';("9AK%!!(XNrr at WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcG3=quF#%quG at Krr@WMpA]X~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcCl4!!%TMJcC<$JcFU,J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8])YJcC<$JcC<$JcCc1J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-j8]&XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#,XJcC<$JcC<$JcCf2J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jT#2Z!ri6#JcC<$JcC<$JcCi3J,~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-jo>>\!ri9#rW%NLJcC<$JcC<$OoKq~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N3%s8N'!JcC<$JcC<$JcCl4J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-k5YG]s8N'!rr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kPtP^rr2rurr;uuJcC<$JcC<$JcCo5J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:V^rr2rurVultJcC<$JcC<$JcCr6J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-kl:Y_rVlitr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-l2Ub`r;Q`sr;ZcsJcC<$JcC<$JcCu7J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMph`r;Q`squ?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-lMpkaqu6Wrqu?ZrJcC<$JcC<$JcD#8J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqqZ$QqJcC<$JcC<$JcD&9J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-li6tbqYpNqq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-m/R(cq>UEpq>^HpJcC<$JcC<$JcD):J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C?oJcC<$JcC<$JcD,;J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mJm1dq#:<oq#C<nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-mf3:ep\t3np](6nJcC<$JcC<$JcD/<J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-n,NCfpAY*mpAb-mJcC<$JcC<$JcD2=J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nGiLgp&>!lp&G$lJcC<$JcC<$JcD5>J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Rgp&>!lo`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-nc/Uho`"mko`+pkJcC<$JcC<$JcD8?J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-o)J^ioD\djoDegjJcC<$JcC<$JcD;@J,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-oDegjo)A[io)J^iJcC<$JcC<$JcD>AJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-o`+pknc&Rhnc/UhJcC<$JcC<$JcDABJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-p&G$lnG`IgnGiLgJcC<$JcC<$JcDDCJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fnGiIfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-pAb-mn,E at fn,NCfJcC<$JcC<$JcDGDJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-p](6nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C<nmf*7emf3:eJcC<$JcC<$JcDJEJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q#C?omJd.dmJm1dJcC<$JcC<$JcDMFJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-q>^Hpm/I%cm/R(cJcC<$JcC<$JcDPGJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qZ$Qqli-qbli6tbJcC<$JcC<$JcDSHJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghali6qaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-qu?ZrlMghalMpkaJcC<$JcC<$JcDVIJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-r;Zcsl2L_`l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_l2Ub`JcC<$JcC<$JcDYJJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rVultkl1V_kl:Y_JcC<$JcC<$JcD\KJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rr;uukPkM^kl:V^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-rVlitkPkM^kPtP^JcC<$JcC<$JcD_LJ,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-ir8uYJcC<$JcC<$JcC`0J,~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-kPtP^s8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!o`+pks8W*!s8W*!mf3:es8W*!s8W*!JcC<$JcC<$JcDnQJ,~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-rr;uus8W*!s8W*!JcC<$JcC<$JcC<$qYu'~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-JcC<$JcC<$JcC<$mJh\~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
-
-%%EndDocument
- @endspecial 286 x Ff(4.)41 b(Description)20 b(de)h(notr)o(e)e(IHM)i
-(\002nal)581 5058 y Fe(Une)j(interf)o(ace)f(graphique)f(est)j
-(essentiellement)e(compos\351e)g(d'un)f(assemblage)i(de)g("wid-)463
-5158 y(get".)18 b(Le)h(mot)f("widget")g(est)i(la)f(contraction)d(de)j
-(deux)e(mots)i(v)o(enant)e(de)i(l'anglais)f(:)h("windo)n(ws")p
-eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 463 490 a Fg(6)95 b(L)-7 b('objet.)23
-b(V)-10 b(olume)20 b(8)f(\226)g(n2/2005)463 753 y Fe(et)24
-b("gadget".)d(Ce)j(sont)f(les)h(composants)e(de)h(cette)h(interf)o(ace)
-e(qui)h(seront)g(af)n(\002ch\351s)g(a)g(l'ecran)g(et)463
-852 y(qui)f(permettront)e(l'int\351raction)h(la)i(plus)f(claire)h(et)g
-(la)f(plus)h(agr\351able)e(possible)h(entre)g(l'homme)463
-952 y(et)29 b(la)g(machine.)e(Dans)i(le)g(b)n(ut)f(de)h(respecter)e
-(l'er)o(gonomie)f(et)j(une)f(certaine)g(con)m(v)o(ention)d(des)463
-1052 y(interf)o(aces)20 b(graphiques,)d(il)k(f)o(aut)f(\351tablir)g
-(des)h(r\350gles)f(de)g(construction.)463 1351 y Ff(4.1.)40
-b Fd(Composants)20 b(de)g(base)581 1550 y Fe(Nous)26
-b(pouv)n(ons)e(distinguer)h(plusieurs)g(sortes)h(de)g(composants)e
-(basiques)i(dans)f(notre)g(in-)463 1649 y(terf)o(ace)20
-b(graphique)d(:)463 1749 y(-)j(Les)h(boutons)e(\(b)n(utton\))463
-1849 y(-)h(Les)h(cases)g(a)g(cocher)e(\(check)g(box\))463
-1948 y(-)h(Les)h(boutons)e(radio)g(\(radio)g(box\))463
-2048 y(-)h(Le)h(te)o(xte)f(\(te)o(xt\))463 2148 y(-)g(Les)h(ic\364nes)f
-(\(icons\))463 2247 y(-)g(Les)h(raccourcis)e(\(shortcut\))463
-2347 y(-)h(Boite)h(d'ecriture)e(\(te)o(xt)g(input\))463
-2446 y(...)581 2596 y(D'autres)34 b(\351l\351ments,)h(plus)g
-(techniques)e(et)j(intrins\350ques)e(a)h(la)h(programmation,)31
-b(sont)k(\340)463 2696 y(prendre)18 b(en)i(compte)g(comme)f(:)463
-2795 y(-)27 b(La)f(WINOUT)h(:)g(la)g(fen\352tre)e(principale)g(est)i
-(une)f(WINOUT)g(et)h(toutes)g(les)g(autres)f(fen\352tres)463
-2895 y(internes)20 b(au)g(programme)d(aussi.)463 2994
-y(-)34 b(La)g(WININ)f(:)i(c'est)f(l'\351l\351ment)f(principal)f(qui)h
-(compose)g(l'espace)g(de)h(tra)n(v)n(ail)f(\(e)o(x)o(emple)463
-3094 y(feuille)20 b(w)o(ord...\))581 3343 y(Ce)26 b(sont)f(toutes)f
-(ces)i(briques)e(de)g(base)h(qui,une)e(fois)i(compos\351)f(d'une)f
-(certaine)h(maniere,)463 3443 y(aboutiront)18 b(a)j(la)f(creation)g
-(d'\351l\351ments)f(plus)h(comple)o(x)o(es.)463 3742
-y Ff(4.2.)40 b Fd(Composition)19 b(pour)i(des)f(\351l\351ments)h(plus)f
-(complex)o(e)581 3941 y Fe(On)g(peut)g(distinguer)f(plusieurs)g(sortes)
-i(d'\351l\351ments)e(former)g(de)h(briques)f(de)h(bases)h(:)463
-4040 y(-)26 b(La)f(barre)g(de)g(menu)f(:)i(repr\351sente)e(un)h(simple)
-h(assemblage)e(de)i(boutons)d(dispos\351s)j(a)g(l'hori-)463
-4140 y(zontal)463 4240 y(-)i(La)f(barre)g(v)o(erticale)f(ou)h
-(horizontal)f(:)i(repr\351sente)e(un)h(assemblage)f(de)i(di)n(v)o(ers)e
-(\351l\351ments)h(de)463 4339 y(bases)21 b(comme)e(des)h(boutons,)f
-(cases)i(a)f(cocher)f(etc..)463 4439 y(-)i(Le)g(menu)f(v)o(ertical)g(:)
-i(repr\351sente)e(un)g(assemblage)g(de)h(boutons)f(disposes)h(a)g(la)g
-(v)o(erticale)f(dans)463 4539 y(une)g(WINOUT)463 4638
-y(-)26 b(Le)h(menu)e(horizontal)f(:)j(repr\351sente)e(un)h(assemblage)g
-(de)g(boutons)e(disposes)j(a)f(l'horizontal)463 4738
-y(dans)20 b(une)g(WINOUT)463 4837 y(-)f(Le)g(menu)f(deroulant)f(:)j
-(repr\351sente)d(un)i(assemblage)f(de)g(boutons)g(disposes)h(a)g(la)g
-(v)o(ertical)f(dans)463 4937 y(une)i(WININ)p eop end
-%%Page: 7 7
-TeXDict begin 7 6 bop 2158 490 a Fg(Interf)o(ace)19 b(Utilisateur)g
-(Automatique)95 b(7)463 753 y Ff(4.3.)40 b Fd(Axiome)20
-b(de)g(construction)581 952 y Fe(Il)38 b(f)o(aut)g(pouv)n(oir)e(donner)
-h(une)g(r\350gle)h(precise)f(lors)h(de)g(la)h(conception)d(de)i
-(l'interf)o(ace.)463 1052 y(P)o(ar)f(e)o(x)o(emple,)f(un)h(menu)f
-(horizontal)f(ne)j(sui)n(vra)e(jamais)i(un)f(autre)f(menu)h(horizontal)
-e(car)463 1151 y(visuellement)27 b(parlant,)h(cela)g(nuira)g(a)h(la)g
-(clart\351)g(de)f(l'interf)o(ace.)f(Une)i(autre)f(r\350gle)g(\(plus)g
-(une)463 1251 y(con)m(v)o(ention\))f(v)o(eut)j(qu'apr\350s)e(une)i
-(barre)g(de)g(menu)f(ne)i(sui)n(v)o(ent)e(que)h(des)h(menus)e(v)o
-(erticaux.)463 1351 y(Pour)23 b(v)o(eiller)f(a)i(bien)e(respecter)h
-(ces)g(r\350gles,)g(nous)g(a)n(v)n(ons)g(\351labor\351)f(une)g
-("pseudo-grammaire")463 1450 y(repr\351sentant)c(les)j(axiomes)f(de)g
-(construction.)463 2944 y @beginspecial 14 @llx 14 @lly
-517 @urx 187 @ury 4024 @rwi @setspecial
-%%BeginDocument: figures/grammaire.ps
-%!PS-Adobe-3.0
-%%Creator: GIMP PostScript file plugin V 1,17 by Peter Kirchgessner
-%%Title: grammaire.ps
-%%CreationDate: Thu May 15 15:01:18 2008
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 517 187
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228346456694 14.173228346456694 translate
-% Translate to begin of first scanline
-0 172.79805067346524 translate
-502.55433070866144 -172.79805067346524 scale
-% Image geometry
-698 240 8
-% Transformation matrix
-[ 698 0 0 240 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 698 string def
-/gstr 698 string def
-/bstr 698 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData:       108461 ASCII Bytes
-colorimage
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-kPtP^JcGQGrrDrrrW)osrW)uuqZ-ZrrW)rtrrE*!rrE#trr<-#!!)rsrrDrr!!)lqrW)osrW)uu
-qZ-ZrrrE#trrE*!rrE#trrE*!rrE#trrDrrrrDusp]1?orW)osquHNl!!)orrrE#trrE&urr<3%
-!!*'!rW)rtrrE*!quHQmr;cisrrE#trrE&urr<3%!!*'!rW)rtrrDoq!!)lqquH]qrrE#trr<'!
-nGrRgr;ccqrrE#t!s&?$!;lfr!;uls!;c`o!;uis!;ulb!<3#s!<)rs!<3#u!<<*!!<)rt!;c]q
-!;QTl!<<*!!;uiu!<<)q!<)rq!<<*!!<)rt!;uls!;uis!6"nf~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;ZTnr;Zcsr;ZWos8VoqK`D&Pqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wr
-qZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zrr;ZNls8W&urVu]oqYpNqqYpNq
-rr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqqZ$Bl
-s8W*!rVult!<;Qhs8Voqrr;rtrr3*$s8N'!rVultqu?ZrqZ$Emrr2rur;Z0b!<;lqrr;rtrr;uu
-s8W*!rVultqYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;uuqu?Zrrr3-%rrE*!!6>+i~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uurVm!#s8N'!O8f1[oDegjqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVult
-!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?or;Z`r
-rVultrr;uuqYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rr;rtrr;uurr;rts8W*!s8W&u
-rr;uu"TJH%s8W#ts8W*!qYpNqqZ$Qqrr;uus8W*!rVultrVultqu?ZrrVuisrr;uurr;rtrr3*$
-s8N'!rVultqu?ZrqYpNqrr;rts8N'!r;ZcsrVultqu6Wrr;Zcsrr;rts8W#ts8W*!s8W*!rVult
-qYpNqqZ$NprVls"rr<&srr`?%rr<&qs8E#srs&Q(!!*'!!!)iprrE*!qZ+\:J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcsrr;uurVufrrr;uuqZ$QqO8o1Zp&G$lqZ$Kos8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!
-rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!rVults8W*!rVultqu?Zrq#C?orVult!ri6#
-rr;uurr;uuqYpNqqZ$Qqs8W#ts8N9's8N'!s8W#ts8W*!s8W*!rVuis!ri6#r;Zcss8W*!s8NK-
-rrE*!!!*'!!!*'!r;cltrrDoq!!)lqrrE&urrE*!rrE#trrE#trrDrrrrE#trrDusrrE*!r;clt
-"9AK%!!)utrrDrrrrDoq!!)utrrE*!!!)rsrrE#trrDrr!!)utrW)osrrE*!r;cltrrE*!rrE#t
-rrDoq!!)lqrrDoqrrDus"9AK%!!)lqrrDoqrr<-#!!)forrE&urW'q;J,~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;Zcss8W&urr;uu!ri6#rr;osr;ZcsNrT"Wq#C?oqZ$Qq$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!
-s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)frs82j$rr<'!rr<&ts8N*!s7lZls8N)o
-s8N)ts8N'#rr<&us7u`lrr<&qs8N*!rtkb9!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&s
-s8N*!s8N*!rtGJ5!!*$!!<<'!!<<'!!<3$!rr<&qrr<&qs7u`qs8N)ts8N)ts8N)rs8N)ts8N)s
-s8N*!rrrK'!!*'!!<3#u!<<*!!;c`q!;c`m!<2uu!;uls!<)rt!;lcr!<)rt!;uls!<<*!!!iN(
-!<3$!s8VlpqYpNqqZ$QqqZ$?ks8Voq!<<#uqZ$Kop](6ns8Vrra8^Y~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;ZWorVults8W*!rr;lrrr;iqO8o.YqZ$QqqZ$Qq!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&t
-s8N)us8N'#rr<&prr<&qs8N'!s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE*!q#L<lrrDio
-rrE&urrE*!rrE&uq>gBl!!)ip)Z]m<!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls!!<0#!;uls
-!<<*!!#GS7!<3$!rr<'!rr<'!rr<'!!!*$!!;c]q!;c`l!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&us8N*!s8N)qs8N)qs8)fqrr<&ss8N)ts8N)rrr<&ts8N)rs8N'+rr<'!!!*$!
-!<<)p!;c]q!;c`q!;c`k!<<)q!!<0#!;ZZn!;?Eu!<<'!rrE*!!6>+i~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;Zcsrr;uurr;uus8W*!qu?Wqs8W*!Q2gd_qu?TpqZ$QqqZ$Qq!<;ut#6+Z's8N'!qu?Zrs8W#t
-s8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<;ut"oeQ&s8N)qs8N*!s8;rts8N)ts8N*!s8N)ts8N)r
-s8N)os8N)us7u`qs8N)us8N)qrr<&ps8;rtrs\u.!!*'!!!*'!!!*'!r;cltrrDusrr<-#!!)rs
-rrE&ur;[B.!!*$!!<<'!!<<'!!<<)t!;c]q!;c`q!<3#u!<<*!!<)rt!<)rt!;lfr!<)rt!;uls
-!<<''!<<'!!<3&ts8N'#rr<&qs8N)qrr<&ts8N*!s8N)ts8N)ts8N)rrr<&ts8N)ss8N*!s8N*!
-s8;rts8N)ts8N)qrr<&qs8N)qs8N)srr`?%rr<&rs8E#ps82lkrr<&trr<&;s*t~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;ZcsrVult!<;ipqu?Zrs8W*!NW8nVq>^HpqZ$Qqs8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVult
-rr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVults8W*!rVultqu?Zrq#C?o
-rr;fps8W*!rr;uuqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVultrr;oss8W&u
-rr;uus8W*!s8W#tqYpNqqZ$Qqrr;rt!ri6#rVultrVultqu?ZrrVultrVuiss8N'!rr;rtrVufr
-q>^HpqYpNqrVults8W*!rr;uur;Zcsqu6WrrVuisrVults8W*!s8W#ts8W*!rVultqYpNqqZ$Qq
-qZ$Qqr;Qm"s8N'!qZ$QqqZ$Qq!<<#uq>^Hp^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;Zcsrr;rt!ri6#rVultqu?Zrs8W*!O8o.YpAb-mqZ$Qqs8W*!s8W*!s8W*!qu?Zrrr;rtrr;uu
-rr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!rr;uurr;uurVultqu?Zrq#C?o
-s8W*!r;Zcs!ri6#rr;uuqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!rr;rtrr;rts8W&urr;rt
-rr;rtrr;uus8W*!rr;rtqYpNqqZ$Qqrr;uurr;uurr;uurVultqu?ZrrVuiss8W&urr2rurr;rt
-rVufrq>^HpqYpNqrVults8W*!rr;uur;Zcsqu6Wrr;Z`rs8W&us8W*!rr;rts8W*!rVultqYpNq
-qZ$Nprr;uu!ri6#r;Qm"s8N'!qZ$Nprr;uu"TJH%s8W&uqZ$Qq^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZTns8W*!rVult!<;lqs8VoqPlC^`oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rq#:<o
-qZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq#C?os8W*!r;Zcs!<;lqqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Blrr;iqr;Zcs
-qu?Zrr;ZTnrr2rurVultr;Zcsq#C?oqZ$EmrVu`pr;Zcsqu6Wrqu?Nnrr;uurr;rts8W*!rVult
-qYpNqq>^9k!ri6#r;Qfus8Voqrr;fp!ri6#rr;rtqu?Zr^]/f~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-r;ZZprr;uuqu?Zr!<;rsrr;fpK`D&Pqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcsq>^Hpq#:<oqZ$Qq
-qu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq#C?os8W*!r;Zcs!<;utp\t3nq#C?orVult
-rr;uus8W*!rVults8W#tq#C<nqZ$Qqrr;rtrr;uus8W*!rVultqYpNqqZ$Koq>^HpqZ$Qqqu?Zr
-qZ$Npr;Q`srVultr;Zcsq#C?oqZ$Koq>UEpq>^Hpqu6Wrq>^Hpr;ZcsrVults8W*!rVultqYpNq
-p](3mrr;uur;Qfus8Voqr;Z`rrr;uurVultqu6Wr^Ai]~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcFR+rrC%<!!'t;rrCjS!!'&!!!'G,rrBG+!!(+?rrBe5J,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcDAB!!'t;rrCjS!!'&!!!'G,rrBG+!!%ZOJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voq!ri6#r;Zcsr;Zcsr;Q`sJcC<$JcE1YJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;ZcsP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voq!ri6#r;Zcsqu6s&s8N'!rrE'!!.k0$s+13\s*t~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urr;rtUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qu?ZrrVultqZ$Qqs8VusJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuU&Y&kpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuqZ$Qqrr;osJcC<$JcE7[J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuTE"fhq>^HpqZ$Ems8Vrr
-rVm!#s8N'!rr;os!<;uts8Voqs8W*!s8W*!q>^Hp!<;ut!ri6#JcC<$JcE:\J,~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N)us8N'#rr<%rs8;ros8E#ps8N)qs8)fr
-s8)fqs8N*!s8N)us8N'#rrE)t!<<)q!<3#u!!<0#!;QQo!<)ot!.k0$s+13Ys*t~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#VZ6Spr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#q>^HpJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#TE"fhq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!q>^Bnq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!r;Z`rTE"ljp&G$lqZ$Qqqu?Zrrr;lrrVuis
-!ri6#r;Zcss8W*!q#C<nq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqr;Z`rOT5=\qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voq
-rVuisq#C?oJcC<$JcE"TJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-g].9RL&_/Q_#OE7JcC<$JcDtSJ,~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcFR+rrBk7rr at WMJcC<$YlB4~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-JcFO*!!(OK!!)'Z!!)`m!!)0]!!)Ng!!)or!!%TMJcC<$qu;0~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voq!ri6#r;ZcsR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uu!ri6#r;Zcsqu6Wrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?Zrr;Q`sJcC<$JcGWI
-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#r;ZcsR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uu!ri6#rVultqYpNqqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!q>UKrs8VoqJcC<$JcG`LJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qu?ZrrVultVuQ_rp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q#C?orr;rtJcC<$JcGZJJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$Qqrr;uuVuQYpp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuqYpNqqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnp](6ns8VusJcC<$JcG]KJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!s8W*!U]:5lqZ$QqqZ$Emrr;uurVultrVult
-qu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&prr<&rs8N)ps7lZps7u]srr<&ps8E#ls8N'(
-rr<'!!<3$!JcC<$JcG`LJ,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqrr;uu!ri6#XT/5!qZ$NpqZ$QqqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&prr<&rs8E#ps8N)ts8N*!
-s8N)rs8N)ps8;rls8N)trr<%Ms+13$s82hH~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q>^Hp!ri6#XT/5!r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;uu!ri6#q>UEpqZ$QqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q#C?oJcC<$JcGHDJ,~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^BnV>pGnp](6nqZ$Qqrr;rts8W*!rr;uu
-rVultqu?ZrrVuisrr;rts8W*!s8W#trr;osq#:<oqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)qs8N*!
-s8N)ps8N(Ms+13$s7ZJC~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C<nV>pPqo`+pkqZ$Blrr;fprVultqu?Zr
-r;ZTnrr;uurr;rtrVuisq#:<oqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqZ$QqJcC<$JcGHD
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVuisQ2gjaqu?Nnqu?Wqqu?Zrqu?Zrqu?QorVult
-rr;rtrVultp\t3nq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsJcC<$JcGECJ,~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFR+rrBJ,!!(+?rr at WMJcC<$p&BO~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcFO*!!'G,!!(+?!!%TMJcC<$o`'F~>
-JcCf2!!%TMJcC<$])R9~>
-JcCf2!!%TMJcC<$])R9~>
-JcCf2!!%TMJcC<$])R9~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrr
-s8W*!rVults8W*!rVults8W*!rVultqu?Zrqu?Zrrr;uurVult#6+Z's8N'!rVults8VusqZ$Hn
-rr;uurr;uurVultrr;osrVultrVult!<;ipqu?Zrk5YG]li6tbr;ZcsJcC]/J,~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uu!ri6#r;ZcsUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultqu?Zr
-qu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu]os8W*!rr;rts8W*!rr;fps8W*!rVult!<;ip
-qu?Zrli-qbrVultlMpkas8N6&rr<'!!.k01s*t~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uu!ri6#rVultZ2Xe(oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Nprr;oss8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W&urr;uus8W*!
-rr;rts8W*!s8W&urr;uus8W*!rVultrVultq#C?oli-qbjT#5[s8VrrJcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!!<<#urr;uuZ2ae'p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Kos8W#ts8N'!qZ$Kos8W*!s8W*!
-rVults8W*!rVultqu?ZrqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVults8W*!r;Zcs"TJH%
-s8W#ts8W*!s8W*!rVuis!ri6#rVultrVultq#C?oqu?Nnrr;lr!<;rs"TJH%s8Vusrr;iqq>UEp
-rVuisJcC`0J,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rr;uuYlFV$q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Ko#QFc(rr<'!s8)fr
-s82j$rr<'!rr<&ts8N*!s7lZls8N)qs8N'/rr<'!!<<'!!<<'!!<<)t!<<*!!<<*!!<)rs!!<0#
-!;uls!<<*!!"&Z*!<3'!rr<'!rW)lrrr<-#!!)utrrE#trrDiorrDrr!!*#urrE&urrE*!!s&B$
-!<)rt!<<*!!!*&u!<<)u!!<0#!;ZZp!!*&r!.k01s*t~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!%K?D.rr<'!rr<'!rr<&#s8;ros8N)qs8N'!
-s8;p#rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<'!r;[!#!!*'!qZ-Zr
-rr<B*!!*$!!<<'!!<)rt!<<)p!;lfr!;c`q!#kk;!<3$!rr<'!rr<'!rr<'!!!*$!!<<'!!;uls
-!!<0#!;uls!<<*!!!E6$!<;uts8W*!qu?Zr!ri6#rVultrVultq#C?oq#C<ns8W*!qu6WrrVult
-!ri6#rr;uus8W*!rr2ruq>^Hp#6+]'!!*$!JcCc1J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&us8N'#rr<&-s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&qs8N'!s8;p$rr<'!
-rrDoqrrE*!r;cltrrE#trrE*!rrE#trrDrrrrDoqrr<0$!!*&t!<3#u!<<*!!!*&s!<<*!!;uj"
-!<<'!!;uls!<<*!!!E6$s8W#ts8W&ur;Zcs!ri6#rVultrVultq#C?oqu?Nns8W*!qu6WrrVult
-!ri6#rr;uus8N'!rVlitq>^Hprr;uuJcC]/J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#trr;lrY5eD"q>^HpqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpqZ$Qq!<<#us8W*!s8N'!qZ$Qqs8W#t
-s8W*!rVults8W*!rVultqu?Zrq>^Eos8W#trr;uus8W*!s8W#ts8W*!rVults8W*!r;Zcsrr;rt
-s8W#trr;uurVuis!ri6#rVultrVultq#C?oqu?Zrs8W*!s8W*!qu6WrrVult!ri6#rr;uus8N'!
-rVlitq>^HpJcCN*J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#trr;osYQ+P$pAb-mqZ$Qqs8W*!
-s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oqZ$Qqs8W*!s8W*!s8N'!qZ$Qqrr;rts8W*!
-rr;uurr;uurVultqu?Zrq>^Eorr;rtrr;uus8W*!s8W#ts8W*!s8W#ts8W&us8W&urVuisrr;rt
-rr;rts8W&urr;uurr;uurVultq#C?oqu?Zrs8W*!s8W*!qu?Zrrr;uus8W*!s8W*!s8N'!rVlit
-q>UEpJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rtrVuisYQ"S&oDegjqZ$Qqqu?Zrs8Voq!ri6#rr;rt
-rr;iqr;Z`rq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rr;rtrr;iqrr;uurVultqu?Zrq>^Eorr;rtrr;uu
-s8W*!rr;rts8VoqrVu]orVuisrr;uur;ZWorVu`pr;Zcsq#C?oqu?Nnrr;lrs8W#t"TJH%s8Vrr
-s8N'!rVlitqZ$QqJcCK)J,~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rtrVultT)\fjqu?Zrqu?Zrs8Voq!ri6#rVultr;Zcs
-q>^Hpq#:<oqZ$Qqqu?Zrs8Vrrs8W*!rVultr;Zcsr;ZcsrVultqu?Zrq>^Eorr;uurVults8W*!
-rVults8W&up](3mqu?ZrrVultqZ$Qqq>^HpqZ$Qqq#C?oq>^Hp!WN/ts8N)ss8N'#rr<&trr<&s
-rr<&trr<&qs8N(Ms+^Q(~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcFR+rrC%<!!'t;rrAShrrC at Err@WML&ZZ~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcDAB!!'t;rrAShrr at WMJcF*sJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vusqu?Zrr;Z`rrVult
-s8Voqs8W*!rVultqu?Zrr;Q`sJcC<$JcE4ZJ,~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z`rrVuiss8Vrrs8W&urr;uus8W*!rVults8W*!rVultP5kO^qu?Nns8Vrrr;Z`rrVuisrr;rt
-s8Voqs8W*!rVultqu?Zrs8W*!"TJK%!!%TMJcC<$])R9~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt5no`+pkqZ$Qqqu?Zrrr;uurr;os
-rVuisrr;rts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Z]qs8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rVultUAt/lpAb-mqZ$Qqqu?Zrrr;uurr;uu
-!ri6#rr;os!<;uts8W*!qZ$QqrVultqZ$Qqs8VusJcC<$JcE:\J,~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8VlpT`=oiq>^HpqZ$Ems8VrrrVm!#
-s8N'!rr;os!<;uts8Voqs8VlpqZ$Qq#QFc(rrE'!!.k0$s+13]s*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut"TJH%s8Vrrs8W*!$3'u*rr<'!rr<&ts8N*!s7lYns8;ros8E#ps8N)qs8)frs8)fq
-s8N*!s8N)us8N'#rrE)t!<<)q!<<)p!;c`q!<)ot!.k0$s+13Zs*t~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcs!<;ut#6+Z's8N'!qu?Zrs8W#ts8W*!rVults8W*!rVultW;lerr;ZZpqZ$QqqZ$Qqqu?Zr
-s8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVults8W*!rVultU&Y#jq#C?oqZ$Qqqu?Zrrr;uu
-!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcss8W*!s8W*!s8W*!qu?Zrrr;rtrr;uus8W*!rr;uurVultUAt2mp&G$lqZ$Qqqu?Zrrr;lr
-rVuis!ri6#r;Zcss8W*!qZ$QqrVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-r;Zcsqu?Zrs8Voq!ri6#rr;rtrr;iqrr;uurVultPQ1X_qZ$Qqqu?ZrrVufrr;Zcs!ri6#r;Zcs
-s8Voqs8W*!rVultqZ$QqJcC<$JcE%UJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-g].9RL&_/Q^]4<6JcC<$JcE"TJ,~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcFR+rrBh6rr at WMJcC<$Z2]=~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-JcFO*!!(OK!!)'ZrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/rrDus!!%TML];l~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8Voqs8W*!rVultR/d0dqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uus8W*!rVultqu?Zrq>^9k!ri6#rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`p
-rVu`pqu?Kmr;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVuiss8Vrrs8W&urr;uus8W*!rVult
-qu?Zrr;Q`sJcCN*J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voqs8W*!rVultR/[-dqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uus8W*!rVultqu?ZrqZ$Nprr;uu!ri6#rVults8W*!qZ$Nprr36(s8N'!
-s8N'!qZ$QqqYpNqrr;rtrr;uus8W*!rr;os!<<#urr2rurr;uuqu?Zrrr;rtrr;rts8W&u!ri6#
-rr;rtrr;uu!<<#urr;uus8W&urr;oss8N'!qZ$Nprr;uus8W*!rVultqZ$Qq!<;lqJcCW-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$QqrVultW;lhsp&G$lqZ$Qqrr;uus8W*!rVult
-rVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?ZrqZ$QqqZ$QqrVults8W*!qu?WqqZ$Qq
-!ri6#q>^HpqYpNqr;Zcss8W*!rr;uus8W*!r;Zcss8N'!rr;uuqu?ZrrVuis!<<#urVults8W*!
-s8W&us8W*!s8W#ts8W*!s8W#ts8W#ts8N'!qZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcCQ+J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!qZ$QqrVultW;lbqp](6nqZ$Qqs8W&us8W*!
-rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!qu?Zr
-q>^Bnq#C?oqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!rr;uuqu?Zrr;Zcs!ri6#r;Zcss8W*!
-s8N?)rr<'!!!*'!qu?m"!!*'!r;clt"p"Z'!<<'!qZ$Kos8W*!s8W*!rVultqZ$Qqs8VusJcCT,
-J,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8VlpV>pGnqZ$QqqZ$Emrr;uurVultrVultqu?Zr
-rVultr;Zcss8W*!#QFc(rr<'!s7lZls8N)rs8N)ps7lZps7u]srr<&ps8E#ms8N)qrr<&ss8N*!
-s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'Arr<'!!!*$!!<<'!!<3$!rr<'!rr<'!
-!<3$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoqrrE*!"T\Q&rr<%Ms,-i,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8Voqs8VlpY5eG#qZ$NpqZ$QqqZ$Qqrr;uus8W*!
-rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)rs8N)rs8N)ps8N)ts8N*!s8N)r
-s8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s82lss8;p!rr<&ss8N'#rr<&ss8N)ursf&/
-!!*$!!<3$!s8N'!s82lss8N'!s8;p$rr<'!rrDoqrr<'!quHcsrrE#trrDlp!!)ut!!%TML];l~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!qZ$QqrVultY5eG#r;ZZpqZ$QqqZ$QqrVult
-!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultqu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Qq!ri6#q>^HpqYpNqr;Zcss8W*!s8W&us8W*!r;Zcss8N'!qu?Tp!ri6#r;Zcs!ri6#
-r;Zcsrr;oss8W&urr;uus8W#ts8W*!!<<#us8W*!s8N'!qZ$Qqs8W#ts8W*!rVultqZ$QqJcC?%
-J,~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!qZ$QqrVultW;lbqp](6nqZ$Qqrr;rts8W*!
-rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultqu?ZrqZ$Qqr;Qj!rr<&ts8N*!s8N)q
-s8N)trs/W)rr<'!rr<&qs8N)qrr<&ts8E#us8N)us8N*!s8E#ts8E#urr<&ms8N)ts8N)us8N)t
-s8N)us8E#ts8E#ts8N)us8E#us8N*!s8N*!s8N*!rr<&qs8N*!s8;rts8N)trr<&ps8N(Ms+:9$~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!qZ$QqrVultW;lkto`+pkqZ$Blrr;fprVult
-qu?Zrr;ZTnrr;uurr;rts8W*!rVultqu?ZrqZ$?k!ri6#rVults8Voqs8Voqs8W*!rr;uuqu?Zr
-qZ$Blrr;uurr;rts8Voqrr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu?Zrs8Vrrs8W*!
-rr;rtrr;iqq>^HpJcC?%J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqs8W*!rVultR/d0dqu?Nnqu?Wqqu?Zrqu?Zrqu?Qo
-rVultrr;rts8W*!rVultqu?Zrq#C6ls8W*!rVults8VoqrVucqs8W*!rVultr;ZcsqZ$Hnr;Zcs
-rVultrr;lrrVlitpAb!iqu?Qoqu?Zrrr;rtrr;uurVults8W*!qu?Zrs8Vrrs8W*!rVultrVufr
-q#:<oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFR+rrBJ,rrC.?rr at WMq#C?oJcC<$J,~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcFO*!!'G,rrC.?rr at WMq#:<oJcC<$!<7Q~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcCf2rrC.?rr at WMJcC<$pA]X~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-ec,ULMZ<\Vqu?WqrVuiss8Vrrs8W&urr;uus8W*!rVult!ri6#r;Zcsqu6Wrqu?ZrrVultrr;uu
-"TJH%s8W&urr;uus8Vusq>^Bnrr;uurr;rtrr;uurr;lrrr;uur;Qcts7cTls8N)]s8N)arr<&r
-rr<%Ms+13ps*t~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;ZTns8W*!rVult!<;Qhs8Voqrr;rtrr;uus8W*!rVultUAt5nqu?WqrVuiss8Vrrs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6Wrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rt
-rr;uus8Voqs8W*!r;Qcts7cTls8N)bs8N)us8N)as8N*!rriE&rrE'!JcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?Zrr;Z`r!<<#urr;rtrr;uus8W*!rVultZMsn)oDegjqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVult!<<#urVultqu6WrqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!
-s8W*!rr;rtrr;uurr;rts8N'!rr;rtrr3$"s8W&urr;uus8W*!r;Q`sr;Q`sq#C?oli6tbjSo8]
-s8VrrJcC<$ci8L~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZN'n(p&G$lqZ$Ko
-s8W#ts8W*!qu?Tps8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!
-s8W*!rVuis!ri6#r;Zcss8W*!s8NE+rrE*!!!*'!!!)rsrr<-#!!)rs!!)rs!!)forrDoqquH`r
-qu?`squ?m"!!*'!qZ-ZrqZ-HlrrE&urW%NLJcF$qJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;Zcss8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!s8W*!rVultZ2a_%q#C?oqZ$Qq
-$3(#*rrE'!!<<)r!<<*!!"&Z*!<3$!s8N'!rVults8W*!rr;uuqYpNqqZ$Qqs8No9rr<'!!!*'!
-!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Zcss8W*!%0$;-rr<'!!!*'!!!)rsrr<-#!!)rs!!)rs
-!!)forrDfnrrE&urrDusrrE&urrE*!rrE*!rrE*!rW!$"!!)iprr<'!q>c*HJcF*sJ,~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;ZWorr;uurVultrVultqu?ZrrVultr;Zcss8W*!#QFc(rr<'!s7lYts8;ros8N)qs8N'!s8;p#
-rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<u;!!*$!!<3$!s8N'!s8N'!
-rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rr<K-!!*$!!<3$!s8N'!r;Zcs!ri6#r;Q`sr;Q`sq#C?o
-q#C9m!ri6#qu?Zrrr;uus8W*!s8W*!s8W*!rr;uuqZ$QqrVlitJcC<$c2W:~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;Zcsrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!$3'u*rr<'!rr<&ts8N)/s8;rps8;ro
-s8N)qs8N'!s8;p%rr<'!rr<&rs8N*!s8;rts8N)ts8N)us8N'#rr<&prr<&ps8;rtrs\u.!!*'!
-!!*'!!!*'!r;cltrrDusrr<-#!!)rsrrE&u#QXl)!<3$!rrE&urrDusrr<-#!!)rs!!)rs!!)fo
-rrDoqqZ$]t!!)orrrE&urr<-#!!)utrr<-#!!*#urrDoqrrE#t!!%TMJcF!pJ,~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;ZcsrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#ts8W*!rVultYlFV$q>^HpqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrs8W#ts8W*!rVultrr;uu!ri6#q>UEpq>^Bns8W&urr;uus8W*!s8W#t
-s8W*!rVuis!ri6#r;Zcsrr;rtrr;rtrr;uur;Zcss8W*!rr;uur;Q`sq#C?oqu?Zrrr;uu!ri6#
-qu?Zrrr;uus8W*!rr3*$s8N'!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;Zcsrr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#ts8W*!rVultZN'k'pAb-mqZ$Qq
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr;uurr;uurVuisq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8W*!
-s8W#trr;rts8W&urr;rtrr;rtrr;rts8W&urr;uurr;uur;Q`sq#C?oqu?Zrs8W&us8W*!r;Zcs
-rr;uus8W*!s8W*!s8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZTnrr;iqr;Zcsqu?Zrr;ZTnrr;uurr;rts8W*!rVultZMsn)oDegjqZ$Qqqu?Zrs8Voq!ri6#
-rr;rtrr;iqr;Z`rq#:<oq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]orVuisrr;rtrVu]orr;fp
-r;Q`sq#C?oqu?Kms8Vuss8W#t"TJH%s8Vrrs8W*!rr;uuqZ$QqJcC<$aT$b~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-r;ZZpqZ$Npqu?Zrqu?Zrqu?QorVultrr;rts8W*!rVultUAt5nqu?Zrqu?Zrs8Voq!ri6#rVult
-r;Zcsq>^Hpq#:<oq#C?orr;rtrr;uus8W*!rVults8W&up](3mqZ$Qqrr;uuqZ$Npq>UEpq>UEp
-q#C?oq>^Hp!ri6#rVuisrVult!ri6#rVultrVultrr;uuqu?ZrJcC<$a8^Y~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcFR+rrC%<!!&PhrrC=Drr at WMJcEdjJ,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcDAB!!&Phrr at WMJcCl4J,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWms8W*!r;Z]qJcGKErrDrrqZ-ZrquHWorrDusrW)osrrE*!nGrUhrW)osqZ-KmrrDusrr at WM
-JcC<$a8^Y~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-rVuWm!<<#ur;ZWoJcGQGrrDrrqZ-ZrqZ-QorW)osrW)rtrW)uunGrUhrW)osq>gBlrrE*!qZ)3I
-JcC<$ao?k~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!SUo`+pkqZ$Qqqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufr
-rVultrr;uuqZ$Qqrr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$Qqr;Z]qrVlitrr;uuM?!MSpAb-mqZ$Qqqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?o
-rVult!ri6#rr;uurr;uuq>UEprr;osJcC<$JcEgkJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqL]@8Pq>^HpqZ$Ems8VrrrVm!#s8N'!rr;os!<;uts8VoqrVultrVult
-!ri6#rr;iqq#:Bqs8VrrJcC<$JcEjlJ,~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVults8W*!rr;iqO8o.YqZ$NpqZ$QqqZ$Ems8Vrrrr;uus8W*!rr;uu!ri9#r;cltq>gKo
-rrE&urrE&urrE*!q>g?krrE&urr at WMJcC<$a8^Y~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$QqrVu`prr2rurVultOT57Zr;ZZpqZ$QqqZ$Qqqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!
-q#C?orr;fps8W*!rr;uuq>^HpJcC<$JcEUeJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;cos8N'!rVultM?!JRq#C?oqZ$Qqqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?o
-rr;fps8W*!rr;uuq>UEpJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqrr;uurVults8N'!rr;rtMZ<YUp&G$lqZ$Qqqu?Zrrr;lrrVuis!ri6#r;Zcss8W*!q#C?o
-s8W*!r;Zcs"TJH%s8W&uqZ$QqJcC<$JcERdJ,~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-qZ$Qqs8W*!r;Zcss8VrrJcGTHrrDoqrrDrrrrE#tr;ccqrr<-#!!)rsrrE*!q>gKorrE*!rrDus
-rr<'!qZ-Hlrr at WMJcC<$_>f#~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB8&!!%TMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcFR+rrB;'rr at WMJcC<$_#Jo~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-JcFO*!!(OK!!)EdrrCIH!!(gSrrDcm!!)3^rrDQgrrD*Z!!)!X!!'P/!!)or!!%TMec1.~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Zcsr;Zcsr;Zcss8VThs8W&urVu`pVZ6Yrqu?Kms8W*!rVult!<;Ng!<;lqrr;rt
-rr;uuqu?Zrqu?Zrrr;rtrr;uu"TJH%s8W&urr;uus8VoqrVu`prr;uurr;uurVm-'s8N'!s8N'!
-rVultqu?Zrq>^<ls8W*!rVults8Voqrr;iqs8W*!rr;uuqu?ZrqZ$EmrVu`prVu`prVu`pqu?Km
-r;ZWos8W*!rr;rtrr;uu!<<#urr;uus8W&urVultrr;iqs8W&urr;uus8W*!rVultqu?Zrr;Q`s
-JcF:#J,~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8VThs8W&urVu]oVuH_sqZ$Qqrr;uus8W*!rVultrVultqu?Zr
-r;Z`r!<<#urr;rtrr;uuqu?Zrqu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rr;rts8W#t!<<#u
-s8W*!rr;rts8W*!s8W*!s8W&urr;uuqu?ZrqZ$Nprr3*$s8N'!rVults8W*!qZ$Nprr3-%s8N'!
-s8E#ps8N)qrr<&us8E#ts8N*!s8N)us8E#us8E#trrN3#s8E#qs8N)us8E#ts8Duus8;p!rr<&u
-s8E#ts8N'!s8E#ts8N*!s8E#ts8E#trr<&qs8E#ts8N*!s8N)ts8N)qrrN3#s7u_Hs4I@%~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!q#C?orVufrrVultrr;uu\,ZF-p&G$lqZ$Qqrr;uu
-s8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqYpNqrr;rts8W*!s8W*!s8W#ts8W*!
-s8W*!rVults8W*!rVuis"TJH%s8W#ts8W*!s8W*!s8W#ts8W*!qu?Zrqu?WqqZ$QqrVults8W*!
-qu?WqqZ$Hnq>^HpqYpNqr;Zcss8W*!rr;uus8W*!rVuiss8N'!rr;uuqu?ZrrVuis!ri6#r;Zcs
-s8W*!s8W&us8W*!s8W#ts8W*!s8W#ts8W&urr2ruqZ$Kos8W*!s8W*!rVultqZ$Qqrr;rtJcF=$
-J,~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;Zcsqu?Zrrr;uurr;uu!ri6#rr;os!<;uts8W*!q#C?orVult!ri6#rr;uurr;uu\,Z at +p](6n
-qZ$Qqs8W&us8W*!rVultrVultqu?ZrrVultr;Zcss8W#ts8W*!qu?ZrqZ$Qq%fZM/rrE*!!!*'!
-!!*'!r;cltrrE*!rrE#trrE*!rrDusrrE*!rr<'!r;cltrrE*!rrE*!#6=c(!<<'!!;lfr!;lfr
-!;ZZp!<)rt!<<*!!;lfr!;ZZn!;QTo!;c]q!;uls!<<*!!<<*!!<3#u!;uls!<<'!!<3#u!;lfr
-!<)rs!!<0#!;uls!<<*!!"/`+!<3'!rr<'!s8;rts8N*!s8;rtrrN3#!<2uu!;c`o!<<*!!<<*!
-!<)rt!;c`q!<<)s!.k1%s*t~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8VoqrVultrVult!ri6#rr;iqZiBq'qZ$QqqZ$Emrr;uu
-rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N';rr<'!!!*$!!<<'!!<<'!!<3$!
-rr<'!rr<&ts8E!"rr<&ss8N*!s8N'(rr<'!!<<'!rr;uus8N*"s8E!"rr<&rs8N)rs8N)ps7lZp
-s8)frs8N)ps8E#ms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8)fns8N)ss8N'#rr<&ss8N*!s8N'>
-rr<'!!!*$!!<<'!!<3$!rr<'!rr<'!!<3$!rrE&uqZ-Zrrr<B*!!*$!!<<'!!<)rt!;c`q!!iN(
-!<3'!!!%TMf`-I~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;ZWos8Vrrrr;uus8W*!rr;uu#lao)!<3$!s8VoqrVultrr;uurr;uus8Voq^&S$2qZ$NpqZ$Qq
-qZ$Qqrr;uus8W*!rVultrVultqu?ZrrVultr;Zcss8W*!"oeQ&rr<&rs8N)qs8N'$rr<'!r;cis
-rrE*!rr<B*!!*$!!<<'!!;uj"!<<'!!;uls!<<*!!!E6$s8W#trr;uus8N<(s8N'!rr<&rs8N)r
-s8N)ps8N)ts8N*!s8N)rs8N)ps8;rms8N)qrr<&ss8N*!s8)fqs8N)ss8N*!s8;rss8;p!rr<&s
-s8N'#rr<&ss8N*!s8N'(rr<'!!!*$!rr;uu$NC)+rr<'!rr<'!r;Zlu!<2uu!;c`q!"&Z*!<3$!
-s8N'!rVultqZ$QqrVlitJcF:#J,~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrs8W*!rr;fps8W*!!<<#u#6+Z's8N'!q#C?orr;fps8W*!rr;uu^&S$2r;ZZpqZ$Qq
-qZ$QqrVult!ri6#rVultrVultqu?ZrrVultr;Zcss8W*!s8W#tqu?Zrq>UQtrrE*!r;cisrrE*!
-rrE*!r;cltrrE#trrE*!rrDusrrE*!r;cltr;cisrrE*!!!*#ur;c`prrDrrrW)fprrE#trrE*!
-rrDrrrrDlpquHQmrrDoq!!)rsrrE*!rrE*!rrE&urrDusrrE*!!!)orr;Zp!!!)rsrr<-#!!)rs
-rrE&urW)uur;cisrrE*!r;cltrr<'!rW)uu!!*#u!!)lqrrE*!r;cltrrE#trrDoqrr at WMd/SU~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q#C?os8Vlps8W*!rr;uu\,Z at +p](6nqZ$Qq
-rr;rts8W*!rr;uurVultqu?ZrrVuisrr;rts8W*!s8W#tqu?Zrq>^Eorr;rtrr;uus8W*!s8W#t
-s8W*!rr;rts8W&urr;uurVuiss8W#trr;uus8N'!rr;osqu?ZrqZ$QqqZ$QqrVults8W*!qu?Wq
-rVm$$s8N'!s8E#ps8N)qrr<&ts8E#us8N)us8N*!s8N)ts8N)urr<&ms8N)ts8N*!s8E#ts8E#t
-s8E#ts8E#ts8N*!s8;rts8N*!s8N*!rr<&urr<&qs8N*!s8;rts8N)us8N)ps8N(Ms3Udr~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!r;Zcss8W*!q#C?os8W*!r;Zcs"TJH%s8W&u\,ZI.o`+pk
-qZ$Blrr;fprVultqu?Zrr;ZTnrr;uurr;rtqu?Zrq>^Eorr;rtrr;uus8W*!rr;rts8VoqrVu]o
-rVuisrr;uurVults8N'!rVuisqu?ZrqZ$Bls8W*!rVults8Voqs8Voqs8W*!s8W&uqu?ZrqZ$Bl
-rr;uurr;uurr;fprr2rupAapgrr;fprVuisrr;rtrr;uurr;rts8W*!qu6Wrrr;iqs8W*!rr;rt
-rr;iqq>^HpJcF*sJ,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8VoqrVults8W*!r;Zcs!<;orVZ6Yrqu?Nnqu?Wqqu?Zr
-qu?Zrqu?QorVultrr;rtqu?Zrq>^Eorr;uurVults8W*!rr;rts8Vrrqu?Qor;ZcsrVultrVult
-s8N'!rVuisqu?Zrq#C6ls8W*!rVults8Voqrr;lrrr;uurr;rtr;ZcsqZ$Hnr;ZcsrVultrr;lr
-rVlitpAb!iqu?Qor;Z`rrr;uurVultrr;rts8W*!qu6Wrrr;iqs8W*!rr;rtrVufrq>^HpJcF'r
-J,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFR+rrBh6rrB,"rrC.?rr at WMq#C?oJcF'rJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcFO*!!'e6rrB,"rrC.?rr at WMq#:<oJcF$qJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcD/<rrB,"rrC.?rr at WMJcE[gJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-e,TFJli-qbV#UGpqu?Nns8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVult
-rVufrrVultrVult!<;forVultr;ZcsJcC<$JcFj3J,~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Q`srVultrr;uu"TJH%s8W&urr;uus8Voqr;ZWos8W*!rr;rtrr;uus8Voqrr2rur;ZHj]Dqm2
-qu?Nns8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uurr;fps8W*!rVult
-!<;for;Zcss8N6&rr<'!!.k0$s+145s*t~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!s8W#trr;rts8W&us8W*!s8W&urr;uus8W&u!<<#u
-rr2rur;ZcsrVultaSu5?oDegjqZ$Qqqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!
-s8W*!s8W&urr;uus8W&urr;uus8W*!rVultrVultq#C?os8VrrJcC<$JcFp5J,~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#ts8W*!"TJH%s8W#ts8W*!s8W*!rVuis!<<#urVults8W*!s8W&urr3*$s8N'!r;Zcs
-s8N'!r;ZcsrVultaT)5>p&G$lqZ$Qqqu?Zrrr;uurr;uu!WN/us8;rts8E#us8N)qs8N*!s8E#u
-s8N*!s8N*!s8;rts8N*!s8N)ts8E!"rr<&ts8N)ts8N)nrr<&ts8E"Ls+13$s5s?3~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-r;Zcss8W#t'`S.5s8N'!s8N'!rr<'!!!*'!!!)rsrr<-#!!)rsrrE*!rrE*!$3:)+!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVulta8c&;q#C?oqZ$Ems8W*!s8W&urr;uu!ri6#rr;os!<;uts8Voqs8W*!%
-fZM/rrE*!!!*'!!!*'!r;cltrr<'!rW)lrrr<-#!!)utrrE#trrDfnrr<'!qZ)3IJcC<$kPp&~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu7T8s8N*!!!*$!!<<'!!<<'!!<3$!rr<'!rr<&ss8N'#rr<&rs8N'0rr<'!!!*$!!<3$!s8N'!
-r;Zcss8N'!r;ZcsrVult`;fc9qZ$QqqZ$Ems8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:
-rr<'!!!*'!!!*'!!!*$!!<3$!rr<&rs8N'#rr<&ts8N)ts8N)ns8N''rrE'!!<3%Ms+13$s6'E4~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#us8;p(rr<'!!!*'!!!)rsrrE*!
-!!)rsrrE#trrC at Er;c`pr;c]orrDoqrrDrrrr<'!rW)rtq>gQqrr<'!rW!0&!!*'!!!)lqrr<0$
-!!*&t!<3#u!<<*!!!`H'!<3$!s8E#rs8N'#rr<&ts8N)ts8N)ns8N)us8N(Ms+13$s5j92~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W#ts8W*!s8W*!s8W#ts8W*!r;Zcs!<<#urVultrr;oss8N-#rrE&urrDusrrE*!rrE#t
-!!)rsrrC(=quHQmrrDoqrrDrrrrE&urr<'!q#LHprr<'!rW!0&!!*'!!!)iprW)uur;cisrrE*!
-rrE*!r;cltrrE#trW!$"!!)utrrE#trrDfnrr at WMJcC<$i;\<~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVultrr;uurVultrr;rtrr;rtrr;rtrr;rts8W*!rr;uu
-r;ZcsaT)2=pAb-mqZ$Qqqu?Zrrr;uu!ri6#rVults8W*!s8W*!#6+Z's8N'!q>^Eorr;rtrr;uu
-s8W*!s8W#ts8W&us8W&urr;uurr;uurVultp\t3nJcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$Qqrr;rtrr;uus8W*!rr;rts8Vlprr;fprVuisrr;rtrVu]orr;fpr;ZcsaSu5?oDegjqZ$Qq
-qu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcsq#C?o
-JcC<$JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-qZ$QqrVultrr;uus8W*!rVults8VrrqZ$Koqu?Zrrr;rtr;ZZpqu?WqqZ$Qq\GuR/qu?Zrqu?Zr
-rVuisqu?Zr!ri6#r;Zcss8Voqrr;rtrr;uurVults8W*!rVultr;Zcsq>^HpqZ$Qqq#C?oJcC<$
-JcFX-J,~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcFR+rrA5^rr at WMJcC<$hZ&*~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8W#tqZ$Qqr;Zcsr;Zcss8Voq!ri6#rr;uurVult#6+Z's8N'!rVultrVufrrVultrVult
-!<;ip`rH&=r;ZNls8W*!r;ZZpq>^HpqZ$Emrr;uurVu9cs8VusrVuisrr;uuqYpNqqu?ZrrVult
-rr;uu"TJH%s8W&urr;uus8Vrrqu?Qorr;uurr;rtrr;uu"TJH%s8W&urr;uuqYpNqq#C6ls8W*!
-rVults8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVu`pr;ZZprVucqq>^<lr;ZWos8W*!rVultrr;uu
-!<<#urVlp!s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$NprVultrr;iqs8W&urr;uu
-s8W*!rVult!ri6#r;Zcsqu6WrqZ$NprVults8Voqs8W*!rVults8N'!r;Zcss8N'!r;Q`sqZ$Qq
-r;Q`sq#>j~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;ZWos8Vrrr;Z`rrVuisrr;rts8Voq!ri6#rr;rtrr;uu"TJH%s8W&urr;uus8Vlps8W*!rVult
-!<;ip`rH&=r;ZNl!<;utrVu`pqZ$QqqZ$Emrr;uurVu9c!<;ips8W&urr;uuqYpNqqYpNqrr;rt
-rr;uu"TJH%s8W&urr;uus8Vlprr;fps8W*!rr;rtrr;uu"TJH%s8W&urr;uuqYpNqq>^Eo!<<#u
-!ri6#rVults8Voqs8W#t!<<#u"TJH%s8W&uqYpNqqZ$?ks8VrrrVu]orr;iqqZ$Blrr;cos8W*!
-s8W&urr;uu!<;utrr3$"s8W&urVuiss8Voq!<<#urr;uus8W*!rVultqYpNqqZ$Nprr;rtrr;iq
-s8W&urr;uus8W*!rVult!ri6#r;Zcsqu6WrqZ$Nprr;rts8Voqs8W&urr;uus8N'!r;Zcss8N'!
-r;Q`sqZ$Qqs8W*!"9/B$!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrs8W&urr;osrVuisrr;rts8W*!qu?Zrrr;rts8W*!s8W*!s8W&urr;uus8W*!rVult
-s8W*!rVultrVulte,TFJo`+pkq#C?or;Z]qrVlitrVultqu?ZrqZ$Qqrr;uus8W*!rVultrVult
-qu6Wrr;ZcsrVults8W#ts8W*!qYpNqqZ$Qqs8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVults8W&u
-rVults8W*!s8W&us8W*!s8W*!s8W#ts8W*!qYpNqqZ$Qqr;Qj!rr<&ts8N*!s8N)qs8N)srr`?%
-!!*&u!;ZWp!;c`q!<)rt!<<*!!<3#u!<<)u!<)rt!<<*!!<3#u!;lcr!<)rs!<<*!!<)rt!<<*!
-!<<)u!<3#u!!*&t!<3!"!<<)t!<<)t!<<*!!;lfp!<<*!!<<*!!<)rt!;c]q!;c`o!<<)u!<2uu
-!;c`o!<<*!!<<*!!<)rt!!<0#!<)rt!;c]q!;c`p!<3#t!<<*!!;c`p!<3#u!<<'!!;uls!<<'!
-!;uis!;ZZp!<<)s!;c_G~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;Zcsqu?Zrrr;uurr;osrVuisrr;rts8W*!qZ$Qqs8W&us8W*!s8W*!s8W#ts8W*!s8W*!rVuis
-!ri6#rVultrVulte,T at HpAb-mq#C?or;Z]qrVlitrr;uuqZ$QqqZ$Qqs8W&us8W*!rVultrVult
-qu6WrrVuisrVults8W#ts8W*!qYpNqqZ$Qqs8NK-rr<'!!!*'!!!*'!r;cltrrE*!rrE#trW!$"
-!!)rsrrE*!rrE*!$ip;-s8N'!s8N'!s8W#ts8W*!qYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!rr;uus8W*!r;Zcss8W*!rr;uuqu6Wrr;Zcs!<<#urVuis"TJH%s8W#t
-"TJH%s8Vuss8N-#s8W#ts8W#ts8W*!qu?Qo#6+Z's8N'!rVultqYpNqqZ$Kos8W&urr2ruqZ$Ko
-s8W*!s8W*!rVults8W*!rr;uuqYpNqqZ$Ko#lal)rrE*!!!)lqr;cltrrE*!!!)rsrrE*!!!)rs
-!!)iprrE*!r;cZnJ,~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8W*!s8W*!rVult!ri6#rr;os!<;uts8Voqs8W*!%fZM/rrE*!!!*'!!!*'!r;cltrr<'!
-rW)lrrr<-#!!)utrrE#trrCIHquHQmrrDiorrE#trrE*!rrE&uqZ-KmrrDoqqZ-WqrrE#trrE#t
-rrDrr!!)utrrDusrW!6(!!*$!!<3$!qYpNqqZ$Qqs8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;lqs8W*!r;Zcss8W*!!<<#uqYpNqr;Zcs!ri6#qu?Zr,Q@`Ds8N*!
-!!*$!!<<'!!<3$!s8N*!rr<'!!!*$!rr<'!s8)frs8N'*rr<'!!!*'!!!)utrrDoq!!)lqr;[!#
-!!*$!rr;iqs8W*!$3'u*rr<'!rr<&ts8N*!s8N*!s8N)prr<&qs8;p%rr<'!!<<)q!<<)s!!WB&
-!<<'!r;Zcss8Voqq>^Hp"9/?$s8;rps*t~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;ZWos8Vrrrr;uus8W*!rr;os!<;uts8Voqs8W*!)?0[:rr<'!!!*'!!!*'!!!*$!!<3$!rr<&r
-s8N'#rr<&ts8N)ts8N)Ps8;ros8E#ps8N)os8N)ts8N*!s8N)us8)fms8N)qs7u`qs8N)ts8N)t
-s8N)rrr<&ts8N)rs8N')rr<'!!!*$!!;c]q!;ZX6!<3$!rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!
-r;Zcs!ri6#r;Zcss8W*!(B4 at 7rr<'!!!*'!!!*'!!!*$!!<3$!qYpNqqZ$QqqZ$?ks8Voq!ri6#
-q>^Bnp\t3nqZ$QqrVuis!<;orrr;uur;Zcss8Vrr!<;uts8N'!r;Zcs!ri6#qu?Zrs8W#t'`S.5
-rr<'!rr<'!rr<'!!<<'!!<;ut"TJH%s8Vrrs8W*!!<;rss8W*!rVultqYpNqqZ$Qq!<;ut!WN0!
-s8)frs8N'*rr<'!!!*'!!!)utrrE&urr<-#!!)ip!!)lqrr<?)!<3$!rrE*!q>gQqrr<?)!!*$!
-!<<'!r;Zcss8Voqq>^HprVlitq#>j~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zr!<<#urr;fps8W*!!<<#u#6+Z's8N'!qZ$Qq"9/B$s8;rss8N*!s8N''rr<'!!!*&u
-!;uls!!<0#!<)rt!<)rt!87DN!;ulp!;c`q!;QTo!<3#p!<2uu!<)rt!;lfr!;c`q!<3#u!<<*!
-!<)rt!<)rt!;lcr!<)rt!;uls!<<*!!<<)t!;c]q!;ZZn!<<'.!<3$!s8N'!s8N'!s8W#ts8W*!
-rVuis!ri6#r;Zcsrr;os!<;utrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qu?WqqZ$Hn
-q#:<oqZ$QqrVults8W*!s8W&us8W*!r;Zcss8W*!r;Z]qs8N'!r;Zcs!<<#urVuiss8W#ts8N`4
-rr<'!rr<'!rr<'!!<<'!!<<)u!!`H'!<<'!!;lfr!<<)t!<<*!!<)rt!;c]q!;c`q!!*&u!<<'!
-!<2uu!;c`q!<<)t!<<*!!<)rt!<3#u!!<0#!;ZWp!;c`q!!*&u!<<'%!<<'!!;c`q!!*&s!<<*!
-!<)rt!<<'!!;uis!;ZZp!;$5@~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!<;ips8W*!!<<#u#6+Z's8N'!q>^Eos8W#trr;uus8W*!s8W#ts8W*!rVuis
-!ri6#rVultrVultdf94Fq#C?oq#C?orr;cos8N'!rVultqu?ZrqZ$Qqrr;uus8W*!rr;uur;Zcs
-qu6WrrVuisrVults8W*!s8W#tqYpNqq>^Bns8W&urr;uus8W*!s8W#ts8W*!rVuis!<<#urVult
-rr;rtrr;rtrr;uus8W*!s8W#tqYpNqqZ$QqqZ$QqrVults8W*!qZ$QqqZ$Qq!<<#uq>UEpqZ$Qq
-rVults8W*!rr;uus8W&urVults8W*!pAY*mrVuiss8W*!rVultrr;oss8W&urr;uurr;rts8W*!
-s8W*!s8W*!s8W*!qu?Zrrr;rtrr2rurVultqYpNqqZ$Qqs8W*!s8N'!rr2ruqZ$Qqs8W#ts8W*!
-rVlitrVufrq#:<oqZ$Qq!<<#us8N3%s8N'!qZ$Qqs8W#ts8W*!rr;uurr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?Zrrr;uu!ri6#rVults8W*!s8N?)s8N'!s8N'!q>^Eorr;rtrr;uus8W*!s8W#ts8W&u
-s8W&urr;uurr;uurVulte,TCIp&G$lq#C?orr;uurVults8N-#s8W&uqZ$QqqZ$Qq!<;uts8W&u
-!<<#ur;Zcsqu6Wrr;Z`r!<;uts8W*!rr;rtqYpNqq>^Eorr;rtrr;uus8W*!rr;rts8W*!!<;rs
-rr;rt!<<#urVuisrr;rtrr;uus8W*!rr;rtqYpNqqZ$Kos8W*!!ri6#rVults8W*!qZ$Kos8W*!
-"TJH%s8W&uqYpNqqZ$Qq!<;rss8W*!rr;rts8W&u!<<#urr;uupAY0os8W#trr;corr;rtrr;rt
-rr;uurr;rts8W*!qu?Zrs8W*!qu?Zrrr;rtrr;rt!ri6#q>UEpqZ$Qqqu6Wrrr2ruqZ$Qqrr;rt
-rr;uu!<<#ur;Z`rq#:<oqZ$Qqqu6d!s8N'!qZ$Qqrr;rts8W&u!<<#urr2rur;Q`sq>^HpoDa=~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-r;Zcsqu?ZrrVufrr;Zcs!ri6#r;Zcss8Voqrr;rtrr;rtrr;uus8W*!rr;rtrr;iqrVu`pr;Zcs
-`;fi;q#C?os8W*!qu?Zr!<;orqZ$QqqZ$EmrVucqqu?Zrqu6Wrqu?Nnrr;uurr;rtqYpNqq#C?o
-rr;rtrr;uus8W*!rr;rts8Voqr;ZZpr;Z`rrr;rtrr;uus8W*!rr;rtqYpNqq>^9k!ri6#rVult
-s8Voqrr;iqs8W*!rr;rtqu6WrqZ$EmrVultrVultrr;lrrVultpAb!ir;ZWor;Zcsrr;rtrr;uu
-rVults8W*!qu?Zrs8Voq!ri6#rVultrr;iqq>UEpqZ$Qqqu6Wrrr;iqs8W*!rr;rtrr;iqr;Z`r
-q#:<oqZ$Qqqu6]ts8Voqs8W*!rr;rtrr;lrrVlitr;Q`sqZ$Qqo)F4~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-YlF_'q>^Hp])Vd1h>dKT^Ae05WrE&!a8Z,>JcGKE!!'t;!!'t;rrDWiJ,~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcFR+rrCmTrrBe5!!'&!!!((>!!%TMp\t3n`;]f;`;]f;nc++~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcE4ZrrBe5!!'&!!!((>!!%TMp\t3n`;]f;Zi>O~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-JcEjl!!%TMJcC<$Jc>`MJ,~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-rVultrVultrr;uu"TJH%s8W&urr;uus8Voqr;ZZprr;uurVultrr;uu"TJH%s8W&urr;uuScA]i
-rVlitJcC<$JcC<$!<7Q~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8Vlprr;cos8N'!rr;rtrr;uu"TJH%s8W&urr;uuScA]i
-JcC<$JcC<$qu;0~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W&urr;uu"TJH%s8W#ts8W*!s8W*!rVuiss8W*!rVults8W*!s8W&urr;uu"TJH%s8W#t
-s8W*!]Dqj1p&FpirVuQk!WN/us8E#ts8)eIs+13$s,d82~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8W#ts8N9's8N'!s8Vus#6+Z's8N'!r;Zcs!ri6#r;Zcss8W*!s8NK-rr<'!!!*'!!!*'!
-r;cltrrB\2quHKkrr<'!rW)uurW!-%!!*$!!<)p!!<<)r!<<)q!.k0$s+134s*t~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-r;Zcss8No9rr<'!!!*'!!!*'!!!*$!!<3$!s8N'!r;Zcs!ri6#r;Z`r)?0[:s8N*!!!*$!!<<'!
-!<<'!!<3$!rr<&/s82ljs8N*!s8N)ss8N)trr`?%rr<&us8N'!s8E#us8N(Ms+13$s,m>3~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8E#urtb\8!!*$!!<3$!s8N'!s8N'!
-rr<'!!!'k8r;c]orW)fpqZ-Zr!!)orrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8NN.rr<'!rr<'!rr<'!s8;rts8N)ss8N'#rr<&ss8N)us8;rtrs\u.!!*'!!!*'!!!*'!
-r;a\6r;ccqquHTnrrE*!rrE*!rrDusrrE#t"9AK%!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Tps8W&urr;uus8W*!rr;rts8W*!rVuis!<<#urVultrr;oss8W&urr;uus8W*!s8W#t]Dqd/
-q#C?orr;uus8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qu?Wqrr;rtrr;uus8W*!rr;rts8W*!s8W#trr;corr;rtrr;rtrr;uus8W*!rr;rt]Dqm2o`+dg
-s8Vrrs8W#t"9/B$s8)frs8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-qZ$Qqrr;rtrr;uus8W*!rVults8Voqr;ZWor;Zcsrr;rtrr;uus8W*!rr;rtXT/.trVufrrr;rt
-!WN/us8E#ts8N)us8N(Ms+13$s,m>3~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-q#C?okPkM^JcG3=!!%TMJcC<$Jc>`MJ,~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtJcG`MrVlitJcC<$JcC<$!<7Q~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-qu?Wqs8W*!s8N'!r;Zcss8N'!qZ$Kos8W*!"TJH%s8W&uT)ScjjT#5[JcC<$JcC<$qu;0~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uScAZhp&FpirVuQk!WN0!s82lss8)eIs+13$s,d82~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnS,`Bdq#:<orr;uus8W&us8N0$rr<&trrN3#s8E!$rr<'!
-s8E#us8N(Ms+13$s,m>3~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>^6js8Vrrs8W*!qZ$KoQiI!aq#C9ms8W*!r;ZcsrVm!#s8N'!rr;uu!ri6#rr;uuJcC<$
-JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$HnUAt/lqu?TpqZ$Em!ri6#qu?ZrrVm!#s8N'!rr;uu!ri6#
-rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcsq>UEpr;Zcss8N'!qZ$QqqZ$Qq!<<#uS,`Bdq>UEprr;uus8W*!r;ZcsrVm!#s8N'!rr;uu
-!ri6#rr;uuJcC<$JcCl4J,~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-r;Z`rrVls"s8N)ss8N*!rr<&qs8E#srriE&!!*'!rW&Pir;cTlrrE&urrE*!rrDusrrE#t$ip>-
-!!*'!!!*'!!!*#urr at WMJcC<$OoKq~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qu?Kms8N'!r;Zcss8Vrrrr;fp!ri6#rr;rtTDnlkoDe[fs8Vrrs8W#t!WN0!s82lss8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-qZ$Hnrr2rur;Zcss8VrrrVucqs8W*!rVuisOT5=\!ri6#r;Zcsr;Zcs!WN/trr<&ts8N)us8N(M
-s+13$s,m>3~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZWor;Z]qqZ$KorVucqq>^?mqZ$Hnrr;uurr;uurVult!ri6#rVults8W*!r;Zcss8Voqs8W*!
-rVults8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;ZQmrr;iqrr;cos8VrrqZ$BlrVu]os8W*!rr;uurr;uus8W&urr;uus8W&urr;rts8Voqs8W&u
-rr;uus8N'!r;ZcsdJs4HrVlitJcC<$JcC<$!<7Q~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;Zcsrr;rtrr2rurr;uurr;uurVults8W*!rr;uuqu?Zrrr;rts8W&urr;uus8W*!rr;rts8W*!
-s8W&urr;uus8W&urr;rts8W*!qZ$Nprr;uus8N'!r;Zcsn,NCfoDediqu?Wq!<;or!WN/us8N)t
-s8N'#rr<%Ms+13$s,[21~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVuis!ri6#rr;uuqu?ZrrVults8W*!r;Zcs"TJH%s8W#ts8W*!
-s8W#ts8W*!s8W&urr;rts8W*!qZ$Kos8W*!s8N'!r;Zcsn,N=dpAb$jrr;Wk!WN0!s82lss7u_H
-s+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W*!qu?Zr!ri6#rr;uuqu?ZrrVults8W*!r;Zcss8W*!$NC)+rrE*!
-!!*'!r;cltrrE*!r;Zitr;cltq>gQqr;cltrrE*!!!)rsrrDHdquHEirrE*!rrDusrrE#t"9AK%
-!!*#u!W`9#rW)uurr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8Vusrr;uuqu?Zr!<;orqZ$Qqr;Zcs!ri6#r;Zcss8W*!#QFc(rrE'!!<3#u!!iN(
-!<3$!s8W#t!<;uts8Voqs8W*!#lal)rr<'!rrDusrrD`lr;c]orW)coquHcsrrDusrrE#t"9AK%
-!!*#urr<-#!!*#urr at WMJcC<$OoKq~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;Zcsr;Zcss8N-#s8W&us8W&urVuis!<;utrr;oss8W*!r;Qm"s8N'!r;Zcss8W*!"9/B$s8;rs
-s8N'+rr<'!!!*'!!!*&u!!`H'!<<'!!;c`q!!rT)!<3$!s8N)ss8N)ls8;rqs82lns8)ctrr<&r
-s8N)trr`?%rr<&us8N'#rr<&us8N(Ms+13$s,m>3~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;ZcsrVuiss8N'!rr;uurr;uurVults8W*!pAb-mrVults8W*!r;Zcss8W#ts8W#trr;uus8W#t
-s8W*!!<<#u#6+Z's8N'!qZ$Qqs8W#ts8W*!rr;uumJm(aq>^Hprr;uus8W*!r;ZcsrVm!#s8N'!
-rr;uu!ri6#rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;Zcss8W#trr2rurVults8W&us8W&us8W*!pAb-mrr;rts8W&us8W&urVuisrr;rtrr;uus8W#t
-s8W*!s8N?)s8N'!s8N'!qZ$Qqs8W#ts8W*!rr;uumf37dp&G$l!<<#us8W&us8N3%s8N'!rr3$"
-s8W&u#6+Z's8N'!rr;uuJcC<$JcCl4J,~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-r;ZTnrVlitrVultrr;iqrr;uupAashrVu]orVuisrr;uurVultrr;rts8W*!r;Zcss8Voqs8W*!
-rr;rts8VoqhuEQRrr;lrs8W#t!WN0!s82lss8N)us8N(Ms+13$s,m>3~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-jo>>\irAuX`;]f;JcC<$JcC<$`W(G~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-JcC<$JcC<$JcEdjJ,~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
-
-%%EndDocument
- @endspecial 299 x Ff(5.)41 b(Syst\350me)20 b(d'inf\351r)o(ence)581
-3442 y Fe(Nous)25 b(a)n(v)n(ons)f(d'une)f(part)i(un)f(arbre)g(re)o
-(groupant)d(les)26 b(fonctionnalit\351s)c(de)j(l'application)e(et)463
-3542 y(contenant)f(les)i(informations)e(n\351cessaires)i(pour)e(le)i
-(choix)f(de)g(la)h(mod\351lisation)f(graphique)e(et)463
-3641 y(d'autre)k(part)g(nous)g(a)n(v)n(ons)h(d\351\002nit)g(des)g
-(pattern)f(graphiques)f(potentiellement)g(appliquable)g(\340)463
-3741 y(chaque)j(noeud.)f(Nous)i(e)o(xpliquons)e(ici)j(comment)d
-(choisir)i(le)h(pattern)e(ad\351quat)g(en)h(fonction)463
-3841 y(des)c(informations)d(contenues)i(dans)g(l'arbre)f(tout)i(en)f
-(respectant)g(les)i(sp\351ci\002cations)e(du)g(p\351ri-)463
-3940 y(ph\351rique)18 b(d'af)n(\002chage.)g(Il)j(s'agit)f(def)n
-(fectuer)e(2)i(\351v)n(aluations)f(pour)g(chaque)g(pattern.)463
-4239 y Ff(5.1.)40 b Fd(Evaluation)20 b(s\351mantique)581
-4438 y Fe(L)-8 b('\351v)n(aluation)18 b(s\351mantique)h(d'un)f(pattern)
-h(doit)h(conclure)e(\340)j(sa)f(compatibilit\351)f(ou)g(non)g(a)n(v)o
-(ec)463 4538 y(ce)31 b(noeud.)d(Chaque)i(pattern)f(poss\350de)h(sa)h
-(propre)d(\351v)n(aluation)h(s\351mantique.)g(Elle)i(se)g(f)o(ait)f(en)
-463 4638 y(fonction)14 b(des)j(caract\351ristiques)e(propre)f(au)i
-(pattern)g(et)g(v\351ri\002e)g(si)h(le)g(noeud)d(lui-m\352me)h(et)i
-(ses)g(\002ls)463 4737 y(remplisse)26 b(ces)i(caract\351ristiques.)d(P)
-o(ar)i(e)o(x)o(emple)e(pour)g(remplir)h(les)h(conditions)e(d'un)h
-(certain)463 4837 y(patern,)31 b(un)h(noeud)e(doit)i(poss\351der)f(un)h
-(certain)f(op\351rateur)f(s\351mantique)h(et)i(ses)g(\002ls)g(doi)n(v)o
-(ent)463 4936 y(pouv)n(oir)28 b(\352tre)j(instanci\351s)f(en)g(tel)h
-(ou)e(tel)i(pattern.)e(Si)i(c'est)g(le)f(cas)h(on)f(passe)h(\340)f
-(l'\351v)n(aluation)463 5036 y(spatiale)20 b(sinon)g(on)g(teste)h(un)f
-(autre)f(pattern.)p eop end
-%%Page: 8 8
-TeXDict begin 8 7 bop 463 490 a Fg(8)95 b(L)-7 b('objet.)23
-b(V)-10 b(olume)20 b(8)f(\226)g(n2/2005)463 753 y Ff(5.2.)40
-b Fd(Evaluation)20 b(spatiale)581 944 y Fe(L)-8 b('\351v)n(aluation)16
-b(spatiale)i(v\351ri\002e)g(que)g(le)g(pattern)f(respecte)h(les)g
-(caract\351ristiques)f(du)h(p\351riph\351-)463 1044 y(rique)g(d'af)n
-(\002chage.)e(Dans)j(un)f(premier)f(temps,)i(nous)f(testons)g(si)i(le)f
-(pattern)f(ne)g(d\351passe)h(pas)f(les)463 1144 y(limites)25
-b(d'af)n(\002chage)c(de)j(ce)g(p\351riph\351rique)e(a\002n)i(de)f(pouv)
-n(oir)f(le)j(visualiser)f(en)f(entier)-5 b(.)24 b(Si)h(c'est)463
-1243 y(le)19 b(cas)h(nous)e(utilisons)h(le)g(pourcentage)d
-(repr\351sentant)h(la)i(force)f(des)h(noeuds)f(en)g(retirant)h(les)g
-(\002ls)463 1343 y(poss\350dant)j(une)h(force)f(inf\351rieure)g(\340)h
-(un)g(certain)g(seuil.)g(Nous)g(r\351it\351rons)g(cette)g(op\351ration)
-e(a)n(v)o(ec)463 1442 y(des)c(seuils)h(de)e(plus)h(en)g(plus)g(\351le)n
-(v\351s)g(tant)g(que)f(le)h(pattern)f(d\351passe)h(les)g(limites)h(du)e
-(p\351riph\351rique.)463 1542 y(Nous)25 b(e)o(xprimons)e(ensuite)h(un)h
-(pourcentage)d(de)j(recouvrement)d(en)j(fonction)e(du)i(nombre)e(de)463
-1642 y(\002ls)e(que)f(nous)g(a)n(v)n(ons)g(retir\351s.)463
-1741 y(Dans)25 b(un)f(deuxi\350me)f(temps)i(nous)f(e)o(xprimons)f(un)h
-(pourcentage)e(qui)j(donnera)e(la)i(note)f(\002nale)463
-1841 y(du)e(pattern)f(pour)f(un)i(noeud.)e(Ce)j(pourcentage)c(est)k
-(\351tabli)f(en)g(fonction)e(de)i(la)g(surf)o(ace)g(utilis\351e)463
-1941 y(par)e(le)g(pattern)g(par)g(rapport)e(\340)j(la)f(surf)o(ace)g
-(du)g(p\351riph\351rique)d(d'af)n(\002chage.)463 2232
-y Ff(5.3.)40 b Fd(Algorithme)20 b(d'\351valuation)581
-2423 y Fe(Il)29 b(s'agit)f(de)g(tester)h(tous)f(les)h(patterns)f(pour)f
-(chaque)g(noeuds)g(et)i(de)f(garder)f(le)i(meilleur)-5
-b(.)463 2523 y(C'est)16 b(un)f(probl\350me)e(NP-complet.)h(Nous)h
-(utilisons)g(pour)f(cela)i(un)e(algorithme)g(r\351cursif.)g(Celui-)463
-2622 y(ci)31 b(teste)g(chaque)e(pattern)h(sur)g(les)i(\002ls)f(de)g(la)
-g(racine)e(et)i(leur)f(\351v)n(aluation)f(s\351mantique)g(lance)463
-2722 y(l'\351v)n(aluation)13 b(des)j(pattern)e(appropri\351s)g(sur)h
-(leurs)g(propres)f(\002ls.)i(Si)g(au)g(moins)e(un)h(pattern)g(ren)m(v)n
-(oie)463 2822 y(un)24 b(pourcentage)d(sup\351rieur)h(\340)j(0)f(pour)e
-(chaque)h(\002ls,)i(alors)f(on)f(passe)i(\340)f(l'\351v)n(aluation)e
-(spatiale.)463 2921 y(La)g(r\351cursi)n(vit\351)e(s'arr\352te)h(aux)f
-(feuilles.)h(Il)h(s'agit)g(ensuite)f(de)g(garder)e(le)j(meilleur)f
-(pattern)f(pour)463 3021 y(chaque)f(noeud)g(en)h(comparant)e(leur)i
-(note.)463 3304 y Ff(6.)41 b(Implmentation)20 b(du)h(modle)581
-3496 y Fe(Nous)f(a)n(v)n(ons)g(choisit)g(d'impl\351menter)e(notre)h
-(mod\350le)h(a)g(l'aide)g(du)g(langage)e(Lisaac.)463
-3787 y Ff(6.1.)40 b Fd(Introduction)20 b(au)h(langage)e(Lisaac)581
-3978 y Fe(Lisaac)26 b(est)g(un)f(langage)e(imperatif)h(a)i(prototype.)d
-(Il)j(se)g(dif)n(f\351rencie)d(des)i(langages)f(orien-)463
-4078 y(t\351s)c(objet)f(car)g(il)g(ne)g(n\351cessite)h(ni)f(la)h
-(creation)e(de)h(classe,)g(ni)h(l'instanciation)d(de)i(l'objet)g(dans)g
-(le)463 4177 y(corps)e(du)g(programme.)e(En)i(Lisaac)h(\(uni)n(v)o(ers)
-e(a)h(prototype\))e(tout)j(est)g(objet)f(\(pas)h(de)f(type)g(primi-)463
-4277 y(tif)g(comme)e(en)i(Ja)n(v)n(a\).)f(Un)g(objet)g(n'a)g(pas)h
-(besoin)f(d'\352tre)g(instanci\351,)g(il)h(est)g("vi)n(v)n(ant")e
-(d\350s)i(le)g(d\351b)n(ut)463 4377 y(du)24 b(programme.)d(Ces)26
-b(objets)e(peuv)o(ent)e(se)j(cloner)f(et)h(peuv)o(ent)d(poss\351der)h
-(plusieurs)h(parents)g(\340)463 4476 y(n'importe)18 b(quel)i(moment)f
-(de)h(la)h(vie)f(du)g(programme)d(\(multi-heritage)h(dynamique\).)463
-4767 y Ff(6.2.)40 b Fd(Reprsentation)21 b(par)f(h\351ritage)g
-(dynamique)f(de)h(l'arbre)581 4959 y Fe(Chaque)f(noeud)f(de)h(notre)g
-(arbre)g(est)h(repr\351sente)f(par)g(un)g(prototype)e(appel\351)i
-("group")f(ayant)463 5058 y(un)g(lien)h(d'h\351ritage)d(statique)j(a)n
-(v)o(ec)f(un)g(prototype)e("groupref".)g(Dans)j(ce)f(dernier)m(,)f
-(sont)i(re)o(grou-)463 5158 y(p\351es)d(toutes)f(les)h
-(caracteristiques)f(n\351cessaires)g(du)g(noeud.)f(Chaque)h(pattern)f
-(est)i(repr\351sent\351)f(par)p eop end
-%%Page: 9 9
-TeXDict begin 9 8 bop 2158 490 a Fg(Interf)o(ace)19 b(Utilisateur)g
-(Automatique)95 b(9)463 753 y Fe(un)15 b(prototype)e(poss\351dant)h
-(chacun)g(une)h(m\351thode)e(d'\351v)n(aluation)g(s\351mantique)h(et)i
-(spatiale,)f(et)h(h\351-)463 852 y(rite)21 b(du)g(prototype)d
-(groupref.)h(Ce)i(prototype)e(contient)h(uniquement)f(des)i
-(m\351thodes)f(d\351f)n(f\351r\351es)463 952 y(\(abstraites\))g(qui)h
-(sont)f(d\351\002nies)h(dans)g(les)g(prototypes)e(des)i(pattern.)f(En)h
-(ef)n(fet)f(nous)g(changeons)463 1052 y(dynamiquement)d(le)j(parent)g
-(d'un)e(noeud)h(\(prototype)f(group\))g(pour)h(le)h(f)o(aire)g
-(h\351riter)g(d'un)f(pat-)463 1151 y(tern)30 b(et)g(ainsi)h(pouv)n(oir)
-d(utiliser)i(ses)h(propres)e(fonctions)f(d'\351v)n(aluation.)g(C'est)j
-(l'h\351ritage)d(en)463 1251 y(losange.)21 b(Il)h(permet)f(au)h
-(prototype)d(group)h(de)i(connaitre)f(\340)h(la)g(compilation)e(les)j
-(m\351thodes)e(qui)463 1351 y(seront)26 b(utilis\351es)i(apr\350s)f(un)
-f(h\351ritage)g(dynamique)e(v)o(ers)j(un)f(pattern.)g(Ce)i(type)e
-(d'h\351ritage)f(est)463 1450 y(illustr\351)20 b(sur)h(le)f(sch\351ma)g
-(ci-dessous.)463 3908 y @beginspecial 35 @llx 514 @lly
-479 @urx 780 @ury 4440 @rwi @setspecial
-%%BeginDocument: figures/GUII.ps
-%!PS-Adobe-3.0
-%%BoundingBox: 35 514 479 780
-%%Title: GUII
-%%CreationDate: Wed Feb  6 17:08:46 2008
-%%Creator: Tgif-4.1.45-QPL written by William Chia-Wei Cheng (bill.cheng at acm.org)
-%%ProducedBy: (unknown)
-%%Orientation: Portrait
-%%Pages: 1
-%%DocumentFonts: (atend)
-%%EndComments
-%%BeginProlog
-
-/tgifdict 91 dict def
-tgifdict begin
-
-/tgifellipsedict 6 dict def
-tgifellipsedict /mtrx matrix put
-
-/TGEL % tgifellipse
- { tgifellipsedict begin
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 0 360 arc
-      savematrix setmatrix
-   end
- } def
-
-/tgifarrowtipdict 8 dict def
-tgifarrowtipdict /mtrx matrix put
-
-/TGAT % tgifarrowtip
- { tgifarrowtipdict begin
-      /dy exch def
-      /dx exch def
-      /h exch def
-      /w exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      dy dx atan rotate
-      0 0 moveto
-      w neg h lineto
-      w neg h neg lineto
-      savematrix setmatrix
-   end
- } def
-
-/tgifarcdict 8 dict def
-tgifarcdict /mtrx matrix put
-
-/TGAN % tgifarcn
- { tgifarcdict begin
-      /endangle exch def
-      /startangle exch def
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 startangle endangle arc
-      savematrix setmatrix
-   end
- } def
-
-/TGAR % tgifarc
- { tgifarcdict begin
-      /endangle exch def
-      /startangle exch def
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 startangle endangle arcn
-      savematrix setmatrix
-   end
- } def
-
-/tgifpatdict 10 dict def
-
-/tgifpatbyte
- { currentdict /retstr get exch
-   pat i cellsz mod get put
- } def
-
-/tgifpatproc
- { 0 1 widthlim {tgifpatbyte} for retstr
-   /i i 1 add def
- } def
-
-/TGPF % tgifpatfill
- { tgifpatdict begin
-      /h exch def
-      /w exch def
-      /lty exch def
-      /ltx exch def
-      /cellsz exch def
-      /pat exch def
-
-      /widthlim w cellsz div cvi 1 sub def
-      /retstr widthlim 1 add string def
-      /i 0 def
-
-      tgiforigctm setmatrix
-      ltx lty translate
-      w h true [1 0 0 1 0 0] {tgifpatproc} imagemask
-      ltx neg lty neg translate
-   end
- } def
-
-/pat3 <8000000008000000> def
-/pat4 <8800000022000000> def
-/pat5 <8800220088002200> def
-/pat6 <8822882288228822> def
-/pat7 <aa55aa55aa55aa55> def
-/pat8 <77dd77dd77dd77dd> def
-/pat9 <77ffddff77ffddff> def
-/pat10 <77ffffff77ffffff> def
-/pat11 <7fffffff7fffffff> def
-/pat12 <8040200002040800> def
-/pat13 <40a00000040a0000> def
-/pat14 <ff888888ff888888> def
-/pat15 <ff808080ff080808> def
-/pat16 <f87422478f172271> def
-/pat17 <038448300c020101> def
-/pat18 <081c22c180010204> def
-/pat19 <8080413e080814e3> def
-/pat20 <8040201008040201> def
-/pat21 <8844221188442211> def
-/pat22 <77bbddee77bbddee> def
-/pat23 <c1e070381c0e0783> def
-/pat24 <7fbfdfeff7fbfdfe> def
-/pat25 <3e1f8fc7e3f1f87c> def
-/pat26 <0102040810204080> def
-/pat27 <1122448811224488> def
-/pat28 <eeddbb77eeddbb77> def
-/pat29 <83070e1c3870e0c1> def
-/pat30 <fefdfbf7efdfbf7f> def
-/pat31 <7cf8f1e3c78f1f3e> def
-
-/TGMAX
- { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse
- } def
-/TGMIN
- { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse
- } def
-/TGSW { stringwidth pop } def
-
-/bd { bind def } bind def
-
-/GS { gsave } bd
-/GR { grestore } bd
-/NP { newpath } bd
-/CP { closepath } bd
-/CHP { charpath } bd
-/CT { curveto } bd
-/L { lineto } bd
-/RL { rlineto } bd
-/M { moveto } bd
-/RM { rmoveto } bd
-/S { stroke } bd
-/F { fill } bd
-/TR { translate } bd
-/RO { rotate } bd
-/SC { scale } bd
-/MU { mul } bd
-/DI { div } bd
-/DU { dup } bd
-/NE { neg } bd
-/AD { add } bd
-/SU { sub } bd
-/PO { pop } bd
-/EX { exch } bd
-/CO { concat } bd
-/CL { clip } bd
-/EC { eoclip } bd
-/EF { eofill } bd
-/IM { image } bd
-/IMM { imagemask } bd
-/ARY { array } bd
-/SG { setgray } bd
-/RG { setrgbcolor } bd
-/SD { setdash } bd
-/W { setlinewidth } bd
-/SM { setmiterlimit } bd
-/SLC { setlinecap } bd
-/SLJ { setlinejoin } bd
-/SH { show } bd
-/FF { findfont } bd
-/MS { makefont setfont } bd
-/AR { arcto 4 {pop} repeat } bd
-/CURP { currentpoint } bd
-/FLAT { flattenpath strokepath clip newpath } bd
-/TGSM { tgiforigctm setmatrix } def
-/TGRM { savematrix setmatrix } def
-
-end
-
-%%EndProlog
-%%Page: 1 1
-
-%%PageBoundingBox: 35 514 479 780
-tgifdict begin
-/tgifsavedpage save def
-
-1 SM
-1 W
-
-0 SG
-
-72 0 MU 72 11.602 MU TR
-72 128 DI 100.000 MU 100 DI DU NE SC
-
-GS
-
-/tgiforigctm matrix currentmatrix def
-
-% RCBOX
-0 SG
-GS
-   NP
-      835 270 M 835 300 L 755 300 L 755 270 L
-   CP 1 SG F
-   0 SG
-   NP
-      835 270 M 835 300 L 755 300 L 755 270 L
-   CP EC NP
-   pat4 8 752 264 88 40 TGPF
-GR
-GS
-   GS
-      NP
-         835 270 M 835 300 L 755 300 L 755 270 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   NP
-      705 270 M 705 300 L 625 300 L 625 270 L
-   CP 1 SG F
-   0 SG
-   NP
-      705 270 M 705 300 L 625 300 L 625 270 L
-   CP EC NP
-   pat4 8 616 264 96 40 TGPF
-GR
-GS
-   GS
-      NP
-         705 270 M 705 300 L 625 300 L 625 270 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         770 180 M 770 210 L 690 210 L 690 180 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      705 200 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      640 290 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (MENU) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      770 290 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (WINDOW) SH
-      GR
-   GR
-
-% ARC
-0 SG
-GS
-   GS
-      NP
-         729 360 29 25 0 -180 TGAR
-      3 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      715 355 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (XOR) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      730 335 M
-      -125 0 atan DU cos 14.000 MU 730 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      730 210 14.000 6.000 0 -125 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      730 210 14.000 6.000 0 -125 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      665 270 M
-      -60 25 atan DU cos 14.000 MU 690 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      690 210 14.000 6.000 25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      690 210 14.000 6.000 25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      795 270 M
-      -60 -25 atan DU cos 14.000 MU 770 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      770 210 14.000 6.000 -25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      770 210 14.000 6.000 -25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      705 345 M
-      -45 -40 atan DU cos 14.000 MU 665 exch SU
-      exch sin 14.000 MU 300 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      665 300 14.000 6.000 -40 -45 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      665 300 14.000 6.000 -40 -45 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      755 345 M
-      -45 40 atan DU cos 14.000 MU 795 exch SU
-      exch sin 14.000 MU 300 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      795 300 14.000 6.000 40 -45 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      795 300 14.000 6.000 40 -45 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      680 270 M
-      -60 25 atan DU cos 14.000 MU 705 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      705 210 14.000 6.000 25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      705 210 14.000 6.000 25 -60 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      780 270 M
-      -60 -25 atan DU cos 14.000 MU 755 exch SU
-      exch sin 14.000 MU 210 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      755 210 14.000 6.000 -25 -60 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      755 210 14.000 6.000 -25 -60 TGAT
-   CP F
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         480 210 M 480 240 L 400 240 L 400 210 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      415 230 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      400 320 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP_REF) SH
-      GR
-   GR
-
-% ARC
-0 SG
-GS
-   GS
-      NP
-         439 300 29 25 0 -180 TGAR
-      3 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      425 295 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (XOR) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      430 275 M
-      -35 0 atan DU cos 14.000 MU 430 exch SU
-      exch sin 14.000 MU 240 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      430 240 14.000 6.000 0 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      430 240 14.000 6.000 0 -35 TGAT
-   CP F
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         485 300 M 485 330 L 395 330 L 395 300 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      450 275 M
-      -35 0 atan DU cos 14.000 MU 450 exch SU
-      exch sin 14.000 MU 240 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      450 240 14.000 6.000 0 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      450 240 14.000 6.000 0 -35 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      365 355 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Self) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      405 350 M
-      428.33 353.33 440.00 346.67
-      -25 0 atan DU cos 10.000 MU 440 exch SU
-      exch sin 10.000 MU 330 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      440 330 10.000 4.000 0 -25 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      440 330 10.000 4.000 0 -25 TGAT
-   CP F
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 432 287 102 102 TGEL
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      370 405 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Noeud abstrait) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      550 280 M
-      590 280 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      550 300 M
-      590 300 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      580 270 M
-      600 290 L
-      580 310 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      690 380 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (GROUP_REF) SH
-      GR
-   GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         775 360 M 775 390 L 685 390 L 685 360 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 727 300 122 145 TGEL
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      655 415 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Self) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      695 410 M
-      718.33 413.33 730.00 406.67
-      -25 0 atan DU cos 10.000 MU 730 exch SU
-      exch sin 10.000 MU 390 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      730 390 10.000 4.000 0 -25 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      730 390 10.000 4.000 0 -25 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      615 460 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Noeud avec representation) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [4 4] 0 SD
-   NP
-      120 500 M
-      0 40 atan DU cos 14.000 MU 160 exch SU
-      exch sin 14.000 MU 500 exch SU L
-   TGSM
-   4 W
-   S
-   [] 0 SD
-   1 W
-GR
-GS
-   TGSM
-   NP
-      160 500 14.000 6.000 40 0 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      160 500 14.000 6.000 40 0 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      170 500 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Lien d'heritage dynamique) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (\(type dynamique du parent\)) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      120 550 M
-      0 40 atan DU cos 14.000 MU 160 exch SU
-      exch sin 14.000 MU 550 exch SU L
-   TGSM
-   4 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      160 550 14.000 6.000 40 0 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      160 550 14.000 6.000 40 0 TGAT
-   CP F
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      170 550 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Lien d'heritage statique) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (\(type statique du parent\)) SH
-      GR
-   GR
-
-% RCBOX
-0 SG
-GS
-   NP
-      520 485 M 520 515 L 440 515 L 440 485 L
-   CP 1 SG F
-   0 SG
-   NP
-      520 485 M 520 515 L 440 515 L 440 485 L
-   CP EC NP
-   pat4 8 432 480 96 40 TGPF
-GR
-GS
-   GS
-      NP
-         520 485 M 520 515 L 440 515 L 440 485 L
-      CP
-      2 W
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      455 505 M
-      GS
-            0 SG
-            /Courier-Bold FF [14 0 0 -14 0 0] MS
-            (MENU) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      530 490 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Ajout dynamique d'un ) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (objet dans l'arbre, ) SH
-      GR
-      0 15 RM
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (un MENU XOR WINDOW XOR ...) SH
-      GR
-   GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 65 220 M 95 220 L 95 230 L 65 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 65 245 M 95 245 L 95 255 L 65 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      80 245 M
-      80 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 135 M 180 135 L 180 145 L 150 145 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 160 M 180 160 L 180 170 L 150 170 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 160 M
-      165 145 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 220 M 180 220 L 180 230 L 150 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 245 M 180 245 L 180 255 L 150 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 245 M
-      165 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 220 M 255 220 L 255 230 L 225 230 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 245 M 255 245 L 255 255 L 225 255 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 245 M
-      240 230 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      145.00 123.33 130.83 126.67 122.50 150.00 CT
-      114.17 173.33 109.17 202.50 107.50 237.50 CT
-      105.83 272.50 96.67 278.33
-      -35 -25 atan DU cos 10.000 MU 80 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      80 255 10.000 4.000 -25 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      80 255 10.000 4.000 -25 -35 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      175.00 130.00 181.67 125.00 185.00 125.00 CT
-      188.33 125.00 192.50 126.67 197.50 130.00 CT
-      202.50 133.33 202.50 158.33 197.50 205.00 CT
-      192.50 251.67 186.67 276.67 180.00 280.00 CT
-      173.33 283.33 168.33 275.00
-      -30 -5 atan DU cos 10.000 MU 165 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      165 255 10.000 4.000 -5 -30 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      165 255 10.000 4.000 -5 -30 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 140 M
-      175.00 113.33 187.50 104.17 202.50 112.50 CT
-      217.50 120.83 233.33 142.50 250.00 177.50 CT
-      266.67 212.50 272.50 237.50 267.50 252.50 CT
-      262.50 267.50 256.67 274.17 250.00 272.50 CT
-      243.33 270.83 240.00 265.00
-      -15 0 atan DU cos 10.000 MU 240 exch SU
-      exch sin 10.000 MU 255 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      240 255 10.000 4.000 0 -15 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      240 255 10.000 4.000 0 -15 TGAT
-   CP F
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 330 M 180 330 L 180 340 L 150 340 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 150 355 M 180 355 L 180 365 L 150 365 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      165 355 M
-      165 340 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 330 M 255 330 L 255 340 L 225 340 L CP
-      2 W
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 225 355 M 255 355 L 255 365 L 225 365 L CP
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 355 M
-      240 340 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 225 M
-      226.67 208.33 219.17 202.50 217.50 207.50 CT
-      215.83 212.50 213.33 218.33 210.00 225.00 CT
-      206.67 231.67 203.33 257.50 200.00 302.50 CT
-      196.67 347.50 191.67 374.17 185.00 382.50 CT
-      178.33 390.83 171.67 385.00
-      -30 -10 atan DU cos 10.000 MU 165 exch SU
-      exch sin 10.000 MU 365 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      165 365 10.000 4.000 -10 -30 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      165 365 10.000 4.000 -10 -30 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      240 225 M
-      226.67 218.33 219.17 224.17 217.50 242.50 CT
-      215.83 260.83 213.33 289.17 210.00 327.50 CT
-      206.67 365.83 209.17 387.50 217.50 392.50 CT
-      225.83 397.50 233.33 388.33
-      -35 10 atan DU cos 10.000 MU 240 exch SU
-      exch sin 10.000 MU 365 exch SU CT
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      240 365 10.000 4.000 10 -35 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      240 365 10.000 4.000 10 -35 TGAT
-   CP F
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 245 347 30 32 TGEL
-      2 W
-      S
-   GR
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      230 320 M
-      365 210 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      245 380 M
-      440 390 L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      185 410 M
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Arbre abstrait) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (Arbre abstrait) SH
-      GR
-      0 15 RM
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (de depart) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (de depart) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-GS
-   305 323 TR
-   [0.960 -0.280 0.280 0.960 -5 -4] CO
-   305 NE 323 NE TR
-GR
-   GS
-      1 W
-      305 323 TR
-      [0.960 -0.280 0.280 0.960 -5 -4] CO
-      0 12 M
-      GS
-        GS
-        0
-            /Courier FF [14 0 0 -14 0 0] MS
-            (ZOOM) TGSW 
-        AD
-        GR
-      2 DI NE 0 RM
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (ZOOM) SH
-      GR
-   GR
-
-GR
-tgifsavedpage restore
-end
-showpage
-
-%%Trailer
-%MatchingCreationDate: Wed Feb  6 17:08:46 2008
-%%DocumentFonts: Courier-Bold
-%%+ Courier
-%%EOF
-
-%%EndDocument
- @endspecial 299 x Ff(7.)41 b(Rsultat)463 4406 y(8.)g(T)-6
-b(ra)n(v)o(aux)19 b(futurs)463 4605 y(9.)41 b(Conclusion)p
-eop end
-%%Page: 10 10
-TeXDict begin 10 9 bop 581 673 2892 4 v 581 1257 4 585
-v 995 850 a Fk(ANNEXE)26 b(POUR)e(LE)i(SER)-5 b(VICE)25
-b(F)-9 b(ABRICA)g(TION)822 949 y Fe(A)21 b(FOURNIR)g(P)-8
-b(AR)22 b(LES)e(A)-5 b(UTEURS)21 b(A)-11 b(VEC)21 b(UN)f(EXEMPLAIRE)g
-(P)-8 b(APIER)859 1049 y(DE)21 b(LEUR)f(AR)-5 b(TICLE)20
-b(ET)h(LE)f(COPYRIGHT)h(SIGNE)f(P)-8 b(AR)21 b(COURRIER)812
-1149 y(LE)g(FICHIER)f(PDF)h(CORRESPOND)m(ANT)g(SERA)g(ENV)m(O)l(YE)f(P)
--8 b(AR)21 b(E-MAIL)p 3469 1257 V 581 1260 2892 4 v 583
-1561 a(1)t(.)j(A)t Fc(RT)t(I)t(C)t(L)t(E)h(P)t(O)t(U)t(R)h(L)t(A)e(R)t
-(E)t(V)t(U)t(E)h Fe(:)789 1656 y Fj(L)m('objet.)19 b(V)-9
-b(olume)19 b(8)h(\226)h(n2/2005)583 1821 y Fe(2)t(.)j(A)p
-Fc(U)t(T)t(E)t(U)t(R)t(S)h Fe(:)789 1916 y Fj(Maxime)20
-b(A)n(udrin,)f(J)n(onathan)f(P)-7 b(ont\351,)20 b(Sonnta)o(g)e(Benoit)
-583 2081 y Fe(3)t(.)24 b(T)t Fc(I)t(T)t(R)t(E)h(D)t(E)f(L)m
-Fe(')t Fc(A)t(RT)t(I)t(C)t(L)t(E)h Fe(:)789 2176 y Fj(Systme)20
-b(e)n(xpert)h(d'Interface)d(Utilisateur)583 2342 y Fe(4)t(.)24
-b(T)t Fc(I)t(T)t(R)t(E)h(A)t(B)t(R)t(\311)t(G)t(\311)p
-912 2356 291 4 v 25 w(P)t(O)t(U)t(R)g(L)t(E)f(H)t(AU)t(T)h(D)t(E)g(P)n
-(A)q(G)t(E)g(M)t(O)t(I)t(N)t(S)g(D)t(E)f Fe(4)t(0)g Fc(S)t(I)t(G)t(N)t
-(E)t(S)p 2085 2356 742 4 v 25 w Fe(:)789 2436 y Fj(Interface)19
-b(Utilisateur)i(A)n(utomatique)583 2602 y Fe(5)t(.)j(D)q
-Fc(A)m(T)t(E)g(D)t(E)h(C)t(E)t(T)t(T)t(E)f(V)t(E)t(R)t(S)t(I)t(O)t(N)h
-Fe(:)789 2696 y Fj(16)19 b(mai)i(2008)583 2862 y Fe(6)t(.)j(C)t
-Fc(O)t(O)t(R)t(D)t(O)t(N)t(N)t(\311)t(E)t(S)i(D)t(E)t(S)e(AU)t(T)t(E)t
-(U)t(R)t(S)h Fe(:)699 3011 y(\226)e(adresse)d(postale)g(:)764
-3131 y(ICPS/LSIIT)g(-)g(UMR)h(7005)e(-)h(ULP)h(Strasbour)o(g)764
-3230 y(Ple)g(API)764 3330 y(Bd)f(Sbastien)h(Brant)f(-)g(BP)h(10413)764
-3430 y(67412)d(Illkirch)h(CEDEX)i(FRANCE)764 3554 y(maxaudrin at free.fr)m
-(,)16 b(jponte at free.fr)m(,)h(sonntag at icps.u-strasbg.fr)699
-3674 y(\226)23 b(t\351l\351phone)c(:)i(03)e(88)h(22)g(21)g(67)699
-3798 y(\226)j(t\351l\351copie)d(:)h(00)e(00)h(00)g(00)g(00)699
-3923 y(\226)j(e-mail)d(:)h(sonntag at icps.u-strasbg.fr)583
-4093 y(7)t(.)j(L)t Fc(O)t(G)t(I)t(C)t(I)t(E)t(L)h(U)t(T)t(I)t(L)t(I)t
-(S)t(\311)g(P)t(O)t(U)t(R)g(L)t(A)f(P)t(R)t(\311)t(P)n(A)t(R)t(A)m(T)t
-(I)t(O)t(N)h(D)t(E)g(C)t(E)t(T)f(A)t(RT)t(I)t(C)t(L)t(E)h
-Fe(:)789 4188 y(L)810 4173 y Fb(A)840 4188 y Fe(T)877
-4207 y(E)916 4188 y(X,)c(a)n(v)o(ec)f(le)g(\002chier)g(de)g(style)h
-Fa(article-hermes.c)o(ls)o Fe(,)789 4288 y(v)o(ersion)e(1.2)g(du)h
-(03/03/2005.)583 4453 y(8)t(.)k(F)t Fc(O)t(R)t(M)t(U)t(L)t(A)t(I)t(R)t
-(E)i(D)t(E)f(C)t(O)t(P)t(Y)t(R)t(I)t(G)t(H)t(T)g Fe(:)789
-4548 y(Retourner)14 b(le)j(formulaire)d(de)i(cop)o(yright)e(sign\351)i
-(par)g(les)h(auteurs,)e(t\351l\351char)o(g\351)f(sur)i(:)789
-4647 y Fa(http://www.revu)o(es)o(onl)o(in)o(e.)o(com)p
-1588 4876 1710 4 v 1588 5569 4 693 v 1740 5044 a Fe(S)t
-Fc(E)t(R)o(V)t(I)t(C)t(E)26 b(\311)t(D)t(I)t(T)s(O)t(R)t(I)t(A)t(L)e
-Fe(\226)h(H)t Fc(E)t(R)t(M)t(E)t(S)t Fe(-)t(L)t Fc(A)-5
-b(V)q(O)t(I)t(S)t(I)t(E)t(R)1837 5144 y Fe(14)20 b(rue)g(de)g(Pro)o
-(vign)o(y)-5 b(,)17 b(F-94236)h(Cachan)i(cede)o(x)2568
-5243 y(T\351l)h(:)g(01-47-40-67-67)2334 5343 y(E-mail)e(:)i(re)n
-(vues at la)n(v)n(oisier)-5 b(.fr)1809 5443 y(Serv)o(eur)19
-b(web)h(:)h(http://www)-5 b(.re)n(vuesonline.com)p 3294
-5569 V 1588 5572 1710 4 v eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/lib/guii/majecstic08/guii.tex b/lib/guii/majecstic08/guii.tex
deleted file mode 100644
index d0c846e..0000000
--- a/lib/guii/majecstic08/guii.tex
+++ /dev/null
@@ -1,277 +0,0 @@
-% Documentation du style Latex pour les articles de revues ou de confrences Hermes
-% Les consignes aux auteurs sont en annexe de ce document.
-
-\documentclass[fleqn]{article-hermes}
-%%% Commandes spcifiques  l'article
-%\newcommand{\cfsect}[1]{(\textit{cf.} section~\ref{#1})}
-%\newcommand{\cfsectpage}[1]{(\textit{cf.} section~\ref{#1}, page~\pageref{#1})}
-%\providecommand{\figureref}[1]{\figname~\ref{#1}}
-%\providecommand{\cftab}[1]{(\textit{cf.} tableau~\ref{#1})}
-%\newcommand{\cmd}[1]{{\upshape\texttt{\symbol{"5C}#1}}}
-%%% Fin des commandes spcifiques  l'article
-
-
-\journal{\LOBJET. Volume 8 -- n2/2005}{1}{15}
-
-\publisher{03 88 22 21 67 }{00 00 00 00 00}{sonntag at icps.u-strasbg.fr}
-
-\title[Interface Utilisateur Automatique]%
-      {Systme expert d'Interface Utilisateur}
-
-\subtitle{Les prémisses de la construction d'interfaces utilisateurs automatiques et adaptatives dynamiquement\\ à un périphérique}
-\author{Maxime Audrin, Jonathan Ponté, Sonntag Benoit}
-
-\address{%
-ICPS/LSIIT - UMR 7005 - ULP Strasbourg \\
-Ple API \\
-Bd Sbastien Brant - BP 10413\\
-67412 Illkirch CEDEX FRANCE\\[3pt]
-maxaudrin at free.fr, jponte at free.fr, sonntag at icps.u-strasbg.fr}
-
-\resume{Le résumé }
-
-\abstract{The abstract }
-
-\motscles{IHM, Interface graphique, langage objet  prototype, Lisaac}
-
-\keywords{IHM, Graphics User Interface, prototype object language, Lisaac}
-
-
-\begin{document}
-
-%\maketitle % Exemple de 1ere page sans les valeurs de champs
-            % pour afficher les commandes  utiliser
-
-\maketitlepage
-
-\section{Introduction et problématique}
-Avec l'évolution des technologies, l'informatique a pris une place de
-plus en plus importante dans tous les domaines du quotidien :
-transports, télécommunications, appareils électroménagers, médecine, etc. 
-La miniaturisation des composants electroniques a permis l'intégration
-de systèmes informatiques puissants dans toutes sortes d'appareils. 
-La diversité des composants matériels permet également de
-pouvoir ajouter facilement de nouvelles fonctionnalités que ce soit
-par l'ajout de composant matériel ou composant logiciel. 
-Si cela permet de rendre de nombreux services dans la vie
-courante, la t\^{a}che des concepteurs est loin d'tre simplifie.
-
-\subsection{Adapation des IHMs aux priphriques}
-L'informatique embarqué propose une large gamme de
-matériel ayant des possibilités diverses et variées en terme de
-périphériques d'entrées / sorties.
-Les interfaces hommes-machines sont fortement liées cette variabilité
-de ces périphériques (taille de l'écran, présence
-ou absence de clavier ou de souris, \ldots)
-Pour l'informatique de bureau, nous voyons l'émergence
-d'applications communes entre diffrents systèmes d'exploitations et
-différents supports matériels, mais ce mouvement échappe encore à 
-l'informatique embarqué.
-Les plateformes Java intgrée dans nos téléphones portables permettent
-une abstraction du matériel, mais l'interface utilisateur ne s'adapte
-pas aux possibilités réelles de nos périphériques d'entrées / sortie.
-Par exemple, les applications prévues pour les {\it{}pocket PC}, voulant
-offrir un sous ensemble des possibilités accèssibles par un ordinateur de
-bureau ncessitent une reprogrammation complète de leurs IHMs (Exemple\,: 
-{\it{}Word pocket}, {\it{}Excel pocket}).
-
-\subsection{Modification des IHMs lors d'ajout de composant logiciel}
-Une application devient de plus en plus adaptable via l'insertion
-dynamique de {\it{}plugin}. Ces {\it{}plugin} sont des petits
-programmes ajoutant des fonctionnalités au sein d'une application.
-Ils sont l'équivalent des gestionnaires de périphérique ({\it{}driver})
-au niveau logiciel.
-L'insertion de ces programmes ont un impact sur l'IHM global d'une
-application par l'apparition de nouvelles fonctionnalités.
-Trop souvent, le choix des concepteurs est d'ajouter un {\it{}panel}
-représentant les fonctionnalités de ce {\it{}plugin}. 
-Ici, nous soulignons le manque d'intégrité et de la difficulté
-d'ajouter dynamiquement des fonctionnalités aux sein d'une
-application maîtresse.
-
-\subsection{L'objectifs}
-Dans cette article, nous dénonçons le caractère trop statique des IHMs
-actuelles et la nécéssité, de la lourde t\^{a}che, de reprogrammer les
-interfaces utilisateurs pour les adapter à un nouveau matriel.
-
-Notre objectif est de libérer le concepteur d'une application de la
-représentation de son interface homme-machine.
-Ainsi, l'intérêt est que l'IHM d'une application puisse
-automatiquement s'adaptée à la taille ou type d'écran, aux évènements
-matériels ou au type de périphérique d'entrée (clavier, cran
-tactile, ...). 
-Aussi, l'ajout d'une fonctionnalité doit permettre une réadaptation
-automatique et dynamique de l'IHM en vue d'accueillir de manière la plus
-agréable possible cette nouvelle fonctionnalité.
-
-Nous proposons un premier travail de modélisation de cette interface
-calculée automatiquement en nous concentrant sur l'inférence d'une IHMs
-simplifiée dépendant de la taille de l'écran.
-
-Ici nous exposons le plan...
-
-
-\section{Etat de l'art}
-La recherche informatique, dans le domaine de la génération
-automatique d'interface graphique, n'en est pas a ses débuts.
-En effet, il existait déjà des outils connus sous le nom de
-User Interface Design Environment comme HUMANOIDE[1],GENIUS[2] permettant
-de créer de manière automatique une interface graphique avec comme contrainte
-de fournir des modèles et des schémas graphiques tres complexes.
-D'autres outils, plus récents et basés sur le langage XML,
-tels que XMLTalks[3], XIML[4], UIML[5], TERASAXML[6], USIXML[7] permettent, eux aussi,
-d'atteindre le même but. En ce qui concerne les quatre derniers, on observe une ébauche
-"d'adaptation dynamique" mais cela reste exclusivement une spécification
-à donner au niveau de la création et ne se fait pas dynamiquement pendant la phase d'éxecution.
-Cependant, tous ces outils permettent surtout de "simplifier" le processus
-de création plutôt que de l'automatiser car il faut y apporter
-un nombre d'information assez consequent. De plus, la possibilité
-d'adapter dynamiquement cette interface a différents supports
-reste exclu. D'autres travaux, plus intéressants, peuvent être cités
-comme PUC[8](Personal Universal Controller) qui utilise un arbre
-de décision ou SUPPLE[9] permettant
-une gestion dynamique de l'interface graphique lors d'un changement
-de support.\\
-Néanmoins, il reste le défaut d'un apport en information encore trop
-important et l'incapacité de s'adapter aux possibilités d'entrées/sorties
-du périphérique\\
-Contrairement a ce qui a ete fait auparavant, nous proposons un mode
-de creation d'interface graphique le plus simple possible, sous
-forme d'un arbre de fonctionnalité avec une quantité d'élément semantique
-largement inferieur permettant une automatisation aussi complète 
-que possible du processus de conception.
-En effet, celle ci se cantonne a trois principales informations par composant de notre interface
-que nous detaillerons par la suite.
-De plus, elle permet non seulement l'adaptation a la volée de l'interface mais aussi
-de prendre en compte la spécification du materiel au niveau entrées/sortie.
-
-
-\section{Les axiomes de notre modèle pour le programmeur
-  d'application}
-Notre modèle se base sur la description formelle des fonctionnalités de l'application.
-Il s'agit pour le programmeur de construire une structure représentant ces fonctionnalités,
-munie des informations les caractérisant. Ces informations sont nécessaires à l'élaboration d'une interface graphique.
-
-\subsection{Un arbre de fonctionnalité}
-Cette structure est representée par un arbre de fonctionnalités de l'application. Les fonctionnalités sont les feuilles de l'arbre et les noeuds sont les étapes par lesquels il faut passer pour accéder à ces fonctionnalités. Ces noeuds seront plus tard modélisés par des pattern qui composeront notre interface graphique. Un noeud pourra être un menu, une fenêtre ou autre, et une fonctionnalités un bouton l'activant par exemple (voir paragraphe Description de notre IHM final).\\
-Il s'agit pour le programmeur de mettre en commun des fonctionnalités qu'il juge bon de regrouper sous un noeud de l'arbre. Ainsi chaque noeud est une description des noeuds qu'il renferme. Plus on descend en profondeur de l'arbre plus les noeuds gagnent en description. \\
-%Regrouper des fonctionnalités sous un noeud permet egalement de ne pas surcharger le noeud pere. En effet moins un noeud 
-%comporte de fils, plus facile sera le choix du pattern. Ceci est detaille dans la partie Systeme d'inference.\\
-Si nous prenons l'exemple d'une interface traditionnelle, les fonctionnalités permettant l'écriture/ouverture d'un fichier
-(enregistrer, ouvrir, nouveau...) sont disponibles a travers la barre de menus, puis le menu fichier. Nous voyons facilement que la barre de menus est un noeud donnant accès aux menus "Fichier", "Edition" et autres, qui eux-mêmes sont des noeuds donnant accès a d'autres noeuds tels que "Ouvrir" (aboutissant généralement a l'ouverture d'une fenêtre) ou a des fonctionnalités telles que "Enregistrer". Nous pouvons de la même maniere décrire entièrement une application: chaque noeud est une description générale des fonctionnalités qu'il renferme et peut donc contenir des fonctionnalités satisfaisant cette description ou mener à d'autres noeuds regroupant des fonctionnalités qui gagnent un degré de precision.\\
-La racine de l'arbre est la description générale de l'interface. Seuls ses fils seront affiches sur le périphérique. Il appartient ensuite à l'utilisateur de l'application de faire apparaître les noeuds de profondeur superieure en activant les fils de la racine.\\
-Or cet arbre à lui seul ne contient pas d'informations permettant le génération de l'interface graphique.
-
-\subsection{Les ajouts semantiques}
-Notre modèle prevoit l'ajout d'éléments semantiques lors de la construction de l'arbre d'une application. Ceux-ci permettent de décrire d'une part la relation qu'ont entre eux les fils d'un noeud, ce que nous avons appelé l'opérateur semantique et l'importance d'un noeud dans l'arbre d'autre part, ce que nous avons appelé la force d'un noeud.
-\subsubsection{L'opérateur semantique}
-Il y en 3: XOR, OR et AND.\\
-L'opérateur XOR prevoit que le noeud ne peut pas être actif en même temps qu'un autre: on ne peut pas appuyer sur le bouton "Fichier" et "Edition" en même. C'est un choix exclusif.\\
-L'opérateur OR a l'inverse permet au noeud de rester actif même si l'on active un autre noeud: une check box par exemple.\\
-L'opérateur AND nécessite que l'utilisateur active ce noeud. L'activation de ce noeud est conditionnée par l'activation d'un autre noeud: par exemple, le principe du login et du mot passe. Il faut remplir le champ login et mot de passe avant de pouvoir valider une saisie.
-\subsubsection{La force}
-C'est un pourcentage qui représente l'importance d'un noeud. Certaines fonctionnalités sont optionnelles et non necessaires au déroulement normal d'une application: ces fonctionnalités, une fois retirées de l'interfaces graphiques (et donc inaccessibles) n'empêchent pas le programme de fonctionner. Notre modèle prevoit donc de retirer ces fonctionnalités en dernier recourt afin de proposer une interface graphique plus légère et adequate au périphérique d'affichage.
-\subsection{Exemple}
-Voici l'arbre abstrait d'une application de dessin.
-====>mettre une copie d'écran?
-\begin{center}
-\includegraphics[scale=0.8]{figures/arbre_abstrait.ps}
-\end{center}
-
-
-\section{Description de notre IHM final}
-Une interface graphique est essentiellement composée d'un assemblage de "widget".
-Le mot "widget" est la contraction de deux mots venant de l'anglais : "windows" et "gadget".
-Ce sont les composants de cette interface qui seront affichés a l'ecran et qui permettront
-l'intéraction la plus claire et la plus agréable possible entre l'homme et la machine.
-Dans le but de respecter l'ergonomie et une certaine convention des interfaces graphiques,
-il faut établir des règles de construction.
-
-\subsection{Composants de base}
-
-Nous pouvons distinguer plusieurs sortes de composants basiques dans notre interface graphique :\\
-- Les boutons (button)\\
-- Les cases a cocher (check box)\\
-- Les boutons radio (radio box)\\
-- Le texte (text)\\
-- Les icônes (icons)\\
-- Les raccourcis (shortcut)\\
-- Boite d'ecriture (text input)\\
-...
-
-D'autres éléments, plus techniques et intrinsèques a la programmation, sont à prendre en compte comme :\\
-- La WINOUT : la fenêtre principale est une WINOUT et toutes les autres fenêtres internes au programme aussi.\\
-- La WININ : c'est, par exemple, l'élément principal qui compose l'espace de travail (exemple feuille word...)\\
-
-Ce sont toutes ces briques de base qui,une fois composées d'une certaine manière, aboutiront a la
-création d'éléments plus complexes.
-%- Button, WIN,...
-%- GOUT, GIMG.
-
-\subsection{Composition pour des éléments plus complexes}
-
-On peut distinguer plusieurs sortes d'éléments former de briques de bases :\\
-- La barre de menu : représente un simple assemblage de boutons disposés a l'horizontal\\
-- La barre verticale ou horizontal: représente un assemblage de divers éléments de bases comme des boutons, cases a cocher etc..\\
-- Le menu vertical : représente un assemblage de boutons disposés a la verticale dans une WINOUT\\
-- Le menu horizontal : représente un assemblage de boutons disposés a l'horizontal dans une WINOUT\\
-- Le menu deroulant : représente un assemblage de boutons disposés a la vertical dans une WININ\\
-
-
-\subsection{Axiome de construction}
-Il faut pouvoir donner une règle precise lors de la conception de l'interface. Par exemple, un menu horizontal
-ne suivra jamais un autre menu horizontal car visuellement parlant, cela nuira a la clarté de l'interface. Une autre 
-règle (plus une convention) veut qu'après une barre de menu ne suivent que des menus verticaux.
-Pour veiller a bien respecter ces règles, nous avons élaboré une "pseudo-grammaire" représentant les axiomes de construction.\\
-
-\begin{center}
-\includegraphics[scale=0.8]{figures/grammaire.ps}
-\end{center}
-
-
-\section{Système d'inférence}
-Nous avons d'une part un arbre regroupant les fonctionnalités de l'application et contenant les informations nécessaires pour le choix de la modélisation graphique et d'autre part nous avons définit des pattern graphiques potentiellement appliquable à chaque noeud. Nous expliquons ici comment choisir le pattern adéquat en fonction des informations contenues dans l'arbre tout en respectant les spécifications du périphérique d'affichage. Il s'agit deffectuer 2 évaluations pour chaque pattern.
-\subsection{Evaluation sémantique}
-L'évaluation sémantique d'un pattern doit conclure à sa compatibilité ou non avec ce noeud. Chaque pattern possède sa propre évaluation sémantique. Elle se fait en fonction des caractéristiques propre au pattern et vérifie si le noeud lui-même et ses fils remplisse ces caractéristiques. Par exemple pour remplir les conditions d'un certain patern, un noeud doit posséder un certain opérateur sémantique et ses fils doivent pouvoir être instanciés en tel ou tel pattern. Si c'est le cas on passe à l'évaluation spatiale sinon on teste un autre pattern.
-\subsection{Evaluation spatiale}
-L'évaluation spatiale vérifie que le pattern respecte les caractéristiques du périphérique d'affichage. Dans un premier temps, nous testons si le pattern ne dépasse pas les limites d'affichage de ce périphérique afin de pouvoir le visualiser en entier. Si c'est le cas nous utilisons le pourcentage représentant la force des noeuds en retirant les fils possèdant une force inférieure à un certain seuil. Nous réitérons cette opération avec des seuils de plus en plus élevés tant que le pattern dépasse les limites du périphérique. Nous exprimons ensuite un pourcentage de recouvrement en fonction du nombre de fils que nous avons retirés.\\
-Dans un deuxième temps nous exprimons un pourcentage qui donnera la note finale du pattern pour un noeud. Ce pourcentage est établi en fonction de la surface utilisée par le pattern par rapport à la surface du périphérique d'affichage.
-\subsection{Algorithme d'évaluation}
-Il s'agit de tester tous les patterns pour chaque noeuds et de garder le meilleur. C'est un problème NP-complet. Nous utilisons pour cela un algorithme récursif. Celui-ci teste chaque pattern sur les fils de la racine et leur évaluation sémantique lance l'évaluation des pattern appropriés sur leurs propres fils. Si au moins un pattern renvoie un pourcentage supérieur à 0 pour chaque fils, alors on passe à l'évaluation spatiale. La récursivité s'arrête aux feuilles. Il s'agit ensuite de garder le meilleur pattern pour chaque noeud en comparant leur note.
-
-\section{Implémentation du modèle}
-
-Nous avons choisit d'implémenter notre modèle a l'aide du langage Lisaac.
-
-\subsection{Introduction au langage Lisaac}
-
-Lisaac est un langage imperatif a prototype. Il se différencie des langages orientés objet car il ne nécessite
-ni la creation de classe, ni l'instanciation de l'objet dans le corps du programme. En Lisaac (univers a prototype)
-tout est objet (pas de type primitif comme en Java). Un objet n'a pas besoin d'être instancié, il est "vivant" dès le début
-du programme. Ces objets peuvent se cloner et peuvent posséder plusieurs parents à n'importe quel moment de la vie
-du programme (multi-heritage dynamique).
-
-\subsection{Reprsentation par héritage dynamique de l'arbre}
-
-Chaque noeud de notre arbre est représente par un prototype appelé "group" ayant un lien 
-d'héritage statique avec un prototype "groupref". Dans ce dernier, sont regroupées toutes les caracteristiques
-nécessaires du noeud.
-Chaque pattern est représenté par un prototype possédant chacun une méthode d'évaluation sémantique et spatiale, et hérite du prototype groupref. Ce prototype contient uniquement des méthodes défférées (abstraites) qui sont définies dans les prototypes des pattern. En effet nous changeons dynamiquement le parent d'un noeud (prototype group) pour le faire hériter d'un pattern et ainsi pouvoir utiliser ses propres fonctions d'évaluation. C'est l'héritage en losange. Il permet au prototype group de connaitre à la compilation les méthodes qui seront utilisées après un héritage dynamique vers un pattern.
-Ce type d'héritage est illustré sur le schéma ci-dessous.
-
-%\begin{figure}
-\begin{center}
-\includegraphics[scale=1.0]{figures/GUII.ps}
-%\caption{Arbre héritage dynamique}
-%\label{tree_dynamic}
-\end{center}
-%\end{figure}
-
-\section{Rsultat}
-
-\section{Travaux futurs}
-
-\section{Conclusion}
-
-
-\end{document}
diff --git a/lib/guii/majecstic08/related_work/ihm1994a.pdf b/lib/guii/majecstic08/related_work/ihm1994a.pdf
deleted file mode 100644
index a0f7572..0000000
Binary files a/lib/guii/majecstic08/related_work/ihm1994a.pdf and /dev/null differ
diff --git a/lib/guii/majecstic08/related_work/paper.pdf b/lib/guii/majecstic08/related_work/paper.pdf
deleted file mode 100644
index 317fac4..0000000
Binary files a/lib/guii/majecstic08/related_work/paper.pdf and /dev/null differ
diff --git a/lib/guii/majecstic08/related_work/ref.txt b/lib/guii/majecstic08/related_work/ref.txt
deleted file mode 100644
index bda973d..0000000
--- a/lib/guii/majecstic08/related_work/ref.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-Gestion Automatique du Dialogue Homme-Machine à partir de Spécifications Conceptuelles
-Auteur(s):Tarby Jean-Claude
-Date: 07-02-1994, type: Conférence
-Référence: Interface to Real & Virtual Worlds. Montpellier 
-
-
-Production d'Interfaces : Vers la Génération Automatique de Contrôleur de Dialogue
-Auteur(s):Tarby Jean-Claude, Barthet Marie-France
-Date: 11-12-1991, type: Conférence
-Référence: IHM'91. 3èmes Journées sur l'Ingénierie des Interfaces Homme-Machine. Dourdan 
-
diff --git a/lib/guii/menu_bar.li b/lib/guii/menu_bar.li
deleted file mode 100755
index 687d777..0000000
--- a/lib/guii/menu_bar.li
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := MENU_BAR;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  + menu_parent:MENU_H:=MENU_H;
-  
-Section Public
-  
-  - representation:STRING_CONSTANT := "MENU_BAR";
-  
-  - print <-
-  (
-    "MENU_BAR".print;
-  );
-  
-  //
-  // Evaluation.
-  //
-  
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-    
-    !list.is_empty && {operator='^'} && {
-      browse_group { 
-        i:INODE;
-        (i.operator = '^')
-      }
-    } && {
-      + nb:INTEGER;
-      + predict_h:INTEGER;
-      predict_h:=predict_size;
-
-      list.foreach { 
-        i:INODE;
-        +h_tmp:INTEGER;
-        
-        ((used_height+predict_h)>screen_height/2).if {
-          h_tmp:=used_height;
-        } else {
-          h_tmp:=screen_height-used_height-predict_h;
-        };
-        (MENU_V_OUT.evaluate i width screen_width height h_tmp > 0).if {
-          nb := nb + 1;
-          //i.name.print;"===========================================>".print;i.print;"\n".print;
-        };
-      };
-      nb=list.count
-    }
-  );
-  
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    // change parent of the node for having access to the method of MENU_BAR
-    n.set_representation MENU_BAR;
-    // Semantic evaluation && Space evaluation.
-    "MENU_BAR semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"MENU_BAR space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      result:=0;
-    };
-    
-    "MENU_BAR result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
diff --git a/lib/guii/menu_h.li b/lib/guii/menu_h.li
deleted file mode 100644
index 4443b8e..0000000
--- a/lib/guii/menu_h.li
+++ /dev/null
@@ -1,257 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := MENU_H;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Horizontal menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  - representation:STRING_CONSTANT := "MENU_H";
-  
-  - print <-
-  (
-    "MENU_H".print;
-  );
-  
-  - make_representation <-
-  (
-    list.foreach {
-      i:INODE;
-      
-      (i.priority>covering).if {
-        i.make_representation;
-        (content=NULL).if {
-          content:=i.content;
-        } else {
-          content:=content | i.content;
-        };
-      };
-    };
-    content.fix_height.fix_width;
-  );
-  
-  //
-  // Evaluation.
-  //
-  
-  - compute_size_from_prc p:INTEGER <-
-  [? { (!list.is_empty) }; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      +w,h:INTEGER;
-      (i.priority>p).if {
-        ((i.connector_width>0) && {i.connector_height>0}).if {
-          w:=i.connector_width;
-          h:=i.connector_height;
-        } else {
-          w:=i.width;
-          h:=i.height;
-        };
-        (width,height):=G_OR_EXPR.predict_size (width,height) and (w,h);
-      };
-    };
-  );
-  
-  - predict_size :INTEGER <-
-  (
-    +h_predict:INTEGER;
-    list.foreach {
-      i:INODE;
-      +w,h:INTEGER;
-      (w,h):=G_BUTTON.predict_size (G_OUT.predict_size (i.name));
-      (h>h_predict).if {
-        h_predict:=h;
-      };
-    };
-    h_predict
-  );
-
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-    
-    !list.is_empty && {operator='^'} && {
-      browse_group {
-        i:INODE;
-        (i.operator!='&')
-      }
-    } && {
-      +nb:INTEGER;
-      +predict_h:INTEGER;
-
-      predict_h:=predict_size;
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-        +son_width:INTEGER;
-        +son_height:INTEGER;
-        +son_connector_w:INTEGER;
-        +son_connector_h:INTEGER;
-        +h_tmp:INTEGER;
-
-        ((used_height+predict_h)>screen_height/2).if {
-          h_tmp:=used_height;
-        } else {
-          h_tmp:=screen_height-used_height-predict_h;
-        };
-        
-        (!i.list.is_empty).if {
-          tmp:=MENU_V_OUT.evaluate i width screen_width height h_tmp;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_V_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=WINDOW.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=WINDOW;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=DROP_DOWN_MENU.evaluate i width screen_width height h_tmp;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=DROP_DOWN_MENU;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        } else {
-          tmp:=CHECK.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=CHECK;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=ACTION.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=ACTION;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        };
-        
-        (best_prc > 0).if {
-          i.set_representation parent;
-          i.name.print;"===========================================>".print;i.print;"\n".print;
-          i.set_width son_width;
-          i.set_height son_height;
-          i.set_connector_w son_connector_w;
-          i.set_connector_h son_connector_h;
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-  
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-    + area,r,result:REAL_32;
-    
-    compute_size_from_prc 0;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-          r:=0;
-          width:=0;
-          height:=0;
-          covering:=100;
-        } else {
-          covering:=50;
-          r:=get_nitem_from_prc 50;
-        };
-      } else {
-        covering:=25;
-        r:=get_nitem_from_prc 25;
-      };
-    } else {
-      covering:=0;
-      r:=list.count;
-    };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
-  
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    // changer le parent de n pour pouvoir utiliser les méthodes spécifiques à MENU_BAR
-    n.set_representation MENU_H;
-    
-    // Semantic evaluation && Space evaluation.
-    "MENU_H semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //" OK\n".print;
-      //"MENU_H space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      // " FAILED\n".print;
-      result:=0;
-    };
-    "MENU_H result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
diff --git a/lib/guii/menu_h_out.li b/lib/guii/menu_h_out.li
deleted file mode 100644
index af1e889..0000000
--- a/lib/guii/menu_h_out.li
+++ /dev/null
@@ -1,183 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := MENU_H_OUT;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Honrizontal menu out for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
- 
-  - representation:STRING_CONSTANT := "MENU_H_OUT";
-
-  - print <-
-  (
-    "MENU_H_OUT".print;
-  );
-
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-
-    list.foreach {
-      i:INODE;
-
-      (i.priority>covering).if {
-        i.make_representation;
-        (expr=NULL).if {
-          expr:=i.content;
-        } else {
-          expr:=expr | i.content;
-        };
-      };
-    };
-    win_out:=(G_WIN_OUT.create expr).fix_height.fix_width;
-    (bitmap=NULL).if {
-      content:=(G_BUTTON.create (G_OUT.create name) connect win_out);
-    } else {
-      content:=(G_BUTTON.create (G_IMG.create bitmap) connect win_out);
-    };
-  );
-
-//
-// Evaluation.
-//
-
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        (width,height):=G_OR_EXPR.predict_size (width,height) and (i.width,i.height);
-      };
-    };
-    (width,height):=G_WIN_OUT.predict_size (width,height);
-    (connector_width,connector_height):=G_BUTTON.predict_size (G_OUT.predict_size name);
-    //"width: ".print;bugw_screen.print;'\n'.print;
-    //"height: ".print;bugh_screen.print;'\n'.print;
-    //"menu_h_out.width: ".print;width.print;'\n'.print;
-    //"menu_h_out.height: ".print;height.print;'\n'.print;
-  );
-
-
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-
-    !list.is_empty && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      list.foreach {
-        i:INODE;
-
-        (!i.list.is_empty).if {
-          (RAW_H.evaluate i width screen_width height screen_height > 0).if {
-            nb:=nb+1;
-          };
-        };
-      };
-      nb=list.count
-    }
-  );
-
-- space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-      + area,r,result:REAL_32;
-      // Space evaluation
-      compute_size_from_prc 0;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-		r:=0;
-		set_height 0;
-		set_width 0;
-           } else {
-		covering:=50;
-		r:=get_nitem_from_prc 50;
-	   };
-	} else {
-	   covering:=25;
-	   r:=get_nitem_from_prc 25;
-	};
-      } else {
-	covering:=0;
-	r:=list.count;
-     };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      //name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-
-    n.set_representation MENU_H_OUT;
-    "MENU_H_OUT semantic evaluation of ".print;n.name.print;" with dimensions ".print;w.print;"x".print;h.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"MENU_H_OUT space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-       result:=0;
-    };
-    "MENU_H_OUT result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-
-/*
-      // -> 1) R = Faisabilité de l'espace (% de recouvrement des items) (1:25%, 2:50%, 3:75%)
-      // -> 2) A = Note de calcul d'aire. (% sur l'écran total)
-      // Result = (R*100-A)/100  
-*/
\ No newline at end of file
diff --git a/lib/guii/menu_v.li b/lib/guii/menu_v.li
deleted file mode 100644
index 2f01210..0000000
--- a/lib/guii/menu_v.li
+++ /dev/null
@@ -1,260 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := MENU_V;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  
-  - representation:STRING_CONSTANT := "MENU_V";
-  + parent:INTERNAL_INODE;
-  
-  - print <-
-  (
-    "MENU_V".print;
-  );
-  
-  - make_representation <-
-  (
-    list.foreach {
-      i:INODE;
-      
-      (i.priority>covering).if {
-        i.make_representation;
-        (content=NULL).if {
-          content:=i.content;
-        } else {
-          content:=content / i.content;
-        };
-      };
-    };
-    content.fix_width.fix_height;
-  );
-  
-  //
-  // Evaluation.
-  //
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      +w,h:INTEGER;
-      (i.priority>p).if {
-        ((i.connector_width>0) && {i.connector_height>0}).if {
-          w:=i.connector_width;
-          h:=i.connector_height;
-        } else {
-          w:=i.width;
-          h:=i.height;
-        };
-        (width,height):=G_DIV_EXPR.predict_size (width,height) and (w,h);
-      };
-    };
-  );
-  
-  - predict_size :INTEGER <-
-  (
-    +w_predict:INTEGER;
-    list.foreach {
-      i:INODE;
-      +w,h:INTEGER;
-      (w,h):=G_BUTTON.predict_size (G_OUT.predict_size (i.name));
-      (w>w_predict).if {
-        w_predict:=w;
-      };
-    };
-    w_predict
-  );
-
-
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-    
-    !list.is_empty && {operator='^'} && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      +predict_w:INTEGER;
-
-      predict_w:=predict_size;
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-        +son_width:INTEGER;
-        +son_height:INTEGER;
-        +son_connector_w:INTEGER;
-        +son_connector_h:INTEGER;
-        +w_tmp:INTEGER;
-
-        ((used_width+predict_w)>screen_width/2).if {
-          w_tmp:=used_width;
-        } else {
-          w_tmp:=screen_width-used_width-predict_w;
-        };
-
-        (!i.list.is_empty).if {
-          tmp:=MENU_V_OUT.evaluate i width w_tmp height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_V_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=WINDOW.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=WINDOW;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          /*tmp:=MENU_H_OUT.evaluate i width w_tmp height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_H_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };*/
-        } else {
-          tmp:=CHECK.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=CHECK;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=ACTION.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=ACTION;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        };
-        
-        (best_prc > 0).if {
-          i.set_representation parent;
-          i.name.print;"===========================================>".print;i.print;"\n".print;
-          i.set_width son_width;
-          i.set_height son_height;
-          i.set_connector_w son_connector_w;
-          i.set_connector_h son_connector_h;
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-  
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-    + area,r,result:REAL_32;
-    
-    // Space evaluation
-    compute_size_from_prc 0;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-          r:=0;
-          height:=0;
-          width:=0;
-        } else {
-          covering:=50;
-          r:=get_nitem_from_prc 50;
-        };
-      } else {
-        covering:=25;
-        r:=get_nitem_from_prc 25;
-      };
-    } else {
-      covering:=0;
-      r:=list.count;
-    };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      //name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
-  
-  /*
-  // -> 1) R = Faisabilité de l'espace (% de recouvrement des items) (1:25%, 2:50%, 3:75%)
-  // -> 2) A = Note de calcul d'aire. (% sur l'écran total)
-  // Result = (R*100-A)/100  
-  */
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    n.set_representation MENU_V;
-    // Semantic evaluation && Space evaluation.
-    "MENU_V semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"MENU_V space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      result:=0;
-    };
-    "MENU_V result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
diff --git a/lib/guii/menu_v_out.li b/lib/guii/menu_v_out.li
deleted file mode 100644
index 0c3a2a3..0000000
--- a/lib/guii/menu_v_out.li
+++ /dev/null
@@ -1,200 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := MENU_V_OUT;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Vertical menu out for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  
-  - representation:STRING_CONSTANT := "MENU_V_OUT";
-  
-  - print <-
-  (
-    "MENU_V_OUT".print;
-  );
-  
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-    
-    list.foreach {
-      i:INODE;
-      
-      (i.priority>covering).if {
-        i.make_representation;
-        (expr=NULL).if {
-          expr:=i.content;
-        } else {
-          expr:=expr / i.content;
-        };
-      };
-    };
-    win_out:=(G_WIN_OUT.create expr).fix_height.fix_width;
-    (bitmap=NULL).if {
-      content:=(G_BUTTON.create (G_OUT.create name) connect win_out);
-    } else {
-      content:=(G_BUTTON.create (G_IMG.create bitmap) connect win_out);
-    };
-  );
-  
-  //
-  // Evaluation.
-  //
-  
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        (width,height):=G_DIV_EXPR.predict_size (width,height) and (i.width,i.height);
-      };
-    };
-    (width,height):=G_WIN_OUT.predict_size (width,height);
-    (connector_width,connector_height):=G_BUTTON.predict_size (G_OUT.predict_size name);
-    //name.print;" connector_width: ".print;connector_width.print;'\n'.print;
-    //name.print;" cpnnector_height: ".print;connector_height.print;'\n'.print;
-    //name.print;" menu_v_out.width: ".print;width.print;'\n'.print;
-    //name.print;" menu_v_out.height: ".print;height.print;'\n'.print
-  );
-  
-  
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-    
-    !list.is_empty && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      list.foreach {
-        i:INODE;
-        
-        (!i.list.is_empty).if {
-          (RAW_V.evaluate i width screen_width height screen_height > 0).if {
-            //i.name.print;" width: ".print;i.width.print;'\n'.print;
-            //i.name.print;" height: ".print;i.height.print;'\n'.print;
-            nb:=nb+1;
-          };
-        };
-      };
-      nb=list.count
-    }
-  );
-
-
-
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-    + area,r,result:REAL_32;
-    
-    // Space evaluation
-    compute_size_from_prc 0;
-    //"width: ".print;w.print;'\n'.print;
-    //"height: ".print;h.print;'\n'.print;
-    //"menu_v_out.width: ".print;width.print;'\n'.print;
-    //"menu_v_out.height: ".print;height.print;'\n'.print;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-          r:=0;
-          reset_size;
-          covering:=100;
-        } else {
-          covering:=50;
-          r:=get_nitem_from_prc 50;
-        };
-      } else {
-        covering:=25;
-        r:=get_nitem_from_prc 25;
-      };
-    } else {
-      covering:=0;
-      r:=list.count;
-    };
-    name.print;" menu_v_out.width: ".print;width.print;'\n'.print;
-    name.print;" menu_v_out.height: ".print;height.print;'\n'.print;
-    "width: ".print;w.print;'\n'.print;
-    "height: ".print;h.print;'\n'.print;
-    r:=(r/list.count)*100;
-    (r>0).if {
-      //"r>0\n".print;
-      area:=get_area_prc (w,h);
-      //name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-      (r>area).if {
-        //"r>area\n".print;
-        result:=r-area;
-      } else {
-        //"r<area\n".print;
-        result:=0;
-      };
-    } else {
-      //"r<0\n".print;
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
-  
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    
-    n.set_representation MENU_V_OUT;
-    "MENU_V_OUT semantic evaluation of ".print;n.name.print;" with dimensions ".print;w.print;"x".print;h.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"MENU_V_OUT space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      result:=0;
-    };
-    "MENU_V_OUT result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
-  
-  /*
-  // -> 1) R = Faisabilité de l'espace (% de recouvrement des items) (1:25%, 2:50%, 3:75%)
-  // -> 2) A = Note de calcul d'aire. (% sur l'écran total)
-  // Result = (R*100-A)/100  
-*/
\ No newline at end of file
diff --git a/lib/guii/page.li b/lib/guii/page.li
deleted file mode 100644
index 0979019..0000000
--- a/lib/guii/page.li
+++ /dev/null
@@ -1,95 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := PAGE;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-
-  - representation:STRING_CONSTANT := "PAGE";
-
-  - print <-
-  (
-    "PAGE".print;
-  );
-
-  - make_representation <-
-  (
-    content:=G_PAGE.create;
-  );
-  
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN <-
-  (
-    +result:BOOLEAN;
-    
-    ((list.is_empty) && {operator='^'}).if {
-      result:=TRUE;
-    } else {
-      result:=FALSE;
-    };
-    result
-  );
-   
-  
-  - space_evaluation (w,h:INTEGER) :REAL_32 <-
-  (
-    +result:REAL_32;
-    
-    width:=G_PAGE.width_min;
-    height:=G_PAGE.height_min;
-    ((width > w) || {height > h}).if {
-      result:=0.0;
-    } else {
-      result:=100.0;
-    };
-    result
-  );
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-     
-     +result:REAL_32;
-     
-     "PAGE semantic evaluation of ".print;n.name.print;"\n".print;
-     n.set_representation PAGE;
-     //Semantic evaluation (if the "base" son doesn't have any sons itself then it is a PAGE at 100%
-     (n.semantic_evaluation (w,h)).if {
-       ((G_PAGE.width_min <= w) || {G_PAGE.height_min <= h}).if {
-         result:=n.space_evaluation (w,h);
-       };
-     }; 
-     "PAGE result of ".print;n.name.print;"= ".print;result.print;"% \n".print;
-     result
-  );
-
-
-
-
-
-		
diff --git a/lib/guii/paint.bmp b/lib/guii/paint.bmp
deleted file mode 100644
index b3858fc..0000000
Binary files a/lib/guii/paint.bmp and /dev/null differ
diff --git a/lib/guii/raw_h.li b/lib/guii/raw_h.li
deleted file mode 100644
index c7c389f..0000000
--- a/lib/guii/raw_h.li
+++ /dev/null
@@ -1,229 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := RAW_H;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-
-- representation:STRING_CONSTANT := "RAW_H";
-+ parent:INTERNAL_INODE;
-
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-
-    list.foreach {
-      i:INODE;
-
-      (i.priority>covering).if {
-        i.make_representation;
-        (expr=NULL).if {
-          expr:=i.content;
-        } else {
-          expr:=expr | i.content;
-        };
-      };
-    };
-    content:=G_RAW.create expr;
-  );
-
-//
-// Evaluation.
-//
-
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        (width,height):=G_OR_EXPR.predict_size (width,height) and (i.width,i.height);
-      };
-    };
-    (width,height):=G_RAW.predict_size (width,height);
-    //"width: ".print;bugw_screen.print;'\n'.print;
-    //"height: ".print;bugh_screen.print;'\n'.print;
-    //"raw_h.width: ".print;width.print;'\n'.print;
-    //"raw_h.height: ".print;height.print;'\n'.print;
-  );
-
-
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-
-    !list.is_empty && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-        +son_width:INTEGER;
-        +son_height:INTEGER;
-        +son_connector_w:INTEGER;
-        +son_connector_h:INTEGER;
-
-        (!i.list.is_empty).if {
-          tmp:=MENU_V_OUT.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_V_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=MENU_H_OUT.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_H_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=WINDOW.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=WINDOW;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        } else {
-          tmp:=CHECK.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=CHECK;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=ACTION.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=ACTION;
-            son_connector_w:=0;
-            son_connector_h:=0;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        };
-
-        (best_prc > 0).if {
-          i.set_representation parent;
-          i.set_width son_width;
-          i.set_height son_height;
-          i.set_connector_w son_connector_w;
-          i.set_connector_h son_connector_h;
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-
-- space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-      + r,result,area:REAL_32;
-      // Space evaluation
-      compute_size_from_prc 0;
-      ((height > h) || {width > w}).if {
-	"Priority 0 failed\n".print;
-	compute_size_from_prc 25;
-	((height > h) || {width > w}).if {
-	   "Priority 25 failed\n".print;
-	   compute_size_from_prc 50;
-	   ((height > h) || {width > w}).if {
-		"Priority 50 failed\n".print;
-		r:=0;
-		set_height 0;
-		set_width 0;
-                covering:=100;
-           } else {
-		r:=get_nitem_from_prc 50;
-                covering:=50;
-	   };
-	} else {
-	   r:=get_nitem_from_prc 25;
-           covering:=25;
-	};
-      } else {
-	r:=list.count;
-        covering:=0;
-     };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-
-    n.set_representation RAW_H;
-
-    // Semantic evaluation && Space evaluation.
-    "RAW_H semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //" OK\n".print;
-      //"RAW_H space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      // " FAILED\n".print;
-       result:=0;
-    };
-    "RAW_H result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-
-
-
diff --git a/lib/guii/raw_v.li b/lib/guii/raw_v.li
deleted file mode 100644
index b811123..0000000
--- a/lib/guii/raw_v.li
+++ /dev/null
@@ -1,231 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := RAW_V;
-  
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-  
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-  
-  - representation:STRING_CONSTANT := "RAW_V";
-  + content:G_WIN_OUT;
-  
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-    
-    list.foreach {
-      i:INODE;
-      
-      (i.priority>covering).if {
-        i.make_representation;
-        (expr=NULL).if {
-          expr:=i.content;
-        } else {
-          expr:=expr / i.content;
-        };
-      };
-    };
-    content:=G_RAW.create expr;
-  );
-  
-  
-  //Evaluation
-  
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    reset_size;
-    list.foreach {
-      i:INODE;
-      +w,h:INTEGER;
-      (i.priority>p).if {
-        ((i.connector_width>0) && {i.connector_height>0}).if {
-          w:=i.connector_width;
-          h:=i.connector_height;
-        } else {
-          w:=i.width;
-          h:=i.height;
-        };
-        (width,height):=G_DIV_EXPR.predict_size (width,height) and (w,h);
-      };
-    };
-    (width,height):=G_RAW.predict_size (width,height);
-    //"raw_v.width: ".print;width.print;'\n'.print;
-    //"raw_v.height: ".print;height.print;'\n'.print;
-  );
-  
-  
-  - semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-    
-    !list.is_empty && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-        +son_width:INTEGER;
-        +son_height:INTEGER;
-        +son_connector_w:INTEGER;
-        +son_connector_h:INTEGER;
-        
-        (!i.list.is_empty).if {
-          tmp:=MENU_V_OUT.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_V_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=WINDOW.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=WINDOW;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=MENU_H_OUT.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=MENU_H_OUT;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        } else {
-          tmp:=CHECK.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=CHECK;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-          tmp:=ACTION.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            parent:=ACTION;
-            son_connector_w:=i.connector_width;
-            son_connector_h:=i.connector_height;
-            son_width:=i.width;
-            son_height:=i.height;
-          };
-        };
-        
-        (best_prc > 0).if {
-          i.set_representation parent;
-          i.set_width son_width;
-          i.set_height son_height;
-          i.set_connector_w son_connector_w;
-          i.set_connector_h son_connector_h;
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-  
-  - space_evaluation (w,h:INTEGER) :REAL_32<-
-  (
-    + area,r,result:REAL_32;
-    
-    // Space evaluation
-    compute_size_from_prc 0;
-    ((height > h) || {width > w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height > h) || {width > w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height > h) || {width > w}).if {
-          "Priority 50 failed\n".print;
-          r:=0;
-          set_height 0;
-          set_width 0;
-          covering:=100;
-        } else {
-          r:=get_nitem_from_prc 50;
-          covering:=50;
-        };
-      } else {
-        r:=get_nitem_from_prc 25;
-        covering:=25;
-      };
-    } else {
-      r:=list.count;
-      covering:=0;
-    };
-    r:=(r/list.count)*100;
-    (r>0).if {
-      area:=get_area_prc (w,h);
-      (r>area).if {
-        result:=r-area;
-      } else {
-        result:=0;
-      };
-    } else {
-      result:=0;
-    };
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
-  
-  - evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-    + result:REAL_32;
-    
-    //"w_screen".print;w.print;"\n".print;
-    //"h_screen".print;h.print;"\n".print;
-    n.set_representation RAW_V;
-    "RAW_V semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      //"RAW_V space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-      result:=0;
-    };
-    "RAW_V result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
-  
diff --git a/lib/guii/rectangle.bmp b/lib/guii/rectangle.bmp
deleted file mode 100644
index c445375..0000000
Binary files a/lib/guii/rectangle.bmp and /dev/null differ
diff --git a/lib/guii/select.bmp b/lib/guii/select.bmp
deleted file mode 100644
index 569312c..0000000
Binary files a/lib/guii/select.bmp and /dev/null differ
diff --git a/lib/guii/test.li b/lib/guii/test.li
deleted file mode 100755
index 7a31fd7..0000000
--- a/lib/guii/test.li
+++ /dev/null
@@ -1,45 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := TEST;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Horizontal menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-
-  - main<-
-  (
-    +bitmap:ABSTRACT_STRING;
-
-    bitmap:="hello";
-    (bitmap=NULL).if {
-      "NULL\n".print;
-    } else {
-      "Pas NULL\n".print;
-    };
-  );
\ No newline at end of file
diff --git a/lib/guii/test_gui2.li b/lib/guii/test_gui2.li
deleted file mode 100755
index bcdb904..0000000
--- a/lib/guii/test_gui2.li
+++ /dev/null
@@ -1,46 +0,0 @@
-Section Header
-  
-  + name        := TEST_GUI2;
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-	- main <-
-	(
-		//+menu_h:G_EXPR;
-		+menu_bar:G_EXPR;
-		+file_menu:G_WIN_OUT;
-		+edit_menu:G_WIN_OUT;
-
-		VIDEO.make (800,600);
-
-		file_menu:=G_WIN_OUT.create (
-			G_RAW.create (
-				G_BUTTON.create (G_OUT.create "New")
-			) /
-			G_RAW.create (
-				G_BUTTON.create (G_OUT.create "Hello")             /
-				G_BUTTON.create (G_OUT.create "Salut les loulou!")
-			)
-		);
-
-		edit_menu:=G_WIN_OUT.create (
-			G_RAW.create (
-				G_BUTTON.create (G_OUT.create "foo1")  /
-				G_BUTTON.create (G_OUT.create "foo2") /
-				G_BUTTON.create (G_OUT.create "foo3") /
-				G_BUTTON.create (G_OUT.create "foo4")
-			)
-		);
-
-		menu_bar:=(
-			G_BUTTON.create (G_OUT.create "Fichier") connect file_menu |
-			G_BUTTON.create (G_OUT.create "Edition") connect edit_menu
-		).fix_height.fix_width;
-
-
-		INTERFACE.make VIDEO size (VIDEO.width,VIDEO.height) with (menu_bar / G_PAGE.create);
-    		INTERFACE.run;
-	);
\ No newline at end of file
diff --git a/lib/guii/text.bmp b/lib/guii/text.bmp
deleted file mode 100644
index 72b9c56..0000000
Binary files a/lib/guii/text.bmp and /dev/null differ
diff --git a/lib/guii/tool_bar.li b/lib/guii/tool_bar.li
deleted file mode 100755
index 30b41f8..0000000
--- a/lib/guii/tool_bar.li
+++ /dev/null
@@ -1,145 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := TOOL_BAR;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Tool bar for GUII.";
-  
-Section Inherit
-  
-  + menu_parent:MENU_H:=MENU_H;
-  
-Section Public
-  
- 
-  - representation:STRING_CONSTANT := "TOOL_BAR";
-
-  - print <-
-  (
-    "TOOL_BAR".print;
-  );
-
-/*  - get_menu_parent:INTERNAL_INODE <- 
-  ( + is_menu_bar:TOOL_BAR;
-
-    is_menu_bar ?= Self;
-    is_menu_bar.menu_parent
-  );*/
-
-  //
-  // Evaluation.
-  //
-
-- semantic_evaluation (w,h:REAL_32) :BOOLEAN <-
-/*  [ +is_menu_h:MENU_H;
-    +is_menu_v:MENU_V;
-
-    is_menu_h ?= get_menu_parent;
-    is_menu_v ?= get_menu_parent;
-    ? {(is_menu_h!=NULL) || {is_menu_v!=NULL}};
-  ]*/
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-
-    !list.is_empty && {
-      browse_group { 
-        i:INODE;
-        (i.operator != '&')
-      }
-    } && {
-      +nb:INTEGER;
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-/*        +is_menu_h:MENU_H;
-        +is_menu_v:MENU_V;
-
-        is_menu_h ?= get_menu_parent;
-        is_menu_v ?= get_menu_parent;*/
-        (!i.list.is_empty).if {
-          tmp:=MENU_V_OUT.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation MENU_V_OUT;
-          };
-          tmp:=WINDOW.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation WINDOW;
-          };
-//        (is_menu_h!=NULL).if {
-          tmp:=DROP_DOWN_MENU.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation DROP_DOWN_MENU;
-          };
-//        };
-/*        (is_menu_v!=NULL).if {
-          tmp:=MENU_H_OUT.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation MENU_H_OUT;
-          };
-        };*/
-        } else {
-          tmp:=CHECK.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation CHECK;
-          };
-          tmp:=ACTION.evaluate i width bugw_screen height bugh_screen;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation ACTION;
-          };
-        };
-        (best_prc > 0).if {
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-
-  - evaluate n:INODE width w:REAL_32 height h:REAL_32 : REAL_32<-
-  (
-    + result:REAL_32;
-
-    // changer le parent de n pour pouvoir utiliser les méthodes spécifiques à MENU_BAR
-    n.set_representation TOOL_BAR;
-
-    // Semantic evaluation && Space evaluation.
-    "TOOL_BAR semantic evaluation of ".print;n.name.print;"\n".print;
-    (n.semantic_evaluation (w,h)).if {
-      "TOOL_BAR space evaluation of ".print;n.name.print;"\n".print;
-      result:=n.space_evaluation (w,h);
-    } else {
-       result:=0;
-    };
-    "TOOL_BAR result for ".print;n.name.print;"= ".print;result.print;"%\n".print;
-    result
-  )
-  [ ? {Result.in_range 0 to 100}; ];
diff --git a/lib/guii/win_in.li b/lib/guii/win_in.li
deleted file mode 100644
index 7b21b01..0000000
--- a/lib/guii/win_in.li
+++ /dev/null
@@ -1,112 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := WIN_IN;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Window_in for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-
-  - representation:STRING_CONSTANT := "WIN_IN";
-
-  + win_in:G_WIN_IN;
-
-  - print <-
-  (
-	"WIN_IN".print;
-  );
-	
-  - make_representation <-
-  (
-    (content=NULL).if{
-	"connard \n".print;
-    };
-    content:=G_WIN_IN.create (width_win_in,height_win_in) with content;
-  );
-
-- semantic_evaluation_win_in n:INODE width w:INTEGER height h:INTEGER :BOOLEAN<-
-  (
-    +tmp:REAL_32;
-    +best_prc:REAL_32;
-    +parent:INTERNAL_INODE;
-    +width:INTEGER;
-    +height:INTEGER;
-
-      tmp:=PAGE.evaluate n width (G_PAGE.width_min) height (G_PAGE.height_min);
-      (tmp > best_prc).if {
-        best_prc:=tmp;
-	width:=n.width;
-	height:=n.height;
-	parent:=PAGE;
-      };
-      tmp:=MENU_V.evaluate n width (n.screen_width) height (3*n.screen_height);
-      (tmp > best_prc).if {
-        best_prc:=tmp;
-	width:=n.width;
-	height:=n.height;
-	parent:=MENU_V;
-      };
-    (best_prc > 0).if {
-	n.set_representation parent;
-	n.make_representation;
-	n.set_width width;
-	n.set_height height;
-    };
-    best_prc>0
-  );
-
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32 <-
-  (
-     + result:REAL_32;
-     + a,b,c,d:REAL_32;
-
-     n.set_representation WIN_IN;
-     "WIN_IN semantic evaluation of ".print;n.name.print;"\n".print;
-     (n.semantic_evaluation_win_in n width 0 height 0).if {
-	a:=w;
-    	b:=h;
-    	c:=n.width;
-    	d:=n.height;
-	((c>a)&&{d>b}).if {
-		result:=(a*b)/(c*d)*100
-	};
-	((c>a)&&{d<b}).if {
-		result:=(a*d)/(c*d)*100
-	};
-	
-	((c<a)&&{d>b}).if {
-		result:=(c*b)/(c*d)*100
-	};
-       "WIN_IN result of ".print;n.name.print;"= ".print;result.print;"% \n".print;
-       n.set_width_win_in w;
-       n.set_height_win_in h;
-       n.set_representation_win_in WIN_IN;
-     };
-     result
-  );
diff --git a/lib/guii/window.li b/lib/guii/window.li
deleted file mode 100644
index 02a8c4a..0000000
--- a/lib/guii/window.li
+++ /dev/null
@@ -1,213 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := WINDOW;
-
-  - copyright := "Jonathan Ponte, Maxime Audrin, Benoit Sonntag";
-
-  - comment   := "Vertical menu for GUII.";
-  
-Section Inherit
-  
-  - parent_internal_inode:INTERNAL_INODE := INTERNAL_INODE;
-  
-Section Public
-
-  - representation:STRING_CONSTANT := "WINDOW";
-
-  + win_out:G_WIN_OUT;
-
-  - print <-
-  (
-    "WINDOW".print;
-  );
-
-  - make_representation <-
-  (
-    +expr:G_EXPR;
-
-    list.foreach {
-      i:INODE;
-
-      (i.priority>covering).if {
-        (expr=NULL).if {
-          expr:=i.content;
-        } else {
-          expr:=expr / i.content;
-        };
-      };
-    };
-    win_out:=G_WIN_OUT.create name with expr;
-    content:=(G_BUTTON.create (G_OUT.create name) connect win_out).fix_width.fix_height;
-  );
-
-  - depth_node n:INODE of base:INODE from depth:INTEGER :INTEGER <-
-  (
-      +result:INTEGER;
-      +depth2:INTEGER;
-
-      depth2:=depth+1;
-      (n.name=base.name).if {
-        result:=depth2;
-      } else {
-        (!base.list.is_empty).if {
-          base.list.foreach {
-            i:INODE;
-            result:=result+depth2+(depth_node n of i from depth2);
-          };
-        } else {
-          result:=0;
-        };
-      };
-
-      result
-  );
-
-  - compute_size_from_prc p:INTEGER <-
-  [ ? {! list.is_empty}; ]
-  (
-    //attention ce calcul n'est pas le bon, c'est les dimensions au max
-    //les bonnes dimensions se calculent en fonction du placement des items
-    reset_size;
-    list.foreach {
-      i:INODE;
-      (i.priority > p).if {
-        height:=height+i.height;
-        width:=width+i.width;
-      };
-    };
-    (width,height):=G_WIN_OUT.predict_size (height,width) with_title TRUE;
-    (connector_width,connector_height):=G_BUTTON.predict_size (G_OUT.predict_size name);
-  );
-
-- semantic_evaluation (w,h:INTEGER) :BOOLEAN<-
-  (
-    bugw_screen:=w;
-    bugh_screen:=h;
-
-    !list.is_empty &&
-    {depth > 2} &&
-    {
-      +nb:INTEGER;
-
-      list.foreach {
-        i:INODE;
-        +tmp:REAL_32;
-        +best_prc:REAL_32;
-
-        (!i.list.is_empty).if {
-          tmp:=PAGE.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation PAGE;
-          };
-          tmp:=MENU_V.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation MENU_BAR;
-          };
-          tmp:=MENU_H.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation MENU_H;
-          };
-          tmp:=DROP_DOWN_MENU.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation DROP_DOWN_MENU;
-          };
-        } else {
-          tmp:=CHECK.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation CHECK;
-          };
-          tmp:=ACTION.evaluate i width screen_width height screen_height;
-          (tmp > best_prc).if {
-            best_prc:=tmp;
-            i.set_representation ACTION;
-          };
-        };
-        (best_prc > 0).if {
-          nb:=nb+1;
-        };
-      };
-      nb=list.count
-    }
-  );
-
-- space_evaluation (w,h:INTEGER) :REAL_32<-
-  [? {!list.is_empty}; ]
-  (
-      + area,r,result:REAL_32;
-
-      // Space evaluation
-      compute_size_from_prc 0;
-    ((height >= h) || {width >= w}).if {
-      "Priority 0 failed\n".print;
-      compute_size_from_prc 25;
-      ((height >= h) || {width >= w}).if {
-        "Priority 25 failed\n".print;
-        compute_size_from_prc 50;
-        ((height >= h) || {width >= w}).if {
-          "Priority 50 failed\n".print;
-		r:=0;
-		set_height 0;
-		set_width 0;
-           } else {
-		covering:=50;
-		r:=get_nitem_from_prc 50;
-	   };
-	} else {
-	   covering:=25;
-	   r:=get_nitem_from_prc 25;
-	};
-      } else {
-	covering:=0;
-	r:=list.count;
-     };
-     r:=(r/list.count)*100;
-     area:=get_area_prc (w,h);
-     //name.print;" area := ".print;(get_area_prc (w,h)).print;"\n".print;
-     (r>area).if {
-       result:=r-area;
-     } else {
-       result:=0;
-     };
-    result
-  );
-
-- evaluate n:INODE width w:INTEGER height h:INTEGER : REAL_32<-
-  (
-     + result:REAL_32;
-
-     n.set_representation WINDOW;
-     "WINDOW semantic evaluation of ".print;n.name.print;"\n".print;
-     //Semantic evaluation: if the "base" son doesn't have any sons itself then it is a PAGE at 100%
-     (n.semantic_evaluation (w,h)).if {
-      //"WINDOW space evaluation of ".print;n.name.print;"\n".print;
-       result:=n.space_evaluation (w,h);
-     };
-     "WINDOW result of ".print;n.name.print;"= ".print;result.print;"% \n".print;
-     result
-  );
-
diff --git a/lib/guii/zoom.bmp b/lib/guii/zoom.bmp
deleted file mode 100644
index dd825a9..0000000
Binary files a/lib/guii/zoom.bmp and /dev/null differ
diff --git a/lib/guii/zoom_100.bmp b/lib/guii/zoom_100.bmp
deleted file mode 100644
index 8130e3b..0000000
Binary files a/lib/guii/zoom_100.bmp and /dev/null differ
diff --git a/lib/guii/zoom_in.bmp b/lib/guii/zoom_in.bmp
deleted file mode 100644
index 62ae66d..0000000
Binary files a/lib/guii/zoom_in.bmp and /dev/null differ
diff --git a/lib/guii/zoom_out.bmp b/lib/guii/zoom_out.bmp
deleted file mode 100644
index 0a9fed2..0000000
Binary files a/lib/guii/zoom_out.bmp and /dev/null differ
diff --git a/lib/guii/zoom_page.bmp b/lib/guii/zoom_page.bmp
deleted file mode 100644
index 2f24fe2..0000000
Binary files a/lib/guii/zoom_page.bmp and /dev/null differ
diff --git a/lib/guii/zoom_select.bmp b/lib/guii/zoom_select.bmp
deleted file mode 100644
index ee76661..0000000
Binary files a/lib/guii/zoom_select.bmp and /dev/null differ
diff --git a/lib/io/input_stream.li b/lib/io/input_stream.li
deleted file mode 100644
index 1629a93..0000000
--- a/lib/io/input_stream.li
+++ /dev/null
@@ -1,478 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := INPUT_STREAM;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "This abstract class is the superclass of all classes \
-               \representing an input stream of bytes.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - push_back_flag:BOOLEAN;
-  // True if one char is already pushed back.
-  
-  - last_integer:INTEGER;
-  // Last integer read using `read_integer'.
-  
-  - last_string:STRING :=
-  // Access to the unique common buffer to get for example the result
-  // computed by `read_line', `read_word', `newline', etc. This is a once
-  // function (the same common buffer is used for all streams).
-  (
-    STRING.create 1024
-  );
-  
-  
-  - is_connected:BOOLEAN <-
-  // True when the corresponding stream is connected
-  // to some physical input device.
-  (
-    deferred;
-  );
-  
-  - end_of_input:BOOLEAN <-
-  // Has end-of-input been reached ?
-  // True when the last character has been read.
-  (
-    ? { is_connected };
-    deferred;
-  );
-  
-  
-  // To read one character at a time:
-  
-  - read_character <-
-  // Read a character and assign it to `last_character'.
-  (
-    ? {! end_of_input};
-    deferred;
-    ? {! push_back_flag};
-  );
-  
-  
-  - last_character:CHARACTER <-
-  // Last character read with `read_character'.
-  (
-    ? { is_connected };
-    deferred;
-  );
-  
-  - unread_character <-
-  // Un-read the last character read.
-  (
-    ? { !push_back_flag };
-    deferred;
-    ? { push_back_flag };
-  );
-  
-  // Skipping separators:
-  
-  - skip_separators <-
-  // Skip all separators (see `is_separator' of class CHARACTER) and
-  // make the first non-separator available in `last_character'. This
-  // non-separator character is pushed back into the stream (see
-  // `unread_character') to be available one more time (the next
-  // `read_character' will consider this non-separator). When
-  // `end_of_input' occurs, this process is automatically stopped.
-  (
-    { end_of_input || {!last_character.is_separator}}.until_do {
-      read_character;
-    };
-    ( !end_of_input && {! push_back_flag} ).if {
-      unread_character;
-    };
-  );
-  
-  - skip_separators_using separators:STRING <-
-  // Same job as `skip_separators' using the `separators' set.
-  (
-    ? { separators != NULL };
-    
-    { end_of_input ||{!separators.has last_character}}.until_do {
-      read_character;
-    };
-    ( !end_of_input && {!push_back_flag} ).if {
-      unread_character;
-    };
-  );
-  
-  - skip_remainder_of_line <-
-  // Skip all the remainder of the line including the end of
-  // line character itself.
-  (
-    + stop:BOOLEAN;
-    stop := FALSE;
-    stop.until_do {
-      end_of_input.if {
-	stop := TRUE;
-      } else {
-	(( last_character = '\n') || {last_character = '\b'}).if {
-	  read_character;
-	  stop := TRUE;
-	} else {
-	  read_character;
-	};
-      };
-    };
-  );
-  
-  // To read one number at a time:
-  
-  - read_integer <-
-  // Read an integer according to the Lisaac syntax.
-  // Make result available in `last_integer'.
-  // Heading separators are automatically skipped using
-  // `is_separator' of class CHARACTER.
-  // Trailing separators are not skipped.
-  (
-    + state:INTEGER;
-    + sign:BOOLEAN;
-    // state = 0 :waiting sign or first digit.
-    // state = 1 :sign read, waiting first digit.
-    // state = 2 :in the number.
-    // state = 3 :end state.
-    // state = 4 :error state.
-    
-    ? { !end_of_input };
-    
-    { state > 2 }.until_do {
-      read_character;
-      (state = 0).if {
-	(last_character.is_separator).if {
-	}.elseif { last_character.is_digit} then {
-	  last_integer := last_character.decimal_value;
-	  state := 2;
-	}.elseif { last_character = '-'} then {
-	  sign := TRUE;
-	  state := 1;
-	}.elseif { last_character = '+'} then {
-	  state := 1;
-	} else {
-	  state := 4;
-	};
-      }.elseif {state = 1} then {
-	(last_character.is_separator).if {
-	}.elseif { last_character.is_digit }  then {
-	  last_integer := last_character.decimal_value;
-	  state := 2;
-	} else {
-	  state := 4;
-	};
-      } else { // 2
-	( last_character.is_digit ).if {
-	  last_integer := (last_integer * 10) + last_character.decimal_value;
-	} else {
-	  state := 3;
-	};
-      };
-      
-      end_of_input.if {
-	state.when 0 to 1 then {
-	  state := 4;
-	}.when 2 to 3 then {
-	  state := 3;
-	};
-      };
-    };
-    
-    !end_of_input.if {
-      unread_character;
-    };
-    ( state = 4 ).if {
-      "Error in INPUT_STREAM.read_integer.\n".print;
-      crash;
-    };
-    sign.if {
-      last_integer := - last_integer;
-    };
-  );
-  
-  
-  /*  
-  - read_real <-
-  // Read a REAL and make the result available in `last_real'
-  // and in `last_double'.
-  // The integral part is available in `last_integer'.
-  (
-    ? { !end_of_input };
-    read_double;
-    last_real := last_double.to_real;
-  );
-  
-  - last_real:REAL;
-  // Last real read with `read_real'.
-  
-  - read_double <-
-  // Read a DOUBLE and make the result available in `last_double'.
-  (
-    + state:INTEGER;
-    + sign:BOOLEAN;
-    // state = 0 :waiting sign or first digit.
-    // state = 1 :sign read, waiting first digit.
-    // state = 2 :in the integral part.
-    // state = 3 :in the fractional part.
-    // state = 4 :end state.
-    // state = 5 :error state.
-    
-    ? { !end_of_input };
-    
-    last_string.clear
-    
-    { state >= 4 }.until_do {
-      read_character;
-      ( state = 0).if {
-	(last_character.is_separator).if {
-	}.elseif { last_character.is_digit } then {
-	  last_string.add_last last_character;
-	  state := 2;
-	}.elseif { last_character = '-' } then {
-	  sign := TRUE;
-	  state := 1;
-	}.elseif { last_character = '+' } then {
-	  state := 1;
-	}.elseif { last_character = '.' } then {
-	  last_string.add_last last_character;
-	  state := 3;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 1 } then {
-	( last_character.is_separator ).if {
-	}.elseif { last_character.is_digit } then {
-	  last_string.add_last last_character;
-	  state := 2;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 2 } then {
-	( last_character.is_digit ).if {
-	  last_string.add_last last_character;
-	}.elseif { last_character = '.' } then {
-	  last_string.add_last last_character;
-	  state := 3;
-	} else {
-	  state := 4;
-	};
-      } else { // 3
-	( last_character.is_digit ).if {
-	  last_string.add_last last_character;
-	} else {
-	  state := 4;
-	};
-      };
-      
-      end_of_input.if {
-	state.when 2 to 4 then {
-	  state := 4;
-	} else {
-	  state := 5;
-	};
-      };
-    };
-    
-    (! end_of_input).if {
-      unread_character;
-    };
-    
-    ( state = 5 ).if {
-      io.put_string "Error in INPUT_STREAM.read_double.\n";
-      crash;
-    };
-    
-    ( last_string.count > 0).if {
-      last_double := last_string.to_double;
-    } else {
-      last_double := 0; // NaN
-    };
-    sign.if {
-      last_double := - last_double;
-    };
-  );
-  
-  
-  - last_double:DOUBLE;
-  // Last double read with `read_double'.
-  
-   */
-  
-  // To read one line or one word at a time:
-  
-  - read_line <-
-  // Read a complete line ended by '\n' or `end_of_input'. Make the
-  // result available in `last_string' common buffer. The end of line
-  // character (usually '\n') is not added in the `last_string' buffer.
-  (
-    ? { !end_of_input };
-    last_string.clear;
-    read_line_in last_string;
-  );
-  
-  
-  - read_word <-
-  // Read a word using `is_separator' of class CHARACTER. Result is
-  // available in the `last_string' common buffer. Heading separators are
-  // automatically skipped. Trailing separators are not skipped
-  // (`last_character' is left on the first one). If `end_of_input' is
-  // encountered, Result can be the empty string.
-  (
-    ? { !end_of_input };
-    
-    skip_separators;
-    !end_of_input.if {
-      read_character;
-    };
-    
-    last_string.clear;
-    { end_of_input || { last_character.is_separator }}.until_do {
-      last_string.extend last_character;
-      read_character;
-    };
-  );
-  
-  - newline <-
-  // Consume input until newline ('\n') is found. Corresponding
-  // STRING is stored in `last_string' common buffer.
-  (
-    + stop:BOOLEAN;
-    
-    last_string.clear;
-    stop := end_of_input;
-    
-    {stop}.until_do {
-      read_character;
-      ( end_of_input || { last_character = '\n' }).if {
-	stop := TRUE;
-      } else {
-	last_string.extend last_character;
-      };
-    };
-  );
-  
-  - reach_and_skip keyword:STRING <-
-  // Try to skip enough characters in order to reach the `keyword'
-  // which is skipped too. If the `keyword' is not in the remainder of
-  // this stream, the process is stopped as soon  as `end_of_input'
-  // occurs. As for `skip_separators' the following character of the
-  // `keyword' is available in `last_character' and not yet read.
-  (
-    + stop:BOOLEAN;
-    + i:INTEGER;
-    + first:CHARACTER;
-    
-    ? { !keyword.is_empty };
-    
-    last_string.clear;
-    first := keyword.first;
-    
-    { end_of_input || stop }.until_do {
-      // Reach the first character of the `keyword':
-      i := 2;
-      { (i > last_string.count) || { last_string.item i = first }}.until_do {
-	i := i + 1;
-      };
-      
-      ( i <= last_string.count ).if {
-	last_string.remove_first (i - 1);
-      } else {
-	last_string.clear;
-	!end_of_input.if {
-	  read_character;
-	};
-	{ end_of_input || { last_character = first } }.until_do {
-	  read_character;
-	};
-	last_string.extend last_character;
-      };
-      
-      ? { !end_of_input ->> {last_string.item 1 = first}};
-      ? { last_string.count <= keyword.count };
-      
-      // Now we need as many characters as in `keyword':
-      { end_of_input || { last_string.count = keyword.count } }.until_do {
-	read_character;
-	last_string.extend last_character;
-      };
-      stop := last_string == keyword;
-    };
-    
-    !end_of_input.if {
-      read_character;
-      unread_character;
-    };
-    
-    ? {!end_of_input ->> { last_string == keyword} };
-  );
-  
-  // Other features:
-  
-  - read_line_in buffer:STRING <-
-  // Same jobs as `read_line' but storage is directly done in `buffer'.
-  (
-    ? { !end_of_input };
-    ? { buffer != NULL };
-    deferred;
-  );
-  
-  - read_word_using separators:STRING <-
-  // Same jobs as `read_word' using `separators'.
-  (
-    ? { !end_of_input };
-    ? { separators != NULL };
-    
-    skip_separators_using separators;
-    !end_of_input.if {
-      read_character;
-    };
-    last_string.clear;
-    { end_of_input || { separators.has last_character } }.until_do {
-      last_string.extend last_character;
-      read_character;
-    };
-  );
-  
-  - read_tail_in str:STRING <-
-  // Read all remaining character of the file in `str'.
-  (
-    ? { str != NULL };
-    
-    end_of_input.until_do {
-      read_character;
-      !end_of_input.if {
-	str.extend last_character;
-      };
-    };
-    
-    ? { end_of_input };
-  );
-
-Section Private
-  
-  - basic_io_getc :CHARACTER <- SYSTEM_IO.get_char;
-  
-  - basic_io_eof :CHARACTER <- SYSTEM_IO.eof;
\ No newline at end of file
diff --git a/lib/io/io.li b/lib/io/io.li
deleted file mode 100644
index 7e9fb9b..0000000
--- a/lib/io/io.li
+++ /dev/null
@@ -1,34 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := IO;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Standard Input Output (UNIX Operating System).";
-
-Section Inherit
-  
-  - parent_std_input:STD_INPUT := STD_INPUT;
-  
-  - parent_std_output:STD_OUTPUT := STD_OUTPUT;
diff --git a/lib/io/output_stream.li b/lib/io/output_stream.li
deleted file mode 100644
index 8a8e7e8..0000000
--- a/lib/io/output_stream.li
+++ /dev/null
@@ -1,149 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=OUTPUT_STREAM;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Standard Output Stream.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - is_connected:BOOLEAN <- deferred;
-  
-  - put_character c:CHARACTER <-
-  ( ? {is_connected};
-    deferred;
-  );
-  
-  - put_string s:ABSTRACT_STRING <-
-  // Output `s' to current output device.
-  ( ? {is_connected};
-    ? {s!=NULL};
-    
-    (s.lower).to (s.count) do {i:INTEGER;
-      put_character (s.item i);
-    };
-  );
-  
-  - put_integer i:INTEGER <-
-  // Output `i' to current output device.
-  ( ? {is_connected};
-    
-    tmp_string.clear;
-    i.append_in tmp_string;
-    put_string tmp_string;
-  );
-  
-  - put_integer_format (i, s:INTEGER) <-
-  // Output `i' to current output device using at most
-  // `s' character.
-  ( ? {is_connected};
-    
-    tmp_string.clear;
-    i.append_in_format (tmp_string,s);
-    put_string tmp_string;
-  );
-  
-  //
-  // Other features:
-  //
-  
-  - put_boolean b:BOOLEAN <-
-  // Output `b' to current output device according
-  // to the Eiffel format.
-  ( ? {is_connected};
-    
-    put_string (b.to_string);
-  );
-  
-  - put_pointer p:POINTER <-
-  // Output a viewable version of `p'.
-  ( ? {is_connected};
-    
-    tmp_string.clear;
-    p.append_in tmp_string;
-    put_string tmp_string;
-  );
-  
-  - put_new_line <-
-  // Output a newline character.
-  ( ? {is_connected};
-    
-    put_character '\n';
-  );
-  
-  - put_spaces nb:INTEGER <-
-  // Output `nb' spaces character.
-  ( ? {nb >= 0};
-    
-    1.to nb do { count:INTEGER;
-      put_character ' ';
-    };
-  );
-  
-  - file_exists path:ABSTRACT_STRING :BOOLEAN<-
-  (
-    DIRECTORY.scan_current_working_directory;
-    DIRECTORY.has path 
-  );
-  
-  - append_file file_name:STRING <-
-  (
-    + c:CHARACTER;
-    ? { is_connected };
-    ? { file_exists file_name };
-
-    tmp_file_read.connect_to file_name;
-    tmp_file_read.read_character;
-    { tmp_file_read.end_of_input }.until_do {
-      c := tmp_file_read.last_character;
-      put_character c;
-      tmp_file_read.read_character;
-    };
-    tmp_file_read.disconnect;
-  );
-
-  - flush <-
-  // forces a write of unwritten character (write my have been 
-  // delayed, flush writes buffered characters)
-  (
-    deferred;
-  );
-  
-Section Private
-  
-  - basic_io_putc c:CHARACTER <- 
-  (    
-    SYSTEM_IO.print_char c;   
-  );
-  
-  - basic_error_putc c:CHARACTER <- SYSTEM_IO.print_error_char c;
-  
-  - tmp_file_read:TEXT_FILE_READ := TEXT_FILE_READ.create;
-  
-  - tmp_string:STRING := STRING.create 512;
diff --git a/lib/io/std_error.li b/lib/io/std_error.li
deleted file mode 100644
index af1a478..0000000
--- a/lib/io/std_error.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := STD_ERROR;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := " To write on the standard error output. As for UNIX, the default\ 
-               \ standard error file is the screen.                             \
-               \Note: only one instance of this class should be necessary (have a look\
-               \in the root classes to search for the good name to use).";
-  
-Section Inherit
-  
-  - parent_output_stream:OUTPUT_STREAM := OUTPUT_STREAM;
-  
-Section Public
-
-  - is_connected:BOOLEAN := TRUE;
-  
-  - make <-
-  (
-  );
-
-  - put_character c:CHARACTER <-
-  (
-    basic_error_putc c;
-  );
-
-
diff --git a/lib/io/std_input.li b/lib/io/std_input.li
deleted file mode 100644
index 8cc159d..0000000
--- a/lib/io/std_input.li
+++ /dev/null
@@ -1,92 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := STD_INPUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :=" To use the standard input file. As for UNIX, the default standard input is the keyboard.";
-      
-Section Inherit
-  
-  - parent_input_stream:INPUT_STREAM := INPUT_STREAM;
-  
-Section Private
-
-  - memory:CHARACTER;
-  // Memory of the last available user's value.
-
-Section Public
-  
-  - is_connected:BOOLEAN := TRUE;
-  
-  - read_character:CHARACTER<-
-  (
-    push_back_flag.if {
-      push_back_flag := FALSE;
-    } else {
-      memory := basic_io_getc;
-    };
-    last_character
-  );
-  
-  
-  - unread_character <-
-  (
-    push_back_flag := TRUE;
-  );
-  
-  
-  - last_character:CHARACTER <-
-  (
-    memory
-  );
-  
-  
-  - end_of_input:BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    (! push_back_flag).if {
-      result := (memory = basic_io_eof);
-    };
-    result
-  );
-  
-  - read_line_in str:STRING <-
-  (
-    + mem:CHARACTER;
-    read_character;
-    ( (last_character != '\n') && { memory != basic_io_eof } ).if {
-      str.extend memory;
-      mem := basic_io_getc;
-      
-      { (mem = basic_io_eof) || {mem = '\n'} }.until_do {
-	str.extend mem;
-	mem := basic_io_getc;
-      };
-      memory := mem;
-    };
-  );
-    
-
-
diff --git a/lib/io/std_input_output.li b/lib/io/std_input_output.li
deleted file mode 100644
index f126c1e..0000000
--- a/lib/io/std_input_output.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=STD_INPUT_OUTPUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="To have the useful `io'";
-  
-Section Inherit
-  
-  - parent_input_stream:INPUT_STREAM := INPUT_STREAM;
-
-  - parent_output_stream:OUTPUT_STREAM := OUTPUT_STREAM;
-  
-Section Public
-
-  - is_connected:BOOLEAN := TRUE;
-
-  - make <-
-  (
-  );
-
-  - read_character <-
-  (
-    std_input.read_character;
-  );
-
-  - unread_character <-
-  (
-    std_input.unread_character;
-  );
-
-  - push_back_flag:BOOLEAN <-
-  (
-    std_input.push_back_flag
-  );
-
-  - last_character:CHARACTER <-
-  (
-    std_input.last_character
-  );
-
-  - put_character c:CHARACTER <-
-  (
-    std_output.put_character c;
-  );
-
-  - end_of_input:BOOLEAN <-
-  (
-    std_input.end_of_input
-  );
-  
-  - read_line_in str:STRING <-
-  (
-    std_input.read_line_in str;
-  );
-
diff --git a/lib/io/std_output.li b/lib/io/std_output.li
deleted file mode 100644
index 0f34abc..0000000
--- a/lib/io/std_output.li
+++ /dev/null
@@ -1,46 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=STD_OUTPUT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Standard Output (UNIX Operating System).";
-  
-Section Inherit
-  
-  - parent_output_stream:OUTPUT_STREAM := OUTPUT_STREAM;
-  
-Section Public
-  
-  - is_connected:BOOLEAN := TRUE;
-  
-  - put_character c:CHARACTER <- basic_io_putc c;
-
-
-  
-
-
-
-
-
diff --git a/lib/kernel/bad_reflex.li b/lib/kernel/bad_reflex.li
deleted file mode 100644
index 6bcbf97..0000000
--- a/lib/kernel/bad_reflex.li
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := BAD_REFLEX;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Facility, but it's not in prototype spirit.";
-
-Section Public
-  
-  //
-  // Conditional.
-  //
-  
-  - if cond:BOOLEAN then true_block:BLOCK :BOOLEAN <-
-  (
-    cond.if true_block
-  );
-
-  - if cond:BOOLEAN then true_block:BLOCK else false_block:BLOCK <-
-  (
-    cond.if true_block else false_block;
-  );
-  
-  //
-  // Loop.
-  //
-  
-  - while cond:BLOCK do body:BLOCK <-
-  (
-    cond.while_do body;
-  );
-  
-  - do body:BLOCK while cond:BLOCK <-
-  (
-    body.do_while cond;
-  );
-  
-  - repeat body:BLOCK until cond:BLOCK <-
-  (
-    body.do_until cond;
-  );
-  
\ No newline at end of file
diff --git a/lib/kernel/comparable.li b/lib/kernel/comparable.li
deleted file mode 100644
index 96b6783..0000000
--- a/lib/kernel/comparable.li
+++ /dev/null
@@ -1,137 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COMPARABLE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := " All classes handling COMPARABLE objects with a total order\
-               \relation should inherit from this class.";
-    
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-   - '=='  Right 60 other:SELF :BOOLEAN <- (! (Self < other)) && { ! (other < Self)};
-
-  - '<' Left 1 other:SELF :BOOLEAN <-
-  // Is `self' strictly less than `other'?
-  (
-    ? { other != NULL };
-    deferred;
-    //? { result -> ! (other < self)};
-  );
-
-  - '<=' Left 1 other:SELF :BOOLEAN <-
-  // Is `self' less than or equal `other'?
-  (
-    + result:BOOLEAN;
-    
-    ? { other != NULL };
-    result := ! (other < Self);
-    ? { result = ((Self < other) | == other)};
-    
-    result
-  );
-
-  -  '>' other:SELF :BOOLEAN <-
-  // Is `self' strictly greater than `other'?
-  (
-    ?{ other != NULL };
-    other < Self
-  );
-
-  - '>=' other:SELF :BOOLEAN <-
-  // Is `self' greater than or equal than `other'?
-  (
-    ?{ other != NULL };
-    ! (Self < other)
-  );
-  
-  - in_range lower:SELF to upper:SELF :BOOLEAN <-
-  // Return true if `self' is in range [`lower'..`upper']
-  (
-    (Self >= lower) && { Self <= upper }
-  );
-
-  - compare other:SELF :INTEGER <-
-  // If current object equal to `other', 0;
-  // if smaller,  -1; if greater, 1.
-  (
-    + result:INTEGER;
-    ?{ other != NULL };
-    (Self < other).if {
-      result := -1;
-    }.elseif { other < Self } then {
-      result := 1;
-    } else {
-      result := 0;
-    };
-	
-    ? { (result =  0) = ( == other)};
-    ? { (result = -1) = (Self < other)};
-    ? { (result =  1) = (Self > other)};
-
-    result
-  );
-
-  - min other:SELF :SELF <-
-  // Minimum of `self' and `other'.
-  (
-    + result:SELF;
-    
-    ?{ other != NULL };
-    ( Self <= other ).if {
-      result := Self;
-    } else {
-      result := other;
-    };
-    
-    ? { (result <= Self) && { result <= other}};
-    ? { (compare result = 0) || { other.compare result = 0 }};
-    
-    result
-  );
-  
-  
-  - max other:SELF :SELF <-
-  // Maximum of `self' and `other'.
-  (
-    + result:SELF;
-    ?{ other != NULL };
-    
-    ( Self >= other ).if {
-      result := Self;
-    } else {
-      result := other;
-    };
-
-    ? { (result >= Self) && { result >= other }};
-    ? { (compare result = 0) || {other.compare result = 0}};
-
-    result
-  );
-
-
diff --git a/lib/kernel/convert.li b/lib/kernel/convert.li
deleted file mode 100644
index 8cfd47b..0000000
--- a/lib/kernel/convert.li
+++ /dev/null
@@ -1,35 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := CONVERT[S, /* to */D];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - comment := "Don't use this prototype !";
-
-Section Public
-    
-  - on src:S :D <- `13`;
-
-  
-  
\ No newline at end of file
diff --git a/lib/kernel/hashable.li b/lib/kernel/hashable.li
deleted file mode 100644
index 7e136e6..0000000
--- a/lib/kernel/hashable.li
+++ /dev/null
@@ -1,43 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := HASHABLE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :=" .";
-    
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - hash_code:INTEGER <-
-  // The hash-code value of `Current'.
-  (
-    deferred;
-    // ? {  result >= 0 };
-  );
-
-
diff --git a/lib/kernel/i_dont_know_prototyping.li b/lib/kernel/i_dont_know_prototyping.li
deleted file mode 100644
index 04a1c2c..0000000
--- a/lib/kernel/i_dont_know_prototyping.li
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := I_DONT_KNOW_PROTOTYPING;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Facility, but it's not in prototype spirit.";
-
-Section Public
-  
-  //
-  // Conditional.
-  //
-    
-  - if cond:BOOLEAN then true_block:BLOCK :BOOLEAN <-
-  (
-    cond.if true_block
-  );
-
-  - if cond:BOOLEAN then true_block:BLOCK else false_block:BLOCK <-
-  (
-    cond.if true_block else false_block;
-  );
-  
-  //
-  // Loop.
-  //
-  
-  - while cond:BLOCK do body:BLOCK <-
-  (
-    cond.while_do body;
-  );
-  
-  - do body:BLOCK while cond:BLOCK <-
-  (
-    body.do_while cond;
-  );
-  
-  - repeat body:BLOCK until cond:BLOCK <-
-  (
-    body.do_until cond;
-  );
-  
\ No newline at end of file
diff --git a/lib/kernel/object.li b/lib/kernel/object.li
deleted file mode 100644
index 32d5b69..0000000
--- a/lib/kernel/object.li
+++ /dev/null
@@ -1,189 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := OBJECT;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "Root object.";
-  
-Section Insert
-  
-  - im_an_idiot:Expanded I_DONT_KNOW_PROTOTYPING;
-    
-Section Public
-        
-  //
-  // Compiler consideration.
-  //
-  
-  - object_size:INTEGER <- `12`;
-  
-  //- pointer_size:INTEGER <- POINTER.pointer_size;
-
-  - is_debug_mode:BOOLEAN <- debug_level != 0;
-    
-  - debug_level:INTEGER <- `11`;
-  
-  - is_ansi:BOOLEAN := SYSTEM.is_ansi;
-  
-  //
-  // Control Error.
-  //
-  
-  - top_runtime_stack:POINTER <- `14`;
-  
-  - print_runtime_stack_on ptr:POINTER <- 
-  (
-    (debug_level != 0).if {
-      `stack_print((_____CONTEXT *)@ptr)`;
-    };
-  );
-  
-  - print_runtime_stack <- print_runtime_stack_on top_runtime_stack;
-  
-  - crash_on ptr:POINTER with_message msg:ABSTRACT_STRING <-
-  (
-    print_runtime_stack_on ptr;
-    msg.print;
-    '\n'.print;
-    die_with_code exit_failure_code;    
-  );
-  
-  - crash_with_message msg:ABSTRACT_STRING <-
-  ( 
-    crash_on top_runtime_stack with_message msg;
-  );
-
-  - die_with_code code:INTEGER <- SYSTEM.exit code;
-  // Terminate execution with exit status code `code'.
-  
-  - exit_success_code:INTEGER := 0;
-  
-  - exit_failure_code:INTEGER := 1;
-  
-  - deferred <-
-  ( + ptr:POINTER;
-    ptr := top_runtime_stack;
-    crash_on ptr with_message "Slot deferred.";
-  );
-    
-  - crash <-
-  ( + ptr:POINTER;
-    ptr := top_runtime_stack;
-    crash_on ptr with_message "Crash system.";
-  );
-  
-  - not_yet_implemented <-
-  ( + ptr:POINTER;
-    ptr := top_runtime_stack;
-    crash_on ptr with_message "Sorry, Some Feature is Not Yet Implemented.";
-  );
-  
-  //
-  // Common Function.
-  //
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <- ( deferred; FALSE);
-  
-  - '!==' Right 60 other:SELF :BOOLEAN <- (! (Self == other));
-  
-  
-  - clone_allocation_size:UINTEGER_32;
-  
-  - clone:SELF <- 
-  ( + result:SELF;
-    + ptr:POINTER;
-    + sz:UINTEGER_32;
-    + typ_id:INTEGER;
-      
-    sz := object_size.to_uinteger_32;        
-    (sz = 0).if {      
-      result := Self;
-    } else {      
-      typ_id := type_id_intern;      
-      //ptr := `malloc((@sz + 3)&0xFFFFFFFC)`:POINTER;                  
-      clone_allocation_size := clone_allocation_size + sz;                  
-      (typ_id = -1).if {
-	ptr := SYSTEM.memory.alloc_size sz;
-      } else {
-	ptr := SYSTEM.memory.alloc_type (typ_id.to_uinteger_32) size sz;
-      };                                         
-      //MEMORY.copy to_pointer to ptr size sz;
-      result := CONVERT[POINTER,SELF].on ptr;            
-      //MEMORY.copy to_pointer to ptr size sz;
-      copy_intern_in result;      
-    };
-    result
-  );
-  
-  - free_allocation_memory <- 
-  // Static free, don't use with GC.
-  ( + ptr:POINTER;
-    + sz:UINTEGER_32;
-    + typ_id:INTEGER;
-      
-    sz := object_size.to_uinteger_32;        
-    (sz != 0).if {      
-      typ_id := type_id_intern;      
-      //ptr := `free(@Self)`;                  
-      clone_allocation_size := clone_allocation_size - sz;      
-      ptr := to_pointer;
-      (typ_id = -1).if {
-	SYSTEM.memory.free ptr size sz;
-      } else {
-	SYSTEM.memory.free ptr type (typ_id.to_uinteger_32);
-      };                       
-    };
-  );
-    
-  - to_pointer:POINTER <- CONVERT[SELF,POINTER].on Self;
-  
-  - same_dynamic_type other:OBJECT :BOOLEAN <-
-  ( + convert:SELF;
-    convert ?= other;
-    convert != NULL        
-  );
-  
-  - to_self_on obj:OBJECT :SELF <-
-  [
-    -? {obj != NULL};
-  ]      
-  ( + result:SELF;
-    
-    result ?= obj;
-    result
-  )
-  [
-    +? {Result != NULL};
-  ];    
-  
-  //
-  // The Guru section (Don't touch, don't use !)
-  //
-    
-  - is_expanded_type:BOOLEAN <- `0`;
-  
-  - type_id_intern:INTEGER   <- `1`;
-    
-  - copy_intern_in other:SELF <- `*@other = *@Self`;
diff --git a/lib/kernel/pointer.li b/lib/kernel/pointer.li
deleted file mode 100644
index 1dab303..0000000
--- a/lib/kernel/pointer.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded POINTER;
-
-  - export  := INTEGER;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "References to objects (POINTER is mapped as C type 'void *')";
-
-  - type    := `void *`;
-  
-  - default := `NULL`:POINTER;
-  
-Section Insert
-  
-  - parent_numeric:INTEGER := INTEGER;
-  
-Section Public
-  
-  - in_range low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <- TRUE; // BSBS: A revoir.
-
-  
-  - object_size:INTEGER <- `sizeof(void *)`:INTEGER;
-
-  //- pointer_size:INTEGER <- `sizeof(void *)`:INTEGER;
-  
-  - is_null:BOOLEAN <- ! is_not_null;
-  // Is the external POINTER a NULL pointer ?
-  
-  - is_not_null:BOOLEAN <- (Self!=NULL);
-  // Is the external POINTER a non-NULL pointer ?
-  
-  - to_native_array:NATIVE_ARRAY[UINTEGER_8] <- NATIVE_ARRAY[UINTEGER_8].force_conversion Self;
-  // Convert `pointer' into 'native_array' type.
-  
-  - to_uinteger_32:UINTEGER_32 <- `(unsigned int)@Self`:UINTEGER_32;
-  // convert `pointer' into uinteger type (adress of the pointer)
-  
-  - from_uinteger p:UINTEGER_32 :POINTER <- CONVERT[UINTEGER_32,POINTER].on p;
-  // create POINTER from an adress
-  
-  - to_integer:INTEGER <- to_raw_integer;
-  
-/*  
-  - '+' Left 80 other:INTEGER :POINTER<- (to_uinteger_32 + other).to_pointer;
-
-  - '&' Left 80 other:INTEGER :POINTER<- (to_uinteger_32 & other).to_pointer;
-  
-  - '>' Left 80 other:INTEGER :BOOLEAN<- (to_uinteger_32 > other);
-  
-  - '<=' Left 80 other:INTEGER :BOOLEAN<- (to_uinteger_32 <= other);
-*/
-  //
-  // Convertion format without test.
-  //
-  
-  - to_raw_integer:INTEGER         <- CONVERT[SELF,INTEGER    ].on Self;
-  
-  - to_raw_uinteger_8:UINTEGER_8   <- CONVERT[INTEGER,UINTEGER_8 ].on to_raw_integer;
-
-  - to_raw_uinteger_16:UINTEGER_16 <- CONVERT[INTEGER,UINTEGER_16].on to_raw_integer;
-
-  - to_raw_uinteger_32:UINTEGER_32 <- CONVERT[INTEGER,UINTEGER_32].on to_raw_integer;
-
-  - to_raw_uinteger_64:UINTEGER_64 <- CONVERT[INTEGER,UINTEGER_64].on to_raw_integer;
-  
-  - to_raw_integer_8:INTEGER_8     <- CONVERT[INTEGER,INTEGER_8 ].on to_raw_integer;
-
-  - to_raw_integer_16:INTEGER_16   <- CONVERT[INTEGER,INTEGER_16].on to_raw_integer;
-
-  - to_raw_integer_32:INTEGER_32   <- CONVERT[INTEGER,INTEGER_32].on to_raw_integer;
-
-  - to_raw_integer_64:INTEGER_64   <- CONVERT[INTEGER,INTEGER_64].on to_raw_integer;
\ No newline at end of file
diff --git a/lib/kernel/safe_equal.li b/lib/kernel/safe_equal.li
deleted file mode 100644
index cd7de2c..0000000
--- a/lib/kernel/safe_equal.li
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := SAFE_EQUAL[E];
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment :="The goal of this class is to share the definition of \
-              \feature `safe_equal'. Feature `safe_equal' compares  \
-              \two arguments of type E, by calling `==' only  \
-              \and only if both arguments have the `same_type'..";
-    
-Section Inherit
-  
-  - parent:OBJECT := OBJECT;
-  
-Section Public
-  
-  - safe_equal (e1, e2:E) :BOOLEAN <-
-  // In order to avoid run-time type errors, feature `safe_equal' call
-  // `==' only when `e1' and `e2' have exactly the same `generating_type'.
-  // Furthermore, this feature avoid argument passing from some
-  // expanded type to the corresponding reference type (no automatic
-  // allocation of some reference type during the comparison).
-  ( /*
-    + result:BOOLEAN;
-    
-    ( e1.is_basic_expanded_type).if { then
-      result := (e1 = e2);
-    }.elseif {e1.is_expanded_type} then {
-      result := e1 == e2;
-    }.elseif {e1 = e2} then {
-      result := true;
-    }.elseif {(e1 = NULL) || {e2 = NULL}} then {
-    }.elseif {e1.generating_type = e2.generating_type} then {
-      result := e1 == e2;
-    }; // end if
-    
-    result
-    */
-    (e1=e2) || {(e1!=NULL) && {e1==e2}}
-  );
-  
-
diff --git a/lib/memory/memory.li b/lib/memory/memory.li
deleted file mode 100644
index e88b46b..0000000
--- a/lib/memory/memory.li
+++ /dev/null
@@ -1,779 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := MEMORY;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment  := "Memory manager.";
-  
-  - external :=
-`
-#define MINIMUM_SIZE 256  
-void *table_size[MINIMUM_SIZE/sizeof(void *)];
-void *last_block[64];
-`;
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-  //
-  // MACRO ALLOCATOR
-  //
-    
-Section Mapping
-  
-  + map_previous_linear:UINTEGER_32;  
-  + map_size_and_id:UINTEGER_32;
-    
-  //---------------> Limit for Busy (64 bits)
-  
-  + map_next_free    :MEMORY;
-  + map_previous_free:MEMORY;
-  
-  //---------------> Limit for Free
-  
-Section MEMORY  
-  
-  + previous_linear:UINTEGER_32 <- map_previous_linear;  
-  + size_and_id:UINTEGER_32 <- map_size_and_id;
-    
-  //---------------> Limit for Busy (64 bits)
-  
-  + next_free    :MEMORY <- map_next_free;
-  + previous_free:MEMORY <- map_previous_free;
-
-
-  
-  
-  //
-  // Product by compiler.
-  //
-    
-  // For GC only.
-  /*
-  - get_object_size t:INTEGER :INTEGER <- `get_object_size(@t)`:INTEGER;
-  
-  - mark_static_object   <- `mark_static_object()`; 
-  
-  - demark_static_object <- `demark_static_object()`;
-  
-  - mark_object ptr:POINTER type t:INTEGER <- `mark_object(@ptr, at t)`;
-  
-  - demark_object ptr:POINTER type t:INTEGER <- `demark_object(@ptr, at t)`;
-  */  
-Section MEMORY
-    
-  - object_size:INTEGER <- 8; // 2x32bits = 64bits
-  
-  - this:POINTER        <- CONVERT[MEMORY,POINTER].on Self;
-  
-  - begin:POINTER       <- this + object_size;
-  
-  - size:UINTEGER_32    <- size_and_id & 0FFFF_FFFCh;
-  
-  - next_linear:MEMORY  <- CONVERT[POINTER,MEMORY].on (begin + size);
-    
-  - id:UINTEGER_32      <- size_and_id & 01b;
-  
-  - id_end:UINTEGER_32  <- 10b;
-  
-  - is_end:BOOLEAN      <- (size_and_id & id_end).to_boolean;
-  
-  - set_previous_linear p:UINTEGER_32 <- ( map_previous_linear := p; );
-  
-  - set_size_and_id s:UINTEGER_32     <- ( map_size_and_id     := s; );
-  
-  - get_index p:POINTER :UINTEGER_32  <- (p - begin_memory).to_uinteger_32 >> 26;
-  
-  - nb_page:UINTEGER_32;
-  
-  - put_last m:MEMORY to idx:UINTEGER_32 <-  
-  (
-    ? {idx < nb_page};
-    `last_block[@idx] = @m`;
-  );
-  
-  - get_last idx:UINTEGER_32 :MEMORY <-
-  ( 
-    ? {idx < nb_page};
-    `last_block[@idx]`:MEMORY
-  );
-  
-  - bound_test ptr:POINTER :BOOLEAN <-
-  (
-    (ptr < begin_memory) || {ptr > (begin_memory+capacity_max-4)}.if {
-      "out of bound memory\n".print;
-    };
-    TRUE;
-  );
-
-  - search_capacity <-
-  ( 
-    capacity_max := SYSTEM.get_memory_capacity;
-    begin_memory := SYSTEM.get_begin_memory;
-    //
-    //(capacity_max >> 20).print; "MB\n".print;
-    
-    //'['.print; begin_memory.print_hex; '-'.print; (begin_memory+capacity_max).print_hex; "]\n".print;
-    
-    //
-    {begin_memory != NULL} ? "Memory: Not memory.";
-    {(begin_memory & (POINTER.object_size - 1)) = 0} ? "Memory: Alignment.";
-  );
-
-  - new_page:MEMORY <-
-  ( + old_size,new_size:UINTEGER_64;
-    + block:MEMORY;
-    
-    (capacity_max = 0).if {
-      search_capacity;
-    };
-    
-    old_size := nb_page << 26;
-    nb_page  := nb_page + 1;
-    new_size := old_size + 64.mb;
-    (new_size > capacity_max).if {
-      "Not enough memory.\n".print;
-      die_with_code exit_failure_code;
-    };
-    
-    {nb_page < 64} ? "Memory: 4GB limit.";    
-        
-    block := CONVERT[POINTER,MEMORY].on (begin_memory +# old_size);    
-    
-    block.set_previous_linear 0FFFF_FFFFh;
-    block.set_size_and_id ((64.mb - object_size) | id_free | id_end);
-    block.add_link_free;    
-    put_last block to (nb_page - 1);
-    
-    /*    
-    (nb_page < 7).if {
-      new_page;
-    };
-    */  
-    block
-  );
-    
-  //
-  // Busy / Free Block.
-  //
-  
-  - id_free:UINTEGER_32 <- 00b;
-  - id_busy:UINTEGER_32 <- 01b;
-  
-  - set_next_free     n:MEMORY <- ( map_next_free     := n; );
-  - set_previous_free p:MEMORY <- ( map_previous_free := p; );
-  
-  - delete_link_free <-
-  ( + prev,next:MEMORY;
-    
-    prev := previous_free;
-    next := next_free;
-    (prev = NULL).if {
-      first_free := next;
-    } else {
-      prev.set_next_free next;
-    };
-    (next != NULL).if {
-      next.set_previous_free prev;
-    };
-  );
-  
-  - add_link_free <-
-  (    
-    map_next_free     := first_free;
-    map_previous_free := NULL;
-    (first_free != NULL).if {      
-      first_free.set_previous_free Self;
-    };    
-    first_free := Self;    
-  );
-      
-Section MEMORY
-  
-  - first_free:MEMORY;
-    
-  //
-  // Management.
-  //
-  
-  - to_free idx:UINTEGER_32 <-
-  ( + new_free,next:MEMORY;
-    + prev:UINTEGER_32;
-    + new_size:UINTEGER_32;
-    {id = id_busy} ? "Memory: Macro block not busy.";
-    {idx.in_range 0 to 63} ? "Memory: Bound index.";    
-        
-    prev := previous_linear;
-    next := next_linear;
-    new_free := CONVERT[POINTER,MEMORY].on (begin_memory + prev);
-    new_size := size_and_id & 0FFFF_FFFEh;
-    ((prev = 0FFFF_FFFFh) || {new_free.id != id_free}).if {
-      // `Self' => Free
-      new_free := Self;      
-      add_link_free;
-    } else {
-      // `previous_linear' => Free
-      new_size := new_size + new_free.size_and_id + object_size.to_uinteger_32;      
-    };
-        
-    ((! is_end) && {next.id = id_free}).if {
-      // Delete and concat `next_linear'
-      new_size := new_size + next.size_and_id + object_size.to_uinteger_32;
-      next.delete_link_free;	
-    };    
-    new_free.set_size_and_id new_size;
-    (new_free.is_end).if {
-      put_last new_free to idx;
-    } else {
-      next := next_linear;
-      next.set_previous_linear ((new_free.this - begin_memory).to_uinteger_32);
-    };    
-  );
-  
-  - to_busy sz:UINTEGER_32 index idx:UINTEGER_32 <-
-  ( + siz,new_size:UINTEGER_32;    
-    + new,next:MEMORY;
-    {id = id_free} ? "Memory: Macro block not free.";    
-    {(sz & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";
-    
-    delete_link_free;
-    //    
-    siz      := size_and_id;
-    new_size := siz - sz;
-    (new_size > (minimum_size+2+object_size.to_uinteger_32)).if {
-      siz := sz;
-      new := CONVERT[POINTER,MEMORY].on (begin+sz);
-      new.set_previous_linear ((this - begin_memory).to_uinteger_32);
-      new.set_size_and_id (new_size - object_size.to_uinteger_32);
-      new.add_link_free;
-      (new.is_end).if {
-	put_last new to idx;
-      } else {
-	next := new.next_linear;
-	next.set_previous_linear ((new.this - begin_memory).to_uinteger_32);
-      };
-    };
-    map_size_and_id := siz | id_busy;
-    {id = id_busy} ? "Memory: Macro Block not busy.";
-  );
-  
-  - resize new_size:UINTEGER_32 index idx:UINTEGER_32 :MEMORY <-
-  ( + nxt,result:MEMORY;
-    + old_size,sz:UINTEGER_32;    
-    
-    {(new_size & (POINTER.object_size.to_uinteger_32 -1)) = 0} ? "Memory: Alignment.";
-    {idx.in_range 0 to 63} ? "Memory: Bound index.";
-    
-    old_size := size;
-    (new_size > old_size).if {      
-      (! is_end).if {	
-	nxt := next_linear;
-	sz  := new_size - old_size - object_size.to_uinteger_32;
-	((nxt.id = id_free) && {nxt.size >= sz}).if {
-	  nxt.to_busy sz index idx;
-	  map_size_and_id := size_and_id + (nxt.size_and_id&0FFFF_FFFEh) + object_size.to_uinteger_32;
-	  (is_end).if {
-	    put_last Self to idx;
-	  } else {
-	    nxt := next_linear;
-	    nxt.set_previous_linear ((this - begin_memory).to_uinteger_32);
-	  };
-	  result := Self;
-	};
-      };
-      (result = NULL).if { 
-	// new allocation.	
-	result := search new_size;
-	
-	//fill_memory (result.begin) size new_size;
-	
-	copy begin to (result.begin) size old_size;
-	to_free idx;
-      };
-    } else {
-      result := Self;
-    };    
-    result
-  );
-    
-  //
-  // Searching.
-  //
-  
-  - search new_size:UINTEGER_32 :MEMORY <-
-  ( + result:MEMORY;
-    + idx:UINTEGER_32;
-    
-    {new_size > minimum_size-POINTER.object_size.to_uinteger_32} ? "Memory: Big block.";
-    {(new_size & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";
-    
-    result := first_free;        
-    {(result != NULL) && {result.size < new_size}}.while_do {
-      result := result.next_free;
-    };
-    (result = NULL).if {
-      result := new_page;
-    };
-    idx := get_index (result.this);
-    {idx.in_range 0 to 63} ? "Memory: Bound index.";
-    result.to_busy new_size index idx;
-            
-    result
-  );
-  
-  - new_lab t:UINTEGER_32 :POINTER <-
-  ( + idx:UINTEGER_32;
-    + blc,prev:MEMORY;
-    + result:POINTER;
-    + pv:UINTEGER_32;
-    
-    {
-      (idx < nb_page) && 
-      {
-	blc := get_last idx;
-	(blc.size < 4096) || {blc.id = id_busy}
-      }
-    }.while_do {
-      idx := idx + 1;
-    };
-    
-    (idx >= nb_page).if {    
-      blc := new_page;
-    };        
-    blc.set_size_and_id (blc.size_and_id - 4096);
-    result := blc.next_linear.this;        
- 
-    (blc.size < minimum_size).if {
-      blc.delete_link_free;
-      pv := blc.previous_linear;
-      (pv != 0FFFF_FFFFh).if {
-	prev := CONVERT[POINTER,MEMORY].on (begin_memory + pv);
-	prev.set_size_and_id (prev.size_and_id + blc.size_and_id + object_size.to_uinteger_32);
-	put_last prev to idx;
-      };
-    };
-    put (t.to_pointer) to result;    
-    
-    {((result - begin_memory).to_uinteger_32 & 0FFFh) = 0} ? "Memory: Alignment LAB.";
-    result + POINTER.object_size
-  );  
-  
-Section MEMORY
-    
-  - minimum_size:UINTEGER_32 <- `MINIMUM_SIZE`:UINTEGER_32;
-  
-  - table_type idx:UINTEGER_32 :POINTER <- 
-  (
-    //{idx.in_range 0 to 17} ? "Memory: Bound table_type.";
-    `&(table_type[@idx])`:POINTER
-  );
-  
-  - table_size idx:UINTEGER_32 :POINTER <- 
-  (
-    {idx.in_range 1 to (minimum_size/POINTER.object_size.to_uinteger_32)} ? "Memory: Bound table_size.";
-    `&(table_size[@idx-1])`:POINTER
-  );
-          
-  - begin_memory:POINTER;
-  
-  - capacity_max:UINTEGER_64;
-  
-  - read p:POINTER :POINTER <-
-  ( + mem:NATIVE_ARRAY[POINTER];
-    mem := CONVERT[POINTER, NATIVE_ARRAY[POINTER]].on p;
-    mem.item 0
-  );
-  
-  - put v:POINTER to p:POINTER <-
-  ( + mem:NATIVE_ARRAY[POINTER];
-    mem := CONVERT[POINTER, NATIVE_ARRAY[POINTER]].on p;
-    mem.put v to 0;
-  );
-      
-  - micro_alloc new_size:UINTEGER_32 table ptr_table:POINTER lab lab_type:UINTEGER_32 :POINTER <-
-  ( + result,next,next2:POINTER;
-    + page:UINTEGER_32;
-    {(new_size & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";
-    {new_size >= POINTER.object_size.to_uinteger_32} ? "Memory: Size = 0.";
-
-    result := read ptr_table;        
-    (result = NULL).if {      
-      // Allocation new LAB.      
-      result := new_lab lab_type;          
-      next := result + new_size;            
-      put NULL to next;
-      put next to ptr_table;          
-    } else {      
-      // Next Linked list.
-      next := read result;
-      (next = NULL).if {
-	// Linear allocation.
-	page := (result - begin_memory).to_uinteger_32 & 0FFFh;
-	((page + (new_size << 1)) <= 4096).if {
-	  next := result + new_size;
-	} else {
-	  next := new_lab lab_type;	  
-	};
-	put NULL to next;
-	put next to ptr_table;
-      } else {	
-	// Linked list allocation.	
-	next2 := read next & ~11b;
-	put next2 to result;	
-	result := next;	
-      };		
-    }; 
-    result
-  );
-  
-  - micro_free p:POINTER table ptr_table:POINTER <-
-  ( + next,last:POINTER;
-    {p != NULL} ? "Memory: Pointer NULL.";
-    
-    //"Free : ".print;
-    //ptr_table.print_hex; '\n'.print;
-    
-    last := read ptr_table;
-    {last != NULL} ? "Memory: Table NULL.";
-    next := read last;
-    put (next | 11b) to p;
-    put p to last;
-  );
-  
-Section MEMORY
-
-  - copy src:POINTER to dst:POINTER size sz:UINTEGER_32 <-
-  ( + na_src,na_dst:NATIVE_ARRAY[POINTER];
-    + siz:INTEGER;
-    
-    siz := sz.to_integer;
-    {(siz & (POINTER.object_size -1)) = 0} ? "Memory: Copy alignment.";
-    siz := siz / POINTER.object_size;
-    na_src := CONVERT[POINTER, NATIVE_ARRAY[POINTER]].on src;
-    na_dst := CONVERT[POINTER, NATIVE_ARRAY[POINTER]].on dst;
-    //    
-    (siz - 1).downto 0 do { j:INTEGER;      
-      na_dst.put (na_src.item j) to j;
-    };        
-  );
-  
-  - fill_memory src:POINTER size sz:UINTEGER_32 <-
-  // Just for debug.
-  ( + na_src:NATIVE_ARRAY[POINTER];
-    + siz:INTEGER;
-    
-    siz := sz.to_integer;
-    {(siz & (POINTER.object_size -1)) = 0} ? "Memory: Copy alignment.";
-    na_src := CONVERT[POINTER,NATIVE_ARRAY[POINTER]].on src;    
-    ((siz / POINTER.object_size)-1).downto 0 do { j:INTEGER;
-      na_src.put NULL to j;
-    };    
-  );  
-  
-Section Public
-
-  //
-  // MICRO ALLOCATOR
-  //
-  
-  - alloc_type t:UINTEGER_32 size sz:UINTEGER_32 :POINTER <-
-  // Allocation for object without type. (LAB_TYPE)
-  ( + ptr_table,result:POINTER;    
-    + new_size:UINTEGER_32;
-    
-    {sz <= minimum_size} ? "Memory: Size bound.";
-
-    new_size  := sz.align_power (POINTER.object_size.to_uinteger_32); 
-    
-    {(new_size & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";        
-        
-    ptr_table := table_type t;
-    result := micro_alloc new_size table ptr_table lab (t | 1b);        
-    result
-  );
-  
-  - free p:POINTER type t:UINTEGER_32 <-
-  ( + ptr_table:POINTER;
-    {p != NULL} ? "Memory: Pointer NULL.";
-    
-    ptr_table := table_type t;
-    micro_free p table ptr_table;
-  );
-  
-  - alloc_size sz:UINTEGER_32 :POINTER <-
-  // Allocation for object with type. (LAB_SIZE)
-  ( + ptr_table,result:POINTER;
-    + new_size:UINTEGER_32;
-    
-    {sz <= minimum_size} ? "Memory: Size bound.";
-        
-    new_size  := sz.align_power (POINTER.object_size.to_uinteger_32); 
-    
-    {(new_size & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";
-    
-    ptr_table := table_size (new_size / POINTER.object_size.to_uinteger_32);
-    result := micro_alloc new_size table ptr_table lab new_size;
-    
-    //fill_memory result size new_size;
-    
-    result
-  );
-  
-  - free p:POINTER size sz:UINTEGER_32 <-
-  ( + ptr_table:POINTER;
-    + new_size:UINTEGER_32;
-    {p != NULL} ? "Memory: Pointer NULL.";
-
-    new_size  := sz.align_power (POINTER.object_size.to_uinteger_32); 
-    
-    {(new_size & (POINTER.object_size.to_uinteger_32 - 1)) = 0} ? "Memory: Alignment.";
-    
-    ptr_table := table_size (new_size / POINTER.object_size.to_uinteger_32);
-    micro_free p table ptr_table;
-  );
-    
-  - alloc_dynamic sz:UINTEGER_32 :POINTER <-
-  // Allocation NATIVE_ARRAY[E]. (LAB_SIZE or malloc)
-  ( + new_size,new_size2:UINTEGER_32;
-    + result:POINTER;
-    {sz != 0} ? "Memory: Size = 0";
-        
-    new_size  := sz.align_power (POINTER.object_size.to_uinteger_32); 
-    new_size2 := new_size + POINTER.object_size.to_uinteger_32;
-    (new_size2 <= minimum_size).if {
-      result := alloc_size new_size2;      
-      put 3 to result; // 3 : 2=NATIVE_ARRAY
-      result := result + POINTER.object_size;
-    } else {      
-      result := search new_size .begin;      
-    };
-    
-    //fill_memory result size new_size;
-    
-    result    
-  );
-    
-  - realloc_dynamic p:POINTER old_size old_sz:UINTEGER_32 new_size new_sz:UINTEGER_32 :POINTER <-
-  ( + old_size,old_size2,new_size:UINTEGER_32;
-    + mem:MEMORY;
-    + result:POINTER;    
-    {old_size < new_sz} ? "Memory: New size < Old size.";
-      
-    old_size  := old_sz.align_power (POINTER.object_size.to_uinteger_32); 
-    old_size2 := old_size + POINTER.object_size.to_uinteger_32;    
-    new_size  := new_sz.align_power (POINTER.object_size.to_uinteger_32); 
-    (old_size2 <= minimum_size).if {
-      result := alloc_dynamic new_size;
-      
-      //fill_memory result size new_size;
-      
-      copy p to result size old_size;
-      free (p - POINTER.object_size) size old_size2;
-    } else {
-      mem := CONVERT[POINTER, MEMORY].on (p - object_size);
-      result := mem.resize new_size index (get_index p).begin;      
-    };
-        
-    result
-  );
-  
-  - free_dynamic p:POINTER size sz:UINTEGER_32 <-
-  ( + new_size,new_size2:UINTEGER_32;
-    + mem:MEMORY;
-    
-    new_size  := sz.align_power (POINTER.object_size.to_uinteger_32); // BSBS: Optim, alignment by compilo.
-    new_size2 := new_size + POINTER.object_size.to_uinteger_32;
-    (new_size2 <= minimum_size).if {
-      free (p-POINTER.object_size) size new_size2;
-    } else {
-      mem := CONVERT[POINTER, MEMORY].on (p - object_size);
-      mem.to_free (get_index p);
-    };
-  );
-  
-  //
-  // GARBAGE COLLECTOR
-  //
-/*  
-  - garbage_collector_pass <-
-  (
-    mark; 
-    sweep;
-  );
-  
-Section Private  
-  
-  - mark <-
-  ( + stack,lab:NATIVE_ARRAY[POINTER];
-    + ptr,beg_mem,end_mem,ptr_lab,ptr_table,lim_lab:POINTER;
-    + size_stack:UINTEGER_32;
-    + ptr_mem:UINTEGER_32;
-    + mem:MEMORY;
-    + type:UINTEGER_32;
-    + type_object, size_object,step:UINTEGER_32;
-    
-    // Mark Global + BSS.
-    mark_static_object; 
-        
-    // Mark Stack object.
-    stack := `top_stack()`:NATIVE_ARRAY[POINTER];
-    size_stack := (`@stack - begin_stack`:UINTEGER_32) / POINTER.object_size.to_uinteger_32;
-    //
-    beg_mem := begin_memory;
-    end_mem := beg_mem + (nb_page << 26) - 1;
-    size_stack.downto 0 do { i:UINTEGER_32;
-      ptr := stack.item i;
-      (ptr.in_range beg_mem to end_mem).if {
-	// `ptr' is in Store.
-	ptr_mem := ptr - begin_memory;
-	mem := get_last (ptr_mem >> 26);
-	(ptr > mem.next_linear.this).if {
-	  // `ptr' is in LAB.
-	  ptr_lab := begin_memory + (ptr_mem & 0FFFFF000h);	  
-	  type := read ptr_lab .to_uinteger_32;
-	  (type & 01b != 0).if {
-	    // LAB Type.
-	    type_object := type & 0FFFFFFFEh;
-	    size_object := get_object_size type_object;
-	    ptr_table   := table_type type_object;
-	  } else {
-	    // LAB Size.
-	    type_object := read ptr .to_uinteger_32 & 0FFFFFFFCh;
-	    size_object := type;
-	    ptr_table   := table_size (size_object / POINTER.object_size.to_uinteger_32);
-	  };
-	  lim_lab := read ptr_table - begin_memory;
-	  (! ptr_mem.in_range lim_lab to ((lim_lab+4095)&0FFFFF000h)).if {
-	    step := ptr - ptr_lab - POINTER.object_size;
-	    ((step > 0) && {(step % size_object) = 0}).if {
-	      ((read ptr .to_uinteger_32 & 11b) = 0).if {
-		mark_object ptr type type_object;
-	      };
-	    };
-	  };
-	};
-      };
-    };
-  );
-  
-  - sweep <-
-  ( + last:MEMORY;
-    + ptr_lab,ptr_end,ptr,ptr_table,end_lab,ptr_max:POINTER;
-    + type,type_object,size_object:UINTEGER_32;
-    
-    // Demark a Global + BSS.
-    demark_static_object;
-    
-    // Demark a Store.
-    ptr_end := begin_memory + 64.mb;
-    (nb_page-1).downto 0 do { i:UINTEGER_32;
-      last := get_last i;
-      ptr_lab := last.next_linear.this;
-      {ptr_lab < ptr_end}.while_do {
-	type := read ptr_lab .to_uinteger_32;
-	ptr  := ptr_lab + POINTER.object_size;
-	ptr_lab := ptr_lab + 4096; // Next LAB
-	(type & 01b != 0).if {
-	  // LAB Type.
-	  type_object := type & 0FFFFFFFCh;
-	  size_object := get_object_size type_object;
-	  ptr_table := table_type type_object;
-	  end_lab   := read ptr_table;
-	  (((end_lab + 4095) & 0FFFFF000h) = ptr_lab).if {
-	    ptr_max := end_lab;
-	  } else {
-	    ptr_max := ptr_lab;
-	  };
-	  {ptr < ptr_max}.while_do {
-	    demark_object ptr type type_object;
-	    ptr := ptr + size_object;
-	  };
-	} else {
-	  // LAB Size.	  
-	  size_object := type;
-	  ptr_table := table_size (size_object / POINTER.object_size.to_uinteger_32);
-	  end_lab   := read ptr_table;
-	  (((end_lab + 4095) & 0FFFFF000h) = ptr_lab).if {
-	    ptr_max := end_lab;
-	  } else {
-	    ptr_max := ptr_lab;
-	  };
-	  {ptr < ptr_max}.while_do {
-	    type_object := read ptr .to_uinteger_32 & 0FFFFFFFCh;
-	    demark_object ptr type type_object;
-	    ptr := ptr + size_object;
-	  };
-	};	    
-      };
-      ptr_end := ptr_end + 64.mb;
-    };
-  );
-  */
-  
-Section Private
-  
-  - print_memory <-
-  ( + m,next:MEMORY;
-    
-    "------------------------------------\n".print;
-    "first free : ".print;
-    first_free.this.print_hex; 
-    '\n'.print;
-    
-    next := CONVERT[POINTER, MEMORY].on begin_memory;
-    {
-      m := next;
-      next := m.next_linear;
-      
-      '['.print;
-      (m.previous_linear = 0FFFF_FFFFh).if {
-	"NULL".print;
-      } else {
-	(begin_memory + m.previous_linear).print_hex;
-      };
-      "<-".print;
-      m.this.print_hex;      
-      (m.id = id_busy).if {
-	"(B)".print;
-      } else {
-	"(F)".print;
-      };
-      "->".print;
-      (m.is_end).if {
-	"NULL".print;
-      } else {
-	m.next_linear.this.print_hex;
-      };
-      ']'.print;
-    }.do_until {m.is_end};
-    '\n'.print;
-    "------------------------------------\n".print;
-  );
-
-  - print_capacity <-
-  (
-    print_memory;
-  );
diff --git a/lib/memory/test.txt b/lib/memory/test.txt
deleted file mode 100644
index 4ac4c4e..0000000
--- a/lib/memory/test.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Size : 8
-Type : 0
-addr table : 134523036
-New lab
-new page
-Capacity : 2147483648
-begin memory: 3BD5B008
-end   memory: BBD5B008
-block : 3BD5B008
-LAB : 3FD5A008
-3FD5A00C
diff --git a/lib/number/architecture.txt b/lib/number/architecture.txt
deleted file mode 100644
index 18764ea..0000000
--- a/lib/number/architecture.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-                           NUMERIC
-              /                                      \
-           INTEGER                                   REAL
-       /            \                          /             \
-SIGNED_INTEGER  UNSIGNED_INTEGER           FIXED_REAL       FLOAT_REAL
-+- INTEGER_8       +- UINTEGER_8        /            \      +- REAL_32+-REAL_64
-+- INTEGER_16      +- UINTEGER_16  SIGNED_FIXED_REAL UNSIGNED_FIXED_REAL
-+- INTEGER_32      +- ...           +- REAL_16_16     +- UREAL_16_16
-+- INTEGER_64                       +- REAL_24_8      +- UREAL_24_8
-+- INTEGER_BIG                      +- REAL_26_6      +- UREAL_26_6
-
-Convertir :
-NUMERIC  -> INTEGER
-SMALLINT -> INTEGER_8
-SHORTINT -> INTEGER_16
-LONGINT  -> INTEGER_64
-LARGEINT -> INTEGER_BIG
diff --git a/lib/number/eiffel/big_integer_number.e b/lib/number/eiffel/big_integer_number.e
deleted file mode 100644
index 54843b3..0000000
--- a/lib/number/eiffel/big_integer_number.e
+++ /dev/null
@@ -1,515 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-class BIG_INTEGER_NUMBER
-	--
-	-- To implement NUMBER (do not use this class, see NUMBER).
-	--
-
-inherit
-	INTEGER_GENERAL_NUMBER
-
-creation {ANY}
-	from_native_array
-
-feature {ANY}
-	is_positive: BOOLEAN is
-		do
-			Result := not negative
-		end
-
-	is_negative: BOOLEAN is
-		do
-			Result := negative
-		end
-
-	infix "\\" (other: NUMBER): NUMBER is
-		local
-			oth: INTEGER_GENERAL_NUMBER
-		do
-			oth ::= other
-			Result := oth.remainder_of_divide_big_integer_number(Current)
-		end
-
-	infix "@\\" (other: INTEGER_64): NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register2.from_integer_64(other)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register4.to_integer_general_number
-		end
-
-feature {ANY} -- Misc:
-	hash_code: INTEGER is
-		local
-			i, c, v: INTEGER
-		do
-			from
-				c := 2
-			until
-				c = 0 or else i = capacity
-			loop
-				v := storage.item(i)
-				if v /= 0 then
-					Result := Result #+ v
-					c := c - 1
-				end
-				i := i + 1
-			end
-			Result := capacity #* Result
-			if negative then
-				Result := Result #+ 1
-			end
-			if Result < 0 then
-				Result := ~Result
-			end
-		end
-
-	gcd (other: NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result := other.gcd_with_big_integer_number(Current)
-		end
-
-	is_integer_value: BOOLEAN is False
-
-	force_to_real_64: REAL_64 is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			Result := mutable_register1.force_to_real_64
-		end
-
-	prefix "-": NUMBER is
-		do
-			if is_positive and then capacity = 2 and then storage.item(0) = 0 and then storage.item(1) = Minimum_integer then
-				create {INTEGER_64_NUMBER} Result.make(Minimum_integer_64)
-			else
-				create {BIG_INTEGER_NUMBER} Result.from_native_array(storage, capacity, not negative)
-			end
-		end
-
-	infix "+" (other: NUMBER): NUMBER is
-		do
-			Result := other.add_with_big_integer_number(Current)
-		end
-
-	infix "//" (other: NUMBER): NUMBER is
-		local
-			oth: INTEGER_GENERAL_NUMBER
-		do
-			oth ::= other
-			Result := oth.integer_divide_big_integer_number(Current)
-		end
-
-	infix "@//" (other: INTEGER_64): NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register2.from_integer_64(other)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register3.to_integer_general_number
-		end
-
-	infix "*" (other: NUMBER): NUMBER is
-		do
-			Result := other.multiply_with_big_integer_number(Current)
-		end
-
-	infix "@/" (other: INTEGER_64): NUMBER is
-		do
-			Result := from_integer_general_number_and_integer(Current, other)
-		end
-
-	infix "@+" (other: INTEGER_64): NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register1.add_integer_64(other)
-			Result := mutable_register1.to_integer_general_number
-		end
-
-	infix "@*" (other: INTEGER_64): NUMBER is
-		do
-			if other = 0 then
-				create {INTEGER_64_NUMBER} Result.make(0)
-			elseif other = 1 then
-				Result := Current
-			elseif other = -1 then
-				Result := -Current
-			else
-				put_into_mutable_big_integer(mutable_register1)
-				mutable_register2.from_integer_64(other)
-				mutable_register1.multiply_to(mutable_register2, mutable_register3)
-				Result := mutable_register3.to_integer_general_number
-			end
-		end
-
-feature {NUMBER}
-	add_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			other.put_into_mutable_big_integer(mutable_register2)
-			mutable_register1.add(mutable_register2)
-			Result := mutable_register1.to_integer_general_number
-		end
-
-	add_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other.add_with_big_integer_number(Current)
-		end
-
-feature {NUMBER} -- Multiplication
-	multiply_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			other.put_into_mutable_big_integer(mutable_register2)
-			mutable_register1.multiply_to(mutable_register2, mutable_register3)
-			Result := mutable_register3.to_integer_general_number
-		end
-
-	multiply_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other.multiply_with_big_integer_number(Current)
-		end
-
-feature {NUMBER} -- division
-	integer_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			if other @= Minimum_integer_64 and then is_positive and then capacity = 2 and then storage.item(0) = 0 and then storage.item(1) = Minimum_integer then
-				Result := integer_general_number_one_negative
-			else
-				Result := integer_general_number_zero
-			end
-		end
-
-	remainder_of_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			if other @= Minimum_integer_64 and then is_positive and then capacity = 2 and then storage.item(0) = 0 and then storage.item(1) = Minimum_integer then
-				Result := integer_general_number_zero
-			else
-				Result := other
-			end
-		end
-
-	integer_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register2)
-			other.put_into_mutable_big_integer(mutable_register1)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register3.to_integer_general_number
-		end
-
-	remainder_of_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register2)
-			other.put_into_mutable_big_integer(mutable_register1)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register4.to_integer_general_number
-		end
-
-feature {NUMBER} -- Implementation:
-	gcd_with_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			other.put_into_mutable_big_integer(mutable_register2)
-			mutable_register1.gcd(mutable_register2)
-			Result := mutable_register1.to_integer_general_number
-		end
-
-feature {ANY}
-	inverse: NUMBER is
-		local
-			tmp: INTEGER_GENERAL_NUMBER
-		do
-			if is_negative then
-				tmp ::= -Current
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make(integer_general_number_one_negative, tmp)
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make(integer_general_number_one, Current)
-			end
-		end
-
-	infix "@=" (other: INTEGER_64): BOOLEAN is
-		do
-		end
-
-	infix "@<" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := negative
-		end
-
-	infix "@>" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := not negative
-		end
-
-	infix "@>=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := not negative
-		end
-
-	infix "@<=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := negative
-		end
-
-feature {ANY} -- comparisons with NUMBER
-	infix "<" (other: NUMBER): BOOLEAN is
-		do
-			Result := other.greater_with_big_integer_number(Current)
-		end
-
-feature {ANY} -- comparisons with REAL_64
-	infix "#=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif other >= Minimum_integer_64.force_to_real_64 then
-					--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-				elseif Current < min_double then
-				else
-					Result := force_to_real_64 = other
-				end
-			elseif other < 0 then
-			elseif other <= Maximum_integer_64.force_to_real_64 then
-				--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-			elseif Current > max_double then
-			else
-				Result := force_to_real_64 = other
-			end
-		end
-
-	infix "#<" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-					Result := True
-				elseif other >= Minimum_integer_64.force_to_real_64 then
-					--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-					Result := True
-				elseif Current < min_double then
-					Result := True
-				else
-					Result := force_to_real_64 < other
-				end
-			elseif other < 0 then
-			elseif other <= Maximum_integer_64.force_to_real_64 then
-				--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-			elseif Current > max_double then
-			else
-				Result := force_to_real_64 < other
-			end
-		end
-
-	infix "#<=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-					Result := True
-				elseif other >= Minimum_integer_64.force_to_real_64 then
-					--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-					Result := True
-				elseif Current <= min_double then
-					Result := True
-				else
-					Result := force_to_real_64 <= other
-				end
-			elseif other <= 0 then
-			elseif other <= Maximum_integer_64.force_to_real_64 then
-				--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-			elseif Current >= max_double then
-			else
-				Result := force_to_real_64 <= other
-			end
-		end
-
-	infix "#>" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif other >= Minimum_integer_64.force_to_real_64 then
-					--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-				elseif Current < min_double then
-				else
-					Result := force_to_real_64 > other
-				end
-			elseif other < 0 then
-				Result := True
-			elseif other <= Maximum_integer_64.force_to_real_64 then
-				--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-				Result := True
-			elseif Current > max_double then
-				Result := True
-			else
-				Result := force_to_real_64 > other
-			end
-		end
-
-	infix "#>=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif other >= Minimum_integer_64.force_to_real_64 then
-					--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-				elseif Current <= min_double then
-				else
-					Result := force_to_real_64 >= other
-				end
-			elseif other <= 0 then
-				Result := True
-			elseif other <= Maximum_integer_64.force_to_real_64 then
-				--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-				Result := True
-			elseif Current >= max_double then
-				Result := True
-			else
-				Result := force_to_real_64 >= other
-			end
-		end
-
-feature {NUMBER, NUMBER_TOOLS}
-	greater_with_big_integer_number (other: BIG_INTEGER_NUMBER): BOOLEAN is
-		local
-			i, other_capacity: INTEGER; other_storage: like storage
-		do
-			if is_negative /= other.is_negative then
-				Result := is_positive
-			else
-				other_capacity := other.value_length
-				if capacity = other_capacity then
-					from
-						other_storage := other.value
-						i := capacity - 1
-					variant
-						i
-					until
-						i < 0 or else storage.item(i) /= other_storage.item(i)
-					loop
-						i := i - 1
-					end
-					Result := i >= 0 and then (storage.item(i) > other_storage.item(i) xor is_negative)
-				else
-					Result := capacity > other_capacity xor is_negative
-				end
-			end
-		end
-
-	greater_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): BOOLEAN is
-		do
-			Result := not other.greater_with_big_integer_number(Current)
-		end
-
-feature {ANY}
-	is_zero: BOOLEAN is False
-
-	is_one: BOOLEAN is False
-
-	is_equal (other: NUMBER): BOOLEAN is
-			-- Compares two LARGE_INTEGERs. As they both have same sign
-			-- comparison is done with absolute values.
-		local
-			i: INTEGER; n2: like Current; n2_storage: like storage
-		do
-			if n2 ?:= other then
-				n2 ::= other
-				if is_negative = n2.is_negative then
-					if capacity = n2.value_length then
-						from
-							n2_storage := n2.value
-							i := capacity - 1
-							Result := True
-						until
-							not Result or else i < 0
-						loop
-							Result := storage.item(i) = n2_storage.item(i)
-							i := i - 1
-						end
-					end
-				end
-			end
-		end
-
-	append_in (buffer: STRING) is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register1.append_in(buffer)
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register1.append_in_unicode(buffer)
-		end
-
-feature {NUMBER}
-	value: NATIVE_ARRAY[INTEGER] is
-		do
-			Result := storage
-		ensure
-			Result = storage
-		end
-
-	value_length: INTEGER is
-		do
-			Result := capacity
-		ensure
-			Result = capacity
-		end
-
-feature {MUTABLE_BIG_INTEGER}
-	from_native_array (na: NATIVE_ARRAY[INTEGER]; cap: INTEGER; neg: BOOLEAN) is
-		require
-		--na.item(cap - 1) /= 0 --|*** To be completed (class invariant) (Vincent Croizier, 02/07/04) ***
-		do
-			capacity := cap
-			storage := na
-			negative := neg
-		ensure
-			capacity = cap
-			storage = na
-			negative = neg
-		end
-
-feature {NUMBER}
-	put_into_mutable_big_integer (mut: MUTABLE_BIG_INTEGER) is
-		do
-			mut.from_native_array(storage, capacity, negative)
-		end
-
-feature {}
-	negative: BOOLEAN
-
-	capacity: INTEGER
-
-	storage: NATIVE_ARRAY[INTEGER]
-
-invariant
-	capacity >= 2
-	storage.item(capacity - 1) /= 0
-	not negative implies Current @> Maximum_integer_64
-	negative implies Current @< Minimum_integer_64
-
-end -- class BIG_INTEGER_NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/fraction_general_number.e b/lib/number/eiffel/fraction_general_number.e
deleted file mode 100644
index 489c0bb..0000000
--- a/lib/number/eiffel/fraction_general_number.e
+++ /dev/null
@@ -1,167 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class FRACTION_GENERAL_NUMBER
-	--
-	-- To implement NUMBER (do not use this class, see NUMBER).
-	--
-
-inherit
-	NUMBER
-
-feature {ANY}
-	is_zero: BOOLEAN is False
-
-	is_one: BOOLEAN is False
-
-	is_positive: BOOLEAN is
-		do
-			Result := not is_negative
-		end
-
-	is_negative: BOOLEAN is
-		do
-			Result := numerator.is_negative
-		end
-
-	factorial: NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-	infix "@=" (other: INTEGER_64): BOOLEAN is
-		do
-		end
-
-	infix "//" (other: NUMBER): NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-	infix "@//" (other: INTEGER_64): NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-	infix "\\" (other: NUMBER): NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-	infix "@\\" (other: INTEGER_64): NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-feature {ANY} -- Misc:
-	hash_code: INTEGER is
-		do
-			Result := numerator.hash_code #+ denominator.hash_code
-			if Result < 0 then
-				Result := ~Result
-			end
-		end
-
-	gcd (other: NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-feature {}
-	decimal_in (buffer: STRING; num, denom: NUMBER; negative: BOOLEAN; digits: INTEGER; all_digits: BOOLEAN) is
-		local
-			n, div, remainder: NUMBER; counter: INTEGER
-		do
-			if is_negative then
-				buffer.extend('-')
-				n := -num
-			else
-				n := num
-			end
-			div := n // denom
-			div.append_in(buffer)
-			remainder := n \\ denom
-			if digits > 0 then
-				if all_digits or else not (remainder @= 0) then
-					buffer.extend('.')
-					from
-						counter := 1
-					until
-						counter > digits or else remainder @= 0
-					loop
-						n := remainder @* 10
-						;(n // denom).append_in(buffer)
-						remainder := n \\ denom
-						counter := counter + 1
-					end
-					if all_digits then
-						from
-						until
-							counter > digits
-						loop
-							buffer.extend('0')
-							counter := counter + 1
-						end
-					end
-				end
-			end
-		end
-
-feature {NUMBER} -- Implementation:
-	gcd_with_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-	gcd_with_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			check
-				False
-			end
-		end
-
-invariant
-	denominator @>= 2
-	not numerator.is_zero
-
-end -- class FRACTION_GENERAL_NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/fraction_with_big_integer_number.e b/lib/number/eiffel/fraction_with_big_integer_number.e
deleted file mode 100644
index 55bec6e..0000000
--- a/lib/number/eiffel/fraction_with_big_integer_number.e
+++ /dev/null
@@ -1,436 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-class FRACTION_WITH_BIG_INTEGER_NUMBER
-	--
-	-- To implement NUMBER (do not use this class, see NUMBER).
-	--
-
-inherit
-	FRACTION_GENERAL_NUMBER
-
-creation {ANY}
-	make, make_simply
-
-feature {ANY}
-	numerator: INTEGER_GENERAL_NUMBER
-
-	denominator: INTEGER_GENERAL_NUMBER
-
-feature {NUMBER}
-	make (n, d: INTEGER_GENERAL_NUMBER) is
-			-- Create a simplified large_fraction
-		require
-			not ((n \\ d) @= 0)
-		local
-			gcd_frac, num, den: INTEGER_GENERAL_NUMBER
-		do
-			gcd_frac := n.gcd(d)
-			num ::= n // gcd_frac
-			den ::= d // gcd_frac
-			if den.is_negative then
-				numerator ::= -num
-				denominator ::= -den
-			else
-				numerator := num
-				denominator := den
-			end
-		end
-
-	make_simply (n, d: INTEGER_GENERAL_NUMBER) is
-			-- create a large_fraction without simplify it
-		require
-			d.is_positive
-			n.gcd(d).is_one
-			d @>= 2
-		do
-			numerator := n
-			denominator := d
-		ensure
-			numerator = n
-			denominator = d
-		end
-
-feature {ANY}
-	inverse: NUMBER is
-		local
-			tmp1, tmp2: INTEGER_GENERAL_NUMBER
-		do
-			if numerator @= 1 then
-				Result := denominator
-			elseif numerator @= -1 then
-				Result := -denominator
-			elseif is_negative then
-				tmp1 ::= -denominator
-				tmp2 ::= -numerator
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, tmp2)
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(denominator, numerator)
-			end
-		end
-
-	prefix "-": NUMBER is
-		local
-			tmp: INTEGER_GENERAL_NUMBER
-		do
-			tmp ::= -numerator
-			create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp, denominator)
-		end
-
-	infix "+" (other: NUMBER): NUMBER is
-		do
-			Result := other.add_with_fraction_with_big_integer_number(Current)
-		end
-
-	append_in (buffer: STRING) is
-		do
-			numerator.append_in(buffer)
-			buffer.extend('/')
-			denominator.append_in(buffer)
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-		do
-			numerator.append_in_unicode(buffer)
-			buffer.extend('/'.code)
-			denominator.append_in_unicode(buffer)
-		end
-
-	append_decimal_in (buffer: STRING; digits: INTEGER; all_digits: BOOLEAN) is
-		do
-			decimal_in(buffer, numerator, denominator, is_negative, digits, all_digits)
-		end
-
-	is_equal (other: NUMBER): BOOLEAN is
-		local
-			n2: like Current
-		do
-			if n2 ?:= other then
-				n2 ::= other
-				Result := denominator.is_equal(n2.denominator) and then numerator.is_equal(n2.numerator)
-			end
-		end
-
-	force_to_real_64: REAL_64 is
-			--|*** This is not very good, bad precision on big numbers
-			--| (Vincent Croizier, 05/07/04) ***
-		do
-			Result := numerator.force_to_real_64 / denominator.force_to_real_64
-		end
-
-	infix "*" (other: NUMBER): NUMBER is
-		do
-			Result := other.multiply_with_fraction_with_big_integer_number(Current)
-		end
-
-	infix "@+" (other: INTEGER_64): NUMBER is
-			-- Sum of 'Current' and 'other'.
-		local
-			tmp: INTEGER_GENERAL_NUMBER
-		do
-			tmp ::= denominator @* other + numerator
-			create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp, denominator)
-		end
-
-feature {NUMBER, NUMBER_TOOLS}
-	add_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		local
-			tmp: INTEGER_GENERAL_NUMBER
-		do
-			tmp ::= other * denominator + numerator
-			Result := from_two_integer_general_number(tmp, denominator)
-		end
-
-	add_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		local
-			new_num, new_den, dg, d1, d2, g: INTEGER_GENERAL_NUMBER
-		do
-			if denominator.is_equal(other.denominator) then
-				new_num ::= numerator + other.numerator
-				if new_num.is_zero then
-					Result := zero
-				else
-					g := new_num.gcd(denominator)
-					if denominator.is_equal(g) then
-						Result := new_num // g
-					else
-						new_num ::= new_num // g
-						new_den ::= denominator // g
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(new_num, new_den)
-					end
-				end
-			else
-				dg := denominator.gcd(other.denominator)
-				check
-					dg.is_positive
-				end
-				d1 ::= denominator // dg
-				d2 ::= other.denominator // dg
-				check
-					denominator.is_equal(dg * d1)
-					other.denominator.is_equal(dg * d2)
-				end
-				new_num ::= numerator * d2 + other.numerator * d1
-				if new_num.is_zero then
-					Result := new_num
-				else
-					new_den ::= denominator * d2
-					g := new_num.gcd(dg)
-					if g.is_one then
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(new_num, new_den)
-					else
-						new_num ::= new_num // g
-						new_den ::= new_den // g
-						check
-							not new_den.is_one
-						end
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(new_num, new_den)
-					end
-				end
-			end
-		end
-
-	multiply_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		local
-			g, n, d: INTEGER_GENERAL_NUMBER
-		do
-			g := other.gcd(denominator)
-			d ::= denominator // g
-			n ::= numerator * (other // g)
-			if d.is_one then
-				Result := n
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(n, d)
-			end
-		end
-
-	multiply_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		local
-			g1, g2, n, d: INTEGER_GENERAL_NUMBER
-		do
-			g1 := numerator.gcd(other.denominator)
-			g2 := denominator.gcd(other.numerator)
-			n ::= numerator // g1 * (other.numerator // g2)
-			d ::= denominator // g2 * (other.denominator // g1)
-			if d.is_one then
-				Result := n
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(n, d)
-			end
-		end
-
-feature {ANY}
-	infix "@*" (other: INTEGER_64): NUMBER is
-		local
-			tmp1, tmp2, g: INTEGER_GENERAL_NUMBER
-		do
-			g := denominator.gcd(other.to_number)
-			check
-				g.is_integer_64
-			end
-			if g.is_one then
-				tmp1 ::= numerator @* other
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, denominator)
-			elseif denominator.is_equal(g) then
-				Result := numerator @* (other // g.to_integer_64)
-			else
-				tmp1 ::= numerator @* (other // g.to_integer_64)
-				tmp2 ::= denominator // g
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, tmp2)
-			end
-		end
-
-	infix "@/" (other: INTEGER_64): NUMBER is
-		local
-			tmp1, tmp2, g: INTEGER_GENERAL_NUMBER
-		do
-			if other = 1 then
-				Result := Current
-			elseif other = -1 then
-				Result := -Current
-			else
-				g := numerator.gcd(other.to_number)
-				check
-					g.is_integer_64
-				end
-				if g.is_one then
-					if other < 0 then
-						tmp1 ::= -numerator
-						tmp2 ::= -(denominator @* other)
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, tmp2)
-					else
-						tmp2 ::= denominator @* other
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(numerator, tmp2)
-					end
-				elseif other < 0 then
-					tmp1 ::= -(numerator // g)
-					tmp2 ::= -denominator @* (other // g.to_integer_64)
-					create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, tmp2)
-				else
-					tmp1 ::= numerator // g
-					tmp2 ::= denominator @* (other // g.to_integer_64)
-					create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(tmp1, tmp2)
-				end
-			end
-		end
-
-	infix "@<" (other: INTEGER_64): BOOLEAN is
-		do
-			if is_negative then
-				if other < 0 then
-					Result := numerator < denominator @* other
-				else
-					Result := True
-				end
-			else
-				if other >= 0 then
-					Result := numerator < denominator @* other
-				end
-			end
-		end
-
-	infix "@>" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := not (Current @< other)
-		end
-
-	infix "@<=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := Current @< other
-		end
-
-	infix "@>=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := not (Current @< other)
-		end
-
-	infix "<" (other: NUMBER): BOOLEAN is
-		do
-			Result := other.greater_with_fraction_with_big_integer_number(Current)
-		end
-
-	infix "#=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif Current < min_double then
-				else
-					Result := force_to_real_64 = other
-				end
-			elseif other < 0 then
-			elseif Current > max_double then
-			else
-				Result := force_to_real_64 = other
-			end
-		end
-
-	infix "#<" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-					Result := True
-				elseif Current < min_double then
-					Result := True
-				else
-					Result := force_to_real_64 < other
-				end
-			elseif other < 0 then
-			elseif Current > max_double then
-			else
-				Result := force_to_real_64 < other
-			end
-		end
-
-	infix "#<=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-					Result := True
-				elseif Current <= -max_double then
-					Result := True
-				else
-					Result := force_to_real_64 <= other
-				end
-			elseif other <= 0 then
-			elseif Current >= max_double then
-			else
-				Result := force_to_real_64 <= other
-			end
-		end
-
-	infix "#>=" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif Current <= min_double then
-				else
-					Result := force_to_real_64 >= other
-				end
-			elseif other <= 0 then
-				Result := True
-			elseif Current >= max_double then
-				Result := True
-			else
-				Result := force_to_real_64 >= other
-			end
-		end
-
-	infix "#>" (other: REAL_64): BOOLEAN is
-		do
-			if is_negative then
-				if other >= 0 then
-				elseif Current < min_double then
-				else
-					Result := force_to_real_64 > other
-				end
-			elseif other < 0 then
-				Result := True
-			elseif Current > max_double then
-				Result := True
-			else
-				Result := force_to_real_64 > other
-			end
-		end
-
-feature {NUMBER, NUMBER_TOOLS}
-	greater_with_big_integer_number (other: BIG_INTEGER_NUMBER): BOOLEAN is
-		do
-			Result := denominator.multiply_with_big_integer_number(other) < numerator
-		end
-
-	greater_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): BOOLEAN is
-		do
-			if is_negative = other.is_negative then
-				Result := numerator * other.denominator > other.numerator * denominator
-			elseif other.is_negative then
-				Result := True
-			end
-		end
-
-end -- class FRACTION_WITH_BIG_INTEGER_NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer.e b/lib/number/eiffel/integer.e
deleted file mode 100644
index 406db33..0000000
--- a/lib/number/eiffel/integer.e
+++ /dev/null
@@ -1,187 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class INTEGER
-	--
-	-- Because at time beeing, most machine are 32bits machine, INTEGER is, at time beeing,
-	-- just a short-hand for INTEGER_32 (32 bits signed integer).
-	--
-	-- If you need arbitrary non-limited precision, see also NUMBER and MUTABLE_BIG_INTEGER.
-	--
-
-insert
-	INTEGER_GENERAL
-
-feature {ANY} -- Conversions:
-	fit_integer_8: BOOLEAN is
-			-- Does `Current' fit in INTEGER_8?
-		do
-			if Current >= -128 then
-				Result := Current <= 127
-			end
-		ensure
-			Result = Current.in_range(-128, 127)
-		end
-
-	to_integer_8: INTEGER_8 is
-			-- Explicit conversion to INTEGER_8.
-		require
-			fit_integer_8
-		external "built_in"
-		ensure
-			Result = Current
-		end
-
-	fit_integer_16: BOOLEAN is
-			-- Does `Current' fit in INTEGER_16?
-		do
-			if Current >= -32768 then
-				Result := Current <= 32767
-			end
-		ensure
-			Result = Current.in_range(-32768, 32767)
-		end
-
-	to_integer_16: INTEGER_16 is
-			-- Explicit conversion to INTEGER_16.
-		require
-			fit_integer_16
-		external "built_in"
-		ensure
-			Result = Current
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Explicit conversion to INTEGER_64.
-		do
-			Result := Current
-		ensure
-			Result = Current
-		end
-
-	force_to_real_32: REAL_32 is
-			-- Forced conversion to REAL_32 (possible loss of precision).
-			-- (See also `fit_real_32' and `to_real_32'.)
-		external "built_in"
-		end
-
-	fit_real_32: BOOLEAN is
-			-- Does `Current' fit in REAL_32?
-		do
-			Result := integer_32_fit_real_32(Current)
-		end
-
-	to_real_32: REAL_32 is
-			-- Explicit conversion to REAL_32. (See also `force_to_real_32'.)
-		require
-			fit_real_32
-		do
-			Result := force_to_real_32
-		ensure
-			Result.force_to_integer_32 = Current
-		end
-
-	to_real_64: REAL_64 is
-			-- Explicit conversion to REAL_64.
-		do
-			Result := Current
-		ensure
-			Result = Current
-		end
-
-	to_number: NUMBER is
-		local
-			number_tools: NUMBER_TOOLS
-		do
-			Result := number_tools.from_integer(Current)
-		ensure
-			Result @= Current
-		end
-
-	decimal_digit: CHARACTER is
-		do
-			Result := (Current + '0'.code).to_character
-		end
-
-	hexadecimal_digit: CHARACTER is
-		do
-			if Current <= 9 then
-				Result := (Current + '0'.code).to_character
-			else
-				Result := ('A'.code + (Current - 10)).to_character
-			end
-		end
-
-feature {ANY}
-	low_16: INTEGER_16 is
-			-- The 16 low bits of `Current' (i.e. the right-most part).
-		external "built_in"
-		end
-
-	high_16: INTEGER_16 is
-			-- The 16 high bits of `Current' (i.e. the left-most part).
-		do
-			Result := (Current |>> 16).low_16
-		end
-
-	one: INTEGER_8 is 1
-
-	zero: INTEGER_8 is 0
-
-	hash_code: INTEGER is
-		do
-			Result := Current & 0x7FFFFFFF
-		end
-
-	sqrt: REAL is
-		do
-			Result := to_real_64.sqrt
-		end
-
-	log: REAL is
-		do
-			Result := to_real_64.log
-		end
-
-	log10: REAL is
-		do
-			Result := to_real_64.log10
-		end
-
-feature {}
-	integer_32_fit_real_32 (integer_32: INTEGER_32): BOOLEAN is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "integer_fit_real"
-			feature_name: "integer_32_fit_real_32"
-			}"
-		end
-
-end -- class INTEGER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_16.e b/lib/number/eiffel/integer_16.e
deleted file mode 100644
index 72d42a1..0000000
--- a/lib/number/eiffel/integer_16.e
+++ /dev/null
@@ -1,146 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class INTEGER_16
-	--
-	-- 16 bits signed integer.
-	--
-
-insert
-	INTEGER_GENERAL
-
-feature {ANY} -- Conversions:
-	fit_integer_8: BOOLEAN is
-			-- Does `Current' fit in INTEGER_8?
-		do
-			if Current >= -128 then
-				Result := Current <= 127
-			end
-		ensure
-			Result = Current.in_range(-128, 127)
-		end
-
-	to_integer_8: INTEGER_8 is
-			-- Explicit conversion to INTEGER_8.
-		require
-			fit_integer_8
-		external "built_in"
-		ensure
-			Current.is_equal(Result)
-		end
-
-	to_integer_32, to_integer: INTEGER_32 is
-			-- Explicit conversion to INTEGER_32.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Explicit conversion to INTEGER_64.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_real_32: REAL_32 is
-			-- Explicit conversion to REAL_32.
-		do
-			Result := Current
-		end
-
-	to_real_64: REAL_64 is
-			-- Explicit conversion to REAL_64.
-		do
-			Result := Current
-		end
-
-	to_number: NUMBER is
-			-- Explicit conversion to NUMBER.
-		local
-			number_tools: NUMBER_TOOLS
-		do
-			Result := number_tools.from_integer(Current)
-		ensure
-			Result @= Current
-		end
-
-	decimal_digit: CHARACTER is
-		do
-			Result := (Current + '0'.code).to_character
-		end
-
-	hexadecimal_digit: CHARACTER is
-		do
-			if Current <= 9 then
-				Result := (Current + '0'.code).to_character
-			else
-				Result := ('A'.code + (Current - 10)).to_character
-			end
-		end
-
-feature {ANY}
-	low_8: INTEGER_8 is
-			-- The 8 low bits of `Current' (i.e. the right-most part).
-		external "built_in"
-		end
-
-	high_8: INTEGER_8 is
-			-- The 8 high bits of `Current' (i.e. the left-most part).
-		do
-			Result := (Current |>> 8).low_8
-		end
-
-	one: INTEGER_8 is 1
-
-	zero: INTEGER_8 is 0
-
-	hash_code: INTEGER is
-		do
-			Result := Current & 0x7FFF
-		end
-
-	sqrt: REAL is
-		do
-			Result := to_real_64.sqrt
-		end
-
-	log: REAL is
-		do
-			Result := to_real_64.log
-		end
-
-	log10: REAL is
-		do
-			Result := to_real_64.log10
-		end
-
-end -- class INTEGER_16
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_32.e b/lib/number/eiffel/integer_32.e
deleted file mode 100644
index c485a70..0000000
--- a/lib/number/eiffel/integer_32.e
+++ /dev/null
@@ -1,38 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class INTEGER_32
-	--
-	-- 32 bits signed integer.
-	--
-
-insert
-	INTEGER
-
-end -- class INTEGER_32
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_64.e b/lib/number/eiffel/integer_64.e
deleted file mode 100644
index aa99764..0000000
--- a/lib/number/eiffel/integer_64.e
+++ /dev/null
@@ -1,209 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class INTEGER_64
-	--
-	-- 64 bits signed integer.
-	--
-
-insert
-	INTEGER_GENERAL
-
-feature {ANY} -- Conversions:
-	fit_integer_8: BOOLEAN is
-			-- Does `Current' fit in INTEGER_8?
-		do
-			if Current >= -128 then
-				Result := Current <= 127
-			end
-		ensure
-			Result = Current.in_range(-128, 127)
-		end
-
-	to_integer_8: INTEGER_8 is
-			-- Explicit conversion to INTEGER_8.
-		require
-			fit_integer_8
-		external "built_in"
-		ensure
-			Current.is_equal(Result)
-		end
-
-	fit_integer_16: BOOLEAN is
-			-- Does `Current' fit in INTEGER_16?
-		do
-			if Current >= -32768 then
-				Result := Current <= 32767
-			end
-		ensure
-			Result = Current.in_range(-32768, 32767)
-		end
-
-	to_integer_16: INTEGER_16 is
-			-- Explicit conversion to INTEGER_16.
-		require
-			fit_integer_16
-		external "built_in"
-		ensure
-			Current.is_equal(Result)
-		end
-
-	fit_integer_32: BOOLEAN is
-			-- Does `Current' fit in INTEGER_32?
-		do
-			if Current >= -2147483648 then
-				Result := Current <= 2147483647
-			end
-		ensure
-			Result = Current.in_range(-2147483648, 2147483647)
-		end
-
-	to_integer_32, to_integer: INTEGER_32 is
-			-- Explicit conversion to INTEGER_32.
-		require
-			fit_integer_32
-		external "built_in"
-		ensure
-			Current = Result
-		end
-
-	force_to_real_32: REAL_32 is
-			-- Forced conversion to REAL_32 (possible loss of precision).
-			-- (See also `fit_real_32' and `to_real_32'.)
-		external "built_in"
-		end
-
-	fit_real_32: BOOLEAN is
-			-- Does `Current' fit in REAL_32?
-		do
-			Result := fit_integer_32 and then to_integer_32.fit_real_32
-		end
-
-	to_real_32: REAL_32 is
-			-- Explicit conversion to REAL_32. (See also `force_to_real_32'.)
-		require
-			fit_real_32
-		do
-			Result := force_to_real_32
-		ensure
-			Result.force_to_integer_64 = Current
-		end
-
-	force_to_real_64: REAL_64 is
-			-- Forced conversion to REAL_64 (possible loss of precision).
-			-- (See also `fit_real_64' and `to_real_64'.)
-		external "built_in"
-		end
-
-	fit_real_64: BOOLEAN is
-			-- Does `Current' fit in REAL_64?
-		do
-			Result := integer_64_fit_real_64(Current)
-		end
-
-	to_real_64: REAL_64 is
-			-- Explicit conversion to REAL_64. (See also `force_to_real_64'.)
-		require
-			fit_real_64
-		do
-			Result := force_to_real_64
-		ensure
-			Result.force_to_integer_64 = Current
-		end
-
-	to_number: NUMBER is
-		local
-			number_tools: NUMBER_TOOLS
-		do
-			Result := number_tools.from_integer_64(Current)
-		ensure
-			Result @= Current
-		end
-
-	decimal_digit: CHARACTER is
-		do
-			Result := (Current.to_integer_32 + '0'.code).to_character
-		end
-
-	hexadecimal_digit: CHARACTER is
-		do
-			if Current <= 9 then
-				Result := (to_integer_8 + '0'.code).to_character
-			else
-				Result := ('A'.code + (to_integer_8 - 10)).to_character
-			end
-		end
-
-feature {ANY}
-	low_32: INTEGER_32 is
-			-- The 32 low bits of `Current' (i.e. the right-most part).
-		external "built_in"
-		end
-
-	high_32: INTEGER_32 is
-			-- The 32 high bits of `Current' (i.e. the left-most part).
-		do
-			Result := (Current |>> 32).low_32
-		end
-
-	one: INTEGER_8 is 1
-
-	zero: INTEGER_8 is 0
-
-	hash_code: INTEGER is
-		do
-			Result := Current.low_32 & 0x7FFFFFFF
-		end
-
-	sqrt: REAL is
-		do
-			Result := force_to_real_64.sqrt
-		end
-
-	log: REAL is
-		do
-			Result := force_to_real_64.log
-		end
-
-	log10: REAL is
-		do
-			Result := force_to_real_64.log10
-		end
-
-feature {}
-	integer_64_fit_real_64 (integer_64: INTEGER_64): BOOLEAN is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "integer_fit_real"
-			feature_name: "integer_64_fit_real_64"
-			}"
-		end
-
-end -- class INTEGER_64
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_64_number.e b/lib/number/eiffel/integer_64_number.e
deleted file mode 100644
index c2ee0c0..0000000
--- a/lib/number/eiffel/integer_64_number.e
+++ /dev/null
@@ -1,377 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-class INTEGER_64_NUMBER
-	--
-	-- To implement NUMBER (do not use this class, see NUMBER).
-	--
-	-- This is an INTEGER_64
-
-inherit
-	INTEGER_GENERAL_NUMBER
-
-creation {ANY}
-	make
-
-feature {ANY}
-	is_zero: BOOLEAN is
-		do
-			Result := value = 0
-		end
-
-	is_one: BOOLEAN is
-		do
-			Result := value = 1
-		end
-
-	is_positive: BOOLEAN is
-		do
-			Result := value > 0
-		end
-
-	is_negative: BOOLEAN is
-		do
-			Result := value < 0
-		end
-
-	is_integer_value: BOOLEAN is
-		do
-			Result := True
-		end
-
-	force_to_real_64: REAL_64 is
-		do
-			Result := value.force_to_real_64
-		end
-
-	append_in (buffer: STRING) is
-		do
-			buffer.append(value.to_string)
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-		do
-			buffer.append(value.to_unicode_string)
-		end
-
-	prefix "-": INTEGER_GENERAL_NUMBER is
-		do
-			if value = Minimum_integer_64 then
-				mutable_register1.from_integer_64(Minimum_integer_64)
-				mutable_register1.negate
-				Result := mutable_register1.to_integer_general_number
-			else
-				create {INTEGER_64_NUMBER} Result.make(-value)
-			end
-		end
-
-	infix "+" (other: NUMBER): NUMBER is
-		do
-			Result := other @+ value
-		end
-
-	infix "@+" (other: INTEGER_64): NUMBER is
-		local
-			sum: INTEGER_64
-		do
-			sum := value #+ other
-			if value < 0 = (other < 0) implies sum < 0 = (value < 0) then
-				-- no overflow
-				create {INTEGER_64_NUMBER} Result.make(sum)
-			else
-				mutable_register1.from_integer_64(value)
-				mutable_register1.add_integer_64(other)
-				Result := mutable_register1.to_integer_general_number
-			end
-		end
-
-	infix "*" (other: NUMBER): NUMBER is
-		do
-			if is_zero then
-				Result := zero
-			else
-				Result := other @* value
-			end
-		end
-
-	infix "@*" (other: INTEGER_64): NUMBER is
-		do
-			if other = 0 or else value = 0 then
-				create {INTEGER_64_NUMBER} Result.make(0)
-			elseif other = 1 then
-				Result := Current
-			elseif value = 1 then
-				create {INTEGER_64_NUMBER} Result.make(other)
-			else
-				mutable_register1.from_integer_64(value)
-				mutable_register2.from_integer_64(other)
-				mutable_register1.multiply_to(mutable_register2, mutable_register3)
-				Result := mutable_register3.to_integer_general_number
-			end
-		end
-
-	infix "@/" (other: INTEGER_64): NUMBER is
-		local
-			n, other_number: INTEGER_64_NUMBER; g: INTEGER_64
-		do
-			if value = 0 or else other = 1 then
-				Result := Current
-			elseif other = -1 then
-				if value = Minimum_integer_64 then
-					mutable_register1.from_integer_64(value)
-					mutable_register1.negate
-					Result := mutable_register1.to_integer_general_number
-				else
-					create {INTEGER_64_NUMBER} Result.make(-value)
-				end
-			else
-				g := value.gcd(other)
-				check
-					g /= 0
-				end
-				if g = 1 then
-					create other_number.make(other)
-					if other < 0 then
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(-Current, -other_number)
-					else
-						create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(Current, other_number)
-					end
-				elseif other = g or else other = -g then
-					Result := (value // other).to_number
-				elseif other < 0 then
-					create other_number.make(-(other // g))
-					create n.make(-(value // g))
-					create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(n, other_number)
-				else
-					create other_number.make(other // g)
-					create n.make(value // g)
-					create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(n, other_number)
-				end
-			end
-		end
-
-	infix "//" (other: NUMBER): NUMBER is
-		local
-			oth: INTEGER_GENERAL_NUMBER
-		do
-			oth ::= other
-			Result := oth.integer_divide_integer_64_number(Current)
-		end
-
-	infix "@//" (other: INTEGER_64): NUMBER is
-		do
-			--|*** Must be rewrited directly with integer_64 (Vincent Croizier, 04/07/04) ***
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register2.from_integer_64(other)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register3.to_integer_general_number
-		end
-
-	infix "\\" (other: NUMBER): NUMBER is
-		local
-			oth: INTEGER_GENERAL_NUMBER
-		do
-			oth ::= other
-			Result := oth.remainder_of_divide_integer_64_number(Current)
-		end
-
-	infix "@\\" (other: INTEGER_64): NUMBER is
-		do
-			--|*** Must be rewrited directly with integer_64 (Vincent Croizier, 04/07/04) ***
-			put_into_mutable_big_integer(mutable_register1)
-			mutable_register2.from_integer_64(other)
-			mutable_register1.divide_to(mutable_register2, mutable_register3, mutable_register4)
-			Result := mutable_register4.to_integer_general_number
-		end
-
-feature {ANY} -- Misc:
-	hash_code: INTEGER is
-		do
-			Result := value.hash_code
-		end
-
-	gcd (other: NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result := other.gcd_with_integer_64_number(Current)
-		end
-
-	infix "@=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := value = other
-		end
-
-	infix "@<" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := value < other
-		end
-
-	infix "@<=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := value <= other
-		end
-
-	infix "@>" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := value > other
-		end
-
-	infix "@>=" (other: INTEGER_64): BOOLEAN is
-		do
-			Result := value >= other
-		end
-
-	infix "#=" (other: REAL_64): BOOLEAN is
-		do
-			--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-			Result := value.force_to_real_64 = other
-		end
-
-	infix "#<" (other: REAL_64): BOOLEAN is
-		do
-			--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-			Result := value.force_to_real_64 < other
-		end
-
-	infix "#<=" (other: REAL_64): BOOLEAN is
-		do
-			Result := value.force_to_real_64 <= other
-		end
-
-	infix "#>" (other: REAL_64): BOOLEAN is
-		do
-			Result := value.force_to_real_64 > other
-			--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-		end
-
-	infix "#>=" (other: REAL_64): BOOLEAN is
-		do
-			Result := value.force_to_real_64 >= other
-			--|*** Vincent, can you check ? *** (Dom Oct 2004) ***
-		end
-
-	infix "<" (other: NUMBER): BOOLEAN is
-		do
-			Result := other @> value
-		end
-
-	is_equal (other: NUMBER): BOOLEAN is
-		local
-			n2: like Current
-		do
-			if n2 ?:= other then
-				n2 ::= other
-				Result := value = n2.value
-			end
-		end
-
-	inverse: NUMBER is
-		do
-			if is_one or else Current @= -1 then
-				Result := Current
-			elseif is_negative then
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(integer_general_number_one_negative, -Current)
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make_simply(integer_general_number_one, Current)
-			end
-		end
-
-feature {NUMBER} -- Implementation:
-	value: INTEGER_64
-
-	add_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other @+ value
-		end
-
-	add_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other @+ value
-		end
-
-	multiply_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other @* value
-		end
-
-	multiply_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		do
-			Result := other.multiply_with_integer_64_number(Current)
-		end
-
-	integer_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result ::= other @// value
-		end
-
-	integer_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result ::= other @// value
-		end
-
-	remainder_of_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result ::= other @\\ value
-		end
-
-	remainder_of_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			Result ::= other @\\ value
-		end
-
-	greater_with_big_integer_number (other: BIG_INTEGER_NUMBER): BOOLEAN is
-		do
-			Result := other.is_negative
-		end
-
-	greater_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): BOOLEAN is
-		do
-			Result := other.denominator * Current > other.numerator
-		end
-
-feature {NUMBER} -- Implementation:
-	gcd_with_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_64_NUMBER is
-		do
-			create Result.make(value.gcd(other.value))
-		end
-
-feature {NUMBER}
-	put_into_mutable_big_integer (mut: MUTABLE_BIG_INTEGER) is
-		do
-			mut.from_integer_64(value)
-		end
-
-feature {}
-	make (val: INTEGER_64) is
-		do
-			value := val
-		ensure
-			Current.to_integer_64 = val
-		end
-
-end -- class INTEGER_64_NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_8.e b/lib/number/eiffel/integer_8.e
deleted file mode 100644
index 233e0f0..0000000
--- a/lib/number/eiffel/integer_8.e
+++ /dev/null
@@ -1,124 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class INTEGER_8
-	--
-	-- 8 bits signed integer.
-	--
-
-insert
-	INTEGER_GENERAL
-
-feature {ANY} -- Conversions:
-	to_integer_16: INTEGER_16 is
-			-- Explicit conversion to INTEGER_16.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_integer_32, to_integer: INTEGER_32 is
-			-- Explicit conversion to INTEGER_32.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Explicit conversion to INTEGER_64.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_real_32: REAL_32 is
-			-- Explicit conversion to REAL_32.
-		do
-			Result := Current
-		end
-
-	to_real_64: REAL_64 is
-			-- Explicit conversion to REAL_64.
-		do
-			Result := Current
-		end
-
-	to_number: NUMBER is
-			-- Explicit conversion to NUMBER.
-		local
-			number_tools: NUMBER_TOOLS
-		do
-			Result := number_tools.from_integer(Current)
-		ensure
-			Result @= Current
-		end
-
-	decimal_digit: CHARACTER is
-		do
-			Result := (Current + '0'.code).to_character
-		end
-
-	hexadecimal_digit: CHARACTER is
-		do
-			if Current <= 9 then
-				Result := (Current + '0'.code).to_character
-			else
-				Result := ('A'.code + (Current - 10)).to_character
-			end
-		end
-
-feature {ANY}
-	one: INTEGER_8 is 1
-
-	zero: INTEGER_8 is 0
-
-	hash_code: INTEGER is
-		do
-			Result := Current & 0x7F
-		end
-
-	sqrt: REAL is
-		do
-			Result := to_real_64.sqrt
-		end
-
-	log: REAL is
-		do
-			Result := to_real_64.log
-		end
-
-	log10: REAL is
-		do
-			Result := to_real_64.log10
-		end
-
-end -- class INTEGER_8
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_general.e b/lib/number/eiffel/integer_general.e
deleted file mode 100644
index 73179cc..0000000
--- a/lib/number/eiffel/integer_general.e
+++ /dev/null
@@ -1,855 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class INTEGER_GENERAL
-	--
-	-- General integer abstraction to share feature definition of INTEGER_8, INTEGER_16, INTEGER,
-	-- INTEGER_32 and INTEGER_64. All implementation have a limited size and are supposed to use
-	-- two's complement.
-	--
-	-- If you need integers with bigger values, use NUMBER or MUTABLE_BIG_INTEGER.
-	--
-
-inherit
-	COMPARABLE
-		undefine infix "<=", infix ">", infix ">="
-		redefine fill_tagged_out_memory, out_in_tagged_out_memory, is_equal
-		end
-insert
-	NUMERIC
-		redefine fill_tagged_out_memory, out_in_tagged_out_memory
-		end
-
-feature {ANY}
-	infix "+" (other: like Current): like Current is
-		require
-			no_overflow: Current > 0 = (other > 0) implies Current #+ other > 0 = (Current > 0) -- this means: if operand are of same sign, it will be sign of the Result.
-		do
-			Result := Current #+ other
-		ensure
-			Result #- other = Current
-		end
-
-	infix "-" (other: like Current): like Current is
-		require
-			no_overflow: Current > 0 /= (other > 0) implies Current #- other > 0 = (Current > 0) -- this means: if operand are of different sign, sign of the Result will be the same sign as Current.
-		do
-			Result := Current #- other
-		ensure
-			Result #+ other = Current
-		end
-
-	infix "*" (other: like Current): like Current is
-		require
-			no_overflow: divisible(other) implies Current #* other #// other = Current
-		do
-			Result := Current #* other
-		ensure
-			Current /= 0 and other /= 0 implies Result /= 0
-			Result /= 0 implies Result #// other = Current
-			Result /= 0 implies Result #\\ other = 0
-		end
-
-	infix "/" (other: like Current): REAL is
-		external "built_in"
-		end
-
-	infix "//" (other: like Current): like Current is
-			-- Quotient of the euclidian division of `Current' by `other'.
-			-- The corresponding remainder is given by infix "\\".
-			--
-			-- See also infix "#//".
-		require
-			divisible(other)
-			no_overflow: other = -1 implies Current = 0 or Current |<< 1 /= 0
-		do
-			if Current >= 0 then
-				Result := Current #// other
-			elseif other > 0 then
-				Result := (Current + 1) #// other - 1
-			else
-				Result := (Current + 1) #// other + 1
-			end
-		ensure
-			euclidian_divide_case1: Current >= 0 implies Result * other + Current \\ other = Current
-			euclidian_divide_case2: Current < 0 implies Result #* other #+ (Current \\ other) = Current
-		end
-
-	infix "#//" (other: like Current): like Current is
-			-- Integer division of `Current' by `other'.
-			--
-			-- According to the ANSI C99: if `Current' and `other' are both non-negative, the `Result' is the
-			-- quotient of the euclidian division; but this is not the general case, the `Result' value is the
-			-- algebraic quotient `Current/other' with any fractional part discarded. (This is often called
-			-- "truncated toward zero"). So, the corresponding remainder value only verify the expression
-			-- `remainder.abs < other.abs'.
-			--
-			-- See also infix "//", infix "#\\".
-		require
-			divisible(other)
-		external "built_in"
-		ensure
-			Result * other + Current #\\ other = Current
-			ansi_c_remainder: (Current - Result * other).abs < other.abs
-			ansi_c_good_case: Current >= 0 and other > 0 implies Current - Result * other >= 0
-		end
-
-	infix "\\" (other: like Current): like Current is
-			-- Remainder of the euclidian division of `Current' by `other'.
-			-- By definition, `0 <= Result < other.abs'.
-			--
-			-- See also infix "#\\", infix "//".
-		require
-			divisible(other)
-		do
-			Result := Current #\\ other
-			if Result < 0 then
-				if other > 0 then
-					Result := Result + other
-				else
-					Result := Result - other
-				end
-				check
-					Result > 0
-				end
-			end
-		ensure
-			Result >= 0
-			other |<< 1 /= 0 implies Result < other.abs
-			good_remainder: Result #- (Current #\\ other) #\\ other = 0
-		end
-
-	infix "#\\" (other: like Current): like Current is
-			-- Remainder of the integer division of `Current' by `other'.
-			-- According to the ANSI C99:
-			--   * if `Current' and `other' are both non-negative,
-			--     the `Result' is the remainder of the euclidian division.
-			--   * but this is not the general case,
-			--     `Result' as the same sign as `Current' and only verify
-			--     the expression `Result.abs < other.abs'.
-			--
-			-- See also infix "\\", infix "#//".
-		require
-			divisible(other)
-		external "built_in"
-		ensure
-			(Current - Result) #\\ other = 0
-			ansi_c_remainder: Result.abs < other.abs
-			ansi_c_good_case: Current >= 0 and other > 0 implies Result >= 0
-		end
-
-	infix "^" (exp: like Current): INTEGER_64 is
-			-- Integer power of `Current' by `other'
-		require
-			exp >= 0
-		local
-			i: like Current; k: INTEGER_64
-		do
-			i := exp
-			if i = 0 then
-				Result := 1
-			else
-				Result := Current
-				from
-					k := 1
-				until
-					i <= 1
-				loop
-					if i.is_odd then
-						k := k * Result
-					end
-					Result := Result * Result
-					i := i #// 2
-				end
-				Result := Result * k
-			end
-		end
-
-	abs: like Current is
-			-- Absolute value of `Current'.
-		require
-			not_minimum_value: Current = 0 or else Current |<< 1 /= 0
-		do
-			if Current < 0 then
-				Result := -Current
-			else
-				Result := Current
-			end
-		ensure
-			Result >= 0
-		end
-
-	infix "<" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix "<=" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix ">" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix ">=" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	prefix "+": like Current is
-		do
-			Result := Current
-		end
-
-	prefix "-": like Current is
-		require
-			not_minimum_value: Current < 0 implies 0 < #-Current
-		do
-			Result := #-Current
-		end
-
-	is_odd: BOOLEAN is
-			-- Is odd?
-		do
-			Result := Current & 1 /= 0
-		end
-
-	is_even: BOOLEAN is
-			-- Is even?
-		do
-			Result := Current & 1 = 0
-		end
-
-	sqrt: REAL is
-			-- Square root of `Current'.
-		require
-			Current >= 0
-		deferred
-		end
-
-	log: REAL is
-			-- Natural Logarithm of `Current'.
-		require
-			Current > 0
-		deferred
-		end
-
-	log10: REAL is
-			-- Base-10 Logarithm of Current.
-		require
-			Current > 0
-		deferred
-		end
-
-	gcd (other: like Current): like Current is
-			-- Great Common Divisor of `Current' and `other'.
-		do
-			if other = 0 then
-				Result := Current.abs
-			else
-				Result := other.gcd(Current \\ other)
-			end
-		ensure
-			Result >= 0
-			Result = 0 implies Current = 0 and other = 0
-			Result >= 2 implies Current \\ Result = 0 and other \\ Result = 0 and (Current // Result).gcd(other // Result) = 1
-		end
-
-feature {ANY} -- Conversions:
-	to_string: STRING is
-			-- The decimal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 the `Result' is "-1".
-			--
-			-- See also `append_in', `to_string_format', `to_unicode_string', `to_hexadecimal', `to_octal'.
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			Result := string_buffer.twin
-		end
-
-	to_unicode_string: UNICODE_STRING is
-			-- The decimal view of `Current' into a new allocated UNICODE_STRING.
-			-- For example, if `Current' is -1 the `Result' is U"-1".
-			--
-			-- See also `append_in_unicode', `to_unicode_string_format', `to_string', `to_hexadecimal', `to_octal'.
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			Result := unicode_string_buffer.twin
-		end
-
-	to_boolean: BOOLEAN is
-			-- Return False for 0, otherwise True.
-			--
-			-- See also `to_string', `to_character', `to_hexadecimal', `to_number'.
-		do
-			Result := Current /= 0
-		ensure
-			Result = (Current /= 0)
-		end
-
-	to_number: NUMBER is
-			-- Convert `Current' into a new allocated NUMBER.
-			--
-			-- See also `to_boolean', `to_string', `to_character', `to_hexadecimal'.
-		deferred
-		end
-
-	append_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'.
-			-- If you look for performances, you should always prefer `append_in' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_string' allocate a new object!).
-			--
-			-- See also `append_in_format', `append_in_unicode', `append_in_unicode_format', `to_hexadecimal_in'.
-		require
-			buffer /= Void
-		local
-			val: like Current; i, idx: INTEGER
-		do
-			if Current = 0 then
-				buffer.extend('0')
-			else
-				from
-					if Current > 0 then
-						val := Current
-						-- Save the position of first character in the buffer.
-						i := buffer.count + 1
-					else
-						buffer.extend('-')
-						-- Save the position of first character in the buffer.
-						i := buffer.count + 1
-						-- First (last) digit
-						val := Current #\\ 10
-						if val <= 0 then
-							buffer.extend((-val).decimal_digit)
-							val := -(Current #// 10)
-						else
-							buffer.extend((-val + 10).decimal_digit)
-							val := -(Current #// 10) - 1
-						end
-						check
-							val >= 0
-						end
-					end
-				until
-					val = 0
-				loop
-					buffer.extend((val #\\ 10).decimal_digit)
-					val := val #// 10
-				end
-				-- Change character order.
-				from
-					idx := buffer.count
-				until
-					i >= idx
-				loop
-					buffer.swap(i, idx)
-					idx := idx - 1
-					i := i + 1
-				end
-			end
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-			-- Append in the `buffer' the equivalent of `to_unicode_string'.
-			-- If you look for performances, you should always prefer `append_in_unicode' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_unicode_string' allocate a new object!).
-			--
-			-- See also `append_in_unicode_format', `append_in', `append_in_format', `to_hexadecimal_in'.
-		require
-			buffer /= Void
-		local
-			val: like Current; i, idx: INTEGER
-		do
-			if Current = 0 then
-				buffer.extend('0'.code)
-			else
-				from
-					if Current > 0 then
-						val := Current
-						-- Save the position of first character in the buffer.
-						i := buffer.count + 1
-					else
-						buffer.extend('-'.code)
-						-- Save the position of first character in the buffer.
-						i := buffer.count + 1
-						-- First (last) digit
-						val := Current #\\ 10
-						if val <= 0 then
-							buffer.extend((-val).decimal_digit.code)
-							val := -(Current #// 10)
-						else
-							buffer.extend((- val + 10).decimal_digit.code)
-							val := -(Current #// 10) - 1
-						end
-						check
-							val >= 0
-						end
-					end
-				until
-					val = 0
-				loop
-					buffer.extend((val #\\ 10).decimal_digit.code)
-					val := val #// 10
-				end
-				-- Change character order.
-				from
-					idx := buffer.count
-				until
-					i >= idx
-				loop
-					buffer.swap(i, idx)
-					idx := idx - 1
-					i := i + 1
-				end
-			end
-		end
-
-	to_string_format (s: INTEGER): STRING is
-			-- Same as `to_string' but the result is on `s' character and the number is right aligned.
-			--
-			-- See also `append_in_format', `to_character', `to_number', `to_hexadecimal'.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			from
-				create Result.make(string_buffer.count.max(s))
-				i := s - string_buffer.count
-			until
-				i <= 0
-			loop
-				Result.extend(' ')
-				i := i - 1
-			end
-			Result.append(string_buffer)
-		ensure
-			Result.count = s
-		end
-
-	to_unicode_string_format (s: INTEGER): UNICODE_STRING is
-			-- Same as `to_unicode_string' but the result is on `s' character and the number is right aligned.
-			--
-			-- See also `append_in_unicode_format', `to_string', `to_hexadecimal', `to_octal'.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			from
-				create Result.make(unicode_string_buffer.count.max(s))
-				i := s - unicode_string_buffer.count
-			until
-				i <= 0
-			loop
-				Result.extend(' '.code)
-				i := i - 1
-			end
-			Result.append(unicode_string_buffer)
-		ensure
-			Result.count = s
-		end
-
-	append_in_format (buffer: STRING; s: INTEGER) is
-			-- Append in the `buffer' the equivalent of `to_string_format'.
-			-- If you look for performances, you should always prefer `append_in_format' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_string_format' allocate a new object!).
-			--
-			-- See also `append_in', `append_in_unicode', `append_in_unicode_format', `to_hexadecimal_in'.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			from
-				i := s - string_buffer.count
-			until
-				i <= 0
-			loop
-				buffer.extend(' ')
-				i := i - 1
-			end
-			buffer.append(string_buffer)
-		ensure
-			buffer.count >= old buffer.count + s
-		end
-
-	append_in_unicode_format (buffer: UNICODE_STRING; s: INTEGER) is
-			-- Append in the `buffer' the equivalent of `to_unicode_string_format'.
-			-- If you look for performances, you should always prefer `append_in_unicode_format' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_unicode_string_format' allocate a new object!).
-			--
-			-- See also `append_in_format', `append_in', `append_in_format', `to_hexadecimal_in'.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			from
-				i := s - unicode_string_buffer.count
-			until
-				i <= 0
-			loop
-				buffer.extend(' '.code)
-				i := i - 1
-			end
-			buffer.append(unicode_string_buffer)
-		ensure
-			buffer.count >= old buffer.count + s
-		end
-
-	digit: CHARACTER is
-			-- Legacy synonym for `decimal_digit'.
-			-- Note: already prefer `decimal_digit' because digit may become obsolete (feb 4th 2006).
-		do
-			Result := decimal_digit
-		ensure
-			Result = decimal_digit
-		end
-
-	decimal_digit: CHARACTER is
-			-- Gives the corresponding CHARACTER for range 0..9.
-		require
-			in_range(0, 9)
-		deferred
-		ensure
-			(once "0123456789").has(Result)
-			Current.is_equal(Result.value)
-		end
-
-	hexadecimal_digit: CHARACTER is
-			-- Gives the corresponding CHARACTER for range 0..15.
-		require
-			in_range(0, 15)
-		deferred
-		ensure
-			(once "0123456789ABCDEF").has(Result)
-		end
-
-	to_character: CHARACTER is
-			-- Return the coresponding ASCII character.
-			--
-			-- See also `to_boolean', `to_number', `to_string', `to_hexadecimal'.
-		require
-			Current >= 0
-		external "built_in"
-		end
-
-	to_octal_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_octal'.
-			-- If you look for performances, you should always prefer `to_octal_in' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_octal' allocate a new object!).
-			--
-			-- See also `to_hexadecimal_in', `append_in', `append_in_format', `append_in_unicode'.
-		local
-			index, times: INTEGER; value: like Current
-		do
-			from
-				value := Current
-				times := (object_size * 8) #// 3 + 1
-				index := buffer.count + times
-				buffer.extend_multiple(' ', times)
-			until
-				times = 0
-			loop
-				buffer.put((value & 0x07).decimal_digit, index)
-				index := index - 1
-				value := value |>>> 3
-				times := times - 1
-			end
-		ensure
-			buffer.count = old buffer.count + (object_size * 8) #// 3 + 1
-		end
-
-	to_octal: STRING is
-			-- The octal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 and if `Current' is a 16 bits integer the `Result' is "177777".
-			--
-			-- See also `to_octal_in', `to_hexadecimal', `to_number', `to_string'.
-		do
-			string_buffer.clear_count
-			to_octal_in(string_buffer)
-			Result := string_buffer.twin
-		ensure
-			Result.count = (object_size * 8) #// 3 + 1
-		end
-
-	to_hexadecimal: STRING is
-			-- The hexadecimal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 and if `Current' is a 32 bits integer the `Result' is "FFFFFFFF".
-			--
-			-- See also `to_hexadecimal_in', `to_octal', `to_number', `to_string'.
-		do
-			string_buffer.clear_count
-			to_hexadecimal_in(string_buffer)
-			Result := string_buffer.twin
-		ensure
-			Result.count = object_size * 2
-		end
-
-	to_hexadecimal_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_hexadecimal'.
-			-- If you look for performances, you should always prefer `to_hexadecimal_in' which allow you to recycle
-			-- a unique common `buffer' (each call of `to_hexadecimal' allocate a new object!).
-			--
-			-- See also `to_octal_in', `append_in', `append_in_format', `append_in_unicode'.
-		local
-			index, times: INTEGER; value: like Current
-		do
-			from
-				value := Current
-				times := object_size * 2
-				index := buffer.count + times
-				buffer.extend_multiple(' ', times)
-			until
-				times = 0
-			loop
-				buffer.put((value & 0x0F).hexadecimal_digit, index)
-				index := index - 1
-				value := value |>> 4
-				times := times - 1
-			end
-		ensure
-			buffer.count = old buffer.count + object_size * 2
-		end
-
-feature {ANY} -- Bitwise Logical Operators:
-	bit_test (idx: INTEGER_8): BOOLEAN is
-			-- The value of the `idx'-ith bit (the right-most bit is at
-			-- index 0).
-		require
-			idx >= 0
-			idx < object_size * 8
-		do
-			Result := Current.bit_shift_right(idx) & 1 /= 0
-		end
-
-	bit_set (idx: INTEGER_8): like Current is
-			-- The value of the `idx'-ith bit (the right-most bit is at
-			-- index 0).
-		require
-			idx >= 0
-			idx < object_size * 8
-		local
-			mask: like Current
-		do
-			mask := 1
-			Result := Current.bit_or(mask.bit_shift_left(idx))
-		ensure
-			Result.bit_test(idx)
-			Result = Current or Result.bit_reset(idx) = Current
-		end
-
-	bit_reset (idx: INTEGER_8): like Current is
-			-- The value of the `idx'-ith bit (the right-most bit is at
-			-- index 0).
-		require
-			idx >= 0
-			idx < object_size * 8
-		local
-			mask: like Current
-		do
-			mask := 1
-			Result := Current.bit_and(mask.bit_shift_left(idx).bit_not)
-		ensure
-			not Result.bit_test(idx)
-			Result = Current or Result.bit_set(idx) = Current
-		end
-
-	infix "|>>", bit_shift_right (s: INTEGER_8): like Current is
-			-- Shift by `s' positions right (sign bit copied) bits falling
-			-- off the end are lost.
-		require
-			s >= 0
-		external "built_in"
-		end
-
-	infix "|>>>", bit_shift_right_unsigned (s: INTEGER_8): like Current is
-			-- Shift by `s' positions right (sign bit not copied) bits
-			-- falling off the end are lost.
-		require
-			s >= 0
-		external "built_in"
-		end
-
-	infix "|<<", bit_shift_left (s: INTEGER_8): like Current is
-			-- Shift by `s' positions left bits falling off the end are lost.
-		require
-			s >= 0
-		external "built_in"
-		end
-
-	infix "#>>", bit_rotate_right (s: INTEGER_8): like Current is
-			-- Rotate by `s' positions right.
-		require
-			s > 0
-			s < object_size * 8
-		external "built_in"
-		end
-
-	infix "#<<", bit_rotate_left (s: INTEGER_8): like Current is
-			-- Rotate by `s' positions left.
-		require
-			s > 0
-			s < object_size * 8
-		external "built_in"
-		end
-
-	bit_rotate (s: INTEGER_8): like Current is
-			-- Rotate by `s' positions (positive `s' shifts right, negative left
-			--
-			-- See also infix "#>>" and infix "#<<".
-		require
-			s > -object_size * 8
-			s < object_size * 8
-		external "built_in"
-		end
-
-	prefix "~", bit_not: like Current is
-			-- One's complement of `Current'.
-		external "built_in"
-		end
-
-	infix "&", bit_and (other: like Current): like Current is
-			-- Bitwise logical and of `Current' with `other'.
-		external "built_in"
-		end
-
-	infix "|", bit_or (other: like Current): like Current is
-			-- Bitwise logical inclusive or of `Current' with `other'.
-		external "built_in"
-		end
-
-	bit_xor (other: like Current): like Current is
-			-- Bitwise logical exclusive or of `Current' with `other'.
-		external "built_in"
-		end
-
-	bit_shift (s: INTEGER_8): like Current is
-			-- Shift by `s' positions (positive `s' shifts right (sign bit
-			-- copied), negative shifts left bits falling off the end are lost).
-			--
-			-- See also infix "|>>" and infix "|<<".
-		require
-			s /= 0
-		do
-			if s > 0 then
-				Result := Current |>> s
-			else
-				Result := Current |<< -s
-			end
-		end
-
-	bit_shift_unsigned (s: INTEGER_8): like Current is
-			-- Shift by `s' positions (positive `s' shifts right (sign bit not
-			-- copied), negative left bits falling off the end are lost).
-			--
-			-- See also infix "|>>>" and infix "|<<".
-		require
-			s /= 0
-		do
-			if s > 0 then
-				Result := Current |>>> s
-			else
-				Result := Current |<< -s
-			end
-		end
-
-feature {ANY} -- Object Printing:
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			Current.append_in(tagged_out_memory)
-		end
-
-feature {ANY} -- Miscellaneous:
-	sign: INTEGER_8 is
-			-- Sign of `Current' (0 or -1 or 1).
-		do
-			if Current < 0 then
-				Result := -1
-			elseif Current > 0 then
-				Result := 1
-			end
-		end
-
-	divisible (other: like Current): BOOLEAN is
-		do
-			Result := other /= 0
-		end
-
-	is_equal (other: like Current): BOOLEAN is
-		do
-			Result := Current = other
-		end
-
-	is_a_power_of_2: BOOLEAN is
-			-- Is `Current' a power of 2?
-		require
-			Current > 0
-		do
-			Result := (Current - 1) & Current = 0
-		end
-
-feature {ANY} -- For experts only: native operators with potential untrapped overflow (no protection):
-	infix "#+" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	prefix "#-": like Current is
-		external "built_in"
-		end
-
-	infix "#-" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	infix "#*" (other: like Current): like Current is
-		external "built_in"
-		end
-
-feature {}
-	string_buffer: STRING is
-		once
-			create Result.make(128)
-		end
-
-	unicode_string_buffer: UNICODE_STRING is
-		once
-			create Result.make(128)
-		end
-
-end -- class INTEGER_GENERAL
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/integer_general_number.e b/lib/number/eiffel/integer_general_number.e
deleted file mode 100644
index e2a7405..0000000
--- a/lib/number/eiffel/integer_general_number.e
+++ /dev/null
@@ -1,170 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class INTEGER_GENERAL_NUMBER
-	--
-	-- To implement NUMBER (do not use this class, see NUMBER).
-	--
-
-inherit
-	NUMBER
-		redefine abs
-		end
-
-feature {ANY}
-	abs: INTEGER_GENERAL_NUMBER is
-		do
-			if is_negative then
-				Result ::= -Current
-			else
-				Result := Current
-			end
-		end
-
-	factorial: NUMBER is
-		do
-			if is_zero or else is_one then
-				Result := one
-			else
-				from
-					put_into_mutable_big_integer(mutable_register1)
-					mutable_register2.copy(mutable_register1)
-					mutable_register3.from_integer(2)
-				until
-					mutable_register3.is_equal(mutable_register2)
-				loop
-					mutable_register1.multiply(mutable_register3)
-					mutable_register3.add_integer(1)
-				end
-				Result := mutable_register1.to_integer_general_number
-			end
-		end
-
-	numerator: INTEGER_GENERAL_NUMBER is
-		do
-			Result := Current
-		end
-
-	denominator: INTEGER_GENERAL_NUMBER is
-		do
-			Result := integer_general_number_one
-		end
-
-feature {ANY}
-	append_decimal_in (buffer: STRING; digits: INTEGER; all_digits: BOOLEAN) is
-		local
-			n: INTEGER
-		do
-			append_in(buffer)
-			if all_digits then
-				from
-					buffer.extend('.')
-				until
-					n >= digits
-				loop
-					buffer.extend('0')
-					n := n + 1
-				end
-			end
-		end
-
-feature {NUMBER} -- Implementation:
-	integer_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	remainder_of_divide_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	integer_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	remainder_of_divide_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-feature {NUMBER} -- Implementation:
-	gcd_with_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		do
-			put_into_mutable_big_integer(mutable_register1)
-			other.put_into_mutable_big_integer(mutable_register2)
-			mutable_register1.gcd(mutable_register2)
-			Result := mutable_register1.to_integer_general_number
-		end
-
-feature {NUMBER}
-	put_into_mutable_big_integer (mut: MUTABLE_BIG_INTEGER) is
-		require
-			mut /= Void
-		deferred
-		ensure
-			mut.to_integer_general_number.is_equal(Current)
-		end
-
-feature {INTEGER_GENERAL_NUMBER}
-	integer_general_number_zero: INTEGER_GENERAL_NUMBER is
-		once
-			Result ::= zero
-		ensure
-			Result.is_zero
-		end
-
-	integer_general_number_one: INTEGER_GENERAL_NUMBER is
-		once
-			Result ::= one
-		ensure
-			Result.is_one
-		end
-
-	integer_general_number_one_negative: INTEGER_GENERAL_NUMBER is
-		once
-			Result ::= -integer_general_number_one
-		ensure
-			(-Result).is_one
-		end
-
-end -- class INTEGER_GENERAL_NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/math_constants.e b/lib/number/eiffel/math_constants.e
deleted file mode 100644
index a27e536..0000000
--- a/lib/number/eiffel/math_constants.e
+++ /dev/null
@@ -1,47 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class MATH_CONSTANTS
-	--
-	-- Platform-independent, universal, mathematical constants.
-	-- Intended to be used as ancestor for classes that need these constants.
-	--
-
-feature {ANY} -- Maths constants:
-	Pi: REAL is 3.1415926535897932384626
-
-	Evalue: REAL is 2.7182818284590452353602
-
-	Deg: REAL is 57.2957795130823208767981
-			-- Degrees/Radian
-
-	Phi: REAL is 1.6180339887498948482045
-			-- Golden Ratio
-
-end -- class MATH_CONSTANTS
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/mutable_big_integer.e b/lib/number/eiffel/mutable_big_integer.e
deleted file mode 100644
index 6dd16c3..0000000
--- a/lib/number/eiffel/mutable_big_integer.e
+++ /dev/null
@@ -1,3248 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-class MUTABLE_BIG_INTEGER
-	--
-	-- A class used to represent multiprecision integers that makes efficient use
-	-- of allocated space by allowing a number to occupy only part of an array so
-	-- that the arrays do not have to be reallocated as often. When performing an
-	-- operation with many iterations the array used to hold a number is only
-	-- reallocated when necessary and does not have to be the same size as the
-	-- number it represents. A mutable number allows calculations to occur on the
-	-- same number without having to create a new number for every step of the
-	-- calculation as it occurs with NUMBERs.
-	--
-
-inherit
-	HASHABLE
-		redefine copy, fill_tagged_out_memory, out_in_tagged_out_memory
-		end
-	COMPARABLE
-		redefine copy, fill_tagged_out_memory, out_in_tagged_out_memory, is_equal
-		end
-
-insert
-	PLATFORM
-
-creation {ANY}
-	from_integer, from_integer_64, from_string, copy
-
-feature {ANY} -- Creation / initialization from INTEGER_32 or INTEGER_64:
-	from_integer (value: INTEGER) is
-			-- Create or initialize `Current' using `value' as an initializer.
-		do
-			if capacity = 0 then
-				storage := storage.calloc(4)
-				capacity := 4
-			end
-			offset := 0
-			if value > 0 then
-				negative := False
-				put(value, 0)
-				integer_length := 1
-			elseif value < 0 then
-				negative := True
-				put(#-value, 0)
-				integer_length := 1
-			else
-				check
-					value = 0
-				end
-				set_with_zero
-			end
-		ensure
-			to_integer = value
-		end
-
-	is_integer: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_32?
-		do
-			if integer_length = 0 then
-				Result := True
-			elseif integer_length = 1 then
-				if item(offset) > 0 then
-					Result := True
-				elseif negative then
-					Result := item(offset) = 0x80000000
-				end
-			end
-		ensure
-			Result implies is_integer_64
-			Result implies integer_length <= 1
-		end
-
-	to_integer: INTEGER is
-			-- Convert `Current' as a 32 bit INTEGER.
-		require
-			is_integer
-		do
-			if integer_length > 0 then
-				Result := item(offset)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-
-	from_integer_64 (value: INTEGER_64) is
-			-- Create or set `Current' using `value' as an initializer.
-		local
-			v32: INTEGER
-		do
-			if capacity < 2 then
-				storage := storage.calloc(4)
-				capacity := 4
-			end
-			if value > 0 then
-				negative := False
-				put(value.low_32, 0)
-				offset := 0
-				v32 := value.high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			elseif value < 0 then
-				negative := True
-				put((#-value).low_32, 0)
-				offset := 0
-				v32 := (#-value).high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			else
-				check
-					value = 0
-				end
-				set_with_zero
-			end
-		ensure
-			to_integer_64 = value
-		end
-
-	is_integer_64: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_64?
-		do
-			if integer_length <= 1 then
-				Result := True
-			elseif integer_length = 2 then
-				if negative then
-					if item(offset + 1) > 0 then
-						Result := True
-					elseif item(offset) = 0 then
-						Result := item(offset + 1) = 0x80000000
-					end
-				else
-					Result := item(offset + 1) > 0
-				end
-			end
-		ensure
-			not Result implies not is_integer
-			Result implies integer_length <= 2
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Convert `Current' as a INTEGER_64.
-		require
-			is_integer_64
-		local
-			v: INTEGER_64
-		do
-			inspect
-				integer_length
-			when 0 then
-			when 1 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				if negative then
-					Result := -Result
-				end
-			when 2 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				v := item(offset + 1)
-				v := v.bit_shift_left(32)
-				Result := Result.bit_xor(v)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-
-feature {ANY} -- Creation / initialization from STRING:
-	from_string (str: STRING) is
-			-- Create or initialize `Current' using `value' as an
-			-- initializer. (value = [-][0-9]^+)
-		local
-			i: INTEGER; cc: CHARACTER; neg: BOOLEAN; ten: like Current
-		do
-			--|*** This feature should be improved one day... (Vincent Croizier, 25/12/2004)
-			create ten.from_integer(10)
-			from
-				i := 1
-			variant
-				str.count - i
-			until
-				not str.item(i).is_separator
-			loop
-				i := i + 1
-			end
-			cc := str.item(i)
-			i := i + 1
-			if cc = '+' then
-				cc := str.item(i)
-				i := i + 1
-			elseif cc = '-' then
-				neg := True
-				cc := str.item(i)
-				i := i + 1
-			end
-			check
-				cc.is_digit
-			end
-			from_integer(cc.value)
-			from
-			variant
-				str.count - i
-			until
-				i > str.count
-			loop
-				cc := str.item(i)
-				if cc.is_digit then
-					multiply(ten)
-					add_integer(cc.value)
-				else
-					check
-						cc.is_separator
-					end
-					i := str.count -- terminate the loop
-				end
-				i := i + 1
-			end
-			if neg then
-				negate
-			end
-		end
-
-feature {ANY} -- Conversion tool
-	force_to_real_64: REAL_64 is
-			-- only a tool
-			-- unsigned conversion *** require ou changer export ? *** (Dom Oct 4th 2004) ***
-		local
-			i: INTEGER
-		do
-			from
-				i := offset + integer_length - 1
-			until
-				i < offset or else Result > Maximum_real_64
-			loop
-				Result := Result * Real_base + unsigned_32_to_integer_64(storage.item(i)).force_to_real_64
-				i := i - 1
-			end
-			if Result = Maximum_real_64 and then storage.item(offset) /= 0 then
-				Result := Maximum_real_64 * 2
-			end
-			if negative then
-				Result := -Result
-			end
-		end
-
-feature {NUMBER}
-	from_native_array (na: NATIVE_ARRAY[INTEGER]; cap: INTEGER; neg: BOOLEAN) is
-		require
-			na.item(cap - 1) /= 0
-		do
-			negative := neg
-			offset := 0
-			integer_length := cap
-			if cap > capacity then
-				capacity := capacity_from_lower_bound(capacity, cap)
-				storage := storage.calloc(capacity)
-			end
-			storage.slice_copy(0, na, 0, cap - 1)
-		end
-
-	to_integer_general_number: INTEGER_GENERAL_NUMBER is
-		local
-			na: like storage
-		do
-			if is_integer_64 then
-				create {INTEGER_64_NUMBER} Result.make(to_integer_64)
-			else
-				na := storage.calloc(integer_length)
-				na.slice_copy(0, storage, offset, offset + integer_length - 1)
-				create {BIG_INTEGER_NUMBER} Result.from_native_array(na, integer_length, negative)
-			end
-		end
-
-feature {ANY} -- Addition:
-	add (other: like Current) is
-			-- Add `other' into `Current'.
-			--
-			-- See also `add_integer', `add_integer_64', `add_natural'.
-		require
-			other /= Void
-		do
-			-- Choose the appropriate absolute operator depending on `Current' and `other' sign.
-			if other.integer_length = 0 then
-				-- Nothing to do, `Current' remains unchanged.
-			elseif integer_length = 0 then
-				-- `Current' is zero so simply copy the value of other
-				Current.copy(other)
-			elseif negative = other.negative then
-				-- same sign
-				add_magnitude(other)
-			else
-				-- different sign
-				subtract_magnitude(other)
-			end
-		end
-
-	add_to (other, res: like Current) is
-			-- Add `other' and `Current', and put the result in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.add(other)
-		end
-
-	add_integer (other: INTEGER) is
-			-- Add `other' into `Current'.
-		local
-			inc: BOOLEAN; v, i, n: INTEGER
-		do
-			if other = 0 then
-				-- Nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- `Current' is null so simply copy the value of other
-				from_integer(other)
-			elseif negative = (other < 0) then
-				-- Same sign
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				-- Add `v' into `storage'
-				from
-					inc := mbi_add(item(offset), v, storage_at(storage, offset))
-					i := offset + 1
-					n := offset + integer_length
-				until
-					not inc or else i >= n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					check
-						i = n
-					end
-					-- Extend the number length by 1
-					if n < capacity then
-						integer_length := integer_length + 1
-						put(1, n)
-					else
-						-- It's good only if the reallocation initialize
-						-- `storage' with 0.
-						v := item(offset)
-						capacity := capacity * 2
-						storage := storage.calloc(capacity)
-						offset := 0
-						put(v, 0)
-						put(1, integer_length)
-						integer_length := integer_length + 1
-					end
-				end
-				-- Different sign
-			elseif integer_length = 1 then
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					negative := not negative
-					put(-item(offset), offset)
-				end
-				if item(offset) = 0 then
-					integer_length := 0
-					negative := False
-				end
-			else
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					from
-						i := offset + 1
-						inc := mbi_dec(storage_at(storage, i))
-						n := offset + integer_length - 1
-					until
-						not inc
-					loop
-						check
-							i < n
-						end
-						i := i + 1
-						inc := mbi_dec(storage_at(storage, i))
-					end
-					if item(n) = 0 then
-						integer_length := integer_length - 1
-					end
-				end
-			end
-		end	
-
-	add_integer_64 (other: INTEGER_64) is
-			-- Add `other' into `Current'.
-		do
-			register1.from_integer_64(other)
-			add(register1)
-		end
-
-	add_natural (other: like Current) is
-			-- Same behavior as `add', but this one works only when `Current'
-			-- and `other' are both positive numbers and are both greater than
-			-- zero. The only one advantage of using `add_natural' instead of the
-			-- general `add' is the gain of efficiency.
-		require
-			not is_zero and not is_negative
-			not other.is_zero and not other.is_negative
-		do
-			add_magnitude(other)
-		end
-
-feature {ANY} -- Subtract:
-	subtract (other: like Current) is
-			-- Subtract `other' from `Current'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				set_with_zero
-			elseif other.integer_length = 0 then
-				-- nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- current is null so simply copy the value of other, the sign is also fixed
-				copy(other)
-				negative := not other.negative
-			elseif negative = other.negative then
-				-- same sign
-				subtract_magnitude(other)
-			else
-				-- different sign
-				add_magnitude(other)
-			end
-		end
-
-	subtract_to (other, res: like Current) is
-			-- Subtract `other' from `Current' and put it in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.subtract(other)
-		end
-
-	subtract_integer (other: INTEGER) is
-		do
-			if other = Minimum_integer then
-				add_integer(1)
-				add_integer(Maximum_integer)
-			else
-				add_integer(-other)
-			end
-		end
-
-feature {ANY} -- To divide:
-	divide (other: like Current) is
-			-- Put the the quotient of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		do
-			-- `divide_with_remainder_to' already use `register1'.
-			divide_with_remainder_to(other, register2)
-		end
-
-	mod (other: like Current) is
-			-- Put the the remainder of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		local
-			quotient: like Current
-		do
-			--|*** Must be optimized (Vincent Croizier, 12/07/04) ***
-			create quotient.from_integer(0)
-			remainder_with_quotient_to(other, quotient)
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_with_remainder_to (other, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Quotient is put in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			remainder /= Void
-			remainder /= other
-			remainder /= Current
-		do
-			Current.remainder_with_quotient_to(other, remainder)
-			Current.swap_with(remainder)
-		ensure
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	remainder_with_quotient_to (other, quotient: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Remainder is put in `Current'.
-			-- (The contents of `other' is not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			quotient /= other
-			quotient /= Current
-		local
-			cmp, shift, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER; qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER
-			q_storage, d_storage: like storage; q_capacity: like capacity; current_negative, borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				set_with_zero
-			else
-				current_negative := negative
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					-- Sign correction
-					set_negative(False)
-					divide_sign_correction_bis(other, quotient, current_negative)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.swap_with(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						put(rem, 0)
-						set_integer_length(1)
-					else
-						check
-							is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := offset + integer_length - 1
-						u2 := storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := integer_length - dlen
-							qlen := k + 1
-						else
-							qlen := integer_length - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := storage.item(j + 1)
-						u2 := storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						set_with_zero
-					else
-						offset := 0
-						integer_length := j
-						negative := False
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				end
-			end
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_to (other, quotient, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'. (The contents of `Current' and `other' are
-			-- not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			remainder /= Void
-			quotient /= other
-			quotient /= Current
-			remainder /= other
-			remainder /= Current
-		local
-			cmp, shift, nlen, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER
-			qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER; q_storage, r_storage, d_storage: like storage
-			q_capacity, r_capacity: like capacity; borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				remainder.set_with_zero
-			else
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					remainder.copy(Current)
-					-- Sign correction
-					remainder.set_negative(False)
-					divide_sign_correction(other, quotient, remainder)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					remainder.set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.copy(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					remainder.set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						remainder.put(rem, 0)
-						remainder.set_ilo(1, 0)
-					else
-						check
-							remainder.is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					--|***
-					remainder.copy(Current)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						remainder.shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						r_storage := remainder.storage
-						r_capacity := remainder.capacity
-						check
-							remainder.offset = 0
-						end
-						nlen := remainder.integer_length -- To avoid invariant class violation
-						remainder.set_with_zero
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := nlen - 1
-						u2 := r_storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := nlen - dlen
-							qlen := k + 1
-						else
-							qlen := nlen - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := r_storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := r_storage.item(j + 1)
-						u2 := r_storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else r_storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						check
-							remainder.is_zero
-						end
-					else
-						remainder.set_all(r_storage, r_capacity, j, 0, False)
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						remainder.shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				end
-			end
-		ensure
-			is_a_good_divide(other, quotient, remainder)
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	shift_left (n: INTEGER) is
-			-- Shift bits of magnitude by `n' position left. (Note that no bit can
-			-- be lost because the `storage' area is automatically extended when
-			-- it is necessary.)
-		require
-			n > 0
-		local
-			new_storage: like storage; left, right: INTEGER_8
-			new_capacity, new_integer_length, new_head, word_shift, i, j, k, val1, val2, val3: INTEGER
-		do
-			if integer_length > 0 then
-				word_shift := n |>>> 5
-				left := (n & 0x0000001F).to_integer_8 -- Optimistic prediction
-				new_integer_length := integer_length + word_shift
-				if left = 0 then
-					-- Just word shift
-					if offset >= word_shift then
-						-- no need to deplace the number in the storage
-						from
-							i := offset
-							offset := offset - word_shift
-							integer_length := new_integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							put(0, i)
-						end
-					elseif capacity >= new_integer_length then
-						-- deplacing the number
-						from
-							i := offset + integer_length - 1
-							j := word_shift + integer_length - 1
-						until
-							i < offset
-						loop
-							put(item(i), j)
-							i := i - 1
-							j := j - 1
-						end
-						from
-							check
-								j = word_shift - 1
-							end
-						until
-							j < 0
-						loop
-							put(0, j)
-							j := j - 1
-						end
-						offset := 0
-						integer_length := new_integer_length
-					else
-						-- reallocation
-						new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-						new_storage := storage.calloc(new_capacity)
-						from
-							i := offset + integer_length
-							j := word_shift + integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							j := j - 1
-							new_storage.put(item(i), j)
-						end
-						storage := new_storage
-						capacity := new_capacity
-						offset := 0
-						integer_length := new_integer_length
-					end
-				else
-					right := 32 - left -- Compute real `integer_length'
-					i := offset + integer_length - 1
-					val1 := item(i)
-					new_head := val1 |>>> right
-					if new_head = 0 then
-						-- new_integer_length is good
-						if capacity < new_integer_length then
-							-- reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-									j = word_shift
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					else
-						new_integer_length := new_integer_length + 1
-						if capacity < new_integer_length then
-							-- Reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-								new_storage.put(new_head, j + 1)
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							put(new_head, j + 1)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							put(new_head, new_integer_length - 1)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					end
-				end
-			end
-		end
-
-	shift_right (n: INTEGER) is
-			-- Right shift `Current' n bits. (`Current' is left in normal form.)
-		require
-			n > 0
-		local
-			n_ints, n_bits: INTEGER
-		do
-			if integer_length > 0 then
-				n_ints := n |>>> 5
-				n_bits := n & 0x0000001F
-				integer_length := integer_length - n_ints
-				offset := offset + n_ints
-				if n_bits = 0 then
-				else
-					primitive_shift_right(n_bits.to_integer_8)
-				end
-			end
-		end
-
-feature {ANY} -- GCD
-	gcd (other: like Current) is
-			-- Compute GCD of `Current' and `other'.
-			-- GCD is put in `Current' (`other' is not modified).
-		require
-			other /= Void
-		do
-			if other = Current then
-				Current.abs
-			elseif other.is_zero then
-				Current.abs
-			elseif Current.is_zero then
-				Current.copy(other)
-				Current.abs
-			else
-				from
-					register2.copy(other)
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-						Current.abs
-					else
-						register2.mod(Current)
-					end
-				until
-					register2.is_zero
-				loop
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-					else
-						register2.mod(Current)
-					end
-				end
-			end
-		ensure
-			is_positive or is_zero and other.is_zero
-		end
-
-feature {ANY} -- To multiply:
-	multiply (other: like Current) is
-			-- Multiply `Current' by `other'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				multiply_to(other, register1)
-				swap_with(register1)
-			elseif is_zero or other.is_zero then
-				set_with_zero
-			elseif Current.is_one then
-				copy(other)
-			elseif other.is_one then
-			elseif Current.is_one_negative then
-				copy(other)
-				set_negative(not negative)
-			elseif other.is_one_negative then
-				set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 09/07/04)
-				multiply_like_human(other)
-			end
-		end
-
-	multiply_to (other, res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' and `other' are not modified.)
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-		do
-			if is_zero or other.is_zero then
-				res.set_with_zero
-			elseif Current.is_one then
-				res.copy(other)
-			elseif other.is_one then
-				res.copy(Current)
-			elseif Current.is_one_negative then
-				res.copy(other)
-				res.set_negative(not res.negative)
-			elseif other.is_one_negative then
-				res.copy(Current)
-				res.set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 01/05/04)
-				multiply_to_like_human(other, res)
-			end
-		end
-
-	multiply_integer (other: INTEGER; res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' is not modified.)
-		require
-			res /= Current
-			res /= Void
-		local
-			overflow, res_integer_length, res_capacity, i, k, up_i, v: INTEGER; res_storage: like storage
-		do
-			if other = 0 or else is_zero then
-				res.set_with_zero
-			elseif other = Minimum_integer then
-				res.set_negative(not negative)
-				shift_left(31)
-			else
-				if other > 0 then
-					res.set_negative(negative)
-					v := other
-				else
-					res.set_negative(not negative)
-					v := -other
-				end
-				-- Pessimistique estimation
-				res_integer_length := integer_length + 1 -- Reallocation ?
-				if res.capacity < res_integer_length then
-					if capacity < res_integer_length then
-						res_capacity := capacity * 2
-					else
-						res_capacity := capacity_from_upper_bound(capacity, res_integer_length)
-					end
-					set_capacity(res_capacity)
-					res_storage := storage.calloc(res_capacity)
-					res.set_storage(res_storage)
-				else
-					res_storage := res.storage
-				end
-				res.set_offset(0)
-				-- Multiply
-				from
-					k := 0
-					i := offset
-					up_i := offset + integer_length - 1
-					overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-				end
-				if overflow = 0 then
-					res.set_integer_length(res_integer_length - 1)
-				else
-					check
-						k + 1 = integer_length
-					end
-					res.put(overflow, integer_length)
-				end
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- to multiply
-	multiply_like_human (other: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			not is_zero
-			not other.is_zero
-		local
-			old_offset, new_integer_length: INTEGER
-		do
-			-- Pessimistique estimation
-			new_integer_length := integer_length + other.integer_length -- Reallocation ?
-			if capacity < new_integer_length then
-				register1.swap_with(Current)
-				register1.multiply_to_like_human(other, Current)
-				-- Multiply in place
-			elseif offset + new_integer_length <= capacity then
-				multiply_like_human_aux_reverse(other)
-			elseif offset >= other.integer_length then
-				multiply_like_human_aux(other)
-			else
-				old_offset := offset
-				offset := capacity - integer_length
-				storage.slice_copy(offset, storage, old_offset, old_offset + integer_length - 1)
-				multiply_like_human_aux(other)
-			end
-		end
-
-	multiply_like_human_aux (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset >= other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, up_j, down_k, v: INTEGER
-			other_storage: like storage
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				k := 0
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				j := offset
-				up_j := offset + integer_length - 1
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j
-			end
-			storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply_with_add(other_storage.item(i), v, storage.item(k), storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				check
-					k <= j
-				end
-				storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-			offset := 0
-		end
-
-	multiply_like_human_aux_reverse (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset + integer_length <= capacity - other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, down_j, down_k, v: INTEGER
-			other_storage: like storage; inc: BOOLEAN
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				down_j := offset
-				j := offset + integer_length - 1
-				k := j
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j + other_integer_length
-			end
-			storage.put(overflow, k)
-			from
-				down_k := j - 1
-			until
-				j = down_j
-			loop
-				j := j - 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				inc := mbi_add(storage.item(k), overflow, storage_at(storage, k))
-				check
-					k < offset + integer_length + other_integer_length
-				end
-				from
-				until
-					not inc
-				loop
-					k := k + 1
-					check
-						k < offset + integer_length + other_integer_length
-					end
-					inc := mbi_inc(storage_at(storage, k))
-				end
-				down_k := down_k - 1
-			end
-			-- Adjust `res.integer_length'
-			if storage.item(offset + integer_length + other_integer_length - 1) = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-		end
-
-	multiply_to_like_human (other, res: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			res /= Current
-			not is_zero
-			not other.is_zero
-		local
-			overflow, res_integer_length, res_capacity, i, j, k, up_i, up_j, down_k, v: INTEGER
-			res_storage: like storage; res_negative: BOOLEAN
-		do
-			res_negative := negative /= other.negative -- Pessimistique estimation
-			res_integer_length := integer_length + other.integer_length -- Reallocation ?
-			res_capacity := res.capacity
-			if res_capacity < res_integer_length then
-				res_capacity := capacity_from_lower_bound(res_capacity, res_integer_length)
-				res_storage := storage.calloc(res_capacity)
-			else
-				res_storage := res.storage
-			end
-			-- To avoid class invariant violation
-			res.set_with_zero
-			-- Multiply
-			-- First pass
-			from
-				k := 0
-				i := offset
-				up_i := offset + integer_length - 1
-				j := other.offset
-				up_j := j + other.integer_length - 1
-				v := other.item(j)
-				overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-			end
-			k := k + 1
-			res_storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := offset
-					v := other.item(j)
-					overflow := mbi_multiply_with_add(item(i), v, res_storage.item(k), storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(item(i), v, overflow, res_storage.item(k), storage_at(res_storage, k))
-				end
-				k := k + 1
-				res_storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				res.set_all(res_storage, res_capacity, res_integer_length - 1, 0, res_negative)
-			else
-				res.set_all(res_storage, res_capacity, res_integer_length, 0, res_negative)
-			end
-		end
-
-feature {ANY} -- Comparison:
-	is_zero: BOOLEAN is
-			-- Is it 0?
-		do
-			Result := integer_length = 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one: BOOLEAN is
-			-- Is it 1?
-		do
-			if integer_length = 1 then
-				if not negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one_negative: BOOLEAN is
-			-- Is it -1 ?
-		do
-			if integer_length = 1 then
-				if negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies is_negative
-		end
-
-	is_negative: BOOLEAN is
-			-- Is `Current' negative integer?
-		do
-			Result := negative
-		ensure
-			Result implies not is_positive
-		end
-
-	is_positive: BOOLEAN is
-			-- Is `Current' positive integer?
-		do
-			Result := not negative and then integer_length /= 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_even: BOOLEAN is
-			-- Is `Current' even?
-		do
-			if integer_length = 0 then
-				Result := True
-			else
-				Result := item(offset).is_even
-			end
-		ensure
-			Result = not Current.is_odd
-		end
-
-	is_odd: BOOLEAN is
-			-- Is `Current' odd?
-		do
-			if integer_length > 0 then
-				Result := item(offset).is_odd
-			end
-		ensure
-			Result = not Current.is_even
-		end
-
-	is_equal (other: like Current): BOOLEAN is
-		local
-			a, b, c: INTEGER
-		do
-			if Current = other then
-				Result := True
-			elseif integer_length /= other.integer_length then
-			elseif negative /= other.negative then
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					c := offset + integer_length
-					a := offset
-					b := other.offset
-					Result := True
-				until
-					a = c
-				loop
-					if item(a) /= other.item(b) then
-						Result := False
-						a := c
-					else
-						a := a + 1
-						b := b + 1
-					end
-				end
-			end
-		end
-
-	infix "<" (other: like Current): BOOLEAN is
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-			elseif negative /= other.negative then
-				Result := negative
-			elseif integer_length /= other.integer_length then
-				Result := integer_length < other.integer_length xor negative
-			else
-				check
-					other.negative = negative
-				end
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length - 1
-					b := other.offset + integer_length - 1
-				until
-					a < offset
-				loop
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := not negative
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := negative
-						a := -1
-					else
-						a := a - 1
-						b := b - 1
-					end
-				end
-			end
-		end
-
-	abs_compare (other: like Current): INTEGER is
-			-- Compare the magnitude of `Current' and `other'. Returns -1, 0 or 1
-			-- as this MutableBigInteger is numerically less than, equal to, or
-			-- greater than other.
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-				--Result := 0
-			elseif integer_length < other.integer_length then
-				Result := -1
-			elseif integer_length > other.integer_length then
-				Result := 1
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length
-					b := other.offset + integer_length
-					check
-						Result = 0
-					end
-				until
-					a <= offset
-				loop
-					a := a - 1
-					b := b - 1
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := -1
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := 1
-						a := -1
-					end
-				end
-			end
-		end
-
-feature {ANY} -- Printing:
-	to_string: STRING is
-			-- The decimal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 the `Result' is "-1".
-			--
-			-- See also `append_in', `to_string_format', `to_unicode_string', `to_integer'.
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			Result := string_buffer.twin
-		end
-
-	to_unicode_string: UNICODE_STRING is
-			-- The decimal view of `Current' into a new allocated UNICODE_STRING.
-			-- For example, if `Current' represents -1 the `Result' is U"-1".
-			--
-			-- See also `append_in_unicode', `to_unicode_string_format', `to_string'.
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			Result := unicode_string_buffer.twin
-		end
-
-	append_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0')
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-')
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k))
-				end
-			end
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0'.code)
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-'.code)
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k).code)
-				end
-			end
-		end
-
-	to_string_format (s: INTEGER): STRING is
-			-- Same as `to_string' but the result is on `s' character and the
-			-- number is right aligned.
-			-- Note: see `append_in_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	to_unicode_string_format (s: INTEGER): UNICODE_STRING is
-			-- Same as `to_unicode_string' but the result is on `s' character and
-			-- the number is right aligned.
-			-- Note: see `append_in_unicode_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_unicode_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	append_in_format (str: STRING; s: INTEGER) is
-			-- Append the equivalent of `to_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- STRING is allocate for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0')
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-')
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k))
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	append_in_unicode_format (str: UNICODE_STRING; s: INTEGER) is
-			-- Append the equivalent of `to_unicode_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- UNICODE_STRING is allocate for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0'.code)
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-'.code)
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k).code)
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	is_printable: BOOLEAN is
-			-- True if decimal view of `Current' is short enougth
-			-- to be put in a STRING.
-		do
-			--|*** MUST BE REWRITE (Vincent Croizier, 14/07/04) ***
-			Result := integer_length <= 2 ^ 27
-		end
-
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			append_in(tagged_out_memory)
-		end
-
-feature {ANY} -- Miscellaneous:
-	negate is
-			-- Negate the sign of `Current'.
-		do
-			if integer_length /= 0 then
-				negative := not negative
-			end
-		end
-
-	abs is
-			-- Absolute value of `Current'.
-		do
-			negative := False
-		end
-
-	sign: INTEGER_8 is
-			-- Sign of `Current' (0 -1 or 1).
-		do
-			if negative then
-				Result := -1
-			elseif integer_length > 0 then
-				Result := 1
-			else
-				check
-					is_zero
-				end
-			end
-		end
-
-	set_with_zero is
-		do
-			integer_length := 0
-			negative := False
-		ensure
-			is_zero
-		end
-
-	hash_code: INTEGER is
-		local
-			i, c, v: INTEGER
-		do
-			from
-				i := offset
-				c := 2
-			until
-				c = 0 or else i = offset + integer_length
-			loop
-				v := item(i)
-				if v /= 0 then
-					Result := Result #+ v
-					c := c - 1
-				end
-				i := i + 1
-			end
-			Result := integer_length #* Result
-			if negative then
-				Result := Result #+ 1
-			end
-			if Result < 0 then
-				Result := ~Result
-			end
-		end
-
-	copy (other: like Current) is
-		do
-			negative := other.negative
-			offset := 0
-			integer_length := other.integer_length
-			if capacity < other.integer_length then
-				capacity := capacity_from_upper_bound(other.capacity, integer_length)
-				storage := storage.calloc(capacity)
-			elseif capacity = 0 then
-				capacity := 4
-				storage := storage.calloc(capacity)
-			end
-			if integer_length /= 0 then
-				storage.slice_copy(offset, other.storage, other.offset, other.offset + integer_length - 1)
-			end
-		end
-
-	swap_with (other: like Current) is
-			-- Swap the value of `Current' with the value of `other'.
-		local
-			s: like storage; c: like capacity; il: like integer_length; o: like offset; n: like negative
-		do
-			s := other.storage
-			c := other.capacity
-			il := other.integer_length
-			o := other.offset
-			n := other.negative -- Put Current in other
-			other.set_all(storage, capacity, integer_length, offset, negative)
-			--
-			storage := s
-			capacity := c
-			integer_length := il
-			offset := o
-			negative := n
-		end
-
-feature {MUTABLE_BIG_INTEGER}
-	storage: NATIVE_ARRAY[INTEGER]
-			-- Holds the magnitude of `Current' in natural order (the most
-			-- significant INTEGER_32 word has the highest address). To avoid many
-			-- reallocation of this `storage' area, only some words are
-			-- significant. The magnitude is stored in the following significant
-			-- range [`offset' .. `offset + integer_length - 1'].
-
-	capacity: INTEGER
-			-- Of the allocated `storage' area.
-
-	integer_length: INTEGER
-			-- The number of significant INTEGER_32 words in the `storage' area.
-
-	offset: INTEGER
-			-- The `offset' of the less significant word into the `storage' area.
-
-	negative: BOOLEAN
-			-- True when `Current' is negative.
-
-	item (index: INTEGER): INTEGER_32 is
-		require
-		-- index.in_range(0, capacity - 1)
-			index.in_range(offset, offset + integer_length - 1)
-		do
-			Result := storage.item(index)
-		end
-
-	put (value: INTEGER; index: INTEGER) is
-		require
-			index.in_range(0, capacity - 1)
-		do
-			storage.put(value, index)
-		end
-
-	set_negative (n: like negative) is
-		require
-			n implies not is_zero
-		do
-			negative := n
-		ensure
-			negative = n or is_zero
-		end
-
-	set_integer_length (il: like integer_length) is
-		require
-			il.in_range(0, capacity - offset)
-		do
-			integer_length := il
-		ensure
-			integer_length = il
-		end
-
-	set_offset (o: like offset) is
-		require
-			o.in_range(0, capacity - integer_length)
-		do
-			offset := o
-		ensure
-			offset = o
-		end
-
-	set_ilo (il: like integer_length; o: like offset) is
-		require
-			il.in_range(0, capacity)
-			o.in_range(0, capacity - il)
-		do
-			integer_length := il
-			offset := o
-		ensure
-			integer_length = il
-			offset = o
-		end
-
-	set_storage (new_storage: like storage) is
-		do
-			storage := new_storage
-		end
-
-	set_capacity (new_capacity: like capacity) is
-		do
-			capacity := new_capacity
-		end
-
-	set_all (new_storage: like storage; new_capacity, new_integer_length, new_offset: INTEGER; new_negative: BOOLEAN) is
-		require
-			new_capacity > 0
-			new_storage.is_not_null
-			new_integer_length.in_range(0, new_capacity)
-			new_integer_length /= 0 implies new_offset.in_range(0, new_capacity - new_integer_length) and new_storage.item(new_offset + new_integer_length - 1) /= 0
-			new_integer_length = 0 implies not new_negative
-			new_capacity.is_a_power_of_2
-		do
-			storage := new_storage
-			capacity := new_capacity
-			integer_length := new_integer_length
-			offset := new_offset
-			negative := new_negative
-		ensure
-			storage = new_storage
-			capacity = new_capacity
-			integer_length = new_integer_length
-			offset = new_offset
-			negative = new_negative
-		end
-
-	primitive_shift_left (n: INTEGER_8) is
-			-- Left shift `Current' with no need to extend the `storage'.
-			--|*** Can be a little faster (Vincent Croizier, 26/04/04) ***
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-			no_bit_lost: item(offset + integer_length - 1) |<< n |>>> n = item(offset + integer_length - 1)
-		local
-			n2: INTEGER_8; i, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				i := offset
-				up := i + integer_length - 1
-			until
-				i > up
-			loop
-				b := item(i)
-				put(b |<< n | c, i)
-				c := b |>>> n2
-				i := i + 1
-			end
-			check
-				c = 0
-			end
-		end
-
-	primitive_shift_right (n: INTEGER_8) is
-			-- Right shift `Current' of `n' bits.
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-		local
-			n2: INTEGER_8; i, j, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				up := integer_length - 1
-				j := 0
-				i := offset
-				c := item(i)
-			until
-				j >= up
-			loop
-				b := c
-				i := i + 1
-				c := item(i)
-				put(b |>>> n | (c |<< n2), j)
-				j := j + 1
-			end
-			check
-				j = up
-				i = offset + j
-			end
-			put(c |>>> n, up)
-			offset := 0
-			if item(integer_length - 1) = 0 then
-				integer_length := integer_length - 1
-			end
-		ensure
-			offset = 0
-		end
-
-	divide_one_word (divisor: INTEGER): INTEGER is
-			-- This method is used by `divide'. The one word divisor is
-			-- specified by `divisor' is saw as unsigned.
-			-- `Current' is the dividend (saw positive) at invocation but is replaced by
-			-- the quotient. The remainder is returned as unsigned INTEGER.
-			-- Note: `Current' is modified by this method.
-		require
-			divisor /= 0
-		local
-			i, remainder_word1, remainder_word0: INTEGER
-		do
-			if integer_length = 1 then
-				Result := item(offset)
-				if unsigned_less_than(Result, divisor) then
-					integer_length := 0
-					negative := False
-				else
-					put(mbi_divide(0, Result, divisor, $remainder_word1), offset)
-					Result := remainder_word1
-				end
-			else
-				from
-					i := offset + integer_length - 1
-				until
-					i < offset
-				loop
-					remainder_word0 := item(i)
-					put(mbi_divide(remainder_word1, remainder_word0, divisor, $remainder_word1), i)
-					i := i - 1
-				end
-				if item(offset + integer_length - 1) = 0 then
-					integer_length := integer_length - 1
-					check
-						item(offset + integer_length - 1) /= 0
-					end
-				end
-				Result := remainder_word1
-			end
-		end
-
-	divide_sign_correction (other, quotient, remainder: like Current) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not remainder.is_negative
-		do
-			if remainder.is_zero then
-				quotient.set_negative(negative /= other.negative)
-			elseif negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					remainder.set_negative(True)
-					-- other is negative
-					remainder.subtract(other)
-					check
-						not remainder.is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					remainder.set_negative(True)
-					remainder.add(other)
-					check
-						not remainder.is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not remainder.is_negative
-		end
-
-	divide_sign_correction_bis (other, quotient: like Current; current_negative: BOOLEAN) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not is_negative
-		do
-			if is_zero then
-				quotient.set_negative(current_negative /= other.negative)
-			elseif current_negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					set_negative(True)
-					-- other is negative
-					subtract(other)
-					check
-						not is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					set_negative(True)
-					add(other)
-					check
-						not is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not is_negative
-		end
-
-	multiply_and_subtract (u1, qhat: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-		require
-			qhat /= 0
-		local
-			i, j, jmax, m1, m2: INTEGER; dec: BOOLEAN
-		do
-			if qhat = 1 then
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_dec(storage_at(r_storage, j))
-						check
-							not Result
-						end
-					end
-				end
-			else
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					m1 := mbi_multiply_with_add(qhat, d_storage.item(i), m1, $m2)
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), m2, storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), m2, storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_subtract_with_dec(r_storage.item(j), m1, storage_at(r_storage, j))
-					end
-				elseif m1 = 0 then
-					-- nothing to do
-				elseif u1 = 0 then
-					Result := True
-				else
-					Result := mbi_subtract(r_storage.item(j), m1, storage_at(r_storage, j))
-				end
-			end
-		end
-
-	add_back (old_u1: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-			-- `old_u1' is the value of `u1' before `multiply_and_subtract'.
-		local
-			i, j, jmax: INTEGER; inc: BOOLEAN
-		do
-			from
-				i := d_offset
-				j := r_offset
-				jmax := r_offset + length
-			until
-				j = jmax
-			loop
-				if inc then
-					inc := mbi_add_with_inc(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				else
-					inc := mbi_add(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				end
-				i := i + 1
-				j := j + 1
-			end
-			if inc then
-				if old_u1 = 0 then
-					Result := True
-				else
-					Result := mbi_inc(storage_at(r_storage, j))
-				end
-			end
-		end
-
-	is_a_good_divide (other, quotient, remainder: like Current): BOOLEAN is
-		require
-			other /= Void
-			quotient /= Void
-			remainder /= Void
-		local
-			v: like Current
-		do
-			v := other.twin
-			v.multiply(quotient)
-			v.add(remainder)
-			Result := Current.is_equal(v)
-		end
-
-	normalize: INTEGER_8 is
-			-- Shift left until the most significant bit is on.
-			-- Result give the number of left shift.
-		require
-			not is_zero
-		local
-			head: INTEGER
-		do
-			head := item(offset + integer_length - 1)
-			from
-			until
-				head < 0
-			loop
-				head := head.bit_shift_left(1)
-				Result := Result + 1
-			end
-			if Result > 0 then
-				shift_left(Result)
-			end
-		ensure
-			item(offset + integer_length - 1) < 0
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	register1: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	register2: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	Real_base: REAL_64 is
-		once
-			Result := (0x0000000100000000).force_to_real_64
-		end
-
-	add_magnitude (other: like Current) is
-			-- Add the magnitude of `Current' and `other' regardless of signs.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			a, b: like Current; inc: BOOLEAN; i, j, k, n: INTEGER; new_storage, a_storage, b_storage: like storage
-			new_capacity, a_capacity, a_offset, a_integer_length, b_offset, b_integer_length: INTEGER
-		do
-			--|*** First tests can be certainely optimized.
-			--|*** (Vincent Croizier, 26/03/2004)
-			if integer_length > other.integer_length and then capacity - offset > integer_length then
-				---- Add in place (`offset' doesn't change)
-				-- Add common parts of both numbers:
-				from
-					i := offset
-					j := other.offset
-					n := j + other.integer_length
-				until
-					j = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(item(i), other.item(j), storage_at(storage, i))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(item(i), other.item(j), storage_at(storage, i))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := offset + integer_length
-				until
-					not inc or else i = n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					storage.put(1, n)
-					check
-						n < capacity
-					end
-					integer_length := integer_length + 1
-				end
-			else
-				---- Add, after this `offset' will be 0
-				-- Set `a' to the longest number and `b' to the smallest.
-				if integer_length >= other.integer_length then
-					a := Current
-					b := other
-				else
-					a := other
-					b := Current
-				end
-				a_capacity := a.capacity
-				a_storage := a.storage
-				b_storage := b.storage
-				a_integer_length := a.integer_length
-				b_integer_length := b.integer_length
-				a_offset := a.offset
-				b_offset := b.offset -- Verify capacity
-				if capacity < a_integer_length then
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif capacity = a_integer_length then
-					--|*** It's possible to make a more restrictive test
-					--|*** that can exclude more case of reallocation. (Vincent Croizier, 24/03/2004)
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length + 1)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif a = other then
-					-- protect `other'
-					new_storage := a_storage.calloc(a_capacity)
-					new_capacity := a_capacity
-				else
-					new_storage := a_storage
-					new_capacity := a_capacity
-				end
-				-- Add common parts of both numbers:
-				n := b_integer_length
-				check
-					n.in_range(0, new_capacity)
-				end
-				from
-					i := a_offset
-					j := b_offset -- k := 0
-				until
-					k = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					end
-					i := i + 1
-					j := j + 1
-					k := k + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := a_integer_length
-				until
-					not inc or else k = a_integer_length
-				loop
-					new_storage.put(a_storage.item(i), k)
-					inc := mbi_inc(storage_at(new_storage, k))
-					i := i + 1
-					k := k + 1
-				end
-				if inc then
-					new_storage.put(1, k)
-					check
-						n < new_capacity
-					end
-					n := n + 1
-				else
-					-- copy the reste of `a'
-					from
-					until
-						k = n
-					loop
-						new_storage.put(a_storage.item(i), k)
-						i := i + 1
-						k := k + 1
-					end
-				end
-				capacity := new_capacity
-				storage := new_storage
-				integer_length := n
-				offset := 0
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	subtract_magnitude (other: like Current) is
-			-- Subtract `other' from `Current' (The result is placed  in `Current')
-			-- and change `negative' (the sign) if necessary.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			i, j, v1, v2: INTEGER; test: BOOLEAN; new: like Current
-		do
-			-- Compare the number
-			if integer_length = other.integer_length then
-				-- Compare the most significant part of the numbers
-				from
-					i := offset + integer_length - 1
-					j := other.offset + integer_length - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				until
-					test or else i = offset
-				loop
-					integer_length := integer_length - 1
-					i := i - 1
-					j := j - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				end
-				if test then
-					if unsigned_greater_than(v1, v2) then
-						-- Current > other
-						subtract_magnitude_raw_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					else
-						-- Current < other
-						check
-							unsigned_less_than(v1, v2)
-						end
-						negative := not negative
-						subtract_magnitude_raw_reverse_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					end
-				else
-					-- Current = other
-					set_with_zero
-				end
-			elseif integer_length > other.integer_length then
-				subtract_magnitude_raw(other)
-			elseif capacity >= other.integer_length then
-				negative := not negative
-				subtract_magnitude_raw_reverse(other)
-			else
-				-- Reallocation
-				--|*** Can be faster (Vincent Croizier, 10/06/04) ***
-				create new.copy(other)
-				new.subtract_magnitude(Current)
-				negative := not negative
-				integer_length := new.integer_length
-				storage := new.storage
-				offset := new.offset
-			end
-		end
-
-	subtract_magnitude_raw (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = 1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := other.integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(item(i), k)
-				dec := mbi_dec(storage_at(storage, k))
-				i := i + 1
-				k := k + 1
-			end
-			if k = integer_length then
-				from
-					k := k - 1
-				until
-					item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = -1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				-- k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(other.item(j), k)
-				dec := mbi_dec(storage_at(storage, k))
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			up := other.integer_length
-			if k < up then
-				from
-				until
-					k = up
-				loop
-					put(other.item(j), k)
-					j := j + 1
-					k := k + 1
-				end
-				integer_length := up
-			else
-				check
-					k = up
-				end
-				from
-					k := k - 1
-				until
-					storage.item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-				offset := 0
-			end
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_greater_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current',
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_less_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-feature {} -- For printing
-	char_buffer: FAST_ARRAY[CHARACTER] is
-		once
-			create Result.make(4096)
-		end
-
-	append_in_char_buffer: INTEGER is
-			-- Tool for `append_in' and `append_in_unicode'.
-			-- Put absolute value of Current in `char_buffer' and return
-			-- the number of characteres really used.
-		require
-			is_printable
-			not is_zero
-		local
-			base, max_char, i, r: INTEGER
-		do
-			-- Allocate space in `char_buffer'
-			max_char := integer_length * 9 + (2 * integer_length + 2) #// 3
-			if char_buffer.capacity < max_char then
-				char_buffer.resize(max_char)
-			end
-			-- Bigin of extracting digits
-			register1.copy(Current)
-			base := 1000000000
-			from
-				r := register1.divide_one_word(base)
-			until
-				register1.is_zero
-			loop
-				check
-					r >= 0
-				end
-				from
-					i := 9
-				until
-					r = 0
-				loop
-					char_buffer.put((r #\\ 10).decimal_digit, Result)
-					r := r #// 10
-					Result := Result + 1
-					i := i - 1
-				end
-				from
-				until
-					i = 0
-				loop
-					char_buffer.put('0', Result)
-					Result := Result + 1
-					i := i - 1
-				end
-				-- extract next digit group
-				r := register1.divide_one_word(base)
-			end
-			from
-				check
-					r > 0
-				end
-			until
-				r = 0
-			loop
-				char_buffer.put((r #\\ 10).decimal_digit, Result)
-				r := r #// 10
-				Result := Result + 1
-			end
-		end
-
-feature {} -- Tools for capacity:
-	capacity_from_lower_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than
-			-- `needed_capacity' and `actual_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity.is_a_power_of_2
-			actual_capacity >= 4
-		do
-			from
-				Result := actual_capacity
-			until
-				Result >= needed_capacity
-			loop
-				Result := Result.bit_shift_left(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result >= 4
-			Result >= actual_capacity
-			Result >= needed_capacity
-			Result = actual_capacity or Result #// 2 < needed_capacity
-		end
-
-	capacity_from_upper_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than `needed_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity >= 4
-			actual_capacity >= needed_capacity
-			actual_capacity.is_a_power_of_2
-		local
-			v: INTEGER
-		do
-			from
-				Result := actual_capacity
-				v := Result.bit_shift_right(1)
-			until
-				v < needed_capacity or else v = 2
-			loop
-				Result := v
-				v := Result.bit_shift_right(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result <= actual_capacity
-			Result >= needed_capacity
-			Result = 4 or Result.bit_shift_right(1) < needed_capacity
-		end
-
-feature {}
-	unsigned_less_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned "<".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_less_than"
-			}"
-		end
-
-	unsigned_greater_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_than"
-			}"
-		end
-
-	unsigned_greater_or_equal (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">=".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_or_equal"
-			}"
-		end
-
-	unsigned_32_to_integer_64 (integer_32: INTEGER): INTEGER_64 is
-			-- Return the unsigned value of the `integer_32'.
-			--
-			--|*** Ajouter ou pas cette fonction dans INTEGER_32 ? plug_in ou built_in ?(Dom. 27/02/2004) ***
-			--
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_32_to_integer_64"
-			}"
-		end
-
-	storage_at (s: like storage; n: INTEGER): POINTER is
-			-- Give the address of the corresponding word of `s'.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_storage_at"
-			}"
-		end
-
-	mbi_inc (integer_32_adr: POINTER): BOOLEAN is
-			-- Increment the value at `integer_32_adr'. The `Result' is True only in case of overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_inc"
-			}"
-		end
-
-	mbi_add (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add"
-			}"
-		end
-
-	mbi_add_with_inc (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b + 1
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add_with_inc"
-			}"
-		end
-
-	mbi_dec (integer_32_adr: POINTER): BOOLEAN is
-			-- Put a - 1 in the item n in the NATIVE_ARRAY t.
-			-- t.item(n) := a - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_dec"
-			}"
-		end
-
-	mbi_subtract (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract"
-			}"
-		end
-
-	mbi_subtract_with_dec (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract_with_dec"
-			}"
-		end
-
-	mbi_multiply (a, b: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply"
-			}"
-		end
-
-	mbi_multiply_with_add (a, b, c: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_add"
-			}"
-		end
-
-	mbi_multiply_with_2_add (a, b, c, d: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c + d in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_2_add"
-			}"
-		end
-
-	mbi_divide (u1, u0, d: INTEGER; r_int32adr: POINTER): INTEGER_32 is
-			-- Divide `u1u0' by `d', put the remainder in `r' and return the quotient.
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_divide"
-			}"
-		end
-
-	string_buffer: STRING is
-		once
-			create Result.make(128)
-		end
-
-	unicode_string_buffer: UNICODE_STRING is
-		once
-			create Result.make(128)
-		end
-
-invariant
-	capacity > 0
-	storage.is_not_null
-	integer_length.in_range(0, capacity)
-	integer_length /= 0 implies offset.in_range(0, capacity - integer_length) and item(offset + integer_length - 1) /= 0
-	integer_length = 0 implies not negative
-	capacity.is_a_power_of_2
-
-end -- class MUTABLE_BIG_INTEGER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/number.e b/lib/number/eiffel/number.e
deleted file mode 100644
index 2a46b99..0000000
--- a/lib/number/eiffel/number.e
+++ /dev/null
@@ -1,1030 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class NUMBER
-	--
-	-- This abstract definition of a NUMBER is intended to be the unique
-	-- view of the client (do not use sub-classes names at all in the
-	-- client code). In order to create NUMBERs without using concrete
-	-- class name, the client code can inherit NUMBER_TOOLS. (See directory
-	-- ${SmartEiffel}/tutorial/number for example.)
-	--
-
-inherit
-	HASHABLE
-		redefine fill_tagged_out_memory, out_in_tagged_out_memory
-		end
-	COMPARABLE
-		undefine is_equal
-		redefine infix ">", infix "<=", infix ">=", in_range, compare, three_way_comparison, min, max, fill_tagged_out_memory,
-			out_in_tagged_out_memory
-		end
-	NUMERIC
-		redefine fill_tagged_out_memory, out_in_tagged_out_memory
-		end
-
-insert
-	PLATFORM
-
-feature {ANY} -- Binary operators for two NUMBERs:
-	infix "+" (other: NUMBER): NUMBER is
-			-- Sum of `Current' and `other'.
-		require
-			other /= Void
-		deferred
-		ensure
-			(Result - other).is_equal(Current)
-		end
-
-	infix "-" (other: NUMBER): NUMBER is
-			-- Difference of `Current' and `other'.
-		require
-			other /= Void
-		do
-			Result := Current + -other
-		ensure
-			(Result + other).is_equal(Current)
-		end
-
-	infix "*" (other: NUMBER): NUMBER is
-			-- Product of `Current' and `other'.
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	infix "/" (other: NUMBER): NUMBER is
-			-- Quotient of `Current' and `other'.
-		do
-			Result := Current * other.inverse
-		ensure
-			Result /= Void
-		end
-
-	infix "//" (other: NUMBER): NUMBER is
-			-- Divide `Current' by `other' (Integer division).
-		require
-			is_integer_general_number
-			other.is_integer_general_number
-			divisible(other)
-		deferred
-		ensure
-			Result.is_integer_general_number
-			Current.is_equal(Result * other + Current \\ other)
-		end
-
-	infix "\\" (other: NUMBER): NUMBER is
-			-- Remainder of division of `Current' by `other'.
-		require
-			is_integer_general_number
-			other.is_integer_general_number
-			divisible(other)
-		deferred
-		ensure
-			Result.is_integer_general_number
-			not Result.is_negative and Result < other.abs
-		end
-
-	infix "^" (exp: NUMBER): NUMBER is
-			-- `Current' raised to `exp'-th power.
-		require
-			exp.is_integer_general_number
-			is_zero implies exp @> 0
-		local
-			e: NUMBER; factor: NUMBER
-		do
-			Result := one
-			factor := Current
-			from
-				e := exp.abs
-			until
-				e.is_zero
-			loop
-				if e.is_odd then
-					Result := Result * factor
-				end
-				e := e @// 2
-				factor := factor * factor
-			end
-			if exp @< 0 then
-				Result := Result.inverse
-			end
-		ensure
-			Result /= Void
-			exp.is_zero implies Result.is_one
-		end
-
-	infix "<" (other: NUMBER): BOOLEAN is
-			-- Is `Current' strictly less than `other'?
-		deferred
-		end
-
-	infix "<=" (other: NUMBER): BOOLEAN is
-			-- Is `Current' less or equal than `other'?
-		do
-			Result := not (other < Current)
-		end
-
-	infix ">" (other: NUMBER): BOOLEAN is
-			-- Is `Current' strictly greater than `other'?
-		do
-			Result := other < Current
-		end
-
-	infix ">=" (other: NUMBER): BOOLEAN is
-			-- Is `Current' greater or equal than `other'?
-		do
-			Result := not (Current < other)
-		end
-
-	gcd (other: NUMBER): INTEGER_GENERAL_NUMBER is
-			-- Great Common Divisor of `Current' and `other'.
-		require
-			other.is_integer_general_number
-			is_integer_general_number
-		deferred
-		ensure
-			not Result.is_negative
-			Result.is_zero implies Current.is_zero and other.is_zero
-			not Result.is_zero implies (Current / Result).gcd(other / Result).is_one
-		end
-
-feature {ANY} -- Unary operators for two NUMBERs:
-	frozen prefix "+": NUMBER is
-			-- Unary plus of `Current'.
-		do
-			Result := Current
-		ensure
-			Result = Current
-		end
-
-	prefix "-": NUMBER is
-			-- Opposite of `Current'.
-		deferred
-		ensure
-			Result /= Void
-		end
-
-feature {ANY} -- To know more about a NUMBER:
-	frozen is_integer_8: BOOLEAN is
-			-- Does `Current' value fit on an INTEGER_8?
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			if integer_64_number ?:= Current then
-				integer_64_number ::= Current
-				Result := integer_64_number.value.fit_integer_8
-			end
-		ensure
-			Result implies is_integer_general_number
-		end
-
-	frozen is_integer_16: BOOLEAN is
-			-- Does `Current' value fit on an INTEGER_16?
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			if integer_64_number ?:= Current then
-				integer_64_number ::= Current
-				Result := integer_64_number.value.fit_integer_16
-			end
-		ensure
-			Result implies is_integer_general_number
-		end
-
-	frozen is_integer, is_integer_32: BOOLEAN is
-			-- Does `Current' value fit on an INTEGER?
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			if integer_64_number ?:= Current then
-				integer_64_number ::= Current
-				Result := integer_64_number.value.fit_integer_32
-			end
-		ensure
-			Result implies is_integer_general_number
-		end
-
-	frozen is_integer_64: BOOLEAN is
-			-- Does `Current' value fit on an INTEGER_64?
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			Result := integer_64_number ?:= Current
-		ensure
-			Result implies is_integer_general_number
-		end
-
-	in_range (lower, upper: NUMBER): BOOLEAN is
-			-- Return True if `Current' is in range [`lower'..`upper']
-		do
-			Result := Current >= lower and then Current <= upper
-		end
-
-	compare, three_way_comparison (other: NUMBER): INTEGER is
-			-- Compare `Current' with `other'.
-			-- `<'  <==> `Result < 0'
-			-- `>'  <==> `Result > 0'
-			-- Otherwise `Result = 0'.
-		do
-			if Current < other then
-				Result := -1
-			elseif other < Current then
-				Result := 1
-			end
-		end
-
-	min (other: NUMBER): NUMBER is
-			-- Minimum of `Current' and `other'.
-		do
-			if Current < other then
-				Result := Current
-			else
-				Result := other
-			end
-		end
-
-	max (other: NUMBER): NUMBER is
-			-- Maximum of `Current' and `other'.
-		do
-			if other < Current then
-				Result := Current
-			else
-				Result := other
-			end
-		end
-
-	is_zero: BOOLEAN is
-			-- Is it 0 ?
-		deferred
-		ensure
-			Result = Current @= 0
-		end
-
-	is_one: BOOLEAN is
-			-- Is it 1 ?
-		deferred
-		ensure
-			Result = Current @= 1
-		end
-
-	is_positive: BOOLEAN is
-			-- Is `Current' > 0 ?
-		deferred
-		ensure
-			Result = Current @> 0
-		end
-
-	is_negative: BOOLEAN is
-			-- Is `Current' < 0 ?
-		deferred
-		ensure
-			Result = Current @< 0
-		end
-
-	is_odd: BOOLEAN is
-			-- Is `odd' ?
-		require
-			is_integer_general_number
-		do
-			Result := (Current @\\ 2).is_one
-		end
-
-	is_even: BOOLEAN is
-			-- Is `even' ?
-		require
-			is_integer_general_number
-		do
-			Result := (Current @\\ 2).is_zero
-		end
-
-	is_equal (other: NUMBER): BOOLEAN is
-		deferred
-		end
-
-	frozen is_integer_general_number: BOOLEAN is
-		local
-			integer_general_number: INTEGER_GENERAL_NUMBER
-		do
-			Result := integer_general_number ?:= Current
-		end
-
-	frozen is_fraction_general_number: BOOLEAN is
-		local
-			fraction_general_number: FRACTION_GENERAL_NUMBER
-		do
-			Result := fraction_general_number ?:= Current
-		end
-
-	frozen fit_real: BOOLEAN is
-		do
-			if Current #>= Minimum_real then
-				Result := Current #<= Maximum_real
-			end
-		end
-
-feature {ANY} -- Conversions and printing:
-	frozen to_integer_8: INTEGER_8 is
-			-- Conversion of `Current' in an INTEGER_8.
-		require
-			is_integer_8
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			integer_64_number ::= Current
-			Result := integer_64_number.value.to_integer_8
-		end
-
-	frozen to_integer_16: INTEGER_16 is
-			-- Conversion of `Current' in an INTEGER_16.
-		require
-			is_integer_16
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			integer_64_number ::= Current
-			Result := integer_64_number.value.to_integer_16
-		end
-
-	frozen to_integer, to_integer_32: INTEGER is
-			-- Conversion of `Current' in an INTEGER.
-		require
-			is_integer
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			integer_64_number ::= Current
-			Result := integer_64_number.value.to_integer_32
-		end
-
-	frozen to_integer_64: INTEGER_64 is
-			-- Conversion of `Current' in an INTEGER.
-		require
-			is_integer_64
-		local
-			integer_64_number: INTEGER_64_NUMBER
-		do
-			integer_64_number ::= Current
-			Result := integer_64_number.value
-		end
-
-	force_to_real_64: REAL_64 is
-			-- Conversion of `Current' in a REAL_64.
-		require
-			fit_real
-		deferred
-		end
-
-	frozen to_string: STRING is
-			-- Convert the NUMBER into a new allocated STRING.
-			-- Note: see also `append_in' to save memory.
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			Result := string_buffer.twin
-		end
-
-	frozen to_unicode_string: UNICODE_STRING is
-			-- Convert the NUMBER into a new allocated UNICODE_STRING.
-			-- Note: see also `append_in_unicode' to save memory.
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			Result := unicode_string_buffer.twin
-		end
-
-	append_in (buffer: STRING) is
-			-- Append the equivalent of `to_string' at the end of `buffer'.
-			-- Thus you can save memory because no other STRING is allocated
-			-- for the job.
-		require
-			buffer /= Void
-		deferred
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-			-- Append the equivalent of `to_unicode_string' at the end of `buffer'.
-			-- Thus you can save memory because no other UNICODE_STRING is allocated
-			-- for the job.
-		require
-			buffer /= Void
-		deferred
-		end
-
-	frozen to_string_format (s: INTEGER): STRING is
-			-- Same as `to_string' but the result is on `s' character and the
-			-- number is right aligned.
-			-- Note: see `append_in_format' to save memory.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			from
-				create Result.make(string_buffer.count.max(s))
-				i := s - string_buffer.count
-			until
-				i <= 0
-			loop
-				Result.extend(' ')
-				i := i - 1
-			end
-			Result.append(string_buffer)
-		ensure
-			Result.count = s
-		end
-
-	frozen to_unicode_string_format (s: INTEGER): UNICODE_STRING is
-			-- Same as `to_unicode_string' but the result is on `s' character and
-			-- the number is right aligned.
-			-- Note: see `append_in_unicode_format' to save memory.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			from
-				create Result.make(unicode_string_buffer.count.max(s))
-				i := s - unicode_string_buffer.count
-			until
-				i <= 0
-			loop
-				Result.extend(' '.code)
-				i := i - 1
-			end
-			Result.append(unicode_string_buffer)
-		ensure
-			Result.count = s
-		end
-
-	frozen append_in_format (str: STRING; s: INTEGER) is
-			-- Append the equivalent of `to_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- STRING is allocate for the job.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			from
-				i := s - string_buffer.count
-			until
-				i <= 0
-			loop
-				str.extend(' ')
-				i := i - 1
-			end
-			str.append(string_buffer)
-		ensure
-			str.count >= old str.count + s
-		end
-
-	frozen append_in_unicode_format (str: UNICODE_STRING; s: INTEGER) is
-			-- Append the equivalent of `to_unicode_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- UNICODE_STRING is allocate for the job.
-		require
-			to_string.count <= s
-		local
-			i: INTEGER
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			from
-				i := s - unicode_string_buffer.count
-			until
-				i <= 0
-			loop
-				str.extend(' '.code)
-				i := i - 1
-			end
-			str.append(unicode_string_buffer)
-		ensure
-			str.count >= old str.count + s
-		end
-
-	frozen to_decimal (digits: INTEGER; all_digits: BOOLEAN): STRING is
-			-- Convert `Current' into its decimal view. A maximum of decimal
-			-- `digits' places will be used for the decimal part. If the
-			-- `all_digits' flag is True insignificant digits will be included
-			-- as well. (See also `decimal_in' to save memory.)
-		require
-			non_negative_digits: digits >= 0
-		do
-			Result := once "This is a local STRING buffer ...."
-			Result.clear_count
-			append_decimal_in(Result, digits, all_digits)
-			Result := Result.twin
-		ensure
-			not Result.is_empty
-		end
-
-	append_decimal_in (buffer: STRING; digits: INTEGER; all_digits: BOOLEAN) is
-			-- Append the equivalent of `to_decimal' at the end of `buffer'. Thus
-			-- you can save memory because no other STRING is allocated.
-		require
-			non_negative_digits: digits >= 0
-		deferred
-		end
-
-	frozen decimal_digit, digit: CHARACTER is
-			-- Gives the corresponding CHARACTER for range 0..9.
-		require
-			to_integer.in_range(0, 9)
-		do
-			Result := to_integer.decimal_digit
-		ensure
-			(once "0123456789").has(Result)
-			Current @= Result.value
-		end
-
-feature {ANY} -- To mimic NUMERIC:
-	divisible (other: NUMBER): BOOLEAN is
-			-- Is `other' a valid divisor for `Current' ?
-		do
-			Result := not other.is_zero
-		end
-
-	one: NUMBER is
-			-- The neutral element of multiplication.
-		once
-			create {INTEGER_64_NUMBER} Result.make(1)
-		ensure
-			neutral_element:
-				-- Result is the neutral element of
-				-- multiplication.
-		end
-
-	zero: NUMBER is
-			-- The neutral element of addition.
-		once
-			create {INTEGER_64_NUMBER} Result.make(0)
-		ensure
-			neutral_element:
-				-- Result is the neutral element of
-				-- addition.
-		end
-
-	frozen sign: INTEGER_8 is
-			-- Sign of `Current' (0 or -1 or 1).
-		do
-			if is_positive then
-				Result := 1
-			elseif is_negative then
-				Result := -1
-			end
-		ensure then
-			Result = 1 implies is_positive
-			Result = 0 implies is_zero
-			Result = -1 implies is_negative
-		end
-
-	sqrt: REAL_64 is
-			-- Compute the square routine.
-		require
-			fit_real
-		do
-			Result := force_to_real_64.sqrt
-		end
-
-	frozen log: REAL_64 is
-		require
-			fit_real
-		do
-			Result := force_to_real_64.log
-		end
-
-	abs: NUMBER is
-		do
-			if is_negative then
-				Result := -Current
-			else
-				Result := Current
-			end
-		ensure
-			not Result.is_negative
-		end
-
-feature {ANY} -- To mix NUMBER and INTEGER_64:
-	infix "@+" (other: INTEGER_64): NUMBER is
-			-- Sum of `Current' and `other'.
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	infix "@-" (other: INTEGER_64): NUMBER is
-			-- Difference of `Current' and `other'.
-		do
-			if other = Minimum_integer_64 then
-				Result := Current @+ 1
-				Result := Result @+ Maximum_integer_64
-			else
-				Result := Current @+ -other
-			end
-		ensure
-			Result /= Void
-		end
-
-	infix "@*" (other: INTEGER_64): NUMBER is
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	infix "@/" (other: INTEGER_64): NUMBER is
-			-- Quotient of `Current' and `other'.
-		require
-			other /= 0
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	infix "@//" (other: INTEGER_64): NUMBER is
-			-- Divide `Current' by `other' (Integer division).
-		require
-			is_integer_general_number
-			other /= 0
-		deferred
-		ensure
-			Result.is_integer_general_number
-		end
-
-	infix "@\\" (other: INTEGER_64): NUMBER is
-			-- Remainder of division of `Current' by `other'.
-		require
-			is_integer_general_number
-			other /= 0
-		deferred
-		ensure
-			Result.is_integer_general_number
-		end
-
-	infix "@^" (exp: INTEGER_64): NUMBER is
-		require
-			is_zero implies exp > 0
-		local
-			int: INTEGER_64; other: NUMBER
-		do
-			int := exp.abs
-			inspect
-				int
-			when 0 then
-				create {INTEGER_64_NUMBER} Result.make(1)
-			when 1 then
-				Result := Current
-			else
-				from
-					int := int - 1
-					other := Current
-					Result := Current
-				until
-					int < 2
-				loop
-					if int.is_odd then
-						Result := Result * other
-					end
-					other := other * other -- methode sqrt : ^2
-					int := int #// 2
-				end
-				Result := Result * other
-			end
-			if exp < 0 then
-				Result := Result.inverse
-			end
-		ensure
-			Result /= Void
-			--|*** Bad assertion (Vincent Croizier, 01/06/04) ***
-			--| Result /= Current implies (exp /= 1 or else not is_zero)
-		end
-
-	infix "@=" (other: INTEGER_64): BOOLEAN is
-			-- Is `Current' equal `other' ?
-		deferred
-		end
-
-	infix "@<" (other: INTEGER_64): BOOLEAN is
-			-- Is `Current' strictly less than `other'?
-		deferred
-		ensure
-			Result = not (Current @>= other)
-		end
-
-	infix "@<=" (other: INTEGER_64): BOOLEAN is
-			-- Is `Current' less or equal `other'?
-		deferred
-		ensure
-			Result = not (Current @> other)
-		end
-
-	infix "@>" (other: INTEGER_64): BOOLEAN is
-			-- Is `Current' strictly greater than `other'?
-		deferred
-		ensure
-			Result = not (Current @<= other)
-		end
-
-	infix "@>=" (other: INTEGER_64): BOOLEAN is
-			-- Is `Current' greater or equal than `other'?
-		deferred
-		ensure
-			Result = not (Current @< other)
-		end
-
-feature {ANY} -- To mix NUMBER and REAL_64:
-	infix "#=" (other: REAL_64): BOOLEAN is
-			-- Is `Current' equal `other'?
-		deferred
-		end
-
-	infix "#<" (other: REAL_64): BOOLEAN is
-			-- Is `Current' strictly less than `other'?
-		deferred
-		ensure
-			Result implies not (Current #>= other)
-		end
-
-	infix "#<=" (other: REAL_64): BOOLEAN is
-			-- Is `Current' less or equal `other'?
-		deferred
-		ensure
-			Result = not (Current #> other)
-		end
-
-	infix "#>" (other: REAL_64): BOOLEAN is
-			-- Is `Current' strictly greater than `other'?
-		deferred
-		ensure
-			Result = not (Current #<= other)
-		end
-
-	infix "#>=" (other: REAL_64): BOOLEAN is
-			-- Is `Current' greater or equal than `other'?
-		deferred
-		ensure
-			Result = not (Current #< other)
-		end
-
-feature {ANY} -- Misc:
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			append_in(tagged_out_memory)
-		end
-
-	hash_code: INTEGER is
-		deferred
-		end
-
-	inverse: NUMBER is
-		require
-			divisible(Current)
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	factorial: NUMBER is
-		require
-			is_integer_general_number
-			not is_negative
-		deferred
-		ensure
-			Result.is_integer_general_number
-			Result.is_positive
-		end
-
-	numerator: INTEGER_GENERAL_NUMBER is
-		deferred
-		end
-
-	denominator: INTEGER_GENERAL_NUMBER is
-		deferred
-		end
-
-feature {NUMBER} -- Implementation:
-	frozen add_with_integer_64_number (other: INTEGER_64_NUMBER): NUMBER is
-		require
-			other /= Void
-		do
-			Result := Current @+ other.to_integer
-		ensure
-			Result /= Void
-		end
-
-	add_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	add_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	multiply_with_integer_64_number (other: INTEGER_64_NUMBER): NUMBER is
-		require
-			other /= Void
-		do
-			Result := Current @* other.to_integer
-		ensure
-			Result /= Void
-		end
-
-	multiply_with_big_integer_number (other: BIG_INTEGER_NUMBER): NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	multiply_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): NUMBER is
-		require
-			other /= Void
-		deferred
-		ensure
-			Result /= Void
-		end
-
-	greater_with_integer_64_number (other: INTEGER_64_NUMBER): BOOLEAN is
-		require
-			other /= Void
-		do
-			Result := Current @> other.to_integer
-		end
-
-	greater_with_big_integer_number (other: BIG_INTEGER_NUMBER): BOOLEAN is
-		require
-			other /= Void
-		deferred
-		end
-
-	greater_with_fraction_with_big_integer_number (other: FRACTION_WITH_BIG_INTEGER_NUMBER): BOOLEAN is
-		require
-			other /= Void
-		deferred
-		end
-
-	gcd_with_integer_64_number (other: INTEGER_64_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		end
-
-	gcd_with_big_integer_number (other: BIG_INTEGER_NUMBER): INTEGER_GENERAL_NUMBER is
-		require
-			other /= Void
-		deferred
-		end
-
-feature {NUMBER, NUMBER_TOOLS}
-	max_double: NUMBER is
-		local
-			nt: NUMBER_TOOLS; tmp: STRING
-		once
-			tmp := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
-			tmp.clear_count
-			Maximum_real_64.append_in_format(tmp, 0)
-			Result := nt.from_string(tmp)
-		end
-
-	min_double: NUMBER is
-		local
-			nt: NUMBER_TOOLS; tmp: STRING
-		once
-			tmp := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
-			tmp.clear_count
-			Minimum_real_64.append_in_format(tmp, 0)
-			Result := nt.from_string(tmp)
-		end
-
-feature {NUMBER} -- To implement efficient calculus
-	mutable_register1: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer_64(0)
-		end
-
-	mutable_register2: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer_64(0)
-		end
-
-	mutable_register3: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer_64(0)
-		end
-
-	mutable_register4: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer_64(0)
-		end
-
-feature {}
-	string_buffer: STRING is
-		once
-			create Result.make(128)
-		end
-
-	unicode_string_buffer: UNICODE_STRING is
-		once
-			create Result.make(128)
-		end
-
-feature {} -- To create fractions
-	from_two_integer (n, d: INTEGER_64): NUMBER is
-		require
-			d /= 0
-		local
-			n_number, d_number: INTEGER_64_NUMBER
-		do
-			create n_number.make(n)
-			create d_number.make(d)
-			Result := from_two_integer_general_number(n_number, d_number)
-		ensure
-			Result @* d @= n
-		end
-
-	from_two_integer_general_number (n, d: INTEGER_GENERAL_NUMBER): NUMBER is
-		require
-			n /= Void
-			d /= Void
-			not d.is_zero
-		do
-			if (n \\ d).is_zero then
-				Result := n // d
-			else
-				create {FRACTION_WITH_BIG_INTEGER_NUMBER} Result.make(n, d)
-			end
-		ensure
-			n.is_equal(Result * d)
-		end
-
-	from_integer_and_integer_general_number (n: INTEGER_64; d: INTEGER_GENERAL_NUMBER): NUMBER is
-		require
-			d /= Void
-			not d.is_zero
-		local
-			n_number: INTEGER_64_NUMBER
-		do
-			create n_number.make(n)
-			Result := from_two_integer_general_number(n_number, d)
-		end
-
-	from_integer_general_number_and_integer (n: INTEGER_GENERAL_NUMBER; d: INTEGER_64): NUMBER is
-		require
-			n /= Void
-			d /= 0
-		local
-			d_number: INTEGER_64_NUMBER
-		do
-			create d_number.make(d)
-			Result := from_two_integer_general_number(n, d_number)
-		end
-
-invariant
-	denominator.is_positive
-	is_integer_general_number implies denominator.is_one
-	not is_integer_general_number implies numerator.gcd(denominator) @= 1
-
-end -- class NUMBER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/number_tools.e b/lib/number/eiffel/number_tools.e
deleted file mode 100644
index 49dd134..0000000
--- a/lib/number/eiffel/number_tools.e
+++ /dev/null
@@ -1,401 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class NUMBER_TOOLS
-	--
-	-- This class provides abstract creation functions for NUMBERs as well as
-	-- some other useful tools for NUMBERs.
-	--
-	-- Because this class is expanded, one may simply declare some entity of
-	-- type NUMBER_TOOLS to use those NUMBER tools. One may also inherit this
-	-- class in order to use those tools as well.
-	--
-
-feature {ANY}
-	from_integer (n: INTEGER): NUMBER is
-		do
-			Result := from_integer_64(n)
-		end
-
-	from_integer_64 (n: INTEGER_64): NUMBER is
-			-- Uses value `n' to create a new NUMBER.
-		do
-			create {INTEGER_64_NUMBER} Result.make(n)
-		ensure
-			Result.to_integer_64 = n
-		end
-
-	from_string (formula: STRING): NUMBER is
-			-- Parse the contents of `formula' to create a new NUMBER. If some
-			-- error occurs (like for example a division by zero), the `Result'
-			-- is Void and the error report is left in the `parser_buffer'.
-		require
-			is_number(formula)
-		do
-			parser_buffer.initialize_with(formula)
-			parser_buffer.skip_separators
-			Result := parse_create_e0
-			if parser_buffer.last_error /= Void then
-				Result := Void
-			end
-		ensure
-			Result /= Void xor parser_buffer.last_error /= Void
-		end
-
-	from_input_stream (input: INPUT_STREAM): NUMBER is
-			-- Create a number from a file or standard input
-		require
-			input.is_connected
-		local
-			string: STRING
-		do
-			if not input.end_of_input then
-				create string.make(0)
-				input.read_line_in(string)
-				Result := from_string(string)
-			end
-		ensure
-			Result /= Void xor parser_buffer.last_error /= Void
-		end
-
-	is_number (formula: STRING): BOOLEAN is
-			-- Is the `formula' a correct notation to create a NUMBER ?
-			-- Actually, any correct `formula' using a combination of litteral
-			-- integer constants with + - * / () and ! is a correct notation to
-			-- create a NUMBER. Traditional priority rules are used for
-			-- operators and the ! character denote the factorial computation.
-			-- Here is the BNF grammar used:
-			--
-			--  E0 = E1 R1
-			--  E1 = E2 R2
-			--  E2 = E3 R3
-			--  E3 = "+" E3 | "-" E3 | "(" E0 ")" | "constant"
-			--  R1 = "+" E1 R1 | "-" E1 R1 | ^
-			--  R2 = "*" E2 R2 | "/" E2 R2 | ^
-			--  R3 = "!" | ^
-		require
-			not formula.is_empty
-		do
-			parser_buffer.initialize_with(formula)
-			parser_buffer.skip_separators
-			Result := parse_e0
-			if Result then
-				if parser_buffer.current_index /= formula.count + 1 then
-					Result := False
-					parser_buffer.set_last_error(once "End of text expected.")
-				end
-			end
-		ensure
-			Result xor parser_buffer.last_error /= Void
-		end
-
-	parser_buffer: MINI_PARSER_BUFFER is
-			-- This once function gives access to the unique `parser_buffer' to
-			-- allow the memorization of the `Current' position and the
-			-- memorization of the last error message.
-		once
-			create Result
-		end
-
-feature {}
-	parse_e0: BOOLEAN is
-		do
-			Result := parse_e1 and then parse_r1
-		end
-
-	parse_e1: BOOLEAN is
-		do
-			Result := parse_e2 and then parse_r2
-		end
-
-	parse_e2: BOOLEAN is
-		do
-			Result := parse_e3
-			parse_r3
-		end
-
-	parse_e3: BOOLEAN is
-		do
-			if parser_buffer.end_reached then
-				parser_buffer.set_last_error(Integer_expected)
-			else
-				inspect
-					parser_buffer.current_character
-				when '+', '-' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := parse_e3
-				when '(' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := parse_e0
-					if Result then
-						if parser_buffer.end_reached or else parser_buffer.current_character /= ')' then
-							Result := False
-							parser_buffer.set_last_error(Integer_expected)
-						else
-							parser_buffer.next
-							parser_buffer.skip_separators
-						end
-					end
-				else
-					Result := parse_constant
-				end
-			end
-		end
-
-	parse_r1: BOOLEAN is
-		do
-			if parser_buffer.end_reached then
-				Result := True
-			else
-				inspect
-					parser_buffer.current_character
-				when '+', '-' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := parse_e1 and then parse_r1
-				else
-					Result := True
-				end
-			end
-		end
-
-	parse_r2: BOOLEAN is
-		do
-			if parser_buffer.end_reached then
-				Result := True
-			else
-				inspect
-					parser_buffer.current_character
-				when '*', '/' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := parse_e2 and then parse_r2
-				else
-					Result := True
-				end
-			end
-		end
-
-	parse_r3 is
-		do
-			if not parser_buffer.end_reached then
-				if parser_buffer.current_character = '!' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-				end
-			end
-		end
-
-	parse_constant: BOOLEAN is
-		local
-			stop: BOOLEAN
-		do
-			if parser_buffer.end_reached or else not parser_buffer.current_character.is_digit then
-				parser_buffer.set_last_error(Integer_expected)
-			else
-				Result := True
-				from
-					parser_buffer.next
-				until
-					stop
-				loop
-					if parser_buffer.end_reached then
-						stop := True
-					elseif parser_buffer.current_character.is_digit then
-						parser_buffer.next
-					else
-						stop := True
-					end
-				end
-				parser_buffer.skip_separators
-			end
-		end
-
-	parse_create_e0: NUMBER is
-		do
-			Result := parse_create_e1
-			Result := parse_create_r1(Result)
-		end
-
-	parse_create_e1: NUMBER is
-		do
-			Result := parse_create_e2
-			Result := parse_create_r2(Result)
-		end
-
-	parse_create_e2: NUMBER is
-		do
-			Result := parse_create_e3
-			Result := parse_create_r3(Result)
-		end
-
-	parse_create_e3: NUMBER is
-		do
-			inspect
-				parser_buffer.current_character
-			when '+' then
-				parser_buffer.next
-				parser_buffer.skip_separators
-				Result := parse_create_e3
-			when '-' then
-				parser_buffer.next
-				parser_buffer.skip_separators
-				Result := -parse_create_e3
-			when '(' then
-				parser_buffer.next
-				parser_buffer.skip_separators
-				Result := parse_create_e0
-				parser_buffer.next
-				parser_buffer.skip_separators
-			else
-				Result := parse_create_constant
-			end
-		end
-
-	parse_create_r1 (left: NUMBER): NUMBER is
-		do
-			if parser_buffer.end_reached then
-				Result := left
-			else
-				inspect
-					parser_buffer.current_character
-				when '+' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := left + parse_create_e1
-					Result := parse_create_r1(Result)
-				when '-' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := left - parse_create_e1
-					Result := parse_create_r1(Result)
-				else
-					Result := left
-				end
-			end
-		end
-
-	parse_create_r2 (left: NUMBER): NUMBER is
-		do
-			if parser_buffer.end_reached then
-				Result := left
-			else
-				inspect
-					parser_buffer.current_character
-				when '*' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := left * parse_create_e2
-					Result := parse_create_r2(Result)
-				when '/' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					Result := parse_create_e2
-					if Result.is_zero then
-						parser_buffer.set_last_error(once "Attempt to divide " + left.to_string + once " by zero.")
-					else
-						Result := left / Result
-					end
-					Result := parse_create_r2(Result)
-				else
-					Result := left
-				end
-			end
-		end
-
-	parse_create_r3 (left: NUMBER): NUMBER is
-		do
-			Result := left
-			if not parser_buffer.end_reached then
-				if parser_buffer.current_character = '!' then
-					parser_buffer.next
-					parser_buffer.skip_separators
-					if Result.is_integer_general_number then
-						if Result.is_positive then
-							Result := Result.factorial
-						else
-							parser_buffer.set_last_error(once "Attempt to compute %
-		                           %factorial of a negative value (" + Result.to_string + once ").")
-						end
-					else
-						parser_buffer.set_last_error(once "Attempt to compute %
-		     %factorial with a non integral value (" + Result.to_string + once ").")
-					end
-				end
-			end
-		end
-
-	parse_create_constant: NUMBER is
-		local
-			stop: BOOLEAN; c: CHARACTER; n, n_save: INTEGER
-		do
-			from
-			until
-				stop
-			loop
-				if parser_buffer.end_reached then
-					stop := True
-				else
-					c := parser_buffer.current_character
-					if c.is_digit then
-						if Result /= Void then
-							Result := Result @* 10 @+ c.decimal_value
-						else
-							--|*** BUG ***
-							n_save := n
-							n := n * 10 + c.decimal_value
-							if n < 0 then
-								Result := from_integer(n_save)
-								Result := Result @* 10 @+ c.decimal_value
-							end
-							--|*** WORK AROUND ***
-							if n >= 214748364 then
-								Result := from_integer(n)
-							end
-							--|*** D.Colnet 17 nov. 2002 ***
-						end
-						parser_buffer.next
-					else
-						stop := True
-					end
-				end
-			end
-			parser_buffer.skip_separators
-			if Result = Void then
-				Result := from_integer(n)
-			end
-		ensure
-			Result /= Void
-		end
-
-	Integer_expected: STRING is "Integer constant expected."
-
-end -- class NUMBER_TOOLS
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/numeric.e b/lib/number/eiffel/numeric.e
deleted file mode 100644
index ef6629a..0000000
--- a/lib/number/eiffel/numeric.e
+++ /dev/null
@@ -1,96 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class NUMERIC
-	--
-	-- This class describes a ring.
-	--
-
-inherit
-	HASHABLE -- *** Here ? Weird ! *** 3th feb 2006 *** Fred + Guillem + Dom ***
-
-feature {ANY}
-	infix "+" (other: like Current): like Current is
-			-- Sum with `other' (commutative).
-		deferred
-		end
-
-	infix "-" (other: like Current): like Current is
-			-- Result of substracting `other'.
-		deferred
-		end
-
-	infix "*" (other: like Current): like Current is
-			-- Product by `other'.
-		deferred
-		end
-
-	infix "/" (other: like Current): NUMERIC is
-			-- Division by `other'.
-		require
-			other /= Void
-			divisible(other)
-		deferred
-		end
-
-	prefix "+": like Current is
-			-- Unary plus of `Current'.
-		deferred
-		end
-
-	prefix "-": like Current is
-			-- Unary minus of `Current'.
-		deferred
-		end
-
-	divisible (other: like Current): BOOLEAN is
-			-- May `Current' be divided by `other' ?
-		require
-			other /= Void
-		deferred
-		end
-
-	one: like Current is
-			-- Neutral element for "*" and "/".
-		deferred
-		end
-
-	zero: like Current is
-			-- Neutral element for "+" and "-".
-		deferred
-		end
-
-	sign: INTEGER_8 is
-			-- Sign of Current (0 -1 or 1).
-		deferred
-		ensure
-			Result.in_range(-1, 1)
-		end
-
-end -- class NUMERIC
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real.e b/lib/number/eiffel/real.e
deleted file mode 100644
index 5d3656e..0000000
--- a/lib/number/eiffel/real.e
+++ /dev/null
@@ -1,83 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL
-	--
-	-- Actually, REAL is a just a short-hand for REAL_64 (64 bits floating point).
-	--
-
-insert
-	REAL_GENERAL
-
-feature {ANY} -- Conversions:
-	force_to_real_32: REAL_32 is
-		external "built_in"
-		end
-
-	force_to_integer_32: INTEGER_32 is
-		external "built_in"
-		end
-
-	force_to_integer_64: INTEGER_64 is
-		external "built_in"
-		end
-
-feature {ANY}
-	zero: REAL is 0.0
-
-	one: REAL is 1.0
-
-	infix "~=" (other: like Current): BOOLEAN is
-		do
-			Result := (Current - other).abs * (2.0 ^ (mantissa_bits - 3)) < Current.abs
-		end
-
-	hash_code: INTEGER is
-		do
-			Result := force_to_integer_32
-			if Result < 0 then
-				Result := -(Result + 1)
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is 52
-
-	exponent_bits: INTEGER_8 is 11
-
-feature {}
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: REAL) is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "basic_sprintf"
-			feature_name: "sprintf_real_64"
-			}"
-		end
-
-end -- class REAL
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_128.e b/lib/number/eiffel/real_128.e
deleted file mode 100644
index 27d86d1..0000000
--- a/lib/number/eiffel/real_128.e
+++ /dev/null
@@ -1,89 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL_128
-	--
-	-- 128 bits floating point.
-	--
-	-- Warning: this REAL_128 class is architecture dependent. See also class REAL_EXTENDED.
-	--
-
-insert
-	REAL_GENERAL
-
-feature {ANY} -- Conversions:
-	force_to_real_32: REAL_32 is
-		external "built_in"
-		end
-
-	force_to_real_64: REAL_64 is
-		external "built_in"
-		end
-
-	force_to_integer_32: INTEGER_32 is
-		external "built_in"
-		end
-
-	force_to_integer_64: INTEGER_64 is
-		external "built_in"
-		end
-
-feature {ANY}
-	zero: REAL_32 is 0.0
-
-	one: REAL_32 is 1.0
-
-	infix "~=" (other: like Current): BOOLEAN is
-		do
-			Result := (Current - other).abs * ({REAL_128 2.0} ^ (mantissa_bits - 3)) < Current.abs
-		end
-
-	hash_code: INTEGER is
-		do
-			Result := force_to_integer_32
-			if Result < 0 then
-				Result := -(Result + 1)
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is 112
-
-	exponent_bits: INTEGER_8 is 15
-
-feature {}
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: REAL_128) is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "basic_sprintf"
-			feature_name: "sprintf_real_extended"
-			}"
-		end
-
-end -- class REAL_128
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_32.e b/lib/number/eiffel/real_32.e
deleted file mode 100644
index 213520e..0000000
--- a/lib/number/eiffel/real_32.e
+++ /dev/null
@@ -1,111 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL_32
-	--
-	-- 32 bits floating point.
-	--
-
-insert
-	REAL_GENERAL
-
-feature {ANY} -- Conversions:
-	to_real_64, to_real: REAL_64 is
-			-- Explicit conversion to REAL_64.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_real_extended: REAL_EXTENDED is
-			-- Explicit conversion to REAL_EXTENDED.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_real_80: REAL_80 is
-			-- Explicit conversion to REAL_80.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	to_real_128: REAL_128 is
-			-- Explicit conversion to REAL_128.
-		do
-			Result := Current
-		ensure
-			Current = Result
-		end
-
-	force_to_integer_32: INTEGER_32 is
-		external "built_in"
-		end
-
-	force_to_integer_64: INTEGER_64 is
-		external "built_in"
-		end
-
-feature {ANY}
-	zero: REAL_32 is {REAL_32 0.0}
-
-	one: REAL_32 is {REAL_32 1.0}
-
-	infix "~=" (other: like Current): BOOLEAN is
-		do
-			Result := (Current - other).abs * ({REAL_32 2.0} ^ (mantissa_bits - 3)) < Current.abs
-		end
-
-	hash_code: INTEGER is
-		do
-			Result := force_to_integer_32
-			if Result < 0 then
-				Result := -(Result + 1)
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is 23
-
-	exponent_bits: INTEGER_8 is 8
-
-feature {}
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: REAL_64) is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "basic_sprintf"
-			feature_name: "sprintf_real_64"
-			}"
-		end
-
-end -- class REAL_32
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_64.e b/lib/number/eiffel/real_64.e
deleted file mode 100644
index b6a5674..0000000
--- a/lib/number/eiffel/real_64.e
+++ /dev/null
@@ -1,38 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL_64
-	--
-	-- A real numbers on 64 bits (see also REAL_32, REAL_80 and REAL).
-	--
-
-insert
-	REAL
-
-end -- class REAL_64
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_80.e b/lib/number/eiffel/real_80.e
deleted file mode 100644
index 07cc324..0000000
--- a/lib/number/eiffel/real_80.e
+++ /dev/null
@@ -1,90 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL_80
-	--
-	-- 80 bits floating point.
-	--
-	-- Warning: this REAL_80 class is architecture dependent. See also class REAL_EXTENDED.
-	--
-
-insert
-	REAL_GENERAL
-
-feature {ANY} -- Conversions:
-	force_to_real_32: REAL_32 is
-		external "built_in"
-		end
-
-	force_to_real_64: REAL_64 is
-		external "built_in"
-		end
-
-	force_to_integer_32: INTEGER_32 is
-		external "built_in"
-		end
-
-	force_to_integer_64: INTEGER_64 is
-		external "built_in"
-		end
-
-feature {ANY}
-	zero: REAL_80 is 0.0
-
-	one: REAL_80 is 1.0
-
-	infix "~=" (other: like Current): BOOLEAN is
-		do
-			Result := (Current - other).abs * ({REAL_80 2.0} ^ (mantissa_bits - 3)) < Current.abs
-		end
-
-	hash_code: INTEGER is
-		do
-			Result := force_to_integer_32
-			if Result < 0 then
-				Result := -(Result + 1)
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is 63
-			--|*** To be verified (Vincent Croizier, 10/02/05) ***
-
-	exponent_bits: INTEGER_8 is 15
-
-feature {}
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: REAL_80) is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "basic_sprintf"
-			feature_name: "sprintf_real_extended"
-			}"
-		end
-
-end -- class REAL_80
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_extended.e b/lib/number/eiffel/real_extended.e
deleted file mode 100644
index 483e65e..0000000
--- a/lib/number/eiffel/real_extended.e
+++ /dev/null
@@ -1,89 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-expanded class REAL_EXTENDED
-	--
-	-- Depending on the actuals architecture, a REAL_EXTENDED is equivalent to REAL_80 or REAL_128.
-	--
-	--
-
-insert
-	REAL_GENERAL
-
-feature {ANY} -- Conversions:
-	force_to_real_32: REAL_32 is
-		external "built_in"
-		end
-
-	force_to_real_64: REAL_64 is
-		external "built_in"
-		end
-
-	force_to_integer_32: INTEGER_32 is
-		external "built_in"
-		end
-
-	force_to_integer_64: INTEGER_64 is
-		external "built_in"
-		end
-
-feature {ANY}
-	zero: REAL_32 is 0.0
-
-	one: REAL_32 is 1.0
-
-	infix "~=" (other: like Current): BOOLEAN is
-		do
-			Result := (Current - other).abs * ({REAL_EXTENDED 2.0} ^ (mantissa_bits - 3)) < Current.abs
-		end
-
-	hash_code: INTEGER is
-		do
-			Result := force_to_integer_32
-			if Result < 0 then
-				Result := -(Result + 1)
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is 63
-			--|*** To be verified (Vincent Croizier, 10/02/05) ***
-
-	exponent_bits: INTEGER_8 is 15
-
-feature {}
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: REAL_EXTENDED) is
-		external "plug_in"
-		alias "{
-			location: "${sys}runtime"
-			module_name: "basic_sprintf"
-			feature_name: "sprintf_real_extended"
-			}"
-		end
-
-end -- class REAL_EXTENDED
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/eiffel/real_general.e b/lib/number/eiffel/real_general.e
deleted file mode 100644
index 8e55d58..0000000
--- a/lib/number/eiffel/real_general.e
+++ /dev/null
@@ -1,374 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-deferred class REAL_GENERAL
-	--
-	-- (This class is here to prepare the new support for REAL: REAL_32, REAL_64, etc.)
-	-- Work in progress. Please, do not use it now. July 7th 2004
-	--
-
-inherit
-	NUMERIC
-		redefine out_in_tagged_out_memory, fill_tagged_out_memory
-		end
-	COMPARABLE
-		undefine is_equal
-		redefine out_in_tagged_out_memory, fill_tagged_out_memory, infix "<=", infix ">", infix ">="
-		end
-
-feature {ANY}
-	is_equal (other: like Current): BOOLEAN is
-		do
-			Result := Current = other
-		end
-
-	prefix "+": like Current is
-		do
-			Result := Current
-		end
-
-	prefix "-": like Current is
-		external "built_in"
-		end
-
-	infix "+" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	infix "-" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	infix "*" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	infix "/" (other: like Current): like Current is
-		external "built_in"
-		end
-
-	infix "^" (e: INTEGER): like Current is
-			-- Raise Current to `e'-th power (see also `pow').
-		external "built_in"
-		end
-
-	infix "<" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix "<=" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix ">" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	infix ">=" (other: like Current): BOOLEAN is
-		external "built_in"
-		end
-
-	abs: like Current is
-		do
-			if Current < {REAL_32 0.0} then
-				Result := -Current
-			else
-				Result := Current
-			end
-		end
-
-	is_not_a_number: BOOLEAN is
-			-- Also known as NaN in IEEE-754.
-		external "built_in"
-		end
-
-	is_infinity: BOOLEAN is
-			-- Is either plus or minus infinity?
-		external "built_in"
-		end
-
-	is_zero: BOOLEAN is
-			-- Is either -0.0 or +0.0 ?
-		do
-			Result := Current = 0.0 or else Current = -0.0
-		end
-
-	infix "~=" (other: like Current): BOOLEAN is
-			-- Is `Current' near equal to `other'.
-		deferred
-		end
-
-	is_subnormal: BOOLEAN is
-			-- Is it too small to be represented in normalized format.
-		external "built_in"
-		ensure
-			Result = (Current = 0.0) or else Current = -0.0
-		end
-
-	is_normal: BOOLEAN is
-			-- The most general situation (see ensure).
-		external "built_in"
-		ensure
-			Result = not (is_subnormal or is_infinity or is_not_a_number)
-		end
-
-	divisible (other: like Current): BOOLEAN is
-		do
-			Result := other /= 0.0
-		end
-
-feature {ANY} -- Conversions:
-	frozen rounded: like Current is
-			-- Round to nearest integer away from zero.
-		external "built_in"
-		end
-
-	frozen floor: like Current is
-			-- Largest integral value no greater than Current.
-		external "built_in"
-		end
-
-	frozen ceiling: like Current is
-			-- Smallest integral value no smaller than Current.
-		external "built_in"
-		end
-
-feature {ANY} -- Object Printing:
-	to_string: STRING is
-			-- Convert `Current' into a new allocated STRING using 6 as the default number of digits for the
-			-- fractional part.
-			-- Exemple: `(1.5).to_string' will return "1.500000".
-			--
-			-- Note: see also `to_string_format', `to_string_scientific' as well as `append_in' to save memory.
-		do
-			sprintf(sprintf_buffer, 'f', 6, Current)
-			create Result.from_external_copy(sprintf_buffer.to_pointer)
-		end
-
-	to_string_format (f: INTEGER): STRING is
-			-- Convert `Current' into a new allocated STRING using `f' digits for fractional part.
-			-- Exemple: `(1.5).to_string_format(2)' will return "1.50".
-			--
-			-- Note: see also `to_string_scientific', `to_string' as well as `append_in_format' to save memory.
-		require
-			f >= 0
-		do
-			sprintf(sprintf_buffer, 'f', f, Current)
-			create Result.from_external_copy(sprintf_buffer.to_pointer)
-		end
-
-	to_string_scientific (f: INTEGER): STRING is
-			-- Convert `Current' into a new allocated STRING, using the scientific notation with `f' digits for
-			-- the fractional part.
-			-- Exemple: `(155.5).to_string_scientific(4)' will return "1.5550e+02".
-			--
-			-- Note: see also `to_string', `to_string_format' as well as `append_in_scientific' to save memory.
-		do
-			sprintf(sprintf_buffer, 'e', f, Current)
-			create Result.from_external_copy(sprintf_buffer.to_pointer)
-		end
-
-	append_in (buffer: STRING) is
-			-- Append the equivalent of `to_string' at the end of `buffer'. Thus you can save
-			-- memory because no other STRING is allocate for the job.
-		require
-			buffer /= Void
-		do
-			append_in_format(buffer, 6)
-		end
-
-	append_in_format (str: STRING; f: INTEGER) is
-			-- Append the equivalent of `to_string_format' at the end of `buffer'. Thus you can save
-			-- memory because no other STRING is allocate for the job.
-		require
-			str /= Void
-			f >= 0
-		local
-			i: INTEGER
-		do
-			from
-				sprintf(sprintf_buffer, 'f', f, Current)
-				i := 0
-			until
-				sprintf_buffer.item(i) = '%U'
-			loop
-				str.extend(sprintf_buffer.item(i))
-				i := i + 1
-			end
-		end
-
-	append_in_scientific (str: STRING; f: INTEGER) is
-			-- Append the equivalent of `to_string_scientific' at the end of `buffer'. Thus you can save
-			-- memory because no other STRING is allocate for the job.
-		require
-			str /= Void
-			f >= 0
-		local
-			i: INTEGER
-		do
-			from
-				sprintf(sprintf_buffer, 'e', f, Current)
-				i := 0
-			until
-				sprintf_buffer.item(i) = '%U'
-			loop
-				str.extend(sprintf_buffer.item(i))
-				i := i + 1
-			end
-		end
-
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			Current.append_in(tagged_out_memory)
-		end
-
-feature {ANY} -- Maths functions:
-	frozen sqrt: like Current is
-			-- Square root of `Current'.
-		require
-			Current >= 0.0
-		external "built_in"
-		end
-
-	frozen sin: like Current is
-			-- Sine of `Current'.
-		external "built_in"
-		end
-
-	frozen cos: like Current is
-			-- Cosine of `Current'.
-		external "built_in"
-		end
-
-	frozen tan: like Current is
-			-- Tangent of `Current'.
-		external "built_in"
-		end
-
-	frozen asin: like Current is
-			-- Arc Sine of `Current'.
-		external "built_in"
-		end
-
-	frozen acos: like Current is
-			-- Arc Cosine of `Current'.
-		external "built_in"
-		end
-
-	frozen atan: like Current is
-			-- Arc Tangent of `Current'.
-		external "built_in"
-		end
-
-	frozen atan2 (x: like Current): like Current is
-			-- Arc Tangent of `Current' / `x'.
-		external "built_in"
-		end
-
-	frozen sinh: like Current is
-			-- Hyperbolic Sine of `Current'.
-		external "built_in"
-		end
-
-	frozen cosh: like Current is
-			-- Hyperbolic Cosine of `Current'.
-		external "built_in"
-		end
-
-	frozen tanh: like Current is
-			-- Hyperbolic Tangent of `Current'.
-		external "built_in"
-		end
-
-	frozen exp: like Current is
-			-- Exponential of `Current'.
-		external "built_in"
-		end
-
-	frozen log: like Current is
-			-- Natural Logarithm of `Current'.
-		external "built_in"
-		end
-
-	frozen log10: like Current is
-			-- Base-10 Logarithm of Current.
-		external "built_in"
-		end
-
-	frozen pow (e: like Current): like Current is
-			-- `Current' raised to the power of `e' (ANSI C `pow').
-		external "built_in"
-		end
-
-feature {ANY} -- Hashing:
-	hash_code: INTEGER is
-		deferred
-		end
-
-feature {ANY} -- Miscellaneous:
-	sign: INTEGER_8 is
-			-- Sign of `Current' (0 -1 or 1).
-		do
-			if Current < {REAL_32 0.0 } then
-				Result := -1
-			elseif Current > {REAL_32 0.0 } then
-				Result := 1
-			else
-				Result := 0
-			end
-		end
-
-	mantissa_bits: INTEGER_8 is
-			-- Give the number of bits, corresponding to the mantissa,
-			-- in the binary representation of the real number.
-		deferred
-		end
-
-	exponent_bits: INTEGER_8 is
-			-- Give the number of bits, corresponding to the exponent,
-			-- in the binary representation of the real number.
-		deferred
-		end
-
-feature {}
-	sprintf_buffer: NATIVE_ARRAY[CHARACTER] is
-		once
-			Result := Result.calloc(1024)
-		end
-
-	sprintf (buffer: NATIVE_ARRAY[CHARACTER]; mode: CHARACTER; f: INTEGER; value: like Current) is
-			-- Put in the `buffer' a viewable version of the `value' using `mode' with `f' digits for the fractional
-			-- part. Assume the `buffer' is large enougth.
-		require
-			mode = 'f' xor mode = 'e'
-			f >= 0
-		deferred
-		end
-
-end -- class REAL_GENERAL
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/essai b/lib/number/essai
deleted file mode 100755
index 95e97b0..0000000
Binary files a/lib/number/essai and /dev/null differ
diff --git a/lib/number/essai.li b/lib/number/essai.li
deleted file mode 100644
index 0a06868..0000000
--- a/lib/number/essai.li
+++ /dev/null
@@ -1,21 +0,0 @@
-Section Header
-  
-  + name := ESSAI;
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - main <-
-  ( + a,b,c:UINTEGER_BIG;
-    
-    a := 45;
-    /*
-    b := UINTEGER_BIG.create 100;
-    c := a.factorial;
-    */
-    a.print;    
-    '\n'.print;
-  );
\ No newline at end of file
diff --git a/lib/number/integer.li b/lib/number/integer.li
deleted file mode 100644
index ad75fac..0000000
--- a/lib/number/integer.li
+++ /dev/null
@@ -1,536 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name   := Expanded INTEGER;
-  
-  - export := 
-  // Integer: 
-  UINTEGER_8,  UINTEGER_16, UINTEGER_32, UINTEGER_64,
-  INTEGER_8 ,  INTEGER_16 , INTEGER_32 , INTEGER_64 ,
-  UINTEGER_BIG,//INTEGER_BIG,
-  // Fixed real:
-  UREAL_16_16, UREAL_24_8 , UREAL_26_6 , 
-  REAL_16_16 , REAL_24_8  , REAL_26_6  , 
-  // Float Real:
-  REAL, REAL_32, REAL_64, REAL_80,
-  // Other:
-  POINTER;
- 
-  - comment := "Generic Integer.";
-  
-  - type    := `int`;
-  - default := 0;
-
-Section Insert
-  
-  - parent_numeric:NUMERIC := NUMERIC;
-  
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 <- 07FFFFFFFh.to_raw_uinteger_64; 
-  
-  - minimum:INTEGER_64  <- (- 07FFFFFFFh).to_raw_integer_64; 
-  
-  //
-  // Binary Operator.
-  //
-  
-  - '%'  Left 100 other:SELF    :SELF <- Self - ((Self / other) * other);
-  
-  - '%#' Left 100 other:INTEGER :SELF <- Self % other;
-  
-  - '**' Right 120 exp:SELF :SELF <-
-  ( + result:SELF;
-    
-    (exp = 0).if {
-      result := 1;
-    } else {
-      ((exp & 1) = 0).if {
-        result := (Self * Self) ** (exp / 2);
-      } else {
-        result := Self * (Self ** (exp - 1));
-      };
-    };
-    result
-  );
-
-  - pow exp:SELF :SELF <-
-  (
-    Self ** exp
-  );
-
-  //
-  // Conversion format with test.
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    TRUE
-  );
-  
-//  - to_integer:INTEGER <- Self;
-  
-  - to_pointer:POINTER <-
-  (
-    to_raw_pointer
-  );
-  
-  //
-  // BCD Format. 
-  //
-  
-  - to_binary:SELF <-
-  // Self is BCD formatted, convert to binary value
-  ( + result:SELF;
-    + val,mul:SELF;
-    
-    val := Self;
-    mul := 1;
-    {val!=0}.while_do {
-      result := result + (val & 0Fh) * mul;
-      mul    := mul * 10;
-      val    := val >> 4;
-    };
-    
-    result
-  );
-  
-  - to_bcd:SELF <-
-  // Self is binary formatted, convert to bcd value
-  ( + result:SELF;
-    + val,mul:SELF;
-    
-    val := Self;
-    {val != 0}.while_do {
-      result := result | ((val % 10) << mul);
-      mul    := mul + 4;
-      val    := val / 10;
-    };
-    
-    result    
-  );
-  
-  //
-  // Facility typing.
-  //
-  
-  - kb:SELF <- Self << 10;
-  
-  - mb:SELF <- Self << 20;
-  
-  - gb:SELF <- Self << 30;
-  
-  - tb:SELF <- Self << 40;
-  
-  //
-  // Logic Operator
-  //
-      
-  - '&'  Left 100 other:SELF :SELF <- `6`;
-  
-  - '|'  Left 80  other:SELF :SELF <- ~(~Self & ~other);
-  
-  - '^'  Left 80  other:SELF :SELF <- (~Self & other) | (Self & ~other);
-
-  - '>>' Left 100 other:INTEGER :SELF <- `7`;
-
-  - '<<' Left 100 other:INTEGER :SELF <- `8`;
-  
-  //
-  // Unary operator
-  //
-    
-  - '~' :SELF <- -Self - SELF.one; //(-SELF.one) - Self;
-  
-  //
-  // Test. 
-  //
-  
-  - align_power step:SELF :SELF <-
-  [ 
-    -? {step.is_power_2};
-  ]
-  ( + a:SELF;
-    
-    a := step - 1;
-    (Self + a) & (~ a)
-  );
-  
-  - is_power_2:BOOLEAN <-
-  ( + val:SELF;
-    + result:BOOLEAN;
-    
-    (Self != 0).if {
-      val := Self;
-      {val.is_even}.while_do {
-	val := val >> 1;
-      };
-      result := val = 1;
-    };
-    result
-  );
-    
-  //
-  // Function :
-  //
-  
-  - sqrt:SELF <-
-  ( + r,x:SELF;
-    
-    x:=(Self + 1) >> 1;
-    {x > r}.while_do {
-      x:=x-r;
-      r:=r+1;
-    };
-    r
-  );
-  
-  - factorial:SELF <-
-  [
-    -? {Self >= 0};
-  ]
-  ( + result,value:SELF;
-   
-    result := 1;
-    value  := Self;
-    {value <= 1}.until_do {
-      result := result * value;
-      value  := value - 1;
-    };
-    result
-  );
-  
-  - fibonacci:SELF <-
-  [
-    -? {Self >= 0};
-  ]
-  ( + result:SELF;
-        
-    (Self <= 1).if {
-      result := 1;
-    } else {
-      result := (Self-1).fibonacci + (Self-2).fibonacci;
-    };
-    result
-  );
-  
-  - is_odd:BOOLEAN  <- (Self & 1) = 1;  // Is odd ?
-  
-  - is_even:BOOLEAN <- ! is_odd; // Is even ?
-  
-  - gcd other:SELF :SELF <-
-  // Great Common Divisor of `self' and `other'.
-  [
-    -? {Self  >= 0};
-    -? {other >= 0};
-  ]
-  ( + result:SELF;
-    
-    (other = 0).if {
-      result := Self;
-    } else {
-      result := other.gcd (Self % other);
-    };
-    
-    result
-  )
-  [
-    +? {result == other.gcd self};
-  ];
- 
-  //
-  // Random
-  //
-
-  - random :SELF <-
-  // Random number between 0 to `maximum' in SELF.
-  ( - r_seed:UINTEGER_32;
-    r_seed := (110351524 * r_seed + 12345) % 214748364;
-    CONVERT[UINTEGER_64,SELF].on (maximum & r_seed)
-  )
-  [
-    +? {Result >= 0};
-  ];
-
-  - random_upper:SELF <-
-  // Random number between 0 to `Self'.
-  [ 
-    -? {Self > 0}; 
-  ]
-  (
-    random % (Self+1)
-  )
-  [
-    +? {Result.in_range 0 to Self};
-  ];
-
-  - random_between lower:SELF and upper:SELF :SELF <-
-  // Random number between `lower' to `upper'.
-  [
-    -? {lower < upper};
-  ]
-  ( 
-    lower + (upper-lower).random_upper 
-  )
-  [
-    +? {Result.in_range lower to upper};
-  ];
-  
-  //
-  // Looping.
-  //
-  
-  - times action:BLOCK <-
-  (
-    1.to Self do { i:INTEGER;
-      action.value;
-    };
-  );
-  
-  //
-  // Convertion
-  //
-  
-  // *French, Slot, Description : Renvoi une chaîne représentant le nombre en base 10
-  // *English, Slot, Description : String of the number in base 10
-
-  - to_string : STRING <-
-  ( + result : STRING;
-    result := STRING.create 0;
-    append_in result;
-    result
-  );
-
-  - append_in buffer:STRING <- to_integer_32.append_in buffer;
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
- 
-  - decimal_digit:CHARACTER <-
-  // Gives the corresponding CHARACTER for range 0..9.
-  [
-    -? {in_range 0 to 9};
-  ]
-  ( 
-    (Self.to_integer_8 + '0'.code).to_character
-  )
-  [
-    +? {"0123456789".has Result};
-    +? {Result.decimal_value = Self};
-  ];
-  
-  - digit:CHARACTER <- decimal_digit;
-  
-  - hexadecimal_digit:CHARACTER <-
-  // Gives the corresponding CHARACTER for range 0..15.
-  [
-    -? {in_range 0 to 15};
-  ]
-  ( + result:CHARACTER;
-        
-    (Self <= 9).if {
-      result := digit;
-    } else {
-      result := ('A'.code + (Self - 10).to_integer_8).to_character;
-    };    
-    result
-  )
-  [
-    +? {"0123456789ABCDEF".has Result};
-  ];
-  
-  - to_character:CHARACTER <- to_integer_8.to_character;
-  // Return the coresponding ASCII character.
-  
-  - to_octal:SELF <-
-  // Gives coresponding octal value.
-  ( + result:SELF;
-    
-    deferred;
-    result
-  );
-  
-  - to_hexadecimal:STRING <-
-  // Convert the hexadecimal view of `self' into a new allocated
-  // STRING. For example, if `self' is -1 the new STRING is
-  // "FFFFFFFF" on a 32 bit machine.
-  // Note: see also `to_hexadecimal_in' to save memory.
-  ( + result:STRING;
-    
-    result := STRING.create 8;
-    to_hexadecimal_in result;
-    result
-  );
-  
-  - to_hexadecimal_format s:INTEGER :STRING <-
-  // Convert the hexadecimal view of `self' into a new allocated
-  // STRING. For example, if `self' is -1 the new STRING is
-  // "FFFFFFFF" on a 32 bit machine.
-  // Note: see also `to_hexadecimal_in' to save memory.
-  ( + result:STRING;
-    
-    result := STRING.create 8;
-    to_hexadecimal_in result format s;
-    result
-  ); 
-  
-  - to_hexadecimal_in buffer:STRING <-
-  // Append in `buffer' the equivalent of `to_hexadecimal'. No new STRING
-  // creation during the process.
-  [ -? {buffer!=NULL}; ]
-  ( + val:SELF;
-    + i,old_count:INTEGER;
-        
-    (Self = 0).if {
-      buffer.extend '0';
-    } else {
-      i := buffer.count + 1;
-      val := Self;
-      {val != 0}.while_do { //JBJB 
-	buffer.extend ((val & 15).hexadecimal_digit);
-	val := val >> 4;
-      };
-      old_count := buffer.count;
-      {i >= old_count}.until_do {
-	buffer.swap i with old_count;
-	old_count := old_count - 1;
-	i := i + 1;
-      };
-    };
-  );
-  
-  - to_hexadecimal_in buffer:STRING format s:INTEGER <-
-  // Append in `buffer' the equivalent of `to_hexadecimal'. No new STRING
-  // creation during the process.
-  [ -? {buffer!=NULL}; ]
-  ( + val:SELF;
-    + i,old_count:INTEGER;
-        
-    (Self = 0).if {
-      buffer.extend '0';
-    } else {
-      i := buffer.count + 1;
-      val := Self;
-      {val != 0}.while_do { //JBJB 
-	buffer.extend ((val & 15).hexadecimal_digit);
-	val := val >> 4;
-      };
-      old_count := buffer.count;
-      {i >= old_count}.until_do {
-	buffer.swap i with old_count;
-	old_count := old_count - 1;
-	i := i + 1;
-      };
-    };
-    buffer.precede_multiple '0' by (s.to_integer - buffer.count);
-  ); 
-
-  - to_binary_in buffer:STRING format s:INTEGER <-
-  // Append in `buffer' the equivalent of `to_binary_string'. No new STRING
-  // creation during the process.
-  [ -? {buffer!=NULL}; ]
-  ( + val:SELF;
-    + i,old_count:INTEGER;
-        
-    (Self = 0).if {
-      buffer.extend '0';
-    } else {
-      i := buffer.count + 1;
-      val := Self;
-      {val != 0}.while_do { 
-	buffer.extend ('0' +# (val & 1));
-	val := val >> 1;
-      };
-      old_count := buffer.count;
-      {i >= old_count}.until_do {
-	buffer.swap i with old_count;
-	old_count := old_count - 1;
-	i := i + 1;
-      };
-    };
-    buffer.precede_multiple '0' by ((s.to_integer) - buffer.count);
-  ); 
-  
-  //
-  // Hashing:
-  //
-  
-  - hash_code:INTEGER <- to_integer_32.hash_code; // BSBS:  Il faut revoir => Depending processor
-  
-  //
-  // Print
-  //
-  
-  - print <-
-  (
-    (Self = 0).if {
-      '0'.print;
-    }.elseif {Self < 0} then {
-      '-'.print;
-      (-Self).print_positif;
-    } else {
-      print_positif;
-    };
-  );
-  
-  - print_positif <-
-  // Display this number without memory.
-  [ -? {Self >=# 0}; ]
-  ( + char:CHARACTER;
-    + val:SELF;    
-        
-    char := (Self % 10).decimal_digit;
-    val  := Self / 10;
-    (val != 0).if {
-      val.print_positif;
-    };
-    char.print;
-  );
-
-  - print_hex <-
-  // Display this number without memory.
-  ( + char:CHARACTER;
-    + val:SELF;
-        
-    char := (Self & 0Fh).hexadecimal_digit; 
-    val  := Self / 16; 
-    (val != 0).if {
-      val.print_hex;
-    };
-    char.print;
-  );
-  
-  //
-  // Debug manager facility.
-  //
-  
-  - '?' blc:BLOCK <-  blc ?# Self;
-  
-Section INTEGER  
-  
-  - to_raw_pointer:POINTER         <- CONVERT[SELF,POINTER].on Self;
-
-
-
diff --git a/lib/number/integer_16.li b/lib/number/integer_16.li
deleted file mode 100644
index 7f46d8a..0000000
--- a/lib/number/integer_16.li
+++ /dev/null
@@ -1,54 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded INTEGER_16;
-
-  - export  := INTEGER, INTEGER_64, INTEGER_32;
- 
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Xavier Oswald";
-  
-  - comment := "Signed 16 bits integer.";
-
-  - type    := `signed short`;
-  - default := (0.to_raw_integer_16);
-  
-Section Insert
-  
-  - parent_signed_integer:SIGNED_INTEGER := SIGNED_INTEGER;
-  
-Section Public
-  
-  - object_size:INTEGER := 2;
-
-  //
-  // Range
-  //
-    
-  - maximum:UINTEGER_64 <- 32767.to_raw_uinteger_64;
-  
-  - minimum:INTEGER_64 <- - 32767.to_raw_integer_64;
-  
-  //
-  // Conversion with test.
-  //
-
-  - to_integer_16:INTEGER_16     <- Self;
diff --git a/lib/number/integer_32.li b/lib/number/integer_32.li
deleted file mode 100644
index 70a3e0c..0000000
--- a/lib/number/integer_32.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := Expanded INTEGER_32;
-  
-  - export      := INTEGER, INTEGER_64, POINTER;
-   
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Xavier Oswald";
-
-  - comment     :="Signed 32 bits integer.";
-
-  - type        := `signed long`;
-  - default     := (0.to_raw_integer_32);
-  
-Section Insert
-  
-  - parent_signed_integer:SIGNED_INTEGER := SIGNED_INTEGER;
-  
-Section Public
-  
-  - object_size:INTEGER := 4;
-
-  //
-  // Range
-  //
-  
-  - maximum:UINTEGER_64 <- 07FFF_FFFFh.to_raw_uinteger_64; 
-  
-  - minimum:INTEGER_64 <- - 07FFF_FFFFh.to_raw_integer_64;
-  
-  //
-  // Conversion with test.
-  //
- 
-  - to_integer_32:INTEGER_32     <- Self;  
-
-
-
-
diff --git a/lib/number/integer_64.li b/lib/number/integer_64.li
deleted file mode 100644
index d19043c..0000000
--- a/lib/number/integer_64.li
+++ /dev/null
@@ -1,59 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded INTEGER_64;
-
-  - export  := INTEGER;
-  
-  - comment := "Signed 64 bits integer.";
-
-  - type    := `signed long long`;
-  - default := (0.to_raw_integer_64);
-  
-Section Insert
-  
-  - parent_signed_integer:SIGNED_INTEGER := SIGNED_INTEGER;
-  
-Section Public
-
-  - object_size:INTEGER := 8;
-  
-    
-  - '-' :SELF <- zero - Self;
-  
-  //
-  // Range
-  //
-  
-  - maximum:UINTEGER_64 <- `0x7FFFFFFFFFFFFFFFLLU`:UINTEGER_64;
-  
-  - minimum:INTEGER_64  <- `-0x8000000000000000LL`:INTEGER_64;
-  
-  //
-  // Conversion with test.
-  //
-   
-  - to_integer_64:INTEGER_64     <- Self;
-  
-
-
-
diff --git a/lib/number/integer_8.li b/lib/number/integer_8.li
deleted file mode 100644
index 1c2acb2..0000000
--- a/lib/number/integer_8.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    :=Expanded INTEGER_8;
-
-  - export  := INTEGER, INTEGER_64, INTEGER_32, INTEGER_16;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Xavier Oswald";
-
-  - comment :="Signed 8 bits integer.";
-
-  - type    := `signed char`;
-  - default := (0.to_raw_integer_8);
-  
-Section Insert
-  
-  - parent_signed_integer:SIGNED_INTEGER := SIGNED_INTEGER;
-  
-Section Public
-
-  - object_size:INTEGER := 1;
-  
-  //
-  // Range
-  //
-  
-  - maximum:UINTEGER_64 <- 127.to_raw_uinteger_64;
-  
-  - minimum:INTEGER_64  <- - 127.to_raw_integer_64;
-  
-  //
-  // Conversion.
-  //
-  
-  - to_integer_8:INTEGER_8 <- Self;
-
-  - to_character:CHARACTER <- `@Self`:CHARACTER; // `13`;
-  
-
-
-
-	
-
-
-
-
diff --git a/lib/number/integer_big.e_to_li b/lib/number/integer_big.e_to_li
deleted file mode 100755
index 4e8707f..0000000
--- a/lib/number/integer_big.e_to_li
+++ /dev/null
@@ -1,3263 +0,0 @@
-Section Header
-  
-  + name := INTEGER_BIG;
-  
-  - comment :=	
-  " A class used to represent multiprecision integers that makes efficient use \
-  \ of allocated space by allowing a number to occupy only part of an array so \
-  \ that the arrays do not have to be reallocated as often. When performing an \
-  \ operation with many iterations the array used to hold a number is only     \
-  \ reallocated when necessary and does not have to be the same size as the    \
-  \ number it represents. A mutable number allows calculations to occur on the \
-  \ same number without having to create a new number for every step of the    \
-  \ calculation as it occurs with NUMBERs.";
-  
-Section Inherit
-  
-  - parent_hashable:HASHABLE := HASHABLE;
-  
-  - parent_comparable:COMPARABLE := COMPARABLE;
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-creation {ANY}
-	from_integer, from_integer_64, from_string, copy
-        
-  //
-  // Creation / initialization from INTEGER_32 or INTEGER_64:
-  //
-  
-  - from_integer value:INTEGER :SELF <- 
-  // Create or initialize `Current' using `value' as an initializer.
-  (
-    (capacity = 0).if {
-      storage := storage.calloc 4;
-      capacity := 4;
-    };
-    offset := 0;
-    (value > 0).if {
-      negative := FALSE;
-      put value to 0;
-      integer_length := 1;
-    }.elseif {value < 0} then {
-      negative := TRUE;
-      put(#-value, 0)
-      integer_length := 1;
-    } else {
-      ? {value = 0};
-      set_with_zero;
-    };
-  )
-  [
-    ? {to_integer_32 = value};
-  ];
-	
-	is_integer_32: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_32?
-		do
-			if integer_length = 0 then
-				Result := True
-			elseif integer_length = 1 then
-				if item(offset) > 0 then
-					Result := True
-				elseif negative then
-					Result := item(offset) = 0x80000000
-				end
-			end
-		ensure
-			Result implies is_integer_64
-			Result implies integer_length <= 1
-		end
-
-	is_integer: BOOLEAN is
-		obsolete "Now use `is_integer_32' instead (march 2006)."
-		do
-			Result := is_integer_32
-		end
-	
-	to_integer_32: INTEGER is
-			-- Convert `Current' as a 32 bit INTEGER.
-		require
-			is_integer_32
-		do
-			if integer_length > 0 then
-				Result := item(offset)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-	
-	to_integer: INTEGER is
-		obsolete "Now use `to_integer_32' instead (march 2006)."
-		do
-			Result := to_integer_32
-		end
-	
-	from_integer_64 (value: INTEGER_64) is
-			-- Create or set `Current' using `value' as an initializer.
-		local
-			v32: INTEGER
-		do
-			if capacity < 2 then
-				storage := storage.calloc(4)
-				capacity := 4
-			end
-			if value > 0 then
-				negative := False
-				put(value.low_32, 0)
-				offset := 0
-				v32 := value.high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			elseif value < 0 then
-				negative := True
-				put((#-value).low_32, 0)
-				offset := 0
-				v32 := (#-value).high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			else
-				check
-					value = 0
-				end
-				set_with_zero
-			end
-		ensure
-			to_integer_64 = value
-		end
-
-	is_integer_64: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_64?
-		do
-			if integer_length <= 1 then
-				Result := True
-			elseif integer_length = 2 then
-				if negative then
-					if item(offset + 1) > 0 then
-						Result := True
-					elseif item(offset) = 0 then
-						Result := item(offset + 1) = 0x80000000
-					end
-				else
-					Result := item(offset + 1) > 0
-				end
-			end
-		ensure
-			not Result implies not is_integer_32
-			Result implies integer_length <= 2
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Convert `Current' as a INTEGER_64.
-		require
-			is_integer_64
-		local
-			v: INTEGER_64
-		do
-			inspect
-				integer_length
-			when 0 then
-			when 1 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				if negative then
-					Result := -Result
-				end
-			when 2 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				v := item(offset + 1)
-				v := v.bit_shift_left(32)
-				Result := Result.bit_xor(v)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-
-feature {ANY} -- Creation / initialization from STRING:
-	from_string (str: STRING) is
-			-- Create or initialize `Current' using `value' as an
-			-- initializer. (value = [-][0-9]^+)
-		local
-			i: INTEGER; cc: CHARACTER; neg: BOOLEAN; ten: like Current
-		do
-			--|*** This feature should be improved one day... (Vincent Croizier, 25/12/2004)
-			create ten.from_integer(10)
-			from
-				i := 1
-			variant
-				str.count - i
-			until
-				not str.item(i).is_separator
-			loop
-				i := i + 1
-			end
-			cc := str.item(i)
-			i := i + 1
-			if cc = '+' then
-				cc := str.item(i)
-				i := i + 1
-			elseif cc = '-' then
-				neg := True
-				cc := str.item(i)
-				i := i + 1
-			end
-			check
-				cc.is_digit
-			end
-			from_integer(cc.value)
-			from
-			variant
-				str.count - i
-			until
-				i > str.count
-			loop
-				cc := str.item(i)
-				if cc.is_digit then
-					multiply(ten)
-					add_integer(cc.value)
-				else
-					check
-						cc.is_separator
-					end
-					i := str.count -- terminate the loop
-				end
-				i := i + 1
-			end
-			if neg then
-				negate
-			end
-		end
-
-feature {ANY} -- Conversion tool
-	force_to_real_64: REAL_64 is
-			-- only a tool
-			-- unsigned conversion *** require ou changer export ? *** (Dom Oct 4th 2004) ***
-		local
-			i: INTEGER
-		do
-			from
-				i := offset + integer_length - 1
-			until
-				i < offset or else Result > Maximum_real_64
-			loop
-				Result := Result * Real_base + unsigned_32_to_integer_64(storage.item(i)).force_to_real_64
-				i := i - 1
-			end
-			if Result = Maximum_real_64 and then storage.item(offset) /= 0 then
-				Result := Maximum_real_64 * 2
-			end
-			if negative then
-				Result := -Result
-			end
-		end
-
-feature {NUMBER}
-	from_native_array (na: NATIVE_ARRAY[INTEGER]; cap: INTEGER; neg: BOOLEAN) is
-		require
-			na.item(cap - 1) /= 0
-		do
-			negative := neg
-			offset := 0
-			integer_length := cap
-			if cap > capacity then
-				capacity := capacity_from_lower_bound(capacity, cap)
-				storage := storage.calloc(capacity)
-			end
-			storage.slice_copy(0, na, 0, cap - 1)
-		end
-
-	to_integer_general_number: INTEGER_GENERAL_NUMBER is
-		local
-			na: like storage
-		do
-			if is_integer_64 then
-				create {INTEGER_64_NUMBER} Result.make(to_integer_64)
-			else
-				na := storage.calloc(integer_length)
-				na.slice_copy(0, storage, offset, offset + integer_length - 1)
-				create {BIG_INTEGER_NUMBER} Result.from_native_array(na, integer_length, negative)
-			end
-		end
-
-feature {ANY} -- Addition:
-	add (other: like Current) is
-			-- Add `other' into `Current'.
-			--
-			-- See also `add_integer', `add_integer_64', `add_natural'.
-		require
-			other /= Void
-		do
-			-- Choose the appropriate absolute operator depending on `Current' and `other' sign.
-			if other.integer_length = 0 then
-				-- Nothing to do, `Current' remains unchanged.
-			elseif integer_length = 0 then
-				-- `Current' is zero so simply copy the value of other
-				Current.copy(other)
-			elseif negative = other.negative then
-				-- same sign
-				add_magnitude(other)
-			else
-				-- different sign
-				subtract_magnitude(other)
-			end
-		end
-
-	add_to (other, res: like Current) is
-			-- Add `other' and `Current', and put the result in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.add(other)
-		end
-
-	add_integer (other: INTEGER) is
-			-- Add `other' into `Current'.
-		local
-			inc: BOOLEAN; v, i, n: INTEGER
-		do
-			if other = 0 then
-				-- Nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- `Current' is null so simply copy the value of other
-				from_integer(other)
-			elseif negative = (other < 0) then
-				-- Same sign
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				-- Add `v' into `storage'
-				from
-					inc := mbi_add(item(offset), v, storage_at(storage, offset))
-					i := offset + 1
-					n := offset + integer_length
-				until
-					not inc or else i >= n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					check
-						i = n
-					end
-					-- Extend the number length by 1
-					if n < capacity then
-						integer_length := integer_length + 1
-						put(1, n)
-					else
-						-- It's good only if the reallocation initialize
-						-- `storage' with 0.
-						v := item(offset)
-						capacity := capacity * 2
-						storage := storage.calloc(capacity)
-						offset := 0
-						put(v, 0)
-						put(1, integer_length)
-						integer_length := integer_length + 1
-					end
-				end
-				-- Different sign
-			elseif integer_length = 1 then
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					negative := not negative
-					put(-item(offset), offset)
-				end
-				if item(offset) = 0 then
-					integer_length := 0
-					negative := False
-				end
-			else
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					from
-						i := offset + 1
-						inc := mbi_dec(storage_at(storage, i))
-						n := offset + integer_length - 1
-					until
-						not inc
-					loop
-						check
-							i < n
-						end
-						i := i + 1
-						inc := mbi_dec(storage_at(storage, i))
-					end
-					if item(n) = 0 then
-						integer_length := integer_length - 1
-					end
-				end
-			end
-		end	
-
-	add_integer_64 (other: INTEGER_64) is
-			-- Add `other' into `Current'.
-		do
-			register1.from_integer_64(other)
-			add(register1)
-		end
-
-	add_natural (other: like Current) is
-			-- Same behavior as `add', but this one works only when `Current'
-			-- and `other' are both positive numbers and are both greater than
-			-- zero. The only one advantage of using `add_natural' instead of the
-			-- general `add' is the gain of efficiency.
-		require
-			not is_zero and not is_negative
-			not other.is_zero and not other.is_negative
-		do
-			add_magnitude(other)
-		end
-
-feature {ANY} -- Subtract:
-	subtract (other: like Current) is
-			-- Subtract `other' from `Current'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				set_with_zero
-			elseif other.integer_length = 0 then
-				-- nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- current is null so simply copy the value of other, the sign is also fixed
-				copy(other)
-				negative := not other.negative
-			elseif negative = other.negative then
-				-- same sign
-				subtract_magnitude(other)
-			else
-				-- different sign
-				add_magnitude(other)
-			end
-		end
-
-	subtract_to (other, res: like Current) is
-			-- Subtract `other' from `Current' and put it in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.subtract(other)
-		end
-
-	subtract_integer (other: INTEGER) is
-		do
-			if other = Minimum_integer then
-				add_integer(1)
-				add_integer(Maximum_integer)
-			else
-				add_integer(-other)
-			end
-		end
-
-feature {ANY} -- To divide:
-	divide (other: like Current) is
-			-- Put the the quotient of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		do
-			-- `divide_with_remainder_to' already use `register1'.
-			divide_with_remainder_to(other, register2)
-		end
-
-	mod (other: like Current) is
-			-- Put the the remainder of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		local
-			quotient: like Current
-		do
-			--|*** Must be optimized (Vincent Croizier, 12/07/04) ***
-			create quotient.from_integer(0)
-			remainder_with_quotient_to(other, quotient)
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_with_remainder_to (other, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Quotient is put in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			remainder /= Void
-			remainder /= other
-			remainder /= Current
-		do
-			Current.remainder_with_quotient_to(other, remainder)
-			Current.swap_with(remainder)
-		ensure
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	remainder_with_quotient_to (other, quotient: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Remainder is put in `Current'.
-			-- (The contents of `other' is not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			quotient /= other
-			quotient /= Current
-		local
-			cmp, shift, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER; qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER
-			q_storage, d_storage: like storage; q_capacity: like capacity; current_negative, borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				set_with_zero
-			else
-				current_negative := negative
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					-- Sign correction
-					set_negative(False)
-					divide_sign_correction_bis(other, quotient, current_negative)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.swap_with(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						put(rem, 0)
-						set_integer_length(1)
-					else
-						check
-							is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := offset + integer_length - 1
-						u2 := storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := integer_length - dlen
-							qlen := k + 1
-						else
-							qlen := integer_length - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := storage.item(j + 1)
-						u2 := storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						set_with_zero
-					else
-						offset := 0
-						integer_length := j
-						negative := False
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				end
-			end
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_to (other, quotient, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'. (The contents of `Current' and `other' are
-			-- not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			remainder /= Void
-			quotient /= other
-			quotient /= Current
-			remainder /= other
-			remainder /= Current
-		local
-			cmp, shift, nlen, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER
-			qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER; q_storage, r_storage, d_storage: like storage
-			q_capacity, r_capacity: like capacity; borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				remainder.set_with_zero
-			else
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					remainder.copy(Current)
-					-- Sign correction
-					remainder.set_negative(False)
-					divide_sign_correction(other, quotient, remainder)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					remainder.set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.copy(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					remainder.set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						remainder.put(rem, 0)
-						remainder.set_ilo(1, 0)
-					else
-						check
-							remainder.is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					--|***
-					remainder.copy(Current)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						remainder.shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						r_storage := remainder.storage
-						r_capacity := remainder.capacity
-						check
-							remainder.offset = 0
-						end
-						nlen := remainder.integer_length -- To avoid invariant class violation
-						remainder.set_with_zero
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := nlen - 1
-						u2 := r_storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := nlen - dlen
-							qlen := k + 1
-						else
-							qlen := nlen - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := r_storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := r_storage.item(j + 1)
-						u2 := r_storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else r_storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						check
-							remainder.is_zero
-						end
-					else
-						remainder.set_all(r_storage, r_capacity, j, 0, False)
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						remainder.shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				end
-			end
-		ensure
-			is_a_good_divide(other, quotient, remainder)
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	shift_left (n: INTEGER) is
-			-- Shift bits of magnitude by `n' position left. (Note that no bit can
-			-- be lost because the `storage' area is automatically extended when
-			-- it is necessary.)
-		require
-			n > 0
-		local
-			new_storage: like storage; left, right: INTEGER_8
-			new_capacity, new_integer_length, new_head, word_shift, i, j, k, val1, val2, val3: INTEGER
-		do
-			if integer_length > 0 then
-				word_shift := n |>>> 5
-				left := (n & 0x0000001F).to_integer_8 -- Optimistic prediction
-				new_integer_length := integer_length + word_shift
-				if left = 0 then
-					-- Just word shift
-					if offset >= word_shift then
-						-- no need to deplace the number in the storage
-						from
-							i := offset
-							offset := offset - word_shift
-							integer_length := new_integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							put(0, i)
-						end
-					elseif capacity >= new_integer_length then
-						-- deplacing the number
-						from
-							i := offset + integer_length - 1
-							j := word_shift + integer_length - 1
-						until
-							i < offset
-						loop
-							put(item(i), j)
-							i := i - 1
-							j := j - 1
-						end
-						from
-							check
-								j = word_shift - 1
-							end
-						until
-							j < 0
-						loop
-							put(0, j)
-							j := j - 1
-						end
-						offset := 0
-						integer_length := new_integer_length
-					else
-						-- reallocation
-						new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-						new_storage := storage.calloc(new_capacity)
-						from
-							i := offset + integer_length
-							j := word_shift + integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							j := j - 1
-							new_storage.put(item(i), j)
-						end
-						storage := new_storage
-						capacity := new_capacity
-						offset := 0
-						integer_length := new_integer_length
-					end
-				else
-					right := 32 - left -- Compute real `integer_length'
-					i := offset + integer_length - 1
-					val1 := item(i)
-					new_head := val1 |>>> right
-					if new_head = 0 then
-						-- new_integer_length is good
-						if capacity < new_integer_length then
-							-- reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-									j = word_shift
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					else
-						new_integer_length := new_integer_length + 1
-						if capacity < new_integer_length then
-							-- Reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-								new_storage.put(new_head, j + 1)
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							put(new_head, j + 1)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							put(new_head, new_integer_length - 1)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					end
-				end
-			end
-		end
-
-	shift_right (n: INTEGER) is
-			-- Right shift `Current' n bits. (`Current' is left in normal form.)
-		require
-			n > 0
-		local
-			n_ints, n_bits: INTEGER
-		do
-			if integer_length > 0 then
-				n_ints := n |>>> 5
-				n_bits := n & 0x0000001F
-				integer_length := integer_length - n_ints
-				offset := offset + n_ints
-				if n_bits = 0 then
-				else
-					primitive_shift_right(n_bits.to_integer_8)
-				end
-			end
-		end
-
-feature {ANY} -- GCD
-	gcd (other: like Current) is
-			-- Compute GCD of `Current' and `other'.
-			-- GCD is put in `Current' (`other' is not modified).
-		require
-			other /= Void
-		do
-			if other = Current then
-				Current.abs
-			elseif other.is_zero then
-				Current.abs
-			elseif Current.is_zero then
-				Current.copy(other)
-				Current.abs
-			else
-				from
-					register2.copy(other)
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-						Current.abs
-					else
-						register2.mod(Current)
-					end
-				until
-					register2.is_zero
-				loop
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-					else
-						register2.mod(Current)
-					end
-				end
-			end
-		ensure
-			is_positive or is_zero and other.is_zero
-		end
-
-feature {ANY} -- To multiply:
-	multiply (other: like Current) is
-			-- Multiply `Current' by `other'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				multiply_to(other, register1)
-				swap_with(register1)
-			elseif is_zero or other.is_zero then
-				set_with_zero
-			elseif Current.is_one then
-				copy(other)
-			elseif other.is_one then
-			elseif Current.is_one_negative then
-				copy(other)
-				set_negative(not negative)
-			elseif other.is_one_negative then
-				set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 09/07/04)
-				multiply_like_human(other)
-			end
-		end
-
-	multiply_to (other, res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' and `other' are not modified.)
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-		do
-			if is_zero or other.is_zero then
-				res.set_with_zero
-			elseif Current.is_one then
-				res.copy(other)
-			elseif other.is_one then
-				res.copy(Current)
-			elseif Current.is_one_negative then
-				res.copy(other)
-				res.set_negative(not res.negative)
-			elseif other.is_one_negative then
-				res.copy(Current)
-				res.set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 01/05/04)
-				multiply_to_like_human(other, res)
-			end
-		end
-
-	multiply_integer (other: INTEGER; res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' is not modified.)
-		require
-			res /= Current
-			res /= Void
-		local
-			overflow, res_integer_length, res_capacity, i, k, up_i, v: INTEGER; res_storage: like storage
-		do
-			if other = 0 or else is_zero then
-				res.set_with_zero
-			elseif other = Minimum_integer then
-				res.set_negative(not negative)
-				shift_left(31)
-			else
-				if other > 0 then
-					res.set_negative(negative)
-					v := other
-				else
-					res.set_negative(not negative)
-					v := -other
-				end
-				-- Pessimistique estimation
-				res_integer_length := integer_length + 1 -- Reallocation ?
-				if res.capacity < res_integer_length then
-					if capacity < res_integer_length then
-						res_capacity := capacity * 2
-					else
-						res_capacity := capacity_from_upper_bound(capacity, res_integer_length)
-					end
-					set_capacity(res_capacity)
-					res_storage := storage.calloc(res_capacity)
-					res.set_storage(res_storage)
-				else
-					res_storage := res.storage
-				end
-				res.set_offset(0)
-				-- Multiply
-				from
-					k := 0
-					i := offset
-					up_i := offset + integer_length - 1
-					overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-				end
-				if overflow = 0 then
-					res.set_integer_length(res_integer_length - 1)
-				else
-					check
-						k + 1 = integer_length
-					end
-					res.put(overflow, integer_length)
-				end
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- to multiply
-	multiply_like_human (other: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			not is_zero
-			not other.is_zero
-		local
-			old_offset, new_integer_length: INTEGER
-		do
-			-- Pessimistique estimation
-			new_integer_length := integer_length + other.integer_length -- Reallocation ?
-			if capacity < new_integer_length then
-				register1.swap_with(Current)
-				register1.multiply_to_like_human(other, Current)
-				-- Multiply in place
-			elseif offset + new_integer_length <= capacity then
-				multiply_like_human_aux_reverse(other)
-			elseif offset >= other.integer_length then
-				multiply_like_human_aux(other)
-			else
-				old_offset := offset
-				offset := capacity - integer_length
-				storage.slice_copy(offset, storage, old_offset, old_offset + integer_length - 1)
-				multiply_like_human_aux(other)
-			end
-		end
-
-	multiply_like_human_aux (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset >= other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, up_j, down_k, v: INTEGER
-			other_storage: like storage
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				k := 0
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				j := offset
-				up_j := offset + integer_length - 1
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j
-			end
-			storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply_with_add(other_storage.item(i), v, storage.item(k), storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				check
-					k <= j
-				end
-				storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-			offset := 0
-		end
-
-	multiply_like_human_aux_reverse (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset + integer_length <= capacity - other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, down_j, down_k, v: INTEGER
-			other_storage: like storage; inc: BOOLEAN
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				down_j := offset
-				j := offset + integer_length - 1
-				k := j
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j + other_integer_length
-			end
-			storage.put(overflow, k)
-			from
-				down_k := j - 1
-			until
-				j = down_j
-			loop
-				j := j - 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				inc := mbi_add(storage.item(k), overflow, storage_at(storage, k))
-				check
-					k < offset + integer_length + other_integer_length
-				end
-				from
-				until
-					not inc
-				loop
-					k := k + 1
-					check
-						k < offset + integer_length + other_integer_length
-					end
-					inc := mbi_inc(storage_at(storage, k))
-				end
-				down_k := down_k - 1
-			end
-			-- Adjust `res.integer_length'
-			if storage.item(offset + integer_length + other_integer_length - 1) = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-		end
-
-	multiply_to_like_human (other, res: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			res /= Current
-			not is_zero
-			not other.is_zero
-		local
-			overflow, res_integer_length, res_capacity, i, j, k, up_i, up_j, down_k, v: INTEGER
-			res_storage: like storage; res_negative: BOOLEAN
-		do
-			res_negative := negative /= other.negative -- Pessimistique estimation
-			res_integer_length := integer_length + other.integer_length -- Reallocation ?
-			res_capacity := res.capacity
-			if res_capacity < res_integer_length then
-				res_capacity := capacity_from_lower_bound(res_capacity, res_integer_length)
-				res_storage := storage.calloc(res_capacity)
-			else
-				res_storage := res.storage
-			end
-			-- To avoid class invariant violation
-			res.set_with_zero
-			-- Multiply
-			-- First pass
-			from
-				k := 0
-				i := offset
-				up_i := offset + integer_length - 1
-				j := other.offset
-				up_j := j + other.integer_length - 1
-				v := other.item(j)
-				overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-			end
-			k := k + 1
-			res_storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := offset
-					v := other.item(j)
-					overflow := mbi_multiply_with_add(item(i), v, res_storage.item(k), storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(item(i), v, overflow, res_storage.item(k), storage_at(res_storage, k))
-				end
-				k := k + 1
-				res_storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				res.set_all(res_storage, res_capacity, res_integer_length - 1, 0, res_negative)
-			else
-				res.set_all(res_storage, res_capacity, res_integer_length, 0, res_negative)
-			end
-		end
-
-feature {ANY} -- Comparison:
-	is_zero: BOOLEAN is
-			-- Is it 0?
-		do
-			Result := integer_length = 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one: BOOLEAN is
-			-- Is it 1?
-		do
-			if integer_length = 1 then
-				if not negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one_negative: BOOLEAN is
-			-- Is it -1 ?
-		do
-			if integer_length = 1 then
-				if negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies is_negative
-		end
-
-	is_negative: BOOLEAN is
-			-- Is `Current' negative integer?
-		do
-			Result := negative
-		ensure
-			Result implies not is_positive
-		end
-
-	is_positive: BOOLEAN is
-			-- Is `Current' positive integer?
-		do
-			Result := not negative and then integer_length /= 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_even: BOOLEAN is
-			-- Is `Current' even?
-		do
-			if integer_length = 0 then
-				Result := True
-			else
-				Result := item(offset).is_even
-			end
-		ensure
-			Result = not Current.is_odd
-		end
-
-	is_odd: BOOLEAN is
-			-- Is `Current' odd?
-		do
-			if integer_length > 0 then
-				Result := item(offset).is_odd
-			end
-		ensure
-			Result = not Current.is_even
-		end
-
-	is_equal (other: like Current): BOOLEAN is
-		local
-			a, b, c: INTEGER
-		do
-			if Current = other then
-				Result := True
-			elseif integer_length /= other.integer_length then
-			elseif negative /= other.negative then
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					c := offset + integer_length
-					a := offset
-					b := other.offset
-					Result := True
-				until
-					a = c
-				loop
-					if item(a) /= other.item(b) then
-						Result := False
-						a := c
-					else
-						a := a + 1
-						b := b + 1
-					end
-				end
-			end
-		end
-
-	infix "<" (other: like Current): BOOLEAN is
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-			elseif negative /= other.negative then
-				Result := negative
-			elseif integer_length /= other.integer_length then
-				Result := integer_length < other.integer_length xor negative
-			else
-				check
-					other.negative = negative
-				end
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length - 1
-					b := other.offset + integer_length - 1
-				until
-					a < offset
-				loop
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := not negative
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := negative
-						a := -1
-					else
-						a := a - 1
-						b := b - 1
-					end
-				end
-			end
-		end
-
-	abs_compare (other: like Current): INTEGER is
-			-- Compare the magnitude of `Current' and `other'. Returns -1, 0 or 1
-			-- as this MutableBigInteger is numerically less than, equal to, or
-			-- greater than other.
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-				--Result := 0
-			elseif integer_length < other.integer_length then
-				Result := -1
-			elseif integer_length > other.integer_length then
-				Result := 1
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length
-					b := other.offset + integer_length
-					check
-						Result = 0
-					end
-				until
-					a <= offset
-				loop
-					a := a - 1
-					b := b - 1
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := -1
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := 1
-						a := -1
-					end
-				end
-			end
-		end
-
-feature {ANY} -- Printing:
-	to_string: STRING is
-			-- The decimal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 the `Result' is "-1".
-			--
-			-- See also `append_in', `to_string_format', `to_unicode_string', `to_integer'.
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			Result := string_buffer.twin
-		end
-
-	to_unicode_string: UNICODE_STRING is
-			-- The decimal view of `Current' into a new allocated UNICODE_STRING.
-			-- For example, if `Current' represents -1 the `Result' is U"-1".
-			--
-			-- See also `append_in_unicode', `to_unicode_string_format', `to_string'.
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			Result := unicode_string_buffer.twin
-		end
-
-	append_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0')
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-')
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k))
-				end
-			end
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0'.code)
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-'.code)
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k).code)
-				end
-			end
-		end
-
-	to_string_format (s: INTEGER): STRING is
-			-- Same as `to_string' but the result is on `s' character and the
-			-- number is right aligned.
-			-- Note: see `append_in_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	to_unicode_string_format (s: INTEGER): UNICODE_STRING is
-			-- Same as `to_unicode_string' but the result is on `s' character and
-			-- the number is right aligned.
-			-- Note: see `append_in_unicode_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_unicode_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	append_in_format (str: STRING; s: INTEGER) is
-			-- Append the equivalent of `to_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- STRING is allocated for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0')
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-')
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k))
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	append_in_unicode_format (str: UNICODE_STRING; s: INTEGER) is
-			-- Append the equivalent of `to_unicode_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- UNICODE_STRING is allocated for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0'.code)
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-'.code)
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k).code)
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	is_printable: BOOLEAN is
-			-- True if decimal view of `Current' is short enougth
-			-- to be put in a STRING.
-		do
-			--|*** MUST BE REWRITE (Vincent Croizier, 14/07/04) ***
-			Result := integer_length <= 2 ^ 27
-		end
-
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			append_in(tagged_out_memory)
-		end
-
-feature {ANY} -- Miscellaneous:
-	negate is
-			-- Negate the sign of `Current'.
-		do
-			if integer_length /= 0 then
-				negative := not negative
-			end
-		end
-
-	abs is
-			-- Absolute value of `Current'.
-		do
-			negative := False
-		end
-
-	sign: INTEGER_8 is
-			-- Sign of `Current' (0 -1 or 1).
-		do
-			if negative then
-				Result := -1
-			elseif integer_length > 0 then
-				Result := 1
-			else
-				check
-					is_zero
-				end
-			end
-		end
-
-	set_with_zero is
-		do
-			integer_length := 0
-			negative := False
-		ensure
-			is_zero
-		end
-
-	hash_code: INTEGER is
-		local
-			i, c, v: INTEGER
-		do
-			from
-				i := offset
-				c := 2
-			until
-				c = 0 or else i = offset + integer_length
-			loop
-				v := item(i)
-				if v /= 0 then
-					Result := Result #+ v
-					c := c - 1
-				end
-				i := i + 1
-			end
-			Result := integer_length #* Result
-			if negative then
-				Result := Result #+ 1
-			end
-			if Result < 0 then
-				Result := ~Result
-			end
-		end
-
-	copy (other: like Current) is
-		do
-			negative := other.negative
-			offset := 0
-			integer_length := other.integer_length
-			if capacity < other.integer_length then
-				capacity := capacity_from_upper_bound(other.capacity, integer_length)
-				storage := storage.calloc(capacity)
-			elseif capacity = 0 then
-				capacity := 4
-				storage := storage.calloc(capacity)
-			end
-			if integer_length /= 0 then
-				storage.slice_copy(offset, other.storage, other.offset, other.offset + integer_length - 1)
-			end
-		end
-
-	swap_with (other: like Current) is
-			-- Swap the value of `Current' with the value of `other'.
-		local
-			s: like storage; c: like capacity; il: like integer_length; o: like offset; n: like negative
-		do
-			s := other.storage
-			c := other.capacity
-			il := other.integer_length
-			o := other.offset
-			n := other.negative -- Put Current in other
-			other.set_all(storage, capacity, integer_length, offset, negative)
-			--
-			storage := s
-			capacity := c
-			integer_length := il
-			offset := o
-			negative := n
-		end
-
-feature {MUTABLE_BIG_INTEGER}
-	storage: NATIVE_ARRAY[INTEGER]
-			-- Holds the magnitude of `Current' in natural order (the most
-			-- significant INTEGER_32 word has the highest address). To avoid many
-			-- reallocation of this `storage' area, only some words are
-			-- significant. The magnitude is stored in the following significant
-			-- range [`offset' .. `offset + integer_length - 1'].
-
-	capacity: INTEGER
-			-- Of the allocated `storage' area.
-
-	integer_length: INTEGER
-			-- The number of significant INTEGER_32 words in the `storage' area.
-
-	offset: INTEGER
-			-- The `offset' of the less significant word into the `storage' area.
-
-	negative: BOOLEAN
-			-- True when `Current' is negative.
-
-	item (index: INTEGER): INTEGER_32 is
-		require
-		-- index.in_range(0, capacity - 1)
-			index.in_range(offset, offset + integer_length - 1)
-		do
-			Result := storage.item(index)
-		end
-
-	put (value: INTEGER; index: INTEGER) is
-		require
-			index.in_range(0, capacity - 1)
-		do
-			storage.put(value, index)
-		end
-
-	set_negative (n: like negative) is
-		require
-			n implies not is_zero
-		do
-			negative := n
-		ensure
-			negative = n or is_zero
-		end
-
-	set_integer_length (il: like integer_length) is
-		require
-			il.in_range(0, capacity - offset)
-		do
-			integer_length := il
-		ensure
-			integer_length = il
-		end
-
-	set_offset (o: like offset) is
-		require
-			o.in_range(0, capacity - integer_length)
-		do
-			offset := o
-		ensure
-			offset = o
-		end
-
-	set_ilo (il: like integer_length; o: like offset) is
-		require
-			il.in_range(0, capacity)
-			o.in_range(0, capacity - il)
-		do
-			integer_length := il
-			offset := o
-		ensure
-			integer_length = il
-			offset = o
-		end
-
-	set_storage (new_storage: like storage) is
-		do
-			storage := new_storage
-		end
-
-	set_capacity (new_capacity: like capacity) is
-		do
-			capacity := new_capacity
-		end
-
-	set_all (new_storage: like storage; new_capacity, new_integer_length, new_offset: INTEGER; new_negative: BOOLEAN) is
-		require
-			new_capacity > 0
-			new_storage.is_not_null
-			new_integer_length.in_range(0, new_capacity)
-			new_integer_length /= 0 implies new_offset.in_range(0, new_capacity - new_integer_length) and new_storage.item(new_offset + new_integer_length - 1) /= 0
-			new_integer_length = 0 implies not new_negative
-			new_capacity.is_a_power_of_2
-		do
-			storage := new_storage
-			capacity := new_capacity
-			integer_length := new_integer_length
-			offset := new_offset
-			negative := new_negative
-		ensure
-			storage = new_storage
-			capacity = new_capacity
-			integer_length = new_integer_length
-			offset = new_offset
-			negative = new_negative
-		end
-
-	primitive_shift_left (n: INTEGER_8) is
-			-- Left shift `Current' with no need to extend the `storage'.
-			--|*** Can be a little faster (Vincent Croizier, 26/04/04) ***
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-			no_bit_lost: item(offset + integer_length - 1) |<< n |>>> n = item(offset + integer_length - 1)
-		local
-			n2: INTEGER_8; i, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				i := offset
-				up := i + integer_length - 1
-			until
-				i > up
-			loop
-				b := item(i)
-				put(b |<< n | c, i)
-				c := b |>>> n2
-				i := i + 1
-			end
-			check
-				c = 0
-			end
-		end
-
-	primitive_shift_right (n: INTEGER_8) is
-			-- Right shift `Current' of `n' bits.
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-		local
-			n2: INTEGER_8; i, j, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				up := integer_length - 1
-				j := 0
-				i := offset
-				c := item(i)
-			until
-				j >= up
-			loop
-				b := c
-				i := i + 1
-				c := item(i)
-				put(b |>>> n | (c |<< n2), j)
-				j := j + 1
-			end
-			check
-				j = up
-				i = offset + j
-			end
-			put(c |>>> n, up)
-			offset := 0
-			if item(integer_length - 1) = 0 then
-				integer_length := integer_length - 1
-			end
-		ensure
-			offset = 0
-		end
-
-	divide_one_word (divisor: INTEGER): INTEGER is
-			-- This method is used by `divide'. The one word divisor is
-			-- specified by `divisor' is saw as unsigned.
-			-- `Current' is the dividend (saw positive) at invocation but is replaced by
-			-- the quotient. The remainder is returned as unsigned INTEGER.
-			-- Note: `Current' is modified by this method.
-		require
-			divisor /= 0
-		local
-			i, remainder_word1, remainder_word0: INTEGER
-		do
-			if integer_length = 1 then
-				Result := item(offset)
-				if unsigned_less_than(Result, divisor) then
-					integer_length := 0
-					negative := False
-				else
-					put(mbi_divide(0, Result, divisor, $remainder_word1), offset)
-					Result := remainder_word1
-				end
-			else
-				from
-					i := offset + integer_length - 1
-				until
-					i < offset
-				loop
-					remainder_word0 := item(i)
-					put(mbi_divide(remainder_word1, remainder_word0, divisor, $remainder_word1), i)
-					i := i - 1
-				end
-				if item(offset + integer_length - 1) = 0 then
-					integer_length := integer_length - 1
-					check
-						item(offset + integer_length - 1) /= 0
-					end
-				end
-				Result := remainder_word1
-			end
-		end
-
-	divide_sign_correction (other, quotient, remainder: like Current) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not remainder.is_negative
-		do
-			if remainder.is_zero then
-				quotient.set_negative(negative /= other.negative)
-			elseif negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					remainder.set_negative(True)
-					-- other is negative
-					remainder.subtract(other)
-					check
-						not remainder.is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					remainder.set_negative(True)
-					remainder.add(other)
-					check
-						not remainder.is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not remainder.is_negative
-		end
-
-	divide_sign_correction_bis (other, quotient: like Current; current_negative: BOOLEAN) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not is_negative
-		do
-			if is_zero then
-				quotient.set_negative(current_negative /= other.negative)
-			elseif current_negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					set_negative(True)
-					-- other is negative
-					subtract(other)
-					check
-						not is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					set_negative(True)
-					add(other)
-					check
-						not is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not is_negative
-		end
-
-	multiply_and_subtract (u1, qhat: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-		require
-			qhat /= 0
-		local
-			i, j, jmax, m1, m2: INTEGER; dec: BOOLEAN
-		do
-			if qhat = 1 then
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_dec(storage_at(r_storage, j))
-						check
-							not Result
-						end
-					end
-				end
-			else
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					m1 := mbi_multiply_with_add(qhat, d_storage.item(i), m1, $m2)
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), m2, storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), m2, storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_subtract_with_dec(r_storage.item(j), m1, storage_at(r_storage, j))
-					end
-				elseif m1 = 0 then
-					-- nothing to do
-				elseif u1 = 0 then
-					Result := True
-				else
-					Result := mbi_subtract(r_storage.item(j), m1, storage_at(r_storage, j))
-				end
-			end
-		end
-
-	add_back (old_u1: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-			-- `old_u1' is the value of `u1' before `multiply_and_subtract'.
-		local
-			i, j, jmax: INTEGER; inc: BOOLEAN
-		do
-			from
-				i := d_offset
-				j := r_offset
-				jmax := r_offset + length
-			until
-				j = jmax
-			loop
-				if inc then
-					inc := mbi_add_with_inc(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				else
-					inc := mbi_add(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				end
-				i := i + 1
-				j := j + 1
-			end
-			if inc then
-				if old_u1 = 0 then
-					Result := True
-				else
-					Result := mbi_inc(storage_at(r_storage, j))
-				end
-			end
-		end
-
-	is_a_good_divide (other, quotient, remainder: like Current): BOOLEAN is
-		require
-			other /= Void
-			quotient /= Void
-			remainder /= Void
-		local
-			v: like Current
-		do
-			v := other.twin
-			v.multiply(quotient)
-			v.add(remainder)
-			Result := Current.is_equal(v)
-		end
-
-	normalize: INTEGER_8 is
-			-- Shift left until the most significant bit is on.
-			-- Result give the number of left shift.
-		require
-			not is_zero
-		local
-			head: INTEGER
-		do
-			head := item(offset + integer_length - 1)
-			from
-			until
-				head < 0
-			loop
-				head := head.bit_shift_left(1)
-				Result := Result + 1
-			end
-			if Result > 0 then
-				shift_left(Result)
-			end
-		ensure
-			item(offset + integer_length - 1) < 0
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	register1: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	register2: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	Real_base: REAL_64 is
-		once
-			Result := (0x0000000100000000).force_to_real_64
-		end
-
-	add_magnitude (other: like Current) is
-			-- Add the magnitude of `Current' and `other' regardless of signs.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			a, b: like Current; inc: BOOLEAN; i, j, k, n: INTEGER; new_storage, a_storage, b_storage: like storage
-			new_capacity, a_capacity, a_offset, a_integer_length, b_offset, b_integer_length: INTEGER
-		do
-			--|*** First tests can be certainely optimized.
-			--|*** (Vincent Croizier, 26/03/2004)
-			if integer_length > other.integer_length and then capacity - offset > integer_length then
-				---- Add in place (`offset' doesn't change)
-				-- Add common parts of both numbers:
-				from
-					i := offset
-					j := other.offset
-					n := j + other.integer_length
-				until
-					j = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(item(i), other.item(j), storage_at(storage, i))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(item(i), other.item(j), storage_at(storage, i))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := offset + integer_length
-				until
-					not inc or else i = n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					storage.put(1, n)
-					check
-						n < capacity
-					end
-					integer_length := integer_length + 1
-				end
-			else
-				---- Add, after this `offset' will be 0
-				-- Set `a' to the longest number and `b' to the smallest.
-				if integer_length >= other.integer_length then
-					a := Current
-					b := other
-				else
-					a := other
-					b := Current
-				end
-				a_capacity := a.capacity
-				a_storage := a.storage
-				b_storage := b.storage
-				a_integer_length := a.integer_length
-				b_integer_length := b.integer_length
-				a_offset := a.offset
-				b_offset := b.offset -- Verify capacity
-				if capacity < a_integer_length then
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif capacity = a_integer_length then
-					--|*** It's possible to make a more restrictive test
-					--|*** that can exclude more case of reallocation. (Vincent Croizier, 24/03/2004)
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length + 1)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif a = other then
-					-- protect `other'
-					new_storage := a_storage.calloc(a_capacity)
-					new_capacity := a_capacity
-				else
-					new_storage := a_storage
-					new_capacity := a_capacity
-				end
-				-- Add common parts of both numbers:
-				n := b_integer_length
-				check
-					n.in_range(0, new_capacity)
-				end
-				from
-					i := a_offset
-					j := b_offset -- k := 0
-				until
-					k = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					end
-					i := i + 1
-					j := j + 1
-					k := k + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := a_integer_length
-				until
-					not inc or else k = a_integer_length
-				loop
-					new_storage.put(a_storage.item(i), k)
-					inc := mbi_inc(storage_at(new_storage, k))
-					i := i + 1
-					k := k + 1
-				end
-				if inc then
-					new_storage.put(1, k)
-					check
-						n < new_capacity
-					end
-					n := n + 1
-				else
-					-- copy the reste of `a'
-					from
-					until
-						k = n
-					loop
-						new_storage.put(a_storage.item(i), k)
-						i := i + 1
-						k := k + 1
-					end
-				end
-				capacity := new_capacity
-				storage := new_storage
-				integer_length := n
-				offset := 0
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	subtract_magnitude (other: like Current) is
-			-- Subtract `other' from `Current' (The result is placed  in `Current')
-			-- and change `negative' (the sign) if necessary.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			i, j, v1, v2: INTEGER; test: BOOLEAN; new: like Current
-		do
-			-- Compare the number
-			if integer_length = other.integer_length then
-				-- Compare the most significant part of the numbers
-				from
-					i := offset + integer_length - 1
-					j := other.offset + integer_length - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				until
-					test or else i = offset
-				loop
-					integer_length := integer_length - 1
-					i := i - 1
-					j := j - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				end
-				if test then
-					if unsigned_greater_than(v1, v2) then
-						-- Current > other
-						subtract_magnitude_raw_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					else
-						-- Current < other
-						check
-							unsigned_less_than(v1, v2)
-						end
-						negative := not negative
-						subtract_magnitude_raw_reverse_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					end
-				else
-					-- Current = other
-					set_with_zero
-				end
-			elseif integer_length > other.integer_length then
-				subtract_magnitude_raw(other)
-			elseif capacity >= other.integer_length then
-				negative := not negative
-				subtract_magnitude_raw_reverse(other)
-			else
-				-- Reallocation
-				--|*** Can be faster (Vincent Croizier, 10/06/04) ***
-				create new.copy(other)
-				new.subtract_magnitude(Current)
-				negative := not negative
-				integer_length := new.integer_length
-				storage := new.storage
-				offset := new.offset
-			end
-		end
-
-	subtract_magnitude_raw (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = 1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := other.integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(item(i), k)
-				dec := mbi_dec(storage_at(storage, k))
-				i := i + 1
-				k := k + 1
-			end
-			if k = integer_length then
-				from
-					k := k - 1
-				until
-					item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = -1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				-- k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(other.item(j), k)
-				dec := mbi_dec(storage_at(storage, k))
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			up := other.integer_length
-			if k < up then
-				from
-				until
-					k = up
-				loop
-					put(other.item(j), k)
-					j := j + 1
-					k := k + 1
-				end
-				integer_length := up
-			else
-				check
-					k = up
-				end
-				from
-					k := k - 1
-				until
-					storage.item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-				offset := 0
-			end
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_greater_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current',
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_less_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-feature {} -- For printing
-	char_buffer: FAST_ARRAY[CHARACTER] is
-		once
-			create Result.make(4096)
-		end
-
-	append_in_char_buffer: INTEGER is
-			-- Tool for `append_in' and `append_in_unicode'.
-			-- Put absolute value of Current in `char_buffer' and return
-			-- the number of characteres really used.
-		require
-			is_printable
-			not is_zero
-		local
-			base, max_char, i, r: INTEGER
-		do
-			-- Allocate space in `char_buffer'
-			max_char := integer_length * 9 + (2 * integer_length + 2) #// 3
-			if char_buffer.capacity < max_char then
-				char_buffer.resize(max_char)
-			end
-			-- Begin of extracting digits
-			register1.copy(Current)
-			base := 1000000000
-			from
-				r := register1.divide_one_word(base)
-			until
-				register1.is_zero
-			loop
-				check
-					r >= 0
-				end
-				from
-					i := 9
-				until
-					r = 0
-				loop
-					char_buffer.put((r #\\ 10).decimal_digit, Result)
-					r := r #// 10
-					Result := Result + 1
-					i := i - 1
-				end
-				from
-				until
-					i = 0
-				loop
-					char_buffer.put('0', Result)
-					Result := Result + 1
-					i := i - 1
-				end
-				-- extract next digit group
-				r := register1.divide_one_word(base)
-			end
-			from
-				check
-					r > 0
-				end
-			until
-				r = 0
-			loop
-				char_buffer.put((r #\\ 10).decimal_digit, Result)
-				r := r #// 10
-				Result := Result + 1
-			end
-		end
-
-feature {} -- Tools for capacity:
-	capacity_from_lower_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than
-			-- `needed_capacity' and `actual_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity.is_a_power_of_2
-			actual_capacity >= 4
-		do
-			from
-				Result := actual_capacity
-			until
-				Result >= needed_capacity
-			loop
-				Result := Result.bit_shift_left(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result >= 4
-			Result >= actual_capacity
-			Result >= needed_capacity
-			Result = actual_capacity or Result #// 2 < needed_capacity
-		end
-
-	capacity_from_upper_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than `needed_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity >= 4
-			actual_capacity >= needed_capacity
-			actual_capacity.is_a_power_of_2
-		local
-			v: INTEGER
-		do
-			from
-				Result := actual_capacity
-				v := Result.bit_shift_right(1)
-			until
-				v < needed_capacity or else v = 2
-			loop
-				Result := v
-				v := Result.bit_shift_right(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result <= actual_capacity
-			Result >= needed_capacity
-			Result = 4 or Result.bit_shift_right(1) < needed_capacity
-		end
-
-feature {}
-	unsigned_less_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned "<".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_less_than"
-			}"
-		end
-
-	unsigned_greater_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_than"
-			}"
-		end
-
-	unsigned_greater_or_equal (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">=".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_or_equal"
-			}"
-		end
-
-	unsigned_32_to_integer_64 (integer_32: INTEGER): INTEGER_64 is
-			-- Return the unsigned value of the `integer_32'.
-			--
-			--|*** Ajouter ou pas cette fonction dans INTEGER_32 ? plug_in ou built_in ?(Dom. 27/02/2004) ***
-			--
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_32_to_integer_64"
-			}"
-		end
-
-	storage_at (s: like storage; n: INTEGER): POINTER is
-			-- Give the address of the corresponding word of `s'.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_storage_at"
-			}"
-		end
-
-	mbi_inc (integer_32_adr: POINTER): BOOLEAN is
-			-- Increment the value at `integer_32_adr'. The `Result' is True only in case of overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_inc"
-			}"
-		end
-
-	mbi_add (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add"
-			}"
-		end
-
-	mbi_add_with_inc (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b + 1
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add_with_inc"
-			}"
-		end
-
-	mbi_dec (integer_32_adr: POINTER): BOOLEAN is
-			-- Put a - 1 in the item n in the NATIVE_ARRAY t.
-			-- t.item(n) := a - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_dec"
-			}"
-		end
-
-	mbi_subtract (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract"
-			}"
-		end
-
-	mbi_subtract_with_dec (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract_with_dec"
-			}"
-		end
-
-	mbi_multiply (a, b: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply"
-			}"
-		end
-
-	mbi_multiply_with_add (a, b, c: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_add"
-			}"
-		end
-
-	mbi_multiply_with_2_add (a, b, c, d: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c + d in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_2_add"
-			}"
-		end
-
-	mbi_divide (u1, u0, d: INTEGER; r_int32adr: POINTER): INTEGER_32 is
-			-- Divide `u1u0' by `d', put the remainder in `r' and return the quotient.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_divide"
-			}"
-		end
-
-	string_buffer: STRING is
-		once
-			create Result.make(128)
-		end
-
-	unicode_string_buffer: UNICODE_STRING is
-		once
-			create Result.make(128)
-		end
-
-invariant
-	capacity > 0
-	storage.is_not_null
-	integer_length.in_range(0, capacity)
-	integer_length /= 0 implies offset.in_range(0, capacity - integer_length) and item(offset + integer_length - 1) /= 0
-	integer_length = 0 implies not negative
-	capacity.is_a_power_of_2
-
-end -- class MUTABLE_BIG_INTEGER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/low_level/fixed_real.li b/lib/number/low_level/fixed_real.li
deleted file mode 100644
index f7a838a..0000000
--- a/lib/number/low_level/fixed_real.li
+++ /dev/null
@@ -1,237 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FIXED_REAL;
-    
-  - comment := "Real number of fixed decimal part.";
-  
-Section Insert
-  
-  - parent_real:REAL := REAL;
-  
-Section SELF
-
-  - shift_bits:INTEGER <- 
-  (
-    deferred;
-    0
-  );
-  
-Section Public
-  
-  - floor:INTEGER <-
-  (
-    deferred;
-  );
-  
-  //  
-  // Conversions with tests
-  //
-  
-  //
-  // - To unsigned integers
-  //
-
-  - to_uinteger_8:UINTEGER_8     <-   
-  ( 
-    floor.to_raw_uinteger_8
-  );
-
-  - to_uinteger_16:UINTEGER_16   <- 
-  ( 
-    floor.to_raw_uinteger_16
-  );
-
-  - to_uinteger_32:UINTEGER_32   <-
-  ( 
-    floor.to_raw_uinteger_32
-  );
-
-  - to_uinteger_64:UINTEGER_64   <-   
-  ( 
-    floor.to_raw_uinteger_64
-  );
-
-  //
-  // - To signed integers
-  //
-
-  - to_integer_8:INTEGER_8   <-
-  ( 
-    floor.to_raw_integer_8
-  );
-
-  - to_integer_16:INTEGER_16 <-
-  ( 
-    floor.to_raw_integer_16
-  );
-
-  - to_integer_32:INTEGER_32 <-
-  ( 
-    floor.to_raw_integer_32
-  );
-
-  - to_integer_64:INTEGER_64 <-
-  ( 
-    floor.to_raw_integer_64
-  );
-  
-  - to_integer:INTEGER <-
-  (
-    floor
-  );
-  
-  //
-  // - To unsigned fixed reals
-  //
-
-  - to_ureal_16_16:UREAL_16_16 <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 16).if {
-      result := to_raw_uinteger_32 << (16 - shift_bits);
-    } else {
-      result := to_raw_uinteger_32 >> (shift_bits - 16);
-    };
-    result.to_raw_ureal_16_16
-  );
-
-  - to_ureal_24_8:UREAL_24_8   <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 8).if {
-      result := to_raw_uinteger_32 << (8 - shift_bits);
-    } else {
-      result := to_raw_uinteger_32 >> (shift_bits - 8);
-    };
-    result.to_raw_ureal_24_8
-  );
-
-  - to_ureal_26_6:UREAL_26_6   <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 6).if {
-      result := to_raw_uinteger_32 << (6 - shift_bits);
-    } else {
-      result := to_raw_uinteger_32 >> (shift_bits - 6);
-    };
-    result.to_raw_ureal_26_6    
-  );
-  
-  //
-  // - To signed fixed reals
-  //
-  
-  - to_real_16_16:REAL_16_16 <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 16).if {
-      result := to_raw_integer_32 << (16 - shift_bits);
-    } else {
-      result := to_raw_integer_32 >> (shift_bits - 16);
-    };
-    result.to_raw_real_16_16
-  );
-
-  - to_real_24_8:REAL_24_8   <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 8).if {
-      result := to_raw_integer_32 << (8 - shift_bits);
-    } else {
-      result := to_raw_integer_32 >> (shift_bits - 8);
-    };
-    result.to_raw_real_24_8
-  );
-
-  - to_real_26_6:REAL_26_6 <-
-  ( + result:UINTEGER_32;
-    (shift_bits < 6).if {
-      result := to_raw_integer_32 << (6 - shift_bits);
-    } else {
-      result := to_raw_integer_32 >> (shift_bits - 6);
-    };
-    result.to_raw_ureal_26_6    
-  );
-  
-  //
-  // - To float reals
-  //
-  
-  - to_real_32:REAL_32 <-
-  ( 
-    to_raw_real_32 / (1 << shift_bits)
-  );
-
-  - to_real_64:REAL_64 <-
-  ( 
-    to_raw_real_64 / (1 << shift_bits)
-  );
-
-  - to_real_80:REAL_80 <-
-  ( 
-    to_raw_real_80 / (1 << shift_bits)
-  );
-
-  - atan:SELF <- not_yet_implemented;
-
-  - sqrt:SELF <-   
-  // The Heron approximation Algorithm.
-  [ -? {Self > 0}; ]
-  ( + result:SELF;
-    result := Self;
-    0.to 7 do { j:INTEGER;    
-      result := (result + Self / result) /# 2;
-    };
-    result
-  );
-
-  - log:SELF  <- not_yet_implemented;
-
-  - sin:SELF  <- not_yet_implemented;
-
-  - cos:SELF  <- not_yet_implemented;
-
-  - pow exp:SELF :SELF <- not_yet_implemented;
-
-  //
-  // Comparaison.
-  //
-  
-  - '~=' other:SELF :BOOLEAN <-
-  (
-    Self = other
-  );
-  
-  - is_not_a_number:BOOLEAN <- FALSE;
-  
-  - is_infinity:BOOLEAN <- FALSE;
- 
-  //
-  // Print.
-  //
-        
-  - append_in buffer:STRING decimal n:INTEGER <-
-  ( 
-    not_yet_implemented;
-  );
-  
-  - scientific_append_in buffer:STRING <- 
-  ( 
-    not_yet_implemented;
-  );
-    
diff --git a/lib/number/low_level/float_map.li b/lib/number/low_level/float_map.li
deleted file mode 100644
index f7c4132..0000000
--- a/lib/number/low_level/float_map.li
+++ /dev/null
@@ -1,64 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FLOAT_MAP;
-    
-  - comment := "Mapping for REAL_xx.";
-  
-Section PRIVATE
-  
-  - deferred <- crash_with_message "Slot deferred.";
-  
-Section REAL, REAL_32, REAL_64, REAL_80
-    
-  - get_map f:SELF <-
-  (
-    deferred;
-  );
-  
-  - sign:BOOLEAN         <- deferred; // TRUE if positif, FALSE else.
-  
-  - exponent:UINTEGER_32 <- deferred;
-  
-  - mantissa:UINTEGER_64 <- deferred; 
-    
-  //
-  // Consultation.
-  //
-  
-  - is_infinite:BOOLEAN <- 
-  (exponent = ((1 << exponent_bits) - 1)) && {(mantissa >> (mantissa_bits-1)) = 0};
-  
-  - is_nan:BOOLEAN <-
-  (exponent = ((1 << exponent_bits) - 1)) && {(mantissa >> (mantissa_bits-1)) != 0};
-  
-  - is_zero:BOOLEAN <- (exponent = 0) && {mantissa = 0};
-  
-Section Public
-
-  //
-  // Format.
-  //
-  
-  - mantissa_bits:INTEGER_8 <- deferred;
-
-  - exponent_bits:INTEGER_8 <- deferred;
diff --git a/lib/number/low_level/float_map32.li b/lib/number/low_level/float_map32.li
deleted file mode 100644
index 30c4816..0000000
--- a/lib/number/low_level/float_map32.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FLOAT_MAP32;
-    
-  - comment := "Mapping for REAL_32.";
-    
-Section Inherit
-  
-  - parent_float_map:FLOAT_MAP := FLOAT_MAP;
-  
-Section Mapping
-  
-  + map_32:UINTEGER_32;
-
-Section REAL, REAL_32, REAL_64, REAL_80
-    
-  - get_map f:SELF <-
-  ( + tab:NATIVE_ARRAY[SELF];
-    tab := CONVERT[FLOAT_MAP32,NATIVE_ARRAY[SELF]].on FLOAT_MAP32;
-    tab.put f to 0;
-  );
-    
-  - sign:BOOLEAN         <- (map_32 >> 31) = 0; // TRUE if positif, FALSE else.
-  
-  - exponent:UINTEGER_32 <- (map_32 >> mantissa_bits) & 0FFh;
-  
-  - mantissa:UINTEGER_64 <- (map_32 & 7F_FFFFh);
-    
-Section Public
-
-  //
-  // Format.
-  //
-  
-  - mantissa_bits:INTEGER_8 := 23;
-
-  - exponent_bits:INTEGER_8 := 8;
-  
diff --git a/lib/number/low_level/float_map64.li b/lib/number/low_level/float_map64.li
deleted file mode 100644
index 2fcd1cd..0000000
--- a/lib/number/low_level/float_map64.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FLOAT_MAP64;
-    
-  - comment := "Mapping for REAL_64.";
-    
-Section Inherit
-  
-  - parent_float_map:FLOAT_MAP := FLOAT_MAP;
-  
-Section Mapping
-  
-  + map_64:UINTEGER_64;
-  
-Section REAL, REAL_32, REAL_64, REAL_80
-    
-  - get_map f:SELF <-
-  ( + tab:NATIVE_ARRAY[SELF];
-    tab := CONVERT[FLOAT_MAP64,NATIVE_ARRAY[SELF]].on FLOAT_MAP64;
-    tab.put f to 0;    
-  );
-    
-  - sign:BOOLEAN         <- (map_64 >> 63) = 0; // TRUE if positif, FALSE else.
-  
-  - exponent:UINTEGER_32 <- ((map_64 >> mantissa_bits) & 07_FFh).to_uinteger_32;
-  
-  - mantissa:UINTEGER_64 <- map_64 & ((1 << mantissa_bits)-1);
-    
-Section Public
-
-  //
-  // Format.
-  //
-  
-  - mantissa_bits:INTEGER_8 := 52;
-
-  - exponent_bits:INTEGER_8 := 11;
-  
diff --git a/lib/number/low_level/float_map80.li b/lib/number/low_level/float_map80.li
deleted file mode 100644
index e13d24a..0000000
--- a/lib/number/low_level/float_map80.li
+++ /dev/null
@@ -1,59 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FLOAT_MAP80;
-    
-  - comment := "Mapping for REAL_80.";
-    
-Section Inherit
-  
-  - parent_float_map:FLOAT_MAP := FLOAT_MAP;
-  
-Section Mapping
-  
-  + exp_16:UINTEGER_16;
-  + man_64:UINTEGER_64;
-  
-Section REAL, REAL_32, REAL_64, REAL_80
-    
-  - get_map f:SELF <-
-  ( + tab:NATIVE_ARRAY[SELF];
-    tab := CONVERT[FLOAT_MAP80,NATIVE_ARRAY[SELF]].on FLOAT_MAP80;
-    tab.put f to 0;        
-  );
-    
-  - sign:BOOLEAN         <- (exp_16 >> 15) = 0; // TRUE if positif, FALSE else.
-  
-  - exponent:UINTEGER_32 <- exp_16 & 07F_FFh;
-  
-  - mantissa:UINTEGER_64 <- man_64;
-  
-Section Public
-
-  //
-  // Format.
-  //
-  
-  - mantissa_bits:INTEGER_8 := 64;
-
-  - exponent_bits:INTEGER_8 := 15;
-  
diff --git a/lib/number/low_level/float_real.li b/lib/number/low_level/float_real.li
deleted file mode 100644
index 0476467..0000000
--- a/lib/number/low_level/float_real.li
+++ /dev/null
@@ -1,33 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FLOAT_REAL;
-    
-  - comment := "Real number of variable decimal part.";
-  
-  - external := `#include <math.h>`; 
-  
-Section Insert
-  
-  - parent_float_map:FLOAT_MAP := FLOAT_MAP;
-  
-  - parent_real:REAL := REAL;
diff --git a/lib/number/low_level/numeric.li b/lib/number/low_level/numeric.li
deleted file mode 100644
index ed1a66d..0000000
--- a/lib/number/low_level/numeric.li
+++ /dev/null
@@ -1,504 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name := NUMERIC;
-  
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Xavier Oswald";
-  
-  - comment     :="Generic number.";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-    
-Section Public
-
-  //
-  // Features
-  //
-  
-  - one:SELF  <- 1; // Neutral element for `*' and `/'.
-  
-  - zero:SELF <- 0; // Neutral element for `+' and `-'.
-
-  //
-  // Functions
-  // 
-  
-  - in_range low:SELF to up:SELF :BOOLEAN <- 
-  (low <= Self) && {up >= Self};
-    
-  - sign:INTEGER <-
-  // Sign of Current (0 -1 or 1).
-  ( + result:INTEGER;
-    
-    (Self > 0).if {
-      result := 1;
-    }.elseif {Self < 0} then {
-      result := -1;
-    };
-    result
-  )
-  [
-    +? {-1 <= result};
-    +? {result <= 1};    
-  ];
-
-  //
-  // binary operator :
-  //
-  
-  - '-'  Left 80  other:SELF :SELF <- `3`;
-  
-  - '*'  Left 100 other:SELF :SELF <- `4`;
-  
-  - '/'  Left 100 other:SELF :SELF <- `5`; // ? {other/=0}
-    
-  - '+'  Left 80  other:SELF :SELF <- Self - -other;
-  
-  //
-  // Unary operator
-  //
-  
-  - '+' :SELF <- Self;
-  
-  - '-' :SELF <- SELF.zero - Self;
-
-  //
-  // Compatibility Binary operator
-  //
-  
-  - '-#'  Left 80  other:INTEGER :SELF    <- Self - other;
-  
-  - '*#'  Left 100 other:INTEGER :SELF    <- Self * other;
-  
-  - '/#'  Left 100 other:INTEGER :SELF    <- Self / other;
-    
-  - '+#'  Left 80  other:INTEGER :SELF    <- Self + other;
-  
-  - '>#'  Right 60 other:INTEGER :BOOLEAN <- Self > other;
-  
-  - '<#'  Right 60 other:INTEGER :BOOLEAN <- ! (Self >=# other);
-  
-  - '<=#' Right 60 other:INTEGER :BOOLEAN <- ! (Self ># other);
-  
-  - '>=#' Right 60 other:INTEGER :BOOLEAN <- (Self ># other) | (Self ==# other);
-  
-  - '==#' Right 60 other:INTEGER :BOOLEAN <- (Self = other);
-
-  //
-  // Test binary operator :
-  //
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <- (Self = other);
-  
-  - '!==' Right 60 other:SELF :BOOLEAN <- ! (Self == other);
-  
-  - '>'   Right 60 other:SELF :BOOLEAN <- `2`;
-  
-  - '<'   Right 60 other:SELF :BOOLEAN <- ! (Self >= other);
-  
-  - '<='  Right 60 other:SELF :BOOLEAN <- ! (Self > other);
-  
-  - '>='  Right 60 other:SELF :BOOLEAN <- (Self > other) | (Self == other);
-  
-  //
-  // Switch case :
-  //
-    
-  - when value:SELF then block:BLOCK :SELF <-
-  (
-    (Self = value).if block;
-    Self
-  );
-  
-  - when value1:SELF or value2:SELF then block:BLOCK :SELF <-
-  (
-    ((Self = value1) || {Self = value2}).if block;
-    Self
-  );
-  
-  - when first_value:SELF to last_value:SELF then block:BLOCK :SELF <-
-  ( ? {first_value <= last_value};
-    
-    ((Self >= first_value) && {Self <= last_value}).if block;
-    Self
-  );
-  
-  //
-  // Looping.
-  //
-  
-  - to limit_up:SELF do blc:BLOCK <-
-  (
-    (Self <= limit_up).if {
-      blc.value Self;
-      (Self + 1).to limit_up do blc;
-    };
-  );
-  
-  - downto limit_down:SELF do blc:BLOCK <-
-  (
-    (Self >= limit_down).if {
-      blc.value Self;
-      (Self-1).downto limit_down do blc;
-    };
-  );
-  
-  - to limit_up:SELF by step:SELF do blc:BLOCK <-
-  (
-    (Self <= limit_up).if {
-      blc.value Self;
-      (Self + step).to limit_up by step do blc;
-    };
-  );
-  
-  - downto limit_down:SELF by step:SELF do blc:BLOCK <-
-  (
-    (Self >= limit_down).if {
-      blc.value Self;
-      (Self - step).downto limit_down by step do blc;
-    };
-  );
-  
-  //
-  // Function :
-  //
-  
-  - abs:SELF <- 
-  // Absolute value of `self'.
-  ( + result:SELF;
-    
-    (Self < 0).if {
-      result := - Self;
-    } else {
-      result := Self;
-    };
-    result
-  );
-  
-  - min other:SELF :SELF <-
-  ( + result:SELF;
-    
-    (Self > other).if {
-      result := other;
-    } else {
-      result := Self;
-    };
-    result
-  );
-  
-  - max other:SELF :SELF <-
-  ( + result:SELF;
-    
-    (Self > other).if {
-      result := Self;
-    } else {
-      result := other;
-    };
-    result
-  );
-  
-  //
-  // Conversion for other type.
-  //
-  
-  - to_string:STRING <-
-  // Convert the decimal view of `self' into a new allocated STRING.
-  // For example, if `self' is -1 the new STRING is -1.
-  // Note: see also `append_in' to save memory.
-  ( + result:STRING;
-    
-    result := STRING.create 11;
-    append_in result;
-    result
-  );
-  
-  - to_boolean:BOOLEAN <- Self != 0;
-  
-  - append_in buffer:STRING <- deferred;
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  
-  - to_string_format s:SELF :STRING <- 
-  // Same as `to_string' but the result is on `s' character and the
-  // number is right aligned.
-  // Note: see `append_in_format' to save memory.
-  [
-    -? {to_string.count <= s};
-  ]
-  ( + result:STRING;
-        
-    result := to_string;
-    result.precede_multiple ' ' by (s.to_integer - result.count);
-    
-    result
-  )
-  [
-    +? {Result.count = s};
-  ];
-  
-  - append_in str:STRING format s:INTEGER <-
-  // Append the equivalent of `to_string_format' at the end of
-  // `str'. Thus you can save memory because no other
-  // STRING is allocate for the job.
-  ( 
-    append_in str format s with ' ';
-  );
-
-  - append_in str:STRING format s:INTEGER with char:CHARACTER <-
-  // Append the equivalent of `to_string_format' at the end of
-  // `str'. Thus you can save memory because no other
-  // STRING is allocate for the job.
-  [
-    -? {str != NULL};
-    -? {to_string.count <= s};
-  ]
-  ( + old_count:INTEGER;
-    
-    old_count := str.count;
-    append_in str;
-    str.insert char to old_count on (s - (str.count - old_count));
-  )
-  [
-    +? {str.count = (Old str.count + s)};
-  ];
-  
-  //
-  // Print
-  //
-  
-  - print <-
-  (
-    string_tmp.clear;
-    append_in string_tmp;
-    string_tmp.print;
-  );
-  
-  - print_format s:SELF <-
-  (
-    string_tmp.clear;
-    append_in string_tmp format s;
-    string_tmp.print;
-  );
-    
-  - print_format s:SELF with c:CHARACTER <-
-  (
-    string_tmp.clear;
-    append_in string_tmp format s with c;
-    string_tmp.print;
-  );
-    
-  //
-  // Conversions with tests
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    deferred;
-    FALSE
-  );
-    
-  //
-  // - To unsigned integers
-  //
-
-  - to_uinteger_8:UINTEGER_8     <- 
- // [ -? {bound_test (UINTEGER_8.minimum) to (UINTEGER_8.maximum)}; ]
-  ( 
-    to_raw_uinteger_8
-  );
-
-  - to_uinteger_16:UINTEGER_16   <- 
-  //[ -? {bound_test (UINTEGER_16.minimum) to (UINTEGER_16.maximum)}; ]
-  ( 
-    to_raw_uinteger_16
-  );
-
-  - to_uinteger_32:UINTEGER_32   <-
-//  [ -? {bound_test (UINTEGER_32.minimum) to (UINTEGER_32.maximum)}; ]
-  ( 
-    to_raw_uinteger_32
-  );
-
-  - to_uinteger_64:UINTEGER_64   <- 
- // [ -? {bound_test (UINTEGER_64.minimum) to (UINTEGER_64.maximum)}; ]
-  ( 
-    to_raw_uinteger_64
-  );
-
-  - to_uinteger_big:UINTEGER_BIG <- 
-  ( 
-    UINTEGER_BIG.create Self
-  );
-  
-  //
-  // - To signed integers
-  //
-  
-  - to_integer:INTEGER <- to_raw_integer;  
-  
-  - to_integer_8:INTEGER_8   <-
-  [ -? {bound_test (INTEGER_8.minimum) to (INTEGER_8.maximum)}; ]
-  ( 
-    to_raw_integer_8
-  );
-
-  - to_integer_16:INTEGER_16 <-
-  [ -? {bound_test (INTEGER_16.minimum) to (INTEGER_16.maximum)}; ]
-  ( 
-    to_raw_integer_16
-  );
-
-  - to_integer_32:INTEGER_32 <-
-  [ -? {bound_test (INTEGER_32.minimum) to (INTEGER_32.maximum)}; ]
-  ( 
-    to_raw_integer_32
-  );
-
-  - to_integer_64:INTEGER_64 <-
-  //[ -? {bound_test (INTEGER_64.minimum) to (INTEGER_64.maximum)}; ]
-  ( 
-    to_raw_integer_64
-  );
-
-  - to_integer_big:UINTEGER_BIG <- 
-  ( 
-    deferred;
-    NULL
-  );
-  
-  //
-  // - To unsigned fixed reals
-  //
-
-  - to_ureal_16_16:UREAL_16_16 <-
-  [ -? {bound_test (UREAL_16_16.minimum) to (UREAL_16_16.maximum)}; ]
-  ( 
-    (Self *# 1_0000h).to_raw_ureal_16_16
-  );
-
-  - to_ureal_24_8:UREAL_24_8   <-
-  [ -? {bound_test (UREAL_24_8.minimum) to (UREAL_24_8.maximum)}; ]
-  ( 
-    (Self *# 1_00h).to_raw_ureal_24_8
-  );
-
-  - to_ureal_26_6:UREAL_26_6   <-
-  [ -? {bound_test (UREAL_26_6.minimum) to (UREAL_26_6.maximum)}; ]
-  ( 
-    (Self *# 100_0000b).to_raw_ureal_26_6
-  );
-  
-  //
-  // - To signed fixed reals
-  //
-  
-  - to_real_16_16:REAL_16_16 <-
-  [ -? {bound_test (REAL_16_16.minimum) to (REAL_16_16.maximum)}; ]
-  ( 
-    (Self *# 1_0000h).to_raw_real_16_16
-  );
-
-  - to_real_24_8:REAL_24_8   <-
-  [ -? {bound_test (REAL_24_8.minimum) to (REAL_24_8.maximum)}; ]
-  ( 
-    (Self *# 1_00h).to_raw_real_24_8
-  );
-
-  - to_real_26_6:REAL_26_6 <-
-  [ -? {bound_test (REAL_26_6.minimum) to (REAL_26_6.maximum)}; ]
-  ( 
-    (Self *# 100_0000b).to_raw_real_26_6
-  );
-  
-  //
-  // - To float reals
-  //
-  
-  - to_real:REAL <- to_raw_real;
-  
-  - to_real_32:REAL_32 <-
-  ( 
-    to_raw_real_32
-  );
-
-  - to_real_64:REAL_64 <-
-  ( 
-    to_raw_real_64
-  );
-
-  - to_real_80:REAL_80 <-
-  ( 
-    to_raw_real_80
-  );
-  
-
-Section Public
-  
-  //
-  // Convertion format without test.
-  //
-  
-  - to_raw_integer:INTEGER         <- CONVERT[SELF,INTEGER    ].on Self;
-
-  - to_raw_uinteger_8:UINTEGER_8   <- CONVERT[SELF,UINTEGER_8 ].on Self;
-
-  - to_raw_uinteger_16:UINTEGER_16 <- CONVERT[SELF,UINTEGER_16].on Self;
-
-  - to_raw_uinteger_32:UINTEGER_32 <- CONVERT[SELF,UINTEGER_32].on Self;
-
-  - to_raw_uinteger_64:UINTEGER_64 <- CONVERT[SELF,UINTEGER_64].on Self;
-  
-  - to_raw_integer_8:INTEGER_8     <- CONVERT[SELF,INTEGER_8 ].on Self;
-
-  - to_raw_integer_16:INTEGER_16   <- CONVERT[SELF,INTEGER_16].on Self;
-
-  - to_raw_integer_32:INTEGER_32   <- CONVERT[SELF,INTEGER_32].on Self;
-
-  - to_raw_integer_64:INTEGER_64   <- CONVERT[SELF,INTEGER_64].on Self;
-  
-  - to_raw_real:REAL               <- CONVERT[SELF,REAL].on Self;
-  
-  - to_raw_ureal_16_16:UREAL_16_16 <- CONVERT[SELF,UREAL_16_16].on Self;
-
-  - to_raw_ureal_24_8:UREAL_24_8   <- CONVERT[SELF,UREAL_24_8].on Self;
-
-  - to_raw_ureal_26_6:UREAL_26_6   <- CONVERT[SELF,UREAL_26_6].on Self; 
-
-  - to_raw_real_16_16:REAL_16_16   <- CONVERT[SELF,REAL_16_16].on Self;
-
-  - to_raw_real_24_8:REAL_24_8     <- CONVERT[SELF,REAL_24_8].on Self;
-
-  - to_raw_real_26_6:REAL_26_6     <- CONVERT[SELF,REAL_26_6].on Self; 
-
-  - to_raw_real_32:REAL_32         <- CONVERT[SELF,REAL_32].on Self;
-    
-  - to_raw_real_64:REAL_64         <- CONVERT[SELF,REAL_64].on Self;
-
-  - to_raw_real_80:REAL_80         <- CONVERT[SELF,REAL_80].on Self;
-
-Section Private
-  
-  - string_tmp:STRING := STRING.create 32;
-  
-
diff --git a/lib/number/low_level/signed_fixed_real.li b/lib/number/low_level/signed_fixed_real.li
deleted file mode 100644
index 0d4382e..0000000
--- a/lib/number/low_level/signed_fixed_real.li
+++ /dev/null
@@ -1,141 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := SIGNED_FIXED_REAL;
-    
-  - comment := "Signed real number of fixed decimal part.";
-  
-Section Insert
-  
-  - parent_fixed_real:FIXED_REAL := FIXED_REAL;
-  
-Section Public
-  
-  //
-  // Bound test
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    (low < to_raw_integer_64) && {up > to_raw_uinteger_64}
-  );
-  
-  //
-  // Around
-  //
-    
-  - object_size:INTEGER := 4;
-
-  - floor:INTEGER <-
-  // Greatest integral value no greater than Current.
-  (     
-    to_raw_integer_32 >> shift_bits    
-  )
-  [
-    +? {Self <= Result};
-    +? {(Self - Result) < 1};
-  ];
-  
-  - ceiling:INTEGER <-
-  // Smallest integral value no smaller than Current.
-  (    
-    (to_raw_integer_32 + ((1 << shift_bits) - 1)) >> shift_bits    
-  )
-  [
-    +? {Self >= Result};
-    +? {(Self - Result) < 1};
-  ];
-  
-  - rounded:INTEGER <-
-  // Rounded integral value.
-  (
-    (to_raw_integer_32 + ((1 << shift_bits) / 2)) >> shift_bits
-  );
-  
-  - truncated_to_integer:INTEGER <- floor;
-  // Integer part (largest absolute value no greater than Current).
-  
-  //
-  // binary operator :
-  //
-  
-  - '-'  Left 80  other:SELF :SELF <- 
-  (
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 - other.to_raw_integer_32)
-  );
-
-  - '*#' Left 100 other:INTEGER :SELF <- 
-  (    
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 * other)
-  );
-  
-  - '*'  Left 100 other:SELF :SELF <- 
-  (
-    CONVERT[INTEGER_64,SELF].on ((to_raw_integer_64 * other.to_raw_integer_64) >> shift_bits)
-  );
-  
-  - '/#' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 / other)
-  );
-  
-  - '/'  Left 100 other:SELF :SELF <- 
-  (
-    CONVERT[INTEGER_64,SELF].on ((to_raw_integer_64 << shift_bits) / other.to_raw_integer_64)
-  );
-  
-  - '&'  Left 100 other:SELF :SELF <-
-  (
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 & other.to_raw_integer_32)
-  );
-  
-  - '>>' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 >> other)
-  );
-  
-  - '<<' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[INTEGER_32,SELF].on (to_raw_integer_32 << other)
-  );
-  
-  //
-  // Test binary operator :
-  //
-  
-  - '>' Right 60 other:SELF :BOOLEAN <- 
-  (
-    to_raw_integer_32 > other.to_raw_integer_32
-  );
-  
-  //
-  // prefix : Unary operator
-  //
-  
-  - '~' :SELF <- 
-  (
-    CONVERT[INTEGER_32,SELF].on (~ to_raw_integer_32)
-  );
-    
-
-
-
diff --git a/lib/number/low_level/signed_integer.li b/lib/number/low_level/signed_integer.li
deleted file mode 100644
index 7fe972b..0000000
--- a/lib/number/low_level/signed_integer.li
+++ /dev/null
@@ -1,112 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := SIGNED_INTEGER;
-  
-  - comment := "Generic Signed Integer.";
-  
-Section Insert
-  
-  - parent_integer:INTEGER := INTEGER;
-  
-Section Public
-    
-  - append_in buffer:STRING <-
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  [ -? {buffer!=NULL}; ]
-  ( + val:SELF;
-    + i,j:INTEGER;
-        
-    (Self = 0).if {
-      buffer.extend '0';
-    } else {
-      (Self > 0).if {
-	val := Self;
-      } else {
-	val := - Self;
-	buffer.extend '-';
-      };
-      
-      i := buffer.upper+1;
-      
-      {val = 0}.until_do {	
-	buffer.extend ((val % 10).digit);
-	val := val / 10;
-      };
-      
-      j := buffer.upper;
-      {i >= j}.until_do {
-	buffer.swap i with j;
-	j := j - 1;
-	i := i + 1;
-      };      
-    };
-  );
-  
-  - to_octal:SELF <-
-  // Gives coresponding octal value.
-  ( + result, unit, current:SELF;
-    
-    (Self < 0).if {
-      result := -((-Self).to_octal);
-    } else {
-      current := Self;
-      unit := 1;
-      {current != 0}.while_do {
-	result := result + ((current & 7)*unit);
-	unit := (unit << 3) + (unit << 1);
-	current := current >> 3;
-      };
-    };
-    result
-  );
-  
-  //
-  // Hashing:
-  //
-  
-  - hash_code:INTEGER <-
-  ( + result:INTEGER;
-    
-    (Self < 0).if {
-      result := ~ Self;
-    } else {
-      result := Self;
-    };
-        
-    result
-  )
-  [
-    +? {Result>=0};
-  ];
-  
-  //
-  // Bound test
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    (low < to_raw_integer_64) && {up > to_raw_uinteger_64}
-  );
-
-  
\ No newline at end of file
diff --git a/lib/number/low_level/unsigned_fixed_real.li b/lib/number/low_level/unsigned_fixed_real.li
deleted file mode 100644
index 21b6fae..0000000
--- a/lib/number/low_level/unsigned_fixed_real.li
+++ /dev/null
@@ -1,144 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := UNSIGNED_FIXED_REAL;
-    
-  - comment := "Unsigned real number of fixed decimal part.";
-  
-Section Inherit
-  
-  - parent_fixed_real:FIXED_REAL := FIXED_REAL;
-  
-Section Public
-  
-  //
-  // Bound test
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    (up > to_raw_uinteger_64)
-  );
-  
-  //
-  // Around
-  //
-  
-  - object_size:INTEGER := 4;
-  
-  - minimum:INTEGER_64 <- 0; 
-
-  - floor:INTEGER <-
-  // Greatest integral value no greater than Current.
-  (     
-    to_raw_uinteger_32 >> shift_bits    
-  )
-  [
-    +? {Self <= Result};
-    +? {(Self - Result) < 1};
-  ];
-  
-  - ceiling:INTEGER <-
-  // Smallest integral value no smaller than Current.
-  (    
-    (to_raw_uinteger_32 + ((1 << shift_bits) - 1)) >> shift_bits    
-  )
-  [
-    +? {Self >= Result};
-    +? {(Self - Result) < 1};
-  ];
-  
-  - rounded:INTEGER <-
-  // Rounded integral value.
-  (
-    (to_raw_uinteger_32 + ((1 << shift_bits) / 2)) >> shift_bits
-  );
-  
-  - truncated_to_integer:INTEGER <- floor;
-  // Integer part (largest absolute value no greater than Current).
-  
-  //
-  // binary operator :
-  //
-  
-  - '-'  Left 80  other:SELF :SELF <- 
-  (
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 - other.to_raw_uinteger_32)
-  );
-
-  - '*#' Left 100 other:INTEGER :SELF <- 
-  (    
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 * other)
-  );
-  
-  - '*'  Left 100 other:SELF :SELF <- 
-  (
-    CONVERT[UINTEGER_64,SELF].on ((to_raw_uinteger_64 * other.to_raw_uinteger_64) >> shift_bits)
-  );
-  
-  - '/#' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 / other)
-  );
-  
-  - '/'  Left 100 other:SELF :SELF <- 
-  (
-    CONVERT[UINTEGER_64,SELF].on ((to_raw_uinteger_64 << shift_bits) / other.to_raw_uinteger_64)
-  );
-  
-  - '&'  Left 100 other:SELF :SELF <-
-  (
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 & other.to_raw_uinteger_32)
-  );
-  
-  - '>>' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 >> other)
-  );
-  
-  - '<<' Left 100 other:INTEGER :SELF <- 
-  (
-    CONVERT[UINTEGER_32,SELF].on (to_raw_uinteger_32 << other)
-  );
-  
-  //
-  // Test binary operator :
-  //
-  
-  - '>'   Right 60 other:SELF :BOOLEAN <- 
-  (
-    to_raw_uinteger_32 > other.to_raw_uinteger_32
-  );
-  
-  //
-  // prefix : Unary operator
-  //
-  
-  - '~' :SELF <- 
-  (
-    CONVERT[UINTEGER_32,SELF].on (~ to_raw_uinteger_32)
-  );
-    
-
-
-
-
diff --git a/lib/number/low_level/unsigned_integer.li b/lib/number/low_level/unsigned_integer.li
deleted file mode 100644
index 7f9d7ac..0000000
--- a/lib/number/low_level/unsigned_integer.li
+++ /dev/null
@@ -1,137 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := UNSIGNED_INTEGER;
-  
-  - comment := "Generic Unsigned Integer.";
-  
-Section Insert
-  
-  - parent_integer:INTEGER := INTEGER;
-  
-Section Public
-  
-  //
-  // Range
-  //
-  
-  - minimum:INTEGER_64 := 0.to_raw_integer_64;
-  
-  //
-  // Function :
-  //
-  
-  - sign:INTEGER <-
-  // Sign of Current (0 -1 or 1).
-  (     
-    (Self != 0).to_integer;    
-  );
-  
-  - abs:SELF <- Self;	// Absolute value of `self'.
-  
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <-
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:SELF;
-    + i,j:INTEGER;
-    ? {buffer!=NULL};
-    
-    (Self = 0).if {
-      buffer.extend '0';
-    } else {
-      
-      i := buffer.upper+1;
-      
-      val := Self;
-      {val = 0}.until_do {
-	buffer.extend ((val % 10).digit);
-	val := val / 10;
-      };
-      j := buffer.upper;
-            
-      {i >= j}.until_do {
-	buffer.swap i with j;
-	j := j - 1;
-	i := i + 1;
-      };
-
-    };
-  );
-  
-  - print <-
-  (    
-    print_positif;
-  );
-  
-  - to_octal:SELF <-
-  // Gives coresponding octal value.
-  ( + result, unit, current:SELF;
-    
-    current := Self;
-    unit := 1;
-    {current!=0}.while_do {
-      result := result + ((current & 7)*unit);
-      unit := (unit << 3) + (unit << 1);
-      current := current >> 3;
-    };
-    result
-  );
-  
-  //
-  // Hashing:
-  //
-  
-  - hash_code:INTEGER <- to_integer;
-  
-  //
-  // Looping
-  //
-  
-  - downto limit_down:SELF do blc:BLOCK <-
-  (
-    (Self+1).downto_unsigned limit_down do blc; 
-  );
-  
-  //
-  // Bound test
-  //
-  
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
-  (
-    (up > to_raw_uinteger_64)
-  );
-  
-Section Private
-
-  - downto_unsigned limit_down:SELF do blc:BLOCK <-
-  (
-    (Self > limit_down).if {
-      blc.value (Self - 1);
-      (Self - 1).downto_unsigned limit_down do blc;
-    };
-  );
-
-  
\ No newline at end of file
diff --git a/lib/number/mutable_big_integer.e b/lib/number/mutable_big_integer.e
deleted file mode 100755
index 6578b27..0000000
--- a/lib/number/mutable_big_integer.e
+++ /dev/null
@@ -1,3262 +0,0 @@
--- See the Copyright notice at the end of this file.
---
-class MUTABLE_BIG_INTEGER
-	--
-	-- A class used to represent multiprecision integers that makes efficient use
-	-- of allocated space by allowing a number to occupy only part of an array so
-	-- that the arrays do not have to be reallocated as often. When performing an
-	-- operation with many iterations the array used to hold a number is only
-	-- reallocated when necessary and does not have to be the same size as the
-	-- number it represents. A mutable number allows calculations to occur on the
-	-- same number without having to create a new number for every step of the
-	-- calculation as it occurs with NUMBERs.
-	--
-
-inherit
-	HASHABLE
-		redefine copy, fill_tagged_out_memory, out_in_tagged_out_memory
-		end
-	COMPARABLE
-		redefine copy, fill_tagged_out_memory, out_in_tagged_out_memory, is_equal
-		end
-
-insert
-	PLATFORM
-		redefine copy, fill_tagged_out_memory, out_in_tagged_out_memory, is_equal
-		end
-
-creation {ANY}
-	from_integer, from_integer_64, from_string, copy
-
-feature {ANY} -- Creation / initialization from INTEGER_32 or INTEGER_64:
-	from_integer (value: INTEGER) is
-			-- Create or initialize `Current' using `value' as an initializer.
-		do
-			if capacity = 0 then
-				storage := storage.calloc(4)
-				capacity := 4
-			end
-			offset := 0
-			if value > 0 then
-				negative := False
-				put(value, 0)
-				integer_length := 1
-			elseif value < 0 then
-				negative := True
-				put(#-value, 0)
-				integer_length := 1
-			else
-				check
-					value = 0
-				end
-				set_with_zero
-			end
-		ensure
-			to_integer_32 = value
-		end
-
-	is_integer_32: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_32?
-		do
-			if integer_length = 0 then
-				Result := True
-			elseif integer_length = 1 then
-				if item(offset) > 0 then
-					Result := True
-				elseif negative then
-					Result := item(offset) = 0x80000000
-				end
-			end
-		ensure
-			Result implies is_integer_64
-			Result implies integer_length <= 1
-		end
-
-	is_integer: BOOLEAN is
-		obsolete "Now use `is_integer_32' instead (march 2006)."
-		do
-			Result := is_integer_32
-		end
-	
-	to_integer_32: INTEGER is
-			-- Convert `Current' as a 32 bit INTEGER.
-		require
-			is_integer_32
-		do
-			if integer_length > 0 then
-				Result := item(offset)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-	
-	to_integer: INTEGER is
-		obsolete "Now use `to_integer_32' instead (march 2006)."
-		do
-			Result := to_integer_32
-		end
-	
-	from_integer_64 (value: INTEGER_64) is
-			-- Create or set `Current' using `value' as an initializer.
-		local
-			v32: INTEGER
-		do
-			if capacity < 2 then
-				storage := storage.calloc(4)
-				capacity := 4
-			end
-			if value > 0 then
-				negative := False
-				put(value.low_32, 0)
-				offset := 0
-				v32 := value.high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			elseif value < 0 then
-				negative := True
-				put((#-value).low_32, 0)
-				offset := 0
-				v32 := (#-value).high_32
-				if v32 = 0 then
-					integer_length := 1
-				else
-					put(v32, 1)
-					integer_length := 2
-				end
-			else
-				check
-					value = 0
-				end
-				set_with_zero
-			end
-		ensure
-			to_integer_64 = value
-		end
-
-	is_integer_64: BOOLEAN is
-			-- Does `Current' fit on an INTEGER_64?
-		do
-			if integer_length <= 1 then
-				Result := True
-			elseif integer_length = 2 then
-				if negative then
-					if item(offset + 1) > 0 then
-						Result := True
-					elseif item(offset) = 0 then
-						Result := item(offset + 1) = 0x80000000
-					end
-				else
-					Result := item(offset + 1) > 0
-				end
-			end
-		ensure
-			not Result implies not is_integer_32
-			Result implies integer_length <= 2
-		end
-
-	to_integer_64: INTEGER_64 is
-			-- Convert `Current' as a INTEGER_64.
-		require
-			is_integer_64
-		local
-			v: INTEGER_64
-		do
-			inspect
-				integer_length
-			when 0 then
-			when 1 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				if negative then
-					Result := -Result
-				end
-			when 2 then
-				Result := unsigned_32_to_integer_64(item(offset))
-				v := item(offset + 1)
-				v := v.bit_shift_left(32)
-				Result := Result.bit_xor(v)
-				if negative then
-					Result := #-Result
-				end
-			end
-		end
-
-feature {ANY} -- Creation / initialization from STRING:
-	from_string (str: STRING) is
-			-- Create or initialize `Current' using `value' as an
-			-- initializer. (value = [-][0-9]^+)
-		local
-			i: INTEGER; cc: CHARACTER; neg: BOOLEAN; ten: like Current
-		do
-			--|*** This feature should be improved one day... (Vincent Croizier, 25/12/2004)
-			create ten.from_integer(10)
-			from
-				i := 1
-			variant
-				str.count - i
-			until
-				not str.item(i).is_separator
-			loop
-				i := i + 1
-			end
-			cc := str.item(i)
-			i := i + 1
-			if cc = '+' then
-				cc := str.item(i)
-				i := i + 1
-			elseif cc = '-' then
-				neg := True
-				cc := str.item(i)
-				i := i + 1
-			end
-			check
-				cc.is_digit
-			end
-			from_integer(cc.value)
-			from
-			variant
-				str.count - i
-			until
-				i > str.count
-			loop
-				cc := str.item(i)
-				if cc.is_digit then
-					multiply(ten)
-					add_integer(cc.value)
-				else
-					check
-						cc.is_separator
-					end
-					i := str.count -- terminate the loop
-				end
-				i := i + 1
-			end
-			if neg then
-				negate
-			end
-		end
-
-feature {ANY} -- Conversion tool
-	force_to_real_64: REAL_64 is
-			-- only a tool
-			-- unsigned conversion *** require ou changer export ? *** (Dom Oct 4th 2004) ***
-		local
-			i: INTEGER
-		do
-			from
-				i := offset + integer_length - 1
-			until
-				i < offset or else Result > Maximum_real_64
-			loop
-				Result := Result * Real_base + unsigned_32_to_integer_64(storage.item(i)).force_to_real_64
-				i := i - 1
-			end
-			if Result = Maximum_real_64 and then storage.item(offset) /= 0 then
-				Result := Maximum_real_64 * 2
-			end
-			if negative then
-				Result := -Result
-			end
-		end
-
-feature {NUMBER}
-	from_native_array (na: NATIVE_ARRAY[INTEGER]; cap: INTEGER; neg: BOOLEAN) is
-		require
-			na.item(cap - 1) /= 0
-		do
-			negative := neg
-			offset := 0
-			integer_length := cap
-			if cap > capacity then
-				capacity := capacity_from_lower_bound(capacity, cap)
-				storage := storage.calloc(capacity)
-			end
-			storage.slice_copy(0, na, 0, cap - 1)
-		end
-
-	to_integer_general_number: INTEGER_GENERAL_NUMBER is
-		local
-			na: like storage
-		do
-			if is_integer_64 then
-				create {INTEGER_64_NUMBER} Result.make(to_integer_64)
-			else
-				na := storage.calloc(integer_length)
-				na.slice_copy(0, storage, offset, offset + integer_length - 1)
-				create {BIG_INTEGER_NUMBER} Result.from_native_array(na, integer_length, negative)
-			end
-		end
-
-feature {ANY} -- Addition:
-	add (other: like Current) is
-			-- Add `other' into `Current'.
-			--
-			-- See also `add_integer', `add_integer_64', `add_natural'.
-		require
-			other /= Void
-		do
-			-- Choose the appropriate absolute operator depending on `Current' and `other' sign.
-			if other.integer_length = 0 then
-				-- Nothing to do, `Current' remains unchanged.
-			elseif integer_length = 0 then
-				-- `Current' is zero so simply copy the value of other
-				Current.copy(other)
-			elseif negative = other.negative then
-				-- same sign
-				add_magnitude(other)
-			else
-				-- different sign
-				subtract_magnitude(other)
-			end
-		end
-
-	add_to (other, res: like Current) is
-			-- Add `other' and `Current', and put the result in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.add(other)
-		end
-
-	add_integer (other: INTEGER) is
-			-- Add `other' into `Current'.
-		local
-			inc: BOOLEAN; v, i, n: INTEGER
-		do
-			if other = 0 then
-				-- Nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- `Current' is null so simply copy the value of other
-				from_integer(other)
-			elseif negative = (other < 0) then
-				-- Same sign
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				-- Add `v' into `storage'
-				from
-					inc := mbi_add(item(offset), v, storage_at(storage, offset))
-					i := offset + 1
-					n := offset + integer_length
-				until
-					not inc or else i >= n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					check
-						i = n
-					end
-					-- Extend the number length by 1
-					if n < capacity then
-						integer_length := integer_length + 1
-						put(1, n)
-					else
-						-- It's good only if the reallocation initialize
-						-- `storage' with 0.
-						v := item(offset)
-						capacity := capacity * 2
-						storage := storage.calloc(capacity)
-						offset := 0
-						put(v, 0)
-						put(1, integer_length)
-						integer_length := integer_length + 1
-					end
-				end
-				-- Different sign
-			elseif integer_length = 1 then
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					negative := not negative
-					put(-item(offset), offset)
-				end
-				if item(offset) = 0 then
-					integer_length := 0
-					negative := False
-				end
-			else
-				if other < 0 then
-					v := #-other
-				else
-					v := other
-				end
-				if mbi_subtract(item(offset), v, storage_at(storage, offset)) then
-					from
-						i := offset + 1
-						inc := mbi_dec(storage_at(storage, i))
-						n := offset + integer_length - 1
-					until
-						not inc
-					loop
-						check
-							i < n
-						end
-						i := i + 1
-						inc := mbi_dec(storage_at(storage, i))
-					end
-					if item(n) = 0 then
-						integer_length := integer_length - 1
-					end
-				end
-			end
-		end	
-
-	add_integer_64 (other: INTEGER_64) is
-			-- Add `other' into `Current'.
-		do
-			register1.from_integer_64(other)
-			add(register1)
-		end
-
-	add_natural (other: like Current) is
-			-- Same behavior as `add', but this one works only when `Current'
-			-- and `other' are both positive numbers and are both greater than
-			-- zero. The only one advantage of using `add_natural' instead of the
-			-- general `add' is the gain of efficiency.
-		require
-			not is_zero and not is_negative
-			not other.is_zero and not other.is_negative
-		do
-			add_magnitude(other)
-		end
-
-feature {ANY} -- Subtract:
-	subtract (other: like Current) is
-			-- Subtract `other' from `Current'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				set_with_zero
-			elseif other.integer_length = 0 then
-				-- nothing to do, `Current' remains unchanged
-			elseif integer_length = 0 then
-				-- current is null so simply copy the value of other, the sign is also fixed
-				copy(other)
-				negative := not other.negative
-			elseif negative = other.negative then
-				-- same sign
-				subtract_magnitude(other)
-			else
-				-- different sign
-				add_magnitude(other)
-			end
-		end
-
-	subtract_to (other, res: like Current) is
-			-- Subtract `other' from `Current' and put it in `res'.
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-			res /= other
-		do
-			--|*** Must be optimized later (Vincent Croizier, 15/07/04) ***
-			res.copy(Current)
-			res.subtract(other)
-		end
-
-	subtract_integer (other: INTEGER) is
-		do
-			if other = Minimum_integer then
-				add_integer(1)
-				add_integer(Maximum_integer)
-			else
-				add_integer(-other)
-			end
-		end
-
-feature {ANY} -- To divide:
-	divide (other: like Current) is
-			-- Put the the quotient of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		do
-			-- `divide_with_remainder_to' already use `register1'.
-			divide_with_remainder_to(other, register2)
-		end
-
-	mod (other: like Current) is
-			-- Put the the remainder of the Euclidian division of
-			-- `Current' by `other' in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			other /= Current
-		local
-			quotient: like Current
-		do
-			--|*** Must be optimized (Vincent Croizier, 12/07/04) ***
-			create quotient.from_integer(0)
-			remainder_with_quotient_to(other, quotient)
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_with_remainder_to (other, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Quotient is put in `Current'.
-			-- (The contents of `other' is not changed.)
-		require
-			not other.is_zero
-			remainder /= Void
-			remainder /= other
-			remainder /= Current
-		do
-			Current.remainder_with_quotient_to(other, remainder)
-			Current.swap_with(remainder)
-		ensure
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	remainder_with_quotient_to (other, quotient: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'.
-			-- Remainder is put in `Current'.
-			-- (The contents of `other' is not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			quotient /= other
-			quotient /= Current
-		local
-			cmp, shift, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER; qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER
-			q_storage, d_storage: like storage; q_capacity: like capacity; current_negative, borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				set_with_zero
-			else
-				current_negative := negative
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					-- Sign correction
-					set_negative(False)
-					divide_sign_correction_bis(other, quotient, current_negative)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.swap_with(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						put(rem, 0)
-						set_integer_length(1)
-					else
-						check
-							is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := offset + integer_length - 1
-						u2 := storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := integer_length - dlen
-							qlen := k + 1
-						else
-							qlen := integer_length - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := storage.item(j + 1)
-						u2 := storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						set_with_zero
-					else
-						offset := 0
-						integer_length := j
-						negative := False
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction_bis(other, quotient, current_negative)
-				end
-			end
-		ensure
-			not negative and abs_compare(other) = -1
-		end
-
-	divide_to (other, quotient, remainder: like Current) is
-			-- Euclidian division.
-			-- Calculates the `quotient' and `remainder' of `Current'
-			-- divided by `other'. (The contents of `Current' and `other' are
-			-- not changed.)
-			--
-			-- Note: Uses Algorithm D in Knuth section 4.3.1.
-		require
-			not other.is_zero
-			quotient /= Void
-			remainder /= Void
-			quotient /= other
-			quotient /= Current
-			remainder /= other
-			remainder /= Current
-		local
-			cmp, shift, nlen, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER
-			qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER; q_storage, r_storage, d_storage: like storage
-			q_capacity, r_capacity: like capacity; borrow: BOOLEAN
-		do
-			if integer_length = 0 then
-				-- Dividend is zero:
-				quotient.set_with_zero
-				remainder.set_with_zero
-			else
-				cmp := Current.abs_compare(other)
-				if cmp < 0 then
-					-- Dividend less than divisor:
-					quotient.set_with_zero
-					remainder.copy(Current)
-					-- Sign correction
-					remainder.set_negative(False)
-					divide_sign_correction(other, quotient, remainder)
-				elseif cmp = 0 then
-					-- Dividend equal to divisor:
-					if negative = other.negative then
-						quotient.from_integer(1)
-					else
-						quotient.from_integer(-1)
-					end
-					remainder.set_with_zero
-				elseif other.integer_length = 1 then
-					-- Special case one word divisor:
-					quotient.copy(Current)
-					--|*** replace by "from_unsigned_integer" ? (Vincent Croizier)
-					remainder.set_with_zero
-					rem := quotient.divide_one_word(other.item(other.offset))
-					if rem /= 0 then
-						remainder.put(rem, 0)
-						remainder.set_ilo(1, 0)
-					else
-						check
-							remainder.is_zero
-						end
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				else
-					-- Copy divisor storage to protect divisor:
-					register1.copy(other)
-					--|***
-					remainder.copy(Current)
-					-- D1 normalize the divisor:
-					shift := register1.normalize
-					if shift /= 0 then
-						remainder.shift_left(shift)
-					end
-					-- D2 Initialize j:
-					from
-						r_storage := remainder.storage
-						r_capacity := remainder.capacity
-						check
-							remainder.offset = 0
-						end
-						nlen := remainder.integer_length -- To avoid invariant class violation
-						remainder.set_with_zero
-						d_storage := register1.storage
-						d_offset := register1.offset
-						dlen := register1.integer_length
-						j := nlen - 1
-						u2 := r_storage.item(j)
-						k := register1.offset + dlen - 1
-						v1 := register1.item(k)
-						v2 := register1.item(k - 1)
-						if unsigned_greater_or_equal(u2, v1) then
-							k := nlen - dlen
-							qlen := k + 1
-						else
-							qlen := nlen - dlen
-							k := qlen - 1
-							j := j - 1
-							u1 := u2
-							u2 := r_storage.item(j)
-						end
-						-- Resize quotient if necessary
-						q_capacity := quotient.capacity
-						if q_capacity < qlen then
-							-- reallocation
-							q_capacity := capacity_from_lower_bound(q_capacity, qlen)
-							q_storage := storage.calloc(q_capacity)
-						else
-							q_storage := quotient.storage
-						end
-						-- To avoid invariant violation on `quotient'
-						quotient.set_with_zero
-					until
-						k < 0
-					loop
-						j := j - 1 -- D3 Calculate qhat - estimate qhat
-						if u1 = v1 then
-							qhat := ~0
-						else
-							qhat := mbi_divide(u1, u2, v1, $rhat) -- Correct qhat
-							if qhat = 0 then
-							else
-								v2qhat_1 := mbi_multiply(v2, qhat, $v2qhat_2)
-								if unsigned_greater_than(v2qhat_1, rhat) then
-									qhat := qhat - 1
-									if mbi_subtract(v2qhat_2, v2, $v2qhat_2) then
-										v2qhat_1 := v2qhat_1 - 1
-									end
-									if mbi_add(rhat, v1, $rhat) then
-									elseif unsigned_greater_than(v2qhat_1, rhat) then
-										qhat := qhat - 1
-									elseif j < 0 then
-										if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-											qhat := qhat - 1
-										end
-									elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-										qhat := qhat - 1
-									end
-								elseif j < 0 then
-									if v2qhat_1 = rhat and then v2qhat_2 /= 0 then
-										qhat := qhat - 1
-									end
-								elseif v2qhat_1 = rhat and then unsigned_greater_than(v2qhat_2, r_storage.item(j)) then
-									qhat := qhat - 1
-								end
-							end
-						end
-						-- D4 Multiply and subtract:
-						if qhat = 0 then
-							q_storage.put(0, k)
-						else
-							borrow := multiply_and_subtract(u1, qhat, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-							-- D5 Test remainder: Result is negative ?
-							if borrow then
-								-- D6 Add back
-								borrow := add_back(u1, d_storage, d_offset, r_storage, j - dlen + 2, dlen)
-								check
-									borrow
-								end
-								q_storage.put(qhat - 1, k)
-							else
-								q_storage.put(qhat, k)
-							end
-						end
-						-- D7 loop on j
-						k := k - 1
-						u1 := r_storage.item(j + 1)
-						u2 := r_storage.item(j)
-					end
-					-- Remove leading zero of quotient
-					k := qlen - 1
-					if q_storage.item(k) = 0 then
-						qlen := k
-					end
-					quotient.set_all(q_storage, q_capacity, qlen, 0, False)
-					-- Remove leading zero of remainder
-					from
-						j := dlen - 1
-					until
-						j < 0 or else r_storage.item(j) /= 0
-					loop
-						j := j - 1
-					end
-					j := j + 1
-					check
-						j >= 0
-					end
-					if j = 0 then
-						check
-							remainder.is_zero
-						end
-					else
-						remainder.set_all(r_storage, r_capacity, j, 0, False)
-					end
-					-- D8 Unnormalize:
-					if shift > 0 then
-						remainder.shift_right(shift)
-					end
-					-- Sign correction
-					divide_sign_correction(other, quotient, remainder)
-				end
-			end
-		ensure
-			is_a_good_divide(other, quotient, remainder)
-			not remainder.negative and remainder.abs_compare(other) = -1
-		end
-
-	shift_left (n: INTEGER) is
-			-- Shift bits of magnitude by `n' position left. (Note that no bit can
-			-- be lost because the `storage' area is automatically extended when
-			-- it is necessary.)
-		require
-			n > 0
-		local
-			new_storage: like storage; left, right: INTEGER_8
-			new_capacity, new_integer_length, new_head, word_shift, i, j, k, val1, val2, val3: INTEGER
-		do
-			if integer_length > 0 then
-				word_shift := n |>>> 5
-				left := (n & 0x0000001F).to_integer_8 -- Optimistic prediction
-				new_integer_length := integer_length + word_shift
-				if left = 0 then
-					-- Just word shift
-					if offset >= word_shift then
-						-- no need to deplace the number in the storage
-						from
-							i := offset
-							offset := offset - word_shift
-							integer_length := new_integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							put(0, i)
-						end
-					elseif capacity >= new_integer_length then
-						-- deplacing the number
-						from
-							i := offset + integer_length - 1
-							j := word_shift + integer_length - 1
-						until
-							i < offset
-						loop
-							put(item(i), j)
-							i := i - 1
-							j := j - 1
-						end
-						from
-							check
-								j = word_shift - 1
-							end
-						until
-							j < 0
-						loop
-							put(0, j)
-							j := j - 1
-						end
-						offset := 0
-						integer_length := new_integer_length
-					else
-						-- reallocation
-						new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-						new_storage := storage.calloc(new_capacity)
-						from
-							i := offset + integer_length
-							j := word_shift + integer_length
-						until
-							i = offset
-						loop
-							i := i - 1
-							j := j - 1
-							new_storage.put(item(i), j)
-						end
-						storage := new_storage
-						capacity := new_capacity
-						offset := 0
-						integer_length := new_integer_length
-					end
-				else
-					right := 32 - left -- Compute real `integer_length'
-					i := offset + integer_length - 1
-					val1 := item(i)
-					new_head := val1 |>>> right
-					if new_head = 0 then
-						-- new_integer_length is good
-						if capacity < new_integer_length then
-							-- reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-									j = word_shift
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 1
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					else
-						new_integer_length := new_integer_length + 1
-						if capacity < new_integer_length then
-							-- Reallocation
-							new_capacity := capacity_from_lower_bound(capacity, new_integer_length)
-							new_storage := storage.calloc(new_capacity)
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-								new_storage.put(new_head, j + 1)
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								new_storage.put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							new_storage.put(val1 |<< left, j)
-							storage := new_storage
-							capacity := new_capacity
-							offset := 0
-							integer_length := new_integer_length
-						elseif offset > word_shift then
-							from
-								check
-									j = 0
-								end
-							until
-								j = word_shift
-							loop
-								put(0, j)
-								j := j + 1
-							end
-							from
-								k := offset
-								check
-									i = offset + integer_length - 1
-								end
-							until
-								k = i
-							loop
-								val3 := item(k)
-								put(val3 |<< left | (val2 |>>> right), j)
-								val2 := val3
-								k := k + 1
-								j := j + 1
-							end
-							put(val1 |<< left | (val2 |>>> right), j)
-							put(new_head, j + 1)
-							offset := 0
-							integer_length := new_integer_length
-						else
-							from
-								j := new_integer_length - 2
-								check
-									i = offset + integer_length - 1
-									j = word_shift + integer_length - 1
-									val1 = item(i)
-								end
-							until
-								i = offset
-							loop
-								i := i - 1
-								val2 := item(i)
-								put(val1 |<< left | (val2 |>>> right), j)
-								val1 := val2
-								j := j - 1
-							end
-							put(val1 |<< left, j)
-							put(new_head, new_integer_length - 1)
-							from
-							until
-								j = 0
-							loop
-								j := j - 1
-								put(0, j)
-							end
-							offset := 0
-							integer_length := new_integer_length
-						end
-					end
-				end
-			end
-		end
-
-	shift_right (n: INTEGER) is
-			-- Right shift `Current' n bits. (`Current' is left in normal form.)
-		require
-			n > 0
-		local
-			n_ints, n_bits: INTEGER
-		do
-			if integer_length > 0 then
-				n_ints := n |>>> 5
-				n_bits := n & 0x0000001F
-				integer_length := integer_length - n_ints
-				offset := offset + n_ints
-				if n_bits = 0 then
-				else
-					primitive_shift_right(n_bits.to_integer_8)
-				end
-			end
-		end
-
-feature {ANY} -- GCD
-	gcd (other: like Current) is
-			-- Compute GCD of `Current' and `other'.
-			-- GCD is put in `Current' (`other' is not modified).
-		require
-			other /= Void
-		do
-			if other = Current then
-				Current.abs
-			elseif other.is_zero then
-				Current.abs
-			elseif Current.is_zero then
-				Current.copy(other)
-				Current.abs
-			else
-				from
-					register2.copy(other)
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-						Current.abs
-					else
-						register2.mod(Current)
-					end
-				until
-					register2.is_zero
-				loop
-					Current.mod(register2)
-					if Current.is_zero then
-						Current.swap_with(register2)
-					else
-						register2.mod(Current)
-					end
-				end
-			end
-		ensure
-			is_positive or is_zero and other.is_zero
-		end
-
-feature {ANY} -- To multiply:
-	multiply (other: like Current) is
-			-- Multiply `Current' by `other'.
-		require
-			other /= Void
-		do
-			if other = Current then
-				multiply_to(other, register1)
-				swap_with(register1)
-			elseif is_zero or other.is_zero then
-				set_with_zero
-			elseif Current.is_one then
-				copy(other)
-			elseif other.is_one then
-			elseif Current.is_one_negative then
-				copy(other)
-				set_negative(not negative)
-			elseif other.is_one_negative then
-				set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 09/07/04)
-				multiply_like_human(other)
-			end
-		end
-
-	multiply_to (other, res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' and `other' are not modified.)
-		require
-			other /= Void
-			res /= Void
-			res /= Current
-		do
-			if is_zero or other.is_zero then
-				res.set_with_zero
-			elseif Current.is_one then
-				res.copy(other)
-			elseif other.is_one then
-				res.copy(Current)
-			elseif Current.is_one_negative then
-				res.copy(other)
-				res.set_negative(not res.negative)
-			elseif other.is_one_negative then
-				res.copy(Current)
-				res.set_negative(not negative)
-			else
-				--|*** Must be replace by an algorithm switch. (Vincent Croizier, 01/05/04)
-				multiply_to_like_human(other, res)
-			end
-		end
-
-	multiply_integer (other: INTEGER; res: like Current) is
-			-- Multiply the contents of `Current' and `other' and place the
-			-- result  in `res'. (`Current' is not modified.)
-		require
-			res /= Current
-			res /= Void
-		local
-			overflow, res_integer_length, res_capacity, i, k, up_i, v: INTEGER; res_storage: like storage
-		do
-			if other = 0 or else is_zero then
-				res.set_with_zero
-			elseif other = Minimum_integer then
-				res.set_negative(not negative)
-				shift_left(31)
-			else
-				if other > 0 then
-					res.set_negative(negative)
-					v := other
-				else
-					res.set_negative(not negative)
-					v := -other
-				end
-				-- Pessimistique estimation
-				res_integer_length := integer_length + 1 -- Reallocation ?
-				if res.capacity < res_integer_length then
-					if capacity < res_integer_length then
-						res_capacity := capacity * 2
-					else
-						res_capacity := capacity_from_upper_bound(capacity, res_integer_length)
-					end
-					set_capacity(res_capacity)
-					res_storage := storage.calloc(res_capacity)
-					res.set_storage(res_storage)
-				else
-					res_storage := res.storage
-				end
-				res.set_offset(0)
-				-- Multiply
-				from
-					k := 0
-					i := offset
-					up_i := offset + integer_length - 1
-					overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-				end
-				if overflow = 0 then
-					res.set_integer_length(res_integer_length - 1)
-				else
-					check
-						k + 1 = integer_length
-					end
-					res.put(overflow, integer_length)
-				end
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- to multiply
-	multiply_like_human (other: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			not is_zero
-			not other.is_zero
-		local
-			old_offset, new_integer_length: INTEGER
-		do
-			-- Pessimistique estimation
-			new_integer_length := integer_length + other.integer_length -- Reallocation ?
-			if capacity < new_integer_length then
-				register1.swap_with(Current)
-				register1.multiply_to_like_human(other, Current)
-				-- Multiply in place
-			elseif offset + new_integer_length <= capacity then
-				multiply_like_human_aux_reverse(other)
-			elseif offset >= other.integer_length then
-				multiply_like_human_aux(other)
-			else
-				old_offset := offset
-				offset := capacity - integer_length
-				storage.slice_copy(offset, storage, old_offset, old_offset + integer_length - 1)
-				multiply_like_human_aux(other)
-			end
-		end
-
-	multiply_like_human_aux (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset >= other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, up_j, down_k, v: INTEGER
-			other_storage: like storage
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				k := 0
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				j := offset
-				up_j := offset + integer_length - 1
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j
-			end
-			storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply_with_add(other_storage.item(i), v, storage.item(k), storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				check
-					k <= j
-				end
-				storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-			offset := 0
-		end
-
-	multiply_like_human_aux_reverse (other: like Current) is
-			-- Only used by `multiply_to_like_human'.
-		require
-			not is_zero
-			not other.is_zero
-			offset + integer_length <= capacity - other.integer_length
-		local
-			other_offset, other_integer_length, overflow, i, j, k, up_i, down_j, down_k, v: INTEGER
-			other_storage: like storage; inc: BOOLEAN
-		do
-			other_offset := other.offset
-			other_integer_length := other.integer_length
-			other_storage := other.storage -- First pass
-			from
-				i := other_offset
-				up_i := other_offset + other_integer_length - 1
-				down_j := offset
-				j := offset + integer_length - 1
-				k := j
-				v := storage.item(j)
-				overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(other_storage.item(i), v, overflow, storage_at(storage, k))
-			end
-			k := k + 1
-			check
-				k <= j + other_integer_length
-			end
-			storage.put(overflow, k)
-			from
-				down_k := j - 1
-			until
-				j = down_j
-			loop
-				j := j - 1
-				from
-					k := down_k
-					i := other_offset
-					v := storage.item(j)
-					overflow := mbi_multiply(other_storage.item(i), v, storage_at(storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(other_storage.item(i), v, overflow, storage.item(k), storage_at(storage, k))
-				end
-				k := k + 1
-				inc := mbi_add(storage.item(k), overflow, storage_at(storage, k))
-				check
-					k < offset + integer_length + other_integer_length
-				end
-				from
-				until
-					not inc
-				loop
-					k := k + 1
-					check
-						k < offset + integer_length + other_integer_length
-					end
-					inc := mbi_inc(storage_at(storage, k))
-				end
-				down_k := down_k - 1
-			end
-			-- Adjust `res.integer_length'
-			if storage.item(offset + integer_length + other_integer_length - 1) = 0 then
-				integer_length := integer_length + other_integer_length - 1
-			else
-				integer_length := integer_length + other_integer_length
-			end
-			negative := negative /= other.negative
-		end
-
-	multiply_to_like_human (other, res: like Current) is
-			-- Simple multiply.
-			-- Complexity = O(`integer_length'*`other.integer_length').
-		require
-			res /= Current
-			not is_zero
-			not other.is_zero
-		local
-			overflow, res_integer_length, res_capacity, i, j, k, up_i, up_j, down_k, v: INTEGER
-			res_storage: like storage; res_negative: BOOLEAN
-		do
-			res_negative := negative /= other.negative -- Pessimistique estimation
-			res_integer_length := integer_length + other.integer_length -- Reallocation ?
-			res_capacity := res.capacity
-			if res_capacity < res_integer_length then
-				res_capacity := capacity_from_lower_bound(res_capacity, res_integer_length)
-				res_storage := storage.calloc(res_capacity)
-			else
-				res_storage := res.storage
-			end
-			-- To avoid class invariant violation
-			res.set_with_zero
-			-- Multiply
-			-- First pass
-			from
-				k := 0
-				i := offset
-				up_i := offset + integer_length - 1
-				j := other.offset
-				up_j := j + other.integer_length - 1
-				v := other.item(j)
-				overflow := mbi_multiply(item(i), v, storage_at(res_storage, k))
-			until
-				i = up_i
-			loop
-				i := i + 1
-				k := k + 1
-				overflow := mbi_multiply_with_add(item(i), v, overflow, storage_at(res_storage, k))
-			end
-			k := k + 1
-			res_storage.put(overflow, k)
-			from
-				down_k := 1
-			until
-				j = up_j
-			loop
-				j := j + 1
-				from
-					k := down_k
-					i := offset
-					v := other.item(j)
-					overflow := mbi_multiply_with_add(item(i), v, res_storage.item(k), storage_at(res_storage, k))
-				until
-					i = up_i
-				loop
-					i := i + 1
-					k := k + 1
-					overflow := mbi_multiply_with_2_add(item(i), v, overflow, res_storage.item(k), storage_at(res_storage, k))
-				end
-				k := k + 1
-				res_storage.put(overflow, k)
-				down_k := down_k + 1
-			end
-			-- Adjust `res.integer_length'
-			if overflow = 0 then
-				res.set_all(res_storage, res_capacity, res_integer_length - 1, 0, res_negative)
-			else
-				res.set_all(res_storage, res_capacity, res_integer_length, 0, res_negative)
-			end
-		end
-
-feature {ANY} -- Comparison:
-	is_zero: BOOLEAN is
-			-- Is it 0?
-		do
-			Result := integer_length = 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one: BOOLEAN is
-			-- Is it 1?
-		do
-			if integer_length = 1 then
-				if not negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies not is_negative
-		end
-
-	is_one_negative: BOOLEAN is
-			-- Is it -1 ?
-		do
-			if integer_length = 1 then
-				if negative then
-					Result := item(offset) = 1
-				end
-			end
-		ensure
-			Result implies is_negative
-		end
-
-	is_negative: BOOLEAN is
-			-- Is `Current' negative integer?
-		do
-			Result := negative
-		ensure
-			Result implies not is_positive
-		end
-
-	is_positive: BOOLEAN is
-			-- Is `Current' positive integer?
-		do
-			Result := not negative and then integer_length /= 0
-		ensure
-			Result implies not is_negative
-		end
-
-	is_even: BOOLEAN is
-			-- Is `Current' even?
-		do
-			if integer_length = 0 then
-				Result := True
-			else
-				Result := item(offset).is_even
-			end
-		ensure
-			Result = not Current.is_odd
-		end
-
-	is_odd: BOOLEAN is
-			-- Is `Current' odd?
-		do
-			if integer_length > 0 then
-				Result := item(offset).is_odd
-			end
-		ensure
-			Result = not Current.is_even
-		end
-
-	is_equal (other: like Current): BOOLEAN is
-		local
-			a, b, c: INTEGER
-		do
-			if Current = other then
-				Result := True
-			elseif integer_length /= other.integer_length then
-			elseif negative /= other.negative then
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					c := offset + integer_length
-					a := offset
-					b := other.offset
-					Result := True
-				until
-					a = c
-				loop
-					if item(a) /= other.item(b) then
-						Result := False
-						a := c
-					else
-						a := a + 1
-						b := b + 1
-					end
-				end
-			end
-		end
-
-	infix "<" (other: like Current): BOOLEAN is
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-			elseif negative /= other.negative then
-				Result := negative
-			elseif integer_length /= other.integer_length then
-				Result := integer_length < other.integer_length xor negative
-			else
-				check
-					other.negative = negative
-				end
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length - 1
-					b := other.offset + integer_length - 1
-				until
-					a < offset
-				loop
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := not negative
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := negative
-						a := -1
-					else
-						a := a - 1
-						b := b - 1
-					end
-				end
-			end
-		end
-
-	abs_compare (other: like Current): INTEGER is
-			-- Compare the magnitude of `Current' and `other'. Returns -1, 0 or 1
-			-- as this MutableBigInteger is numerically less than, equal to, or
-			-- greater than other.
-		local
-			a, b: INTEGER; va, vb: INTEGER
-		do
-			if Current = other then
-				--Result := 0
-			elseif integer_length < other.integer_length then
-				Result := -1
-			elseif integer_length > other.integer_length then
-				Result := 1
-			else
-				check
-					other.integer_length = integer_length
-				end
-				from
-					a := offset + integer_length
-					b := other.offset + integer_length
-					check
-						Result = 0
-					end
-				until
-					a <= offset
-				loop
-					a := a - 1
-					b := b - 1
-					va := item(a)
-					vb := other.item(b)
-					if unsigned_less_than(va, vb) then
-						Result := -1
-						a := -1
-					elseif unsigned_less_than(vb, va) then
-						Result := 1
-						a := -1
-					end
-				end
-			end
-		end
-
-feature {ANY} -- Printing:
-	to_string: STRING is
-			-- The decimal view of `Current' into a new allocated STRING.
-			-- For example, if `Current' is -1 the `Result' is "-1".
-			--
-			-- See also `append_in', `to_string_format', `to_unicode_string', `to_integer'.
-		do
-			string_buffer.clear_count
-			append_in(string_buffer)
-			Result := string_buffer.twin
-		end
-
-	to_unicode_string: UNICODE_STRING is
-			-- The decimal view of `Current' into a new allocated UNICODE_STRING.
-			-- For example, if `Current' represents -1 the `Result' is U"-1".
-			--
-			-- See also `append_in_unicode', `to_unicode_string_format', `to_string'.
-		do
-			unicode_string_buffer.clear_count
-			append_in_unicode(unicode_string_buffer)
-			Result := unicode_string_buffer.twin
-		end
-
-	append_in (buffer: STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0')
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-')
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k))
-				end
-			end
-		end
-
-	append_in_unicode (buffer: UNICODE_STRING) is
-			-- Append in the `buffer' the equivalent of `to_string'. No new
-			-- STRING creation during the process.
-		require
-			is_printable
-		local
-			k: INTEGER
-		do
-			if is_zero then
-				buffer.extend('0'.code)
-			else
-				-- Put the sign in `buffer'
-				if negative then
-					buffer.extend('-'.code)
-				end
-				-- Put it in `buffer'
-				from
-					k := append_in_char_buffer
-				until
-					k = 0
-				loop
-					k := k - 1
-					buffer.extend(char_buffer.item(k).code)
-				end
-			end
-		end
-
-	to_string_format (s: INTEGER): STRING is
-			-- Same as `to_string' but the result is on `s' character and the
-			-- number is right aligned.
-			-- Note: see `append_in_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	to_unicode_string_format (s: INTEGER): UNICODE_STRING is
-			-- Same as `to_unicode_string' but the result is on `s' character and
-			-- the number is right aligned.
-			-- Note: see `append_in_unicode_format' to save memory.
-		require
-			to_string.count <= s
-		do
-			create Result.make(s)
-			append_in_unicode_format(Result, s)
-		ensure
-			Result.count = s
-		end
-
-	append_in_format (str: STRING; s: INTEGER) is
-			-- Append the equivalent of `to_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- STRING is allocated for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0')
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' ')
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-')
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k))
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	append_in_unicode_format (str: UNICODE_STRING; s: INTEGER) is
-			-- Append the equivalent of `to_unicode_string_format' at the end of
-			-- `str'. Thus you can save memory because no other
-			-- UNICODE_STRING is allocated for the job.
-		require
-			to_string.count <= s
-		local
-			i, k: INTEGER
-		do
-			if is_zero then
-				-- Put spaces
-				from
-					i := s - 1
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				str.extend('0'.code)
-			else
-				k := append_in_char_buffer
-				-- Put spaces
-				from
-					if negative then
-						i := s - k - 1
-					else
-						i := s - k
-					end
-				variant
-					i
-				until
-					i = 0
-				loop
-					str.extend(' '.code)
-					i := i - 1
-				end
-				-- Put number
-				from
-					-- Put the sign in `buffer'
-					if negative then
-						str.extend('-'.code)
-					end
-				variant
-					k
-				until
-					k = 0
-				loop
-					k := k - 1
-					str.extend(char_buffer.item(k).code)
-				end
-			end
-		ensure
-			str.count >= old str.count + s
-		end
-
-	is_printable: BOOLEAN is
-			-- True if decimal view of `Current' is short enougth
-			-- to be put in a STRING.
-		do
-			--|*** MUST BE REWRITE (Vincent Croizier, 14/07/04) ***
-			Result := integer_length <= 2 ^ 27
-		end
-
-	out_in_tagged_out_memory, fill_tagged_out_memory is
-		do
-			append_in(tagged_out_memory)
-		end
-
-feature {ANY} -- Miscellaneous:
-	negate is
-			-- Negate the sign of `Current'.
-		do
-			if integer_length /= 0 then
-				negative := not negative
-			end
-		end
-
-	abs is
-			-- Absolute value of `Current'.
-		do
-			negative := False
-		end
-
-	sign: INTEGER_8 is
-			-- Sign of `Current' (0 -1 or 1).
-		do
-			if negative then
-				Result := -1
-			elseif integer_length > 0 then
-				Result := 1
-			else
-				check
-					is_zero
-				end
-			end
-		end
-
-	set_with_zero is
-		do
-			integer_length := 0
-			negative := False
-		ensure
-			is_zero
-		end
-
-	hash_code: INTEGER is
-		local
-			i, c, v: INTEGER
-		do
-			from
-				i := offset
-				c := 2
-			until
-				c = 0 or else i = offset + integer_length
-			loop
-				v := item(i)
-				if v /= 0 then
-					Result := Result #+ v
-					c := c - 1
-				end
-				i := i + 1
-			end
-			Result := integer_length #* Result
-			if negative then
-				Result := Result #+ 1
-			end
-			if Result < 0 then
-				Result := ~Result
-			end
-		end
-
-	copy (other: like Current) is
-		do
-			negative := other.negative
-			offset := 0
-			integer_length := other.integer_length
-			if capacity < other.integer_length then
-				capacity := capacity_from_upper_bound(other.capacity, integer_length)
-				storage := storage.calloc(capacity)
-			elseif capacity = 0 then
-				capacity := 4
-				storage := storage.calloc(capacity)
-			end
-			if integer_length /= 0 then
-				storage.slice_copy(offset, other.storage, other.offset, other.offset + integer_length - 1)
-			end
-		end
-
-	swap_with (other: like Current) is
-			-- Swap the value of `Current' with the value of `other'.
-		local
-			s: like storage; c: like capacity; il: like integer_length; o: like offset; n: like negative
-		do
-			s := other.storage
-			c := other.capacity
-			il := other.integer_length
-			o := other.offset
-			n := other.negative -- Put Current in other
-			other.set_all(storage, capacity, integer_length, offset, negative)
-			--
-			storage := s
-			capacity := c
-			integer_length := il
-			offset := o
-			negative := n
-		end
-
-feature {MUTABLE_BIG_INTEGER}
-	storage: NATIVE_ARRAY[INTEGER]
-			-- Holds the magnitude of `Current' in natural order (the most
-			-- significant INTEGER_32 word has the highest address). To avoid many
-			-- reallocation of this `storage' area, only some words are
-			-- significant. The magnitude is stored in the following significant
-			-- range [`offset' .. `offset + integer_length - 1'].
-
-	capacity: INTEGER
-			-- Of the allocated `storage' area.
-
-	integer_length: INTEGER
-			-- The number of significant INTEGER_32 words in the `storage' area.
-
-	offset: INTEGER
-			-- The `offset' of the less significant word into the `storage' area.
-
-	negative: BOOLEAN
-			-- True when `Current' is negative.
-
-	item (index: INTEGER): INTEGER_32 is
-		require
-		-- index.in_range(0, capacity - 1)
-			index.in_range(offset, offset + integer_length - 1)
-		do
-			Result := storage.item(index)
-		end
-
-	put (value: INTEGER; index: INTEGER) is
-		require
-			index.in_range(0, capacity - 1)
-		do
-			storage.put(value, index)
-		end
-
-	set_negative (n: like negative) is
-		require
-			n implies not is_zero
-		do
-			negative := n
-		ensure
-			negative = n or is_zero
-		end
-
-	set_integer_length (il: like integer_length) is
-		require
-			il.in_range(0, capacity - offset)
-		do
-			integer_length := il
-		ensure
-			integer_length = il
-		end
-
-	set_offset (o: like offset) is
-		require
-			o.in_range(0, capacity - integer_length)
-		do
-			offset := o
-		ensure
-			offset = o
-		end
-
-	set_ilo (il: like integer_length; o: like offset) is
-		require
-			il.in_range(0, capacity)
-			o.in_range(0, capacity - il)
-		do
-			integer_length := il
-			offset := o
-		ensure
-			integer_length = il
-			offset = o
-		end
-
-	set_storage (new_storage: like storage) is
-		do
-			storage := new_storage
-		end
-
-	set_capacity (new_capacity: like capacity) is
-		do
-			capacity := new_capacity
-		end
-
-	set_all (new_storage: like storage; new_capacity, new_integer_length, new_offset: INTEGER; new_negative: BOOLEAN) is
-		require
-			new_capacity > 0
-			new_storage.is_not_null
-			new_integer_length.in_range(0, new_capacity)
-			new_integer_length /= 0 implies new_offset.in_range(0, new_capacity - new_integer_length) and new_storage.item(new_offset + new_integer_length - 1) /= 0
-			new_integer_length = 0 implies not new_negative
-			new_capacity.is_a_power_of_2
-		do
-			storage := new_storage
-			capacity := new_capacity
-			integer_length := new_integer_length
-			offset := new_offset
-			negative := new_negative
-		ensure
-			storage = new_storage
-			capacity = new_capacity
-			integer_length = new_integer_length
-			offset = new_offset
-			negative = new_negative
-		end
-
-	primitive_shift_left (n: INTEGER_8) is
-			-- Left shift `Current' with no need to extend the `storage'.
-			--|*** Can be a little faster (Vincent Croizier, 26/04/04) ***
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-			no_bit_lost: item(offset + integer_length - 1) |<< n |>>> n = item(offset + integer_length - 1)
-		local
-			n2: INTEGER_8; i, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				i := offset
-				up := i + integer_length - 1
-			until
-				i > up
-			loop
-				b := item(i)
-				put(b |<< n | c, i)
-				c := b |>>> n2
-				i := i + 1
-			end
-			check
-				c = 0
-			end
-		end
-
-	primitive_shift_right (n: INTEGER_8) is
-			-- Right shift `Current' of `n' bits.
-		require
-			integer_length > 0
-			n.in_range(1, 31)
-		local
-			n2: INTEGER_8; i, j, up, b, c: INTEGER
-		do
-			n2 := 32 - n
-			from
-				up := integer_length - 1
-				j := 0
-				i := offset
-				c := item(i)
-			until
-				j >= up
-			loop
-				b := c
-				i := i + 1
-				c := item(i)
-				put(b |>>> n | (c |<< n2), j)
-				j := j + 1
-			end
-			check
-				j = up
-				i = offset + j
-			end
-			put(c |>>> n, up)
-			offset := 0
-			if item(integer_length - 1) = 0 then
-				integer_length := integer_length - 1
-			end
-		ensure
-			offset = 0
-		end
-
-	divide_one_word (divisor: INTEGER): INTEGER is
-			-- This method is used by `divide'. The one word divisor is
-			-- specified by `divisor' is saw as unsigned.
-			-- `Current' is the dividend (saw positive) at invocation but is replaced by
-			-- the quotient. The remainder is returned as unsigned INTEGER.
-			-- Note: `Current' is modified by this method.
-		require
-			divisor /= 0
-		local
-			i, remainder_word1, remainder_word0: INTEGER
-		do
-			if integer_length = 1 then
-				Result := item(offset)
-				if unsigned_less_than(Result, divisor) then
-					integer_length := 0
-					negative := False
-				else
-					put(mbi_divide(0, Result, divisor, $remainder_word1), offset)
-					Result := remainder_word1
-				end
-			else
-				from
-					i := offset + integer_length - 1
-				until
-					i < offset
-				loop
-					remainder_word0 := item(i)
-					put(mbi_divide(remainder_word1, remainder_word0, divisor, $remainder_word1), i)
-					i := i - 1
-				end
-				if item(offset + integer_length - 1) = 0 then
-					integer_length := integer_length - 1
-					check
-						item(offset + integer_length - 1) /= 0
-					end
-				end
-				Result := remainder_word1
-			end
-		end
-
-	divide_sign_correction (other, quotient, remainder: like Current) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not remainder.is_negative
-		do
-			if remainder.is_zero then
-				quotient.set_negative(negative /= other.negative)
-			elseif negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					remainder.set_negative(True)
-					-- other is negative
-					remainder.subtract(other)
-					check
-						not remainder.is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					remainder.set_negative(True)
-					remainder.add(other)
-					check
-						not remainder.is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not remainder.is_negative
-		end
-
-	divide_sign_correction_bis (other, quotient: like Current; current_negative: BOOLEAN) is
-			-- Correct the value of `quotient' and `remainder' after an
-			-- "unsigned" division.
-			-- Only used by `divide'.
-		require
-			not is_negative
-		do
-			if is_zero then
-				quotient.set_negative(current_negative /= other.negative)
-			elseif current_negative then
-				quotient.set_negative(False)
-				if other.negative then
-					quotient.add_integer(1)
-					set_negative(True)
-					-- other is negative
-					subtract(other)
-					check
-						not is_negative
-					end
-				else
-					quotient.add_integer(1)
-					quotient.set_negative(True)
-					set_negative(True)
-					add(other)
-					check
-						not is_negative
-					end
-				end
-			elseif other.negative then
-				quotient.set_negative(True)
-			else
-				quotient.set_negative(False)
-			end
-		ensure
-			not is_negative
-		end
-
-	multiply_and_subtract (u1, qhat: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-		require
-			qhat /= 0
-		local
-			i, j, jmax, m1, m2: INTEGER; dec: BOOLEAN
-		do
-			if qhat = 1 then
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_dec(storage_at(r_storage, j))
-						check
-							not Result
-						end
-					end
-				end
-			else
-				from
-					i := d_offset
-					j := r_offset
-					jmax := r_offset + length
-				until
-					j = jmax
-				loop
-					m1 := mbi_multiply_with_add(qhat, d_storage.item(i), m1, $m2)
-					if dec then
-						dec := mbi_subtract_with_dec(r_storage.item(j), m2, storage_at(r_storage, j))
-					else
-						dec := mbi_subtract(r_storage.item(j), m2, storage_at(r_storage, j))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				if dec then
-					if u1 = 0 then
-						Result := True
-					else
-						Result := mbi_subtract_with_dec(r_storage.item(j), m1, storage_at(r_storage, j))
-					end
-				elseif m1 = 0 then
-					-- nothing to do
-				elseif u1 = 0 then
-					Result := True
-				else
-					Result := mbi_subtract(r_storage.item(j), m1, storage_at(r_storage, j))
-				end
-			end
-		end
-
-	add_back (old_u1: INTEGER; d_storage: like storage; d_offset: INTEGER; r_storage: like storage
-		r_offset, length: INTEGER): BOOLEAN is
-			-- Only used by `divide'.
-			-- `old_u1' is the value of `u1' before `multiply_and_subtract'.
-		local
-			i, j, jmax: INTEGER; inc: BOOLEAN
-		do
-			from
-				i := d_offset
-				j := r_offset
-				jmax := r_offset + length
-			until
-				j = jmax
-			loop
-				if inc then
-					inc := mbi_add_with_inc(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				else
-					inc := mbi_add(r_storage.item(j), d_storage.item(i), storage_at(r_storage, j))
-				end
-				i := i + 1
-				j := j + 1
-			end
-			if inc then
-				if old_u1 = 0 then
-					Result := True
-				else
-					Result := mbi_inc(storage_at(r_storage, j))
-				end
-			end
-		end
-
-	is_a_good_divide (other, quotient, remainder: like Current): BOOLEAN is
-		require
-			other /= Void
-			quotient /= Void
-			remainder /= Void
-		local
-			v: like Current
-		do
-			v := other.twin
-			v.multiply(quotient)
-			v.add(remainder)
-			Result := Current.is_equal(v)
-		end
-
-	normalize: INTEGER_8 is
-			-- Shift left until the most significant bit is on.
-			-- Result give the number of left shift.
-		require
-			not is_zero
-		local
-			head: INTEGER
-		do
-			head := item(offset + integer_length - 1)
-			from
-			until
-				head < 0
-			loop
-				head := head.bit_shift_left(1)
-				Result := Result + 1
-			end
-			if Result > 0 then
-				shift_left(Result)
-			end
-		ensure
-			item(offset + integer_length - 1) < 0
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	register1: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	register2: MUTABLE_BIG_INTEGER is
-		once
-			create Result.from_integer(0)
-		end
-
-	Real_base: REAL_64 is
-		once
-			Result := (0x0000000100000000).force_to_real_64
-		end
-
-	add_magnitude (other: like Current) is
-			-- Add the magnitude of `Current' and `other' regardless of signs.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			a, b: like Current; inc: BOOLEAN; i, j, k, n: INTEGER; new_storage, a_storage, b_storage: like storage
-			new_capacity, a_capacity, a_offset, a_integer_length, b_offset, b_integer_length: INTEGER
-		do
-			--|*** First tests can be certainely optimized.
-			--|*** (Vincent Croizier, 26/03/2004)
-			if integer_length > other.integer_length and then capacity - offset > integer_length then
-				---- Add in place (`offset' doesn't change)
-				-- Add common parts of both numbers:
-				from
-					i := offset
-					j := other.offset
-					n := j + other.integer_length
-				until
-					j = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(item(i), other.item(j), storage_at(storage, i))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(item(i), other.item(j), storage_at(storage, i))
-					end
-					i := i + 1
-					j := j + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := offset + integer_length
-				until
-					not inc or else i = n
-				loop
-					inc := mbi_inc(storage_at(storage, i))
-					i := i + 1
-				end
-				if inc then
-					storage.put(1, n)
-					check
-						n < capacity
-					end
-					integer_length := integer_length + 1
-				end
-			else
-				---- Add, after this `offset' will be 0
-				-- Set `a' to the longest number and `b' to the smallest.
-				if integer_length >= other.integer_length then
-					a := Current
-					b := other
-				else
-					a := other
-					b := Current
-				end
-				a_capacity := a.capacity
-				a_storage := a.storage
-				b_storage := b.storage
-				a_integer_length := a.integer_length
-				b_integer_length := b.integer_length
-				a_offset := a.offset
-				b_offset := b.offset -- Verify capacity
-				if capacity < a_integer_length then
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif capacity = a_integer_length then
-					--|*** It's possible to make a more restrictive test
-					--|*** that can exclude more case of reallocation. (Vincent Croizier, 24/03/2004)
-					new_capacity := capacity_from_lower_bound(capacity, a_integer_length + 1)
-					new_storage := new_storage.calloc(new_capacity)
-				elseif a = other then
-					-- protect `other'
-					new_storage := a_storage.calloc(a_capacity)
-					new_capacity := a_capacity
-				else
-					new_storage := a_storage
-					new_capacity := a_capacity
-				end
-				-- Add common parts of both numbers:
-				n := b_integer_length
-				check
-					n.in_range(0, new_capacity)
-				end
-				from
-					i := a_offset
-					j := b_offset -- k := 0
-				until
-					k = n
-				loop
-					if inc then
-						-- overflow in the last addition step
-						inc := mbi_add_with_inc(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					else
-						-- no overflow in the last addition step
-						inc := mbi_add(a_storage.item(i), b_storage.item(j), storage_at(new_storage, k))
-					end
-					i := i + 1
-					j := j + 1
-					k := k + 1
-				end
-				-- Add remainder of the longer number with increment (if necessary):
-				from
-					n := a_integer_length
-				until
-					not inc or else k = a_integer_length
-				loop
-					new_storage.put(a_storage.item(i), k)
-					inc := mbi_inc(storage_at(new_storage, k))
-					i := i + 1
-					k := k + 1
-				end
-				if inc then
-					new_storage.put(1, k)
-					check
-						n < new_capacity
-					end
-					n := n + 1
-				else
-					-- copy the reste of `a'
-					from
-					until
-						k = n
-					loop
-						new_storage.put(a_storage.item(i), k)
-						i := i + 1
-						k := k + 1
-					end
-				end
-				capacity := new_capacity
-				storage := new_storage
-				integer_length := n
-				offset := 0
-			end
-		end
-
-feature {MUTABLE_BIG_INTEGER} -- Implementation:
-	subtract_magnitude (other: like Current) is
-			-- Subtract `other' from `Current' (The result is placed  in `Current')
-			-- and change `negative' (the sign) if necessary.
-		require
-			not is_zero
-			not other.is_zero
-		local
-			i, j, v1, v2: INTEGER; test: BOOLEAN; new: like Current
-		do
-			-- Compare the number
-			if integer_length = other.integer_length then
-				-- Compare the most significant part of the numbers
-				from
-					i := offset + integer_length - 1
-					j := other.offset + integer_length - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				until
-					test or else i = offset
-				loop
-					integer_length := integer_length - 1
-					i := i - 1
-					j := j - 1
-					v1 := item(i)
-					v2 := other.item(j)
-					test := v1 /= v2
-				end
-				if test then
-					if unsigned_greater_than(v1, v2) then
-						-- Current > other
-						subtract_magnitude_raw_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					else
-						-- Current < other
-						check
-							unsigned_less_than(v1, v2)
-						end
-						negative := not negative
-						subtract_magnitude_raw_reverse_truncated(other)
-						if storage.item(integer_length - 1) = 0 then
-							integer_length := integer_length - 1
-							check
-								integer_length /= 0 implies item(integer_length - 1) /= 0
-							end
-						end
-					end
-				else
-					-- Current = other
-					set_with_zero
-				end
-			elseif integer_length > other.integer_length then
-				subtract_magnitude_raw(other)
-			elseif capacity >= other.integer_length then
-				negative := not negative
-				subtract_magnitude_raw_reverse(other)
-			else
-				-- Reallocation
-				--|*** Can be faster (Vincent Croizier, 10/06/04) ***
-				create new.copy(other)
-				new.subtract_magnitude(Current)
-				negative := not negative
-				integer_length := new.integer_length
-				storage := new.storage
-				offset := new.offset
-			end
-		end
-
-	subtract_magnitude_raw (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = 1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := other.integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(item(i), k)
-				dec := mbi_dec(storage_at(storage, k))
-				i := i + 1
-				k := k + 1
-			end
-			if k = integer_length then
-				from
-					k := k - 1
-				until
-					item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not is_zero
-			not other.is_zero
-			abs_compare(other) = -1
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				-- k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			from
-			until
-				not dec
-			loop
-				--|*** Could be done in one step with a mbi_dec_bis
-				--| routine (Vincent Croizier, 10/06/04) ***
-				put(other.item(j), k)
-				dec := mbi_dec(storage_at(storage, k))
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			up := other.integer_length
-			if k < up then
-				from
-				until
-					k = up
-				loop
-					put(other.item(j), k)
-					j := j + 1
-					k := k + 1
-				end
-				integer_length := up
-			else
-				check
-					k = up
-				end
-				from
-					k := k - 1
-				until
-					storage.item(k) /= 0
-				loop
-					k := k - 1
-				end
-				integer_length := k + 1
-				offset := 0
-			end
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `other' from `Current'
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_greater_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(item(i), other.item(j), storage_at(storage, k))
-				else
-					dec := mbi_subtract(item(i), other.item(j), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-	subtract_magnitude_raw_reverse_truncated (other: like Current) is
-			-- Subtract (raw) the storage of `Current' from `other' and
-			-- put it in `Current',
-			-- where `other' is truncated to the size of `Current'.
-			-- Used by `subtract_magnitude'.
-		require
-			not other.is_zero
-			other.integer_length >= integer_length
-			unsigned_less_than(item(offset + integer_length - 1), other.item(offset + integer_length - 1))
-		local
-			i, j, k, up: INTEGER; dec: BOOLEAN
-		do
-			from
-				k := 0
-				i := offset
-				j := other.offset
-				up := integer_length - 1
-			until
-				k > up
-			loop
-				if dec then
-					dec := mbi_subtract_with_dec(other.item(j), item(i), storage_at(storage, k))
-				else
-					dec := mbi_subtract(other.item(j), item(i), storage_at(storage, k))
-				end
-				i := i + 1
-				j := j + 1
-				k := k + 1
-			end
-			check
-				not dec
-			end
-			offset := 0
-		ensure
-			offset = 0
-		end
-
-feature {} -- For printing
-	char_buffer: FAST_ARRAY[CHARACTER] is
-		once
-			create Result.make(4096)
-		end
-
-	append_in_char_buffer: INTEGER is
-			-- Tool for `append_in' and `append_in_unicode'.
-			-- Put absolute value of Current in `char_buffer' and return
-			-- the number of characteres really used.
-		require
-			is_printable
-			not is_zero
-		local
-			base, max_char, i, r: INTEGER
-		do
-			-- Allocate space in `char_buffer'
-			max_char := integer_length * 9 + (2 * integer_length + 2) #// 3
-			if char_buffer.capacity < max_char then
-				char_buffer.resize(max_char)
-			end
-			-- Begin of extracting digits
-			register1.copy(Current)
-			base := 1000000000
-			from
-				r := register1.divide_one_word(base)
-			until
-				register1.is_zero
-			loop
-				check
-					r >= 0
-				end
-				from
-					i := 9
-				until
-					r = 0
-				loop
-					char_buffer.put((r #\\ 10).decimal_digit, Result)
-					r := r #// 10
-					Result := Result + 1
-					i := i - 1
-				end
-				from
-				until
-					i = 0
-				loop
-					char_buffer.put('0', Result)
-					Result := Result + 1
-					i := i - 1
-				end
-				-- extract next digit group
-				r := register1.divide_one_word(base)
-			end
-			from
-				check
-					r > 0
-				end
-			until
-				r = 0
-			loop
-				char_buffer.put((r #\\ 10).decimal_digit, Result)
-				r := r #// 10
-				Result := Result + 1
-			end
-		end
-
-feature {} -- Tools for capacity:
-	capacity_from_lower_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than
-			-- `needed_capacity' and `actual_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity.is_a_power_of_2
-			actual_capacity >= 4
-		do
-			from
-				Result := actual_capacity
-			until
-				Result >= needed_capacity
-			loop
-				Result := Result.bit_shift_left(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result >= 4
-			Result >= actual_capacity
-			Result >= needed_capacity
-			Result = actual_capacity or Result #// 2 < needed_capacity
-		end
-
-	capacity_from_upper_bound (actual_capacity, needed_capacity: INTEGER): INTEGER is
-			-- Give the smallest power of 2 greater than `needed_capacity'.
-			-- Based on `actual_capacity' (the actual capacity).
-		require
-			actual_capacity >= 4
-			actual_capacity >= needed_capacity
-			actual_capacity.is_a_power_of_2
-		local
-			v: INTEGER
-		do
-			from
-				Result := actual_capacity
-				v := Result.bit_shift_right(1)
-			until
-				v < needed_capacity or else v = 2
-			loop
-				Result := v
-				v := Result.bit_shift_right(1)
-			end
-		ensure
-			Result.is_a_power_of_2
-			Result <= actual_capacity
-			Result >= needed_capacity
-			Result = 4 or Result.bit_shift_right(1) < needed_capacity
-		end
-
-feature {}
-	unsigned_less_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned "<".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_less_than"
-			}"
-		end
-
-	unsigned_greater_than (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_than"
-			}"
-		end
-
-	unsigned_greater_or_equal (a, b: INTEGER): BOOLEAN is
-			-- Unsigned ">=".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_greater_or_equal"
-			}"
-		end
-
-	unsigned_32_to_integer_64 (integer_32: INTEGER): INTEGER_64 is
-			-- Return the unsigned value of the `integer_32'.
-			--
-			--|*** Ajouter ou pas cette fonction dans INTEGER_32 ? plug_in ou built_in ?(Dom. 27/02/2004) ***
-			--
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_unsigned_32_to_integer_64"
-			}"
-		end
-
-	storage_at (s: like storage; n: INTEGER): POINTER is
-			-- Give the address of the corresponding word of `s'.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_storage_at"
-			}"
-		end
-
-	mbi_inc (integer_32_adr: POINTER): BOOLEAN is
-			-- Increment the value at `integer_32_adr'. The `Result' is True only in case of overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_inc"
-			}"
-		end
-
-	mbi_add (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add"
-			}"
-		end
-
-	mbi_add_with_inc (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a + b + 1
-			-- Overflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_add_with_inc"
-			}"
-		end
-
-	mbi_dec (integer_32_adr: POINTER): BOOLEAN is
-			-- Put a - 1 in the item n in the NATIVE_ARRAY t.
-			-- t.item(n) := a - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_dec"
-			}"
-		end
-
-	mbi_subtract (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract"
-			}"
-		end
-
-	mbi_subtract_with_dec (a, b: INTEGER; integer_32_adr: POINTER): BOOLEAN is
-			-- t.item(n) := a - b - 1
-			-- Underflow if "Result = True".
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_subtract_with_dec"
-			}"
-		end
-
-	mbi_multiply (a, b: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply"
-			}"
-		end
-
-	mbi_multiply_with_add (a, b, c: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_add"
-			}"
-		end
-
-	mbi_multiply_with_2_add (a, b, c, d: INTEGER; integer_32_adr: POINTER): INTEGER_32 is
-			-- put a * b + c + d in t at n and return the overflow.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_multiply_with_2_add"
-			}"
-		end
-
-	mbi_divide (u1, u0, d: INTEGER; r_int32adr: POINTER): INTEGER_32 is
-			-- Divide `u1u0' by `d', put the remainder in `r' and return the quotient.
-		external "plug_in"
-		alias "{
-			location: "${sys}/runtime"
-			module_name: "mutable_big_integer"
-			feature_name: "mbi_divide"
-			}"
-		end
-
-	string_buffer: STRING is
-		once
-			create Result.make(128)
-		end
-
-	unicode_string_buffer: UNICODE_STRING is
-		once
-			create Result.make(128)
-		end
-
-invariant
-	capacity > 0
-	storage.is_not_null
-	integer_length.in_range(0, capacity)
-	integer_length /= 0 implies offset.in_range(0, capacity - integer_length) and item(offset + integer_length - 1) /= 0
-	integer_length = 0 implies not negative
-	capacity.is_a_power_of_2
-
-end -- class MUTABLE_BIG_INTEGER
---
--- ------------------------------------------------------------------------------------------------------------
--- Copyright notice below. Please read.
---
--- This file is part of the SmartEiffel standard library.
--- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.       - University of Nancy 1 - FRANCE
--- Copyright(C) 2003-2006: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
---
--- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
---
--- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
--- documentation files (the "Software"), to deal in the Software without restriction, including without
--- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
--- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
--- conditions:
---
--- The above copyright notice and this permission notice shall be included in all copies or substantial
--- portions of the Software.
---
--- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
--- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
--- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
--- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
--- OR OTHER DEALINGS IN THE SOFTWARE.
---
--- http://SmartEiffel.loria.fr - SmartEiffel at loria.fr
--- ------------------------------------------------------------------------------------------------------------
diff --git a/lib/number/real.li b/lib/number/real.li
deleted file mode 100644
index 5dfe3ec..0000000
--- a/lib/number/real.li
+++ /dev/null
@@ -1,293 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name   := Expanded REAL;
-  
-  - export :=
-  REAL_32, REAL_64, REAL_80,
-  REAL_16_16,  REAL_24_8,  REAL_26_6,
-  UREAL_16_16, UREAL_24_8, UREAL_26_6;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag, 2007 Xavier Oswald";
-  - comment := "Generic real number.";
-  
-  - type    := `float`;
-  - default := 0.0;
-
-Section Insert
-  
-  - parent_numeric:NUMERIC := NUMERIC;
-  
-Section Public
-  
-  - '+'  Left 80  other:SELF :SELF <- `@Self + @other`:SELF;
-
-  - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-  
-  (
-    TRUE
-  );
-  
-  - pi   :SELF <- 3.14159265358979323846;
-
-  - atan :SELF <- FLOAT_PROCESSOR.atan Self;
-
-  - sqrt :SELF <- FLOAT_PROCESSOR.sqrt Self;
-
-  - log  :SELF <- FLOAT_PROCESSOR.log Self;
-
-  - sin  :SELF <- FLOAT_PROCESSOR.sin Self;
-
-  - cos  :SELF <- FLOAT_PROCESSOR.cos Self;
-
-  - pow exp:SELF :SELF <- FLOAT_PROCESSOR.pow Self;
-
-  - '**' Right 120 exp:SELF :SELF <-
-  (
-    Self.pow exp
-  );
-
-  - '^' Right 120 exp:SELF :SELF <- 
-  (
-    Self.pow exp
-  );
-
-  //
-  // Convertion format with test.
-  //
-  
-  - floor:INTEGER <-
-  // Greatest integral value no greater than Current.
-  (     
-    to_raw_integer
-  );
-  
-  - ceiling:INTEGER <-
-  // Smallest integral value no smaller than Current.
-  (     
-    (Self + 0.9999).floor
-  );
-  
-  - rounded:INTEGER <-
-  // Rounded integral value.
-  (
-    (Self + 0.5).floor
-  );
-  
-  - truncated_to_integer:INTEGER <- floor;
-  // Integer part (largest absolute value no greater than Current).
-  
-  //
-  // Comparaison.
-  //
-  
-  - '~=' other:SELF :BOOLEAN <-
-  (
-    (Self - other).abs < 0.001
-  );
-  
-  - is_not_a_number:BOOLEAN <- deferred;
-  
-  - is_infinity:BOOLEAN <- deferred;
-  
-  //
-  // Print.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    append_in buffer decimal 4;
-  );
-
-
-   // *French, Slot, Description : Renvoi une chaîne représentant le nombre en base 10
-   // *English, Slot, Description : String of the number in base 10
-   - to_string : STRING <-
-   ( + result : STRING;
-     result := STRING.create 0;
-     append_in result;
-     result
-   );
- 
-
-  - append_in buffer:STRING format n:INTEGER decimal d:INTEGER <-
-  (
-    append_in buffer format n with ' ' decimal d;
-  );
-  
-  - append_in buffer:STRING format n:INTEGER with c:CHARACTER decimal d:INTEGER <-
-  [ 
-    -? {n >= 3};
-  ]
-  ( + old_count:INTEGER;
-    
-    old_count := buffer.count;
-    append_in buffer decimal d;
-    buffer.insert c to old_count on (n - (buffer.count - old_count));
-  );
-  
-  - append_in buffer:STRING decimal n:INTEGER <-
-  ( + val:SELF;
-    + val_10:INTEGER;    
-    + char:CHARACTER;
-    + i:INTEGER;
-    
-    get_map Self;
-    // Sign.
-    (sign).if {
-      val := Self;
-    } else {
-      buffer.add_last '-';
-      val := - Self;
-    };    
-    (is_zero).if {
-      // Zero case.      
-      buffer.add_last '0';
-    }.elseif {is_infinite} then {
-      // Infinite case.
-      buffer.append "Infinite";
-    }.elseif {is_nan} then {
-      // Nan case.
-      buffer.append "Nan";
-    } else {    
-      // Value case = 1.mantisse x 2^(exp-127)
-      (val > INTEGER.maximum.to_real_32).if {
-        scientific_append_in buffer;
-      } else {
-        val_10 := val.to_integer;	  
-        val_10.append_in buffer;		
-        val := val - val_10;	  
-        (n != 0).if {
-          buffer.add_last '.';
-          i := n;
-          {(val != 0) && {i > 0}}.while_do {	  
-            val := val * 10;
-            val_10 := val.to_integer;
-            char := val_10.decimal_digit;
-            buffer.add_last char;
-            val := val - val_10;
-            i := i - 1;
-          };	  	  
-          buffer.extend_multiple '0' by i;
-        };
-      };
-    };    
-  );
-  
-  - scientific_append_in buffer:STRING <- 
-  ( + val:SELF;
-    + val_10:INTEGER;
-    + exp_10:INTEGER;
-    + char:CHARACTER;
-    
-    get_map Self;
-    // Sign.
-    (sign).if {
-      val := Self;
-    } else {
-      buffer.add_last '-';
-      val := - Self;
-    };    
-    (is_zero).if {
-      // Zero case.
-      buffer.add_last '0';
-    }.elseif {is_infinite} then {
-      // Infinite case.
-      buffer.append "Infinite";
-    }.elseif {is_nan} then {
-      // Nan case.
-      buffer.append "Nan";
-    } else {
-      // Value case.
-      {val > 10}.while_do {
-        val    := val / 10;
-        exp_10 := exp_10 + 1;
-      };
-      {val < 0}.while_do {
-        val    := val * 10;
-        exp_10 := exp_10 - 1;
-      };
-      val_10 := val.to_integer;
-      char := val_10.decimal_digit;
-      buffer.add_last char;
-      buffer.add_last '.';
-      val := val - val_10;
-      {val != 0}.while_do {	  
-        val := val * 10;
-        val_10 := val.to_integer;
-        char := val_10.decimal_digit;
-        buffer.add_last char;
-        val := val - val_10;
-      };
-      buffer.add_last 'E';
-      exp_10.append_in buffer;
-    };
-  );
-  
-  - append_in buffer:STRING format_c fmt:ABSTRACT_STRING <-
-  ( + nc_buf,nc_fmt:NATIVE_ARRAY[CHARACTER];    
-    + old_count,cap:INTEGER;
-    
-    old_count := buffer.count;
-    cap       := buffer.capacity - old_count;
-    nc_buf    := buffer.to_external + old_count;
-    nc_fmt    := fmt.to_external;
-    `snprintf(@nc_buf, at cap, at nc_fmt, at Self)`;
-    buffer.restore_after_external;
-  );    
-  
-  - print_decimal s:INTEGER <-
-  (
-    string_tmp.clear;
-    append_in string_tmp decimal s;
-    string_tmp.print;
-  );
-  
-  - print_int i:INTEGER decimal d:INTEGER <-
-  (
-    print_format (i+d+1) decimal d;
-  );
-  
-  - print_format s:INTEGER decimal d:INTEGER <-
-  [
-    -? {s > d};
-  ]
-  ( 
-    print_format s with ' ' decimal d;
-  );
-
-  - print_format s:INTEGER with c:CHARACTER decimal d:INTEGER <-
-  [
-    -? {s > d};
-  ]
-  ( 
-    string_tmp.clear;
-    append_in string_tmp format s with c decimal d;
-    string_tmp.print;
-  );
-  
-  - print_format_c fmt:ABSTRACT_STRING <-
-  (
-    string_tmp.clear;
-    append_in string_tmp format_c fmt;
-    string_tmp.print;
-  );
-  
diff --git a/lib/number/real_16_16.li b/lib/number/real_16_16.li
deleted file mode 100644
index c06ed41..0000000
--- a/lib/number/real_16_16.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded REAL_16_16;
-
-  - export  := REAL_32, REAL_64;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "signed 16.16 fixed float.";
-  
-  - type    := `signed long`;
-  - default := (0.to_raw_real_16_16);
-  
-Section Insert
-  
-  - parent_signed_fixed_real:SIGNED_FIXED_REAL := SIGNED_FIXED_REAL;
-  
-Section SELF
-
-  - shift_bits:INTEGER <- 16;
-
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - minimum:INTEGER_64  <- INTEGER_16.minimum; 
-
-  - maximum:UINTEGER_64 <- INTEGER_16.maximum; 
-  
-  //
-  // Convertion format with test.
-  //
-  
-  - to_real_16_16:REAL_16_16 <- Self;
-      
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:INTEGER;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_integer;
-    
-    (val < 0).if {
-      val := - val;
-      buffer.extend '-';
-    };
-    (val >> 16).append_in buffer;
-    buffer.extend '.';
-
-    old_count:=buffer.count;
-    //     1/65536 = 0.00390625 => 8 digit.
-    (((val & 0FFFFh).to_uinteger_64 * 100000000)>>16).to_integer.append_in buffer;
-    new_count:=old_count+8;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/number/real_24_8.li b/lib/number/real_24_8.li
deleted file mode 100644
index a804856..0000000
--- a/lib/number/real_24_8.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded  REAL_24_8;
-
-  - export  := REAL_32, REAL_64;
-    
-  - comment := "signed 24.8 fixed float.";
-    
-  - type    := `signed long`;
-  - default := (0.to_raw_real_24_8);
-  
-Section Insert
-  
-  - parent_signed_fixed_real:SIGNED_FIXED_REAL := SIGNED_FIXED_REAL;
-  
-Section SELF
-
-  - shift_bits:INTEGER <- 8;
-
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - minimum:INTEGER_64 <- - 7F_FFFFh.to_raw_integer_64; 
-
-  - maximum:UINTEGER_64 <- 7F_FFFFh.to_raw_uinteger_64; 
-  
-  //
-  // Convertion format with test.
-  //
-    
-  - to_real_24_8:REAL_24_8 <- Self;
-  
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:INTEGER;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_integer;
-    
-    (val < 0).if {
-      val := - val;
-      buffer.extend '-';
-    };
-    (val >> 8).append_in buffer;
-    buffer.extend '.';
-
-    old_count:=buffer.count;
-    //     1/256 = 0.00390625 => 8 digit.
-    (((val & 255).to_uinteger_64 * 100000000)>>8).to_integer.append_in buffer;
-    new_count:=old_count+8;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/number/real_26_6.li b/lib/number/real_26_6.li
deleted file mode 100644
index b7ea699..0000000
--- a/lib/number/real_26_6.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded REAL_26_6;
-
-  - export  := REAL_32, REAL_64;
-  
-  - comment := "signed 26.6 fixed float.";
-
-  - type    := `unsigned long`;
-  - default := (0.to_raw_real_26_6);
-  
-Section Insert
-  
-  - parent_signed_fixed_real:SIGNED_FIXED_REAL := SIGNED_FIXED_REAL;
-
-Section SELF
-
-  - shift_bits:INTEGER <- 6;
-  
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - minimum:INTEGER_64  <- - 1FF_FFFFh.to_raw_integer_64;
-  
-  - maximum:UINTEGER_64 <- 1FF_FFFFh.to_raw_uinteger_64;
-  
-  //
-  // Convertion format with test.
-  //
-  
-  - to_real_26_6:REAL_26_6 <- Self;
-  
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:INTEGER_32;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_integer;
-    
-    (val < 0).if {
-      val := - val;
-      buffer.extend '-';
-    };
-    (val >> 6).append_in buffer;
-    buffer.extend '.';
-    
-    old_count:=buffer.count;
-    //     1/64 = 0.015625 => 6 digit.    
-    (((val & 63) * 1000000)>>6).append_in buffer;
-    new_count:=old_count+6;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/number/real_32.li b/lib/number/real_32.li
deleted file mode 100644
index f9288ed..0000000
--- a/lib/number/real_32.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := Expanded REAL_32;
-
-  - export   := REAL, REAL_64, REAL_80;
-  
-  - comment  := "Float (C `float' mapping).";
-    
-  - type     := `float`;
-  - default  := (0.to_raw_real_32);
-    
-Section Insert
-  
-  - parent_float_map32:FLOAT_MAP32 := FLOAT_MAP32;
-
-  - parent_float_real:FLOAT_REAL := FLOAT_REAL;
-  
-Section Public
-  
-  - atan :SELF <- FLOAT_PROCESSOR.atan_32 Self;
-
-  - sqrt :SELF <- FLOAT_PROCESSOR.sqrt_32 Self;
-
-  - log  :SELF <- FLOAT_PROCESSOR.log_32 Self;
-
-  - sin  :SELF <- FLOAT_PROCESSOR.sin_32 Self;
-
-  - cos  :SELF <- FLOAT_PROCESSOR.cos_32 Self;
-
-  - pow exp:SELF :SELF <- FLOAT_PROCESSOR.pow_32 Self;
diff --git a/lib/number/real_64.li b/lib/number/real_64.li
deleted file mode 100644
index fa13ea1..0000000
--- a/lib/number/real_64.li
+++ /dev/null
@@ -1,54 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := Expanded REAL_64;
-
-  - export   := REAL, REAL_80;
-  
-  - comment  := "Float (C `double' mapping).";
-    
-  - type     := `double`;
-  - default  := (0.to_raw_real_64);
-    
-Section Insert
-  
-  - parent_float_map64:FLOAT_MAP64 := FLOAT_MAP64;
-  
-  - parent_float_real:FLOAT_REAL := FLOAT_REAL;
-  
-Section Public
-  
-  - atan :SELF <- FLOAT_PROCESSOR.atan_64 Self;
-
-  - sqrt :SELF <- FLOAT_PROCESSOR.sqrt_64 Self;
-
-  - log  :SELF <- FLOAT_PROCESSOR.log_64 Self;
-
-  - sin  :SELF <- FLOAT_PROCESSOR.sin_64 Self;
-
-  - cos  :SELF <- FLOAT_PROCESSOR.cos_64 Self;
-
-  - pow exp:SELF :SELF <- FLOAT_PROCESSOR.pow_64 Self;
-
-  
-  
-  
diff --git a/lib/number/real_80.li b/lib/number/real_80.li
deleted file mode 100644
index 7aa4f22..0000000
--- a/lib/number/real_80.li
+++ /dev/null
@@ -1,51 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := Expanded REAL_80;
-
-  - export   := REAL;
-  
-  - comment  := "Float 80 bits (C `long double' mapping).";
-    
-  - type     := `long double`;
-  - default  := (0.to_raw_real_80);
-    
-Section Insert
-  
-  - parent_float_map80:FLOAT_MAP80 := FLOAT_MAP80;
-
-  - parent_float_real:FLOAT_REAL := FLOAT_REAL;
-  
-Section Public
-  
-  - atan :SELF <- FLOAT_PROCESSOR.atan_80 Self;
-
-  - sqrt :SELF <- FLOAT_PROCESSOR.sqrt_80 Self;
-
-  - log  :SELF <- FLOAT_PROCESSOR.log_80 Self;
-
-  - sin  :SELF <- FLOAT_PROCESSOR.sin_80 Self;
-
-  - cos  :SELF <- FLOAT_PROCESSOR.cos_80 Self;
-
-  - pow exp:SELF :SELF <- FLOAT_PROCESSOR.pow_80 Self;
-
diff --git a/lib/number/uinteger_16.li b/lib/number/uinteger_16.li
deleted file mode 100644
index 8acee90..0000000
--- a/lib/number/uinteger_16.li
+++ /dev/null
@@ -1,58 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UINTEGER_16;
-
-  - export  :=
-  UINTEGER_64, UINTEGER_32, 
-  INTEGER_64 , INTEGER_32 ,
-  INTEGER;
-  
-  - comment :="Unsigned 16 bits integer.";
-
-  - type    := `unsigned short`;
-  - default := (0.to_raw_uinteger_16);
-  
-Section Insert
-  
-  - parent_unsigned_integer:UNSIGNED_INTEGER := UNSIGNED_INTEGER;
-  
-Section Public
-
-  - object_size:INTEGER := 2;  
-
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 := 65535.to_raw_uinteger_64; 
-  
-  //
-  // Conversion with test.
-  //
-  
-  - to_uinteger_16:UINTEGER_16 <- Self;
-  
-  //- to_char_unicode:CHAR_UNICODE <- CHAR_UNICODE.force_conversion Self;
-
-
-
diff --git a/lib/number/uinteger_32.li b/lib/number/uinteger_32.li
deleted file mode 100644
index 7c4f6f7..0000000
--- a/lib/number/uinteger_32.li
+++ /dev/null
@@ -1,52 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UINTEGER_32;
-
-  - export  := INTEGER, UINTEGER_64, INTEGER_64, POINTER;
-   
-  - comment := "Unsigned 32 bits integer.";
-  
-  - type    := `unsigned long`;
-  - default := (0.to_raw_uinteger_32);
-
-Section Insert
-  
-  - parent_unsigned_integer:UNSIGNED_INTEGER := UNSIGNED_INTEGER;
-  
-Section Public
-  
-  - object_size:INTEGER := 4;
-
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 := 0FFFF_FFFFh.to_raw_uinteger_64;
-  
-  //
-  // Conversion with test.
-  //
-  
-  - to_uinteger_32:UINTEGER_32 <- Self;
-
-  - to_uinteger_64:UINTEGER_64 <- to_raw_uinteger_64;
diff --git a/lib/number/uinteger_64.li b/lib/number/uinteger_64.li
deleted file mode 100644
index 769be07..0000000
--- a/lib/number/uinteger_64.li
+++ /dev/null
@@ -1,51 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UINTEGER_64;
-
-  - export  := INTEGER;
-
-  - comment :="Unsigned 64 bits integer.";
-
-  - type    := `unsigned long long`;
-  - default := (0.to_raw_uinteger_64);
-  
-Section Insert
-  
-  - parent_unsigned_integer:UNSIGNED_INTEGER := UNSIGNED_INTEGER;
-  
-Section Public
-  
-  - object_size:INTEGER := 8;
-
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 := `0xFFFFFFFFFFFFFFFFLLU`:UINTEGER_64; //BSBS pb C 0FFFFFFFFFFFFFFFFh; 
-  
-  //
-  // Conversion with test.
-  //
-  
-  - to_uinteger_64:UINTEGER_64   <- Self;
-  
\ No newline at end of file
diff --git a/lib/number/uinteger_8.li b/lib/number/uinteger_8.li
deleted file mode 100644
index 39051b6..0000000
--- a/lib/number/uinteger_8.li
+++ /dev/null
@@ -1,62 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UINTEGER_8;
-  
-  - export  := 
-  UINTEGER_64, UINTEGER_32, UINTEGER_16, 
-  INTEGER_64 , INTEGER_32 , INTEGER_16 ,
-  INTEGER;
-
-  - comment :="Unsigned 8 bits integer.";
-
-  - type    := `unsigned char`;
-  - default := (0.to_raw_uinteger_8);
-  
-Section Insert
-  
-  - parent_unsigned_integer:UNSIGNED_INTEGER := UNSIGNED_INTEGER;
-  
-Section Public
-  
-  - object_size:INTEGER := 1;
-
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 := 255.to_raw_uinteger_64;
-  
-  //
-  // Conversion with test.
-  //
-    
-  - to_uinteger_8:UINTEGER_8 <- Self;
-    
-  - to_character:CHARACTER <- 
-  [ -? {in_range (CHARACTER.minimum) to (CHARACTER.maximum)}; ]
-  (    
-    CONVERT[UINTEGER_8, CHARACTER].on Self
-  );
-
-
-
diff --git a/lib/number/uinteger_big.li b/lib/number/uinteger_big.li
deleted file mode 100644
index 4b15542..0000000
--- a/lib/number/uinteger_big.li
+++ /dev/null
@@ -1,969 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name        := UINTEGER_BIG; // Aucun Auto-Cast pour l'instant...(peut etre
-                              // INTEGER_BIG ...)
-                               
-  - comment     := "Integer without bits limit! (Just for fun!)";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section UINTEGER_BIG
-  
-  + storage:FAST_ARRAY[UINTEGER_32];
-  
-  - last_modulo:UINTEGER_32;
-  
-  - count:INTEGER <- storage.count;
-
-  - lower:INTEGER <- storage.lower;
-
-  - upper:INTEGER <- storage.upper;
-
-  - item idx:INTEGER :UINTEGER_32 <- storage.item idx;
-
-  - copy other:UINTEGER_BIG <- storage.copy (other.storage);
-
-  - force elt:UINTEGER_32 to idx:INTEGER <- storage.force elt to idx;
-  
-  - put elt:UINTEGER_32 to idx:INTEGER <- storage.put elt to idx;
-  
-  - add_last elt:UINTEGER_32 <- storage.add_last elt;
-  
-  - resize new_size:INTEGER <-
-  (
-    ? { new_size > 0};    
-    storage.resize new_size;
-  );
-  
-  - last:UINTEGER_32 <- storage.last;
-  
-  - normalize <-
-  (
-    {(storage.count != 1) && {storage.last == 0}}.while_do {
-      storage.remove_last;
-    };	
-  );
-
-Section Public 
-
-  - create init:UINTEGER_32 :UINTEGER_BIG <- 
-  ( + result:SELF;
-    
-    result := clone;
-    result.make init;
-    result
-  );
-        
-  - make init:UINTEGER_32 :SELF <-
-  (     
-    (storage = NULL).if {
-      storage := FAST_ARRAY[UINTEGER_32].create_with_capacity 4; 
-    } else {
-      storage.clear;
-    };
-    storage.add_last 0;
-  );
-
-  //
-  // Conversion format with test.
-  //
-  
-  - to_uinteger_64:UINTEGER_64   <- 
-  [ -? {count <= 2}; ] // Bound limit control.
-  ( + result:UINTEGER_64;
-    
-    result := storage.first;
-    (count > 1).if {
-      result := result | (storage.item 1.to_uinteger_64 << 32);
-    };
-    result
-  );
-  
-  - to_uinteger_32:UINTEGER_32   <- 
-  [ -? {count = 1}; ]
-  ( 
-    storage.first
-  );
-  
-  - to_uinteger_16:UINTEGER_16 <- 
-  [ -? {count = 1}; ]
-  ( 
-    storage.first.to_uinteger_16
-  );
-  
-  - to_uinteger_8:UINTEGER_8 <- 
-  [ -? {count = 1}; ]
-  ( 
-    storage.first.to_uinteger_8
-  );
-  
-  - to_integer_64:INTEGER_64     <- 
-  [ -? {(to_uinteger_64 >> 63) = 0}; ]
-  ( 
-    to_uinteger_64.to_integer_64
-  );
-  
-  - to_integer:INTEGER     <- 
-  [ -? {(to_uinteger_64 >> 31) = 0}; ]
-  ( 
-    storage.first.to_integer
-  );
-  
-  - to_integer_16:INTEGER_16   <- 
-  [ -? {(to_uinteger_16 >> 15) = 0}; ]
-  ( 
-    storage.first.to_uinteger_16
-  );
-  
-  - to_integer_8:INTEGER_8   <- 
-  [ -? {(to_uinteger_8 >> 7) = 0}; ]
-  ( 
-    storage.first.to_integer_8
-  );
-    
-  //
-  // binary operator :
-  //
-  
-  - substract other:SELF :SELF <- 
-  [ ? {Self >= other}; ]
-  ( + over,substr,part1,part2:UINTEGER_64;
-    + idx:INTEGER;
-
-    (Self == other).if {
-      set_with_zero;
-    } else {                  
-      idx := lower;
-      {idx > other.upper}.until_do {
-	part1 := item idx;
-	part2 := other.item idx.to_uinteger_64 + over;
-	substr := part1 - part2;
-        over := substr >> 32;
-        put ((substr & 0FFFF_FFFFh).to_uinteger_32) to idx;
-        idx := idx + 1;
-      };
-      {over = 0}.until_do {
-	part1 := item idx;
-	substr := part1 - over;
-        over := substr >> 32;
-	put ((substr & 0FFFF_FFFFh).to_uinteger_32) to idx;
-	idx := idx + 1;
-      };      
-      normalize;
-    };    
-  );
-    
-  - substract_integer other:INTEGER :SELF <-
-  [ ? {Self >=# other}; ]
-  ( + part1,over,substr:UINTEGER_64;
-    + idx:INTEGER;
-
-    (Self ==# other).if {
-      set_with_zero;
-    } else {      
-      part1 := item 0;
-      substr := part1 - other;
-      over := substr >> 32;
-      put ((substr & 0FFFF_FFFFh).to_uinteger_32) to 0;
-      idx := idx + 1;
-      {over = 0}.until_do {
-	part1 := item idx;
-	substr := part1 - over;
-        over := substr >> 32;
-	put ((substr & 0FFFF_FFFFh).to_uinteger_32) to idx;
-	idx := idx + 1;
-      };      
-      normalize;
-    };    
-  );
-    
-  - addition other:SELF :SELF <- 
-  [ -? {Self >= other}; ]
-  ( + part1,part2,sum,over:UINTEGER_64;
-    + idx:INTEGER;
-    
-    idx := lower;
-    {idx > other.upper}.until_do {
-      part1 := item idx;
-      part2 := other.item idx;
-      sum := part1 + part2 + over;
-      put ((sum & 0FFFF_FFFFh).to_uinteger_32) to idx;
-      over := sum >> 32;
-      idx := idx + 1;
-    };
-    {(idx <= upper) && {over != 0}}.while_do {
-      part1 := item idx;
-      sum   := part1 + over;
-      put ((sum & 0FFFF_FFFFh).to_uinteger_32) to idx;
-      over := sum >> 32;
-    };
-    (over != 0).if {
-      add_last (over.to_uinteger_32);
-    };    
-  );  
-    
-  - addition_integer other:INTEGER :SELF <-
-  ( + part1,sum,over:UINTEGER_64;
-    + idx:INTEGER;
-   
-    part1 := item 0;
-    sum := part1 + other;
-    put ((sum & 0FFFF_FFFFh).to_uinteger_32) to 0;
-    idx  := idx + 1;
-    over := sum >> 32;
-    {(idx <= upper) && {over != 0}}.while_do {
-      part1 := item idx;
-      sum := part1 + over;
-      put ((sum & 0FFFF_FFFFh).to_uinteger_32) to idx;
-      idx  := idx + 1; 
-      over := sum >> 32;
-    };    
-    (over != 0).if {
-      add_last (over.to_uinteger_32);
-    };    
-  );
-    
-  - multiply other:SELF :SELF <- 
-  ( + part1,part2,product:UINTEGER_64;
-    + index_result:INTEGER;
-            
-    lower.to upper do { idx:INTEGER;
-      + result_current:UINTEGER_BIG;
-      
-      result_current := 0;
-      result_current.resize count;
-      part1 := item idx;
-      index_result := idx;
-      (other.lower).to (other.upper) do { idx_other:INTEGER;
-	part2 := other.item idx_other;
-	product := part1 * part2;	
-	(product < (UINTEGER_32.maximum.to_uinteger_64)).if {
-	  result_current.put (product.to_uinteger_32) to index_result;
-	} else {
-	  result_current.put ((product & (UINTEGER_32.maximum.to_uinteger_64)).to_uinteger_32) to index_result;
-	  index_result := index_result + 1;
-	  result_current.force ((product >> 32).to_uinteger_32) to index_result;
-	  index_result := index_result + 1;
-	};
-      };
-      
-      result := result + result_current;
-      
-    };
-    result.clean;
-    result
-  );
-  
-  - '*#' Left 100 other:INTEGER :SELF <-
-  (
-    + result:UINTEGER_BIG;
-    + part1,product,over:UINTEGER_64;
-    
-    result := 0;
-    result.resize count;
-    lower.to upper do { idx:INTEGER;      
-      part1 := item idx;      
-      product :=  part1 * other + over;      
-      (product < (UINTEGER_32.maximum.to_uinteger_64)).if {
-	result.put (product.to_uinteger_32) to idx;
-	over := 0;
-      } else {
-	result.put ((product & (UINTEGER_32.maximum.to_uinteger_64)).to_uinteger_32) to idx;
-	over := product >> 32;
-      };
-    };
-    
-    (over!==0).if {
-      result.add_last (over.to_uinteger_32);
-    };    
-    
-    result.clean;
-    result
-  );
-  
-  - '/'  Left 100 other:SELF :SELF <- 
-  ( + result:UINTEGER_BIG;
-    
-    
-  );
-  
-  
-  - '/#' Left 100 other:INTEGER :SELF <-
-  ( + result:SELF;
-    + last_mod,div:UINTEGER_64;
-    + idx:INTEGER;
-    
-    result.resize count;
-    idx := upper;
-    last_mod := item idx;    
-    {idx < lower}.until_do {
-      div := 0;
-      (last_mod < other).if {
-	idx := idx - 1;
-	(idx >= lower).if {
-	  last_mod := (last_mod << 32) + item idx.to_uinteger_64;
-	  div := last_mod / (other.to_uinteger_64);
-	  last_mod := last_mod % (other.to_uinteger_64);
-	};
-      } else {
-	div := last_mod / (other.to_uinteger_64);
-	last_mod := last_mod % (other.to_uinteger_64); 
-      };      
-      (div !== 0).if {
-	result.put ((div & (UINTEGER_32.maximum.to_uinteger_64)).to_uinteger_32) to idx;
-      };
-    };
-    last_modulo := last_mod.to_uinteger_32;
-    result.clean;
-    result
-  );
-    
-  - and_binary other:SELF :SELF <-
-  (     
-    (other.upper < upper).if {
-      storage.remove_tail (upper - other.upper);
-    };
-    lower.to upper do { i:INTEGER;
-      put (item i & other.item i) to i;
-    };
-    normalize;
-  );
-  
-  - or_binary other:SELF :SELF <-
-  (         
-    lower.to (upper.min (other.upper)) do { i:INTEGER;
-      put (item i | other.item i) to i;
-    };
-    upper.to (other.upper) do { i:INTEGER;
-      add_last (other.item i);
-    };    
-  );
-
-  //
-  // Test binary operator :
-  //
-    
-  - '>'   Right 60 other:SELF :BOOLEAN <- 
-  (
-    + result:BOOLEAN;
-    (count > (other.count)).if {
-      result := TRUE;
-    }.elseif {count < other.count} then {
-      result  := FALSE;
-    } else {
-      + i:INTEGER;
-      + find:BOOLEAN;
-      i := lower;
-
-      {find || {i > upper}}.until_do {
-	(item i > other.item i).if {
-	  result := TRUE;
-	  find := TRUE;
-	}.elseif {item i < other.item i} then {
-	  result := FALSE;
-	  find := TRUE;
-	};
-
-	i := i + 1; 
-      };
-    };
-    
-    result
-  );
-  
-  
-  - '>#' Right 60 other:INTEGER :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    (count > 1).if {
-      result := TRUE;
-    } else {
-      result := item 0 > other;
-    };
-    result
-  );
-  
-  - '=='  Right 60 other:SELF :BOOLEAN <-
-  (
-    + result:BOOLEAN;
-    + idx:INTEGER;
-    (count == other.count).if {
-      idx := upper;
-      { (idx >= lower) && {item idx == other.item idx} }.while_do {
-	idx := idx - 1;
-      };
-      (idx < lower).if {
-	result := TRUE;
-      };
-    };
-    
-    result
-  );
-  
-  //
-  // Function.
-  //
-
-  - factorial_integer n:INTEGER <-
-  [ -? {n >= 0}; ]
-  (         
-    (n = 0).if {
-      set_with_zero;
-      put 1 to 0;
-    } else {
-      2.to n do { i:INTEGER;
-        multiply_integer i; 
-      };
-    };
-  );
-  
-  //
-  // conversion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + value:UINTEGER_BIG; 
-    + mod:UINTEGER_32;
-    + counter:INTEGER;
-    + old_upper,new_upper:INTEGER;
-    
-    old_upper:=buffer.upper + 1;
-    
-    (upper = 0).if { 
-      item 0.append_in buffer;
-    } else {
-      value:=Self;
-      {
-	value:=value /# 1000000000;
-	mod:=last_modulo;	
-	{counter==0}.until_do {
-	  buffer.extend '0';
-	  counter:=counter-1;
-	};
-	counter := 9;
-	{	
-	  buffer.extend ((mod % 10).digit);
-	  mod := mod / 10;
-	  counter := counter-1;
-	}.do_while {mod!==0};
-      }.do_while {value!==0};
-      
-      new_upper := buffer.upper;      
-
-      // Swap.
-      {old_upper >= new_upper}.until_do {
-	buffer.swap old_upper with new_upper;
-	new_upper := new_upper - 1;
-	old_upper := old_upper + 1;
-      };
-    };
-  );
-    
-  - print_positif <-
-  (
-    string_tmp.clear;
-    append_in string_tmp;
-    string_tmp.print;
-  );
-/*  
-  - append_in buffer:STRING <-
-  ( + val:SELF;
-    + i,j:INTEGER;     
-    ? {buffer!=NULL};
-    
-    (self == 0).if {
-      buffer.extend '0';
-    } else {      
-      i := buffer.upper + 1;      
-      val.copy Self;
-      {val == 0}.until_do {
-	buffer.extend ((val %# 10).digit);
-	val := val /# 10;
-      };
-      j := buffer.upper;
-            
-      {i >= j}.until_do {
-	buffer.swap i with j;
-	j := j - 1;
-	i := i + 1;
-      };
-    };
-  );
-  */
-Section Public
-  
-  - set_with_zero <-
-  (
-    storage.clear;
-    storage.add_last 0;
-  );
-  
-  - is_zero:BOOLEAN <- ((storage.count = 1) && {storage.first = 0});
-  
-  - compare other:SELF :INTEGER <-
-  // -1 if Self < other
-  //  0 if Self = other
-  // +1 if Self > other
-  ( + result,up_s,up_o:INTEGER;
-    + v_s,v_o:INTEGER_32;
-    + i:INTEGER;
-    
-    up_s := upper;
-    up_o := other.upper;
-    (up_s = up_o).if {
-      i := upper;
-      {
-        v_s := item i;
-        v_o := other.item i;
-        (v_s < v_o).if {
-          result := -1;
-        } else {
-          (v_s > v_o).if {
-            result := 1;
-          };
-        };
-        i := i - 1;
-      }.do_until {(i < lower) || {result != 0}};
-    } else {
-      (up_s < up_o).if {
-        result := -1;
-      } else {        
-        result := 1;
-      };
-    };
-    result
-  );
-  
-  - divide_one_word divisor:UINTEGER_32 :UINTEGER_32 <-
-  // This method is used by `divide'. The one word divisor is
-  // specified by `divisor' is saw as unsigned.
-  // `Self' is the dividend (saw positive) at invocation but is replaced by
-  // the quotient. The remainder is returned as unsigned INTEGER.
-  // Note: `Current' is modified by this method.
-  [ -? {divisor != 0}; ]
-  ( + i, remainder_word1, remainder_word0:INTEGER;
-    + result:UINTEGER_32;
-    + x:UINTEGER_64;
-    
-    (count = 1).if {
-      result := first;
-      (result < divisor).if {
-        set_with_zero;
-      } else {
-        storage.clear;
-        storage.add_last (result / divisor);
-        result := result % divisor;
-      };
-    } else {
-      i := upper;
-      {i < lower}.until_do {
-        remainder_word0 := item i;
-        x := (remainder_word1.to_uinteger_64 << 32) | remainder_word0;
-        remainder_word1 := x % divisor;
-        put (x / divisor) to i;       
-        i := i - 1;
-      };
-      (item upper = 0).if {
-        storage.remove_last;
-        ? {item upper != 0};
-      };
-      result := remainder_word1;
-    };		
-    result
-  );
-  
-  - normalize_shift:INTEGER_8 <-
-  // Shift left until the most significant bit is on.
-  // Result give the number of left shift.
-  [ -? {! is_zero}; ]
-  ( + head:UINTEGER_32;
-    + result:INTEGER_8;
-	
-    head := item upper;
-    {(head & 8000_0000h) != 0}.until_do {
-      head := head << 1;
-      result := result + 1;
-    };
-    (result > 0).if {
-      shift_left result;
-    };
-    result
-  )
-  [ +? {item upper < 0}; ];
-  
-  - shift_left n:INTEGER <-
-  // Shift bits of magnitude by `n' position left. (Note that no bit can
-  // be lost because the `storage' area is automatically extended when
-  // it is necessary.)
-  [ -? {n > 0}; ]
-  ( + left,right: INTEGER_8;
-    + word_shift:INTEGER;
-    + new_value:UINTEGER_32;
-     
-    (last != 0).if {
-      word_shift := n >> 5;
-      left  := (n & 1Fh).to_integer_8; // Optimistic prediction      
-      right := 32 - left;      
-      ((last >> right) = 0).if {
-        storage.add 0 first (word_shift+1);
-        word_shift.to (upper-1) do { i:INTEGER;
-          new_value := (item (i+1) << left) | (item i >> right);
-        };
-        new_value := item upper >> right;
-        storage.put new_value to upper;
-      } else {
-        storage.add 0 first word_shift;
-        upper.downto (word_shift+1) do { i:INTEGER;
-          new_value := (item i << left) | (item (i-1) >> right);
-          storage.put new_value to i;
-        };
-        new_value := item word_shift << left;
-        storage.put new_value to word_shift;
-      };
-    };        
-  );
-  
-  - shift_right n:INTEGER <-
-  // Shift bits of magnitude by `n' position right. 
-  [ -? {n > 0}; ]
-  ( + left,right: INTEGER_8;
-    + word_right:INTEGER;
-    + new_value:UINTEGER_32;
-     
-    (last != 0).if {
-      word_right := n >> 5;
-      right := (n & 1Fh).to_integer_8; // Optimistic prediction      
-      left  := 32 - right;      
-      word_shift.to (upper-1) do { i:INTEGER;
-        new_value := (item (i+1) << left) | (item i >> right);
-        storage.put new_value to (i - word_shift);
-      };
-      new_value := item upper >> right;
-      (new_value = 0).if {
-        storage.remove_tail (word_shift + 1);
-      } else {
-        storage.put new_value to (upper - word_shift);
-        storage.remove_tail word_shift;
-      };      
-    };        
-  );
-  
-  - multiply_and_subtract (u1, qhat: INTEGER, d_storage: FAST_ARRAY[UINTEGER_32], 
-  d_offset:INTEGER, r_storage:FAST_ARRAY[UINTEGER_32],r_offset, length: INTEGER):BOOLEAN <-
-  // Only used by `divide'.
-  [ -? {qhat != 0}; ]
-  ( + i, j, jmax, m1, m2: INTEGER; 
-    + dec,result:BOOLEAN;
-		
-    (qhat = 1).if {
-      i := d_offset;
-      j := r_offset;
-      jmax := r_offset + length;				
-      {j = jmax}.until_do {
-        (dec).if {
-          x_32 := r_storage.item j - d_storage.item i - 1;          
-          dec := x_32 >= r_storage.item j;
-          r_storage.put x_32 to j;
-        } else {
-          x_32 := r_storage.item j - d_storage.item i;          
-          dec := x_32 > r_storage.item j;
-          r_storage.put x_32 to j;
-        };
-        i := i + 1;
-        j := j + 1;
-      };
-      (dec).if {
-        (u1 = 0).if {
-          result := TRUE;
-        } else {
-          x_32 := r_storage.item j - 1;          
-          result := r_storage.item j = 0;
-          r_storage.put x_32 to j;
-          ? {! result};			
-        };		
-      };
-    } else {
-      i := d_offset;
-      j := r_offset;
-      jmax := r_offset + length;
-      {j = jmax}.until_do {
-        x := qhat.to_uinteger_64 * d_storage.item i + m1;
-        m2 := (x & 0FFFF_FFFFh).to_uinteger_32;
-        m1 := (x >> 32).to_uinteger_32;
-        (dec).if {
-          x_32 := r_storage.item j - m2 - 1;          
-          dec := x_32 >= r_storage.item j;
-          r_storage.put x_32 to j;
-        } else {
-          x_32 := r_storage.item j - m2;          
-          dec := x_32 > r_storage.item j;
-          r_storage.put x_32 to j;
-        };
-        i := i + 1;
-        j := j + 1;
-      };
-      (dec).if {
-        (u1 = 0).if {
-          result := TRUE;
-        } else {
-          x_32 := r_storage.item j - m1 - 1;          
-          result := x_32 >= r_storage.item j;
-          r_storage.put x_32 to j;
-        };
-      }.elseif {m1 = 0} then {
-        // nothing to do
-      }.elseif {u1 = 0} then {
-        result := TRUE;
-      } else {
-        x_32 := r_storage.item j - m1;        
-        result := x_32 > r_storage.item j;
-        r_storage.put x_32 to j;
-      };
-    };
-    result
-  );
-
-  - add_back (old_u1:INTEGER, d_storage:FAST_ARRAY[UINTEGER_32],d_offset:INTEGER,
-    r_storage:FAST_ARRAY[UINTEGER_32],r_offset, length:INTEGER):BOOLEAN <-
-  // Only used by `divide'.
-  // `old_u1' is the value of `u1' before `multiply_and_subtract'.
-  ( + i, j, jmax:INTEGER; 
-    + inc,result:BOOLEAN;
-		
-    i := d_offset;
-    j := r_offset;
-    jmax := r_offset + length;
-    {j = jmax}.until_do {			
-      (inc).if {
-        x_32 := r_storage.item j + d_storage.item i + 1;        
-        inc := x_32 <= r_storage.item j;
-        r_storage.put x_32 to j;
-      } else {
-        x_32 := r_storage.item j + d_storage.item i;
-        inc := x_32 < r_storage.item j;
-        r_storage.put x_32 to j;
-      };
-      i := i + 1;
-      j := j + 1;
-    };
-    (inc).if {
-      (old_u1 = 0).if {
-        result := TRUE;
-      } else {
-        x_32 := r_storage.item j + 1;
-        r_storage.put x_32 to j;
-        result := x_32 = 0;
-      };
-    };
-  );
-
-  - is_a_good_divide (other, quotient, remainder:SELF) :BOOLEAN <-
-  [
-    -? {other     != NULL};
-    -? {quotient  != NULL};
-    -? {remainder != NULL};
-  ]	
-  ( + v:SELF;		
-    v := other.twin;
-    v.multiply quotient;
-    v.add remainder;
-    Self == v
-  );
-  
-  - divide_to (other, quotient, remainder:SELF) <-
-  // Euclidian division.
-  // Calculates the `quotient' and `remainder' of `Current'
-  // divided by `other'. (The contents of `Current' and `other' are
-  // not changed.)			
-  // Note: Uses Algorithm D in Knuth
-  [ -? {! other.is_zero};
-    -? {quotient  != NULL};
-    -? {remainder != NULL};
-    -? {quotient  != other};
-    -? {quotient  != Self};
-    -? {remainder != other};
-    -? {remainder != Self};
-  ]
-  ( + cmp, shift, nlen, dlen, qlen, j, k, v1, v2, u1, u2, rem: INTEGER;
-    + qhat, rhat, v2qhat_1, v2qhat_2, d_offset: INTEGER; 
-    + q_storage, r_storage, d_storage:FAST_ARRAY[UINTEGER_32];
-    + q_capacity, r_capacity:INTEGER;
-    + borrow:BOOLEAN;
-    
-    (is_zero).if {
-      // Dividend is zero:
-      quotient.set_with_zero;
-      remainder.set_with_zero;
-    } else {
-      cmp := compare other;
-      (cmp < 0).if { 
-        // Dividend less than divisor:
-        quotient.set_with_zero;
-        remainder.copy Self;        
-      }.elseif {cmp = 0} then {
-        // Dividend equal to divisor:        
-        quotient.from_integer 1;
-        remainder.set_with_zero;
-      }.elseif {other.count = 1} then {
-        // Special case one word divisor:
-        quotient.copy Self;        
-        remainder.storage.clear;
-        rem := quotient.divide_one_word (other.first);        
-        remainder.add_last rem;          
-      } else {
-        // Copy divisor storage to protect divisor:
-        register1.copy other;
-        remainder.copy Self;
-        // D1 normalize the divisor:
-        shift := register1.normalize_shift;        
-        (shift != 0).if {
-          remainder.shift_left shift;
-        };
-        // D2 Initialize j:        
-        r_storage := remainder.storage;
-        r_capacity := remainder.capacity;        
-        nlen := remainder.count;  // To avoid invariant class violation
-        remainder.set_with_zero;
-        d_storage := register1.storage;
-        d_offset := 0;
-        dlen := register1.count;
-        j := nlen - 1;
-        u2 := r_storage.item j;
-        k := dlen - 1;
-        v1 := register1.item k;
-        v2 := register1.item (k - 1);
-        (u2 >= v1).if {
-          k := nlen - dlen;
-          qlen := k + 1;
-        } else {
-          qlen := nlen - dlen;
-          k := qlen - 1;
-          j := j - 1;
-          u1 := u2;
-          u2 := r_storage.item j;
-        };
-        // Resize quotient if necessary
-        q_capacity := quotient.capacity;
-        (q_capacity < qlen).if {
-          // reallocation
-          q_capacity := capacity_from_lower_bound(q_capacity, qlen);
-          q_storage := storage.calloc q_capacity;
-        } else {
-          q_storage := quotient.storage;
-        };
-        // To avoid invariant violation on quotient
-        quotient.set_with_zero;
-        {k < 0}.until_do {				
-          j := j - 1; // D3 Calculate qhat - estimate qhat
-          (u1 = v1).if {
-            qhat := ~0;
-          } else {            
-            x := (u1.to_uinteger_64 << 32) | u2;
-            rhat := (x % v1).to_uinteger_32;
-            qhat := (x / v1).to_uinteger_32; // Correct qhat
-            (qhat = 0).if {
-            } else {
-              x := v2.to_uinteger_64 * qhat;
-              v2qhat_2 := (x & 0FFFF_FFFFh).to_uinteger_32;
-              v2qhat_1 := (x >> 32).to_uinteger_32;
-              (v2qhat_1 > rhat).if {
-                qhat := qhat - 1;
-                x_32 := v2qhat_2;
-                v2qhat_2 := x_32 - v2;
-                (v2qhat_2 > x_32).if {
-                  v2qhat_1 := v2qhat_1 - 1;
-                };
-                x_32 := rhat;
-                rhat := x_32 + v1;
-                (rhat < x_32).if {
-                }.elseif {v2qhat_1 > rhat} then {
-                  qhat := qhat - 1;
-                }.elseif {j < 0} then {
-                  ((v2qhat_1 = rhat) && {v2qhat_2 != 0}).if {
-                    qhat := qhat - 1;
-                  };
-                }.elseif {(v2qhat_1 = rhat) && {v2qhat_2 > r_storage.item j}} then {
-                  qhat := qhat - 1;
-                };
-              }.elseif {j < 0} then {
-                ((v2qhat_1 = rhat) && {v2qhat_2 != 0}).if {
-                  qhat := qhat - 1;
-                };
-              }.elseif {(v2qhat_1 = rhat) && {v2qhat_2 > r_storage.item j}} then {
-                qhat := qhat - 1;
-              };
-            };
-          };
-          // D4 Multiply and subtract:
-          (qhat = 0).if {
-            q_storage.put 0 to k;
-          } else {
-            borrow := multiply_and_subtract
-            (u1, qhat, d_storage, d_offset, r_storage, j - dlen + 2, dlen);
-            // D5 Test remainder: Result is negative ?
-            (borrow).if {
-              // D6 Add back
-              borrow := add_back(u1, d_storage, d_offset, r_storage, j - dlen + 2, dlen);
-              ? {borrow};                
-              q_storage.put (qhat - 1) to k;
-            } else {
-              q_storage.put qhat to k;                
-            };
-          };
-          // D7 loop on j
-          k := k - 1;
-          u1 := r_storage.item (j + 1);
-          u2 := r_storage.item j;
-        };
-        // Remove leading zero of quotient
-        k := qlen - 1;
-        (q_storage.item k = 0).if {
-          qlen := k;
-        };
-        quotient.set_all(q_storage, q_capacity, qlen, 0, FALSE);
-        // Remove leading zero of remainder
-        j := dlen - 1;          
-        {(j < 0) || {r_storage.item j != 0}}.until_do {
-          j := j - 1;
-        };
-        j := j + 1;
-        ? {j >= 0};
-        (j = 0).if {
-          ? {remainder.is_zero};            
-        } else {
-          remainder.set_all(r_storage, r_capacity, j, 0, FALSE);
-        };
-        // D8 Unnormalize:
-        (shift > 0).if {
-          remainder.shift_right shift;
-        };        
-      };
-    };
-  )
-  [ 
-    ? {is_a_good_divide(other, quotient, remainder)};    
-  ];
diff --git a/lib/number/ureal_16_16.li b/lib/number/ureal_16_16.li
deleted file mode 100644
index 49e1b06..0000000
--- a/lib/number/ureal_16_16.li
+++ /dev/null
@@ -1,90 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UREAL_16_16;
-
-  - export  := REAL_32, REAL_64;
-  
-  - comment := "unsigned 16.16 fixed float.";
-    
-  - type    := `signed long`;
-  - default := (0.to_raw_ureal_16_16);
-    
-Section Insert
-  
-  - parent_unsigned_fixed_real:UNSIGNED_FIXED_REAL := UNSIGNED_FIXED_REAL;
-
-Section SELF
-
-  - shift_bits:INTEGER <- 16;
-  
-Section Public
-  
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 <- UINTEGER_16.maximum; 
-  
-  //
-  // Convertion format with test.
-  //
-    
-  - to_real_16_16:REAL_16_16 <- Self;
-    
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:INTEGER;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_integer;
-    
-    (val < 0).if {
-      val := - val;
-      buffer.extend '-';
-    };
-    (val >> 16).append_in buffer;
-    buffer.extend '.';
-
-    old_count:=buffer.count;
-    //     1/65536 = 0.00390625 => 8 digit.
-    (((val & 0FFFFh).to_uinteger_64 * 100000000)>>16).to_integer.append_in buffer;
-    new_count:=old_count+8;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/number/ureal_24_8.li b/lib/number/ureal_24_8.li
deleted file mode 100644
index eb5322d..0000000
--- a/lib/number/ureal_24_8.li
+++ /dev/null
@@ -1,92 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UREAL_24_8;
-
-  - export  := REAL_32, REAL_64;
-  
-  - comment := "signed 24.8 fixed float.";
-  
-  - type    := `signed long`;
-  - default := (0.to_raw_ureal_24_8);
-  
-Section Insert
-  
-  - parent_unsigned_fixed_real:UNSIGNED_FIXED_REAL := UNSIGNED_FIXED_REAL;
-  
-Section SELF
-
-  - shift_bits:INTEGER <- 8; 
-  
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 <- 0FF_FFFFh.to_raw_uinteger_64; 
-  
-  //
-  // Convertion format with test.
-  //
-      
-  - to_real_24_8:REAL_24_8 <- Self;
-  
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:INTEGER;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_integer;
-    
-    (val < 0).if {
-      val := - val;
-      buffer.extend '-';
-    };
-    (val >> 8).append_in buffer;
-    buffer.extend '.';
-
-    old_count:=buffer.count;
-    //     1/256 = 0.00390625 => 8 digit.
-    (((val & 255).to_uinteger_64 * 100000000)>>8).to_integer.append_in buffer;
-    new_count:=old_count+8;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/number/ureal_26_6.li b/lib/number/ureal_26_6.li
deleted file mode 100644
index 2a34844..0000000
--- a/lib/number/ureal_26_6.li
+++ /dev/null
@@ -1,88 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := Expanded UREAL_26_6;
-
-  - export  := REAL_32, REAL_64;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "unsigned 26.6 fixed float.";
-  
-  - type    := `unsigned long`;
-  - default := (0.to_raw_ureal_26_6);
-  
-Section Insert
-  
-  - parent_unsigned_fixed_real:UNSIGNED_FIXED_REAL := UNSIGNED_FIXED_REAL;
-
-Section SELF
-
-  - shift_bits:INTEGER <- 6;
-  
-Section Public
-    
-  //
-  // Range.
-  //
-  
-  - maximum:UINTEGER_64 <- 3FF_FFFFh.to_raw_uinteger_64;
-  
-  //
-  // Convertion format with test.
-  //
-  
-  - to_ureal_26_6:UREAL_26_6 <- Self;
-  
-  //
-  // Convertion
-  //
-  
-  - append_in buffer:STRING <- 
-  // Append in the `buffer' the equivalent of `to_string'. No new STRING
-  // creation during the process.
-  ( + val:UINTEGER_32;
-    + old_count,new_count:INTEGER;
-    ? {buffer!=NULL};
-    
-    val := to_raw_uinteger_32;
-    (val >> 6).append_in buffer;
-    buffer.extend '.';
-    old_count:=buffer.count;
-    //     1/64 = 0.015625 => 6 digit.    
-    (((val & 63) * 1000000)>>6).append_in buffer;
-    new_count:=old_count+6;
-    {buffer.count!=new_count}.while_do {
-      buffer.insert '0' to old_count;
-    };
-
-  );
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/lib/reflexivity/fifo_cop.li b/lib/reflexivity/fifo_cop.li
deleted file mode 100644
index 1f5778b..0000000
--- a/lib/reflexivity/fifo_cop.li
+++ /dev/null
@@ -1,107 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
- 
-  + name     := FIFO_COP;
-
-    
-  - comment  :="FIFO call for COP.";
-  
-  - external := 
-  `pthread_mutex_t fifo_mutex;`;
-  
-Section Inherit 
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  - storage:FAST_ARRAY[INTEGER_32] := FAST_ARRAY[INTEGER_32].create 8;
-  // WARNING: Always power 2 for storage capacity.
-  
-  - first:INTEGER;
-  
-  - last:INTEGER;
-    
-Section Public
-  
-  //
-  // Stat.
-  //
-  
-  - is_empty:BOOLEAN <- first = last;  
-  
-  //
-  // Push.
-  //
-  
-  - add verrou:INTEGER_32 <-
-  ( + old_count:INTEGER;
-    + old_is_empty:BOOLEAN;
-    
-    lock;
-    //
-    old_is_empty := is_empty;
-    storage.put verrou to last;
-    last := (last + 1) & storage.upper;
-    (last = first).if {
-      // Resize FIFO.
-      old_count := storage.count;
-      storage.resize (storage.count * 2);
-      0.to (first-1) do { i:INTEGER;
-	storage.put (storage.item i) to (old_count + i);
-      };
-      last := old_count + first;
-    };	
-    
-    (! old_is_empty).if {
-      wait verrou;
-    };
-    //
-    unlock;   
-  );
-  
-  // 
-  // Pop.  
-  //
-  
-  - next <-
-  (
-    lock;
-    //
-    first := (first + 1) & storage.upper;    
-    (! is_empty).if {
-      wake_up (storage.item first);
-    };
-    //
-    unlock;
-  );
-  
-Section Private
-  
-  - lock   <- `pthread_mutex_lock(&fifo_mutex)`;
-  
-  - unlock <- `pthread_mutex_unlock(&fifo_mutex)`;
-  
-  - wait verrou:INTEGER_32 <- `pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)`;
-  
-  - wake_up verrou:INTEGER_32 <- `pthread_cond_broadcast(pthread_cond_t *cond)`;
-  
\ No newline at end of file
diff --git a/lib/reflexivity/view_object.li b/lib/reflexivity/view_object.li
deleted file mode 100644
index 702dad9..0000000
--- a/lib/reflexivity/view_object.li
+++ /dev/null
@@ -1,160 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
- 
-  + name    := VIEW_OBJECT[E];
-
-    
-  - comment := "Reflexivity view object.";
-  
-Section Public  
-  
-  //
-  // General information.
-  //
-  
-  //- name:STRING_CONSTANT <- `FUCK`;
-  
-  - is_separate:BOOLEAN <- `FUCK`;
-  
-  - is_expanded:BOOLEAN <- `FUCK`;
-  
-  - is_natif_expanded:BOOLEAN <- `FUCK`; 
-
-  //
-  // Data action.
-  //  
-  
-  - forall_data action:BLOCK <- `FUCK`;
-  
-  - forall_set_data action:BLOCK <- `FUCK`;
-  
-  - has_data:BOOLEAN <- `FUCK`;
-  
-  //
-  // Bit control access.
-  //
-  
-  - is_marked:BOOLEAN <-   
-  (
-    (is_natif_expanded) || {! has_data} || {(get_idf_intern & 001b) != 0}
-  );
-
-  - is_free:BOOLEAN        <- (get_idf_intern & 010b) != 0;
-  
-  - is_non_mutable:BOOLEAN <- 
-  (
-    (is_natif_expanded) || {! has_data} || {(get_idf_intern & 100b) != 0}
-  );
-        
-Section MEMORY  
-  
-  //
-  // MEMORY
-  //
-  
-  - set_mark <-
-  // Recurssive set marked bit
-  [ -? {! is_free}; ]
-  (
-    (! is_marked).if {
-      set_idf_intern (get_idf_intern | 001b);
-      for_all_data { obj:VIEW_OBJECT;	
-	obj.mark_object;
-      };
-    };
-  )
-  [ +? {is_marked}; ];
-  
-  - unset_mark <-
-  // Unset marked bit (non recurssive).
-  [ 
-    -? {is_marked};
-    -? {! is_free}; 
-  ]
-  (    
-    set_idf_intern (get_idf_intern & ~011b);
-    for_all_data { obj:VIEW_OBJECT;
-      ((! obj.is_natif_expanded) && {obj.is_expanded}).if {
-	obj.demark_object;
-      };
-    };
-  )
-  [ +? {! is_marked}; ];
-  
-  - set_free <-  
-  [ -? {! is_free}; ]
-  (
-    set_idf_intern (get_idf_intern | 010b);
-  )
-  [ +? {  is_free}; ];
-  
-  - deep_clone:VIEW_OBJECT[E] <-
-  ( + result:VIEW_OBJECT;
-        
-    ((! is_separate) && {! is_non_mutable}).if {
-      result := dico_clone.at Self else_add { 
-	+ new_clone:VIEW_OBJECT;
-	
-	new_clone := clone;
-	new_clone.for_all_set_data { obj:VIEW_OBJECT[F];
-	  obj.deep_clone
-	};
-	new_clone
-      };      
-    } else {
-      result := Self;
-    };
-    result
-  );
-  
-Section Public
-  
-  //
-  // Non mutable.
-  //
-  
-  - set_non_mutable <-
-  // Recurssive set non mutable bit.
-  (
-    (! is_non_mutable).if {
-      set_idf_intern (get_idf_intern | 100b);
-      for_all_data { obj:VIEW_OBJECT;	
-	obj.set_non_mutable;
-      };
-    };
-  );
-  
-Section Private
-  
-  - dico_clone:DICTIONARY[VIEW_OBJECT, VIEW_OBJECT] := DICTIONARY[VIEW_OBJECT, VIEW_OBJECT].create;
-  
-  - get_idf_intern:INTEGER <-
-  [ -? {! is_natif_expanded}; ]
-  (
-    `FUCK`    
-  );
-  
-  - set_idf_intern idf:INTEGER <-
-  [ -? {! is_natif_expanded}; ]
-  (
-    `FUCK`;
-  );
diff --git a/lib/reflexivity/view_slot.li b/lib/reflexivity/view_slot.li
deleted file mode 100644
index eeaaf4e..0000000
--- a/lib/reflexivity/view_slot.li
+++ /dev/null
@@ -1,96 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
- 
-  + name        := VIEW_SLOT;
-
-    
-  - comment     :="Reflexivity view slot.";
-  
-Section Public  
-  
-  //
-  // General information.
-  //
-  
-  //- name:STRING_CONSTANT <- `FUCK`;
-  
-  //- is_shared:BOOLEAN <- `FUCK`; 
-  // TRUE if '-' style, FALSE else.
-  
-  //- is_data:BOOLEAN <- `FUCK`;
-  
-  //- is_method:BOOLEAN <- ! is_data;
-  
-  //- section:STRING_CONSTANT <- `FUCK`;
-  
-  //
-  // Result analysis.
-  //
-  
-  //- result:VIEW_OBJECT <-
-  // Return the first result.  
-  //[
-  //  -? {upper_result = 0};
-  //]
-  //(
-  //  `FUCK`
-  //);
-  
-  //- lower_result:INTEGER := 0;  
-  
-  //- upper_result:INTEGER <-
-  
-  //- item_result idx:INTEGER :VIEW_OBJECT <-
-  //[
-  //  -? {in_range lower_result to upper_result};
-  //]
-  //(
-  //  `FUCK`
-  //);
-  
-  //
-  // Arguments access.
-  //
-  
-  //- lower_argument:INTEGER := 0;
-  
-  //- upper_argument:INTEGER <- `FUCK`;
-  
-  //- item_argument idx:INTEGER :VIEW_OBJECT <-
-  //[
-  //  -? {in_range lower_argument to upper_argument};
-  //]
-  //(
-  //  `FUCK`
-  //);
-  
-  //
-  // Call.
-  //
-  
-  //- call_with args:BLOCK :BLOCK <- `FUCK`;
-  
-  //- call:BLOCK <- 
-  //(
-  //  call_with NULL
-  //);
-  
\ No newline at end of file
diff --git a/lib/string/abstract_string.li b/lib/string/abstract_string.li
deleted file mode 100644
index 2bdfbab..0000000
--- a/lib/string/abstract_string.li
+++ /dev/null
@@ -1,955 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ABSTRACT_STRING;
-
-  - export  := STRING;
-    
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "Generic prototype for STRING and STRING_CONSTANT";
-  
-Section Inherit
-  
-  - parent_hashable:HASHABLE := HASHABLE;
-  
-  - parent_comparable:COMPARABLE := COMPARABLE;
-  
-Section Public  //ABSTRACT_STRING, ABSTRACT_ENTRY
-  
-  + storage:NATIVE_ARRAY[CHARACTER];
-  
-Section Public
-  
-  + count:INTEGER;
-  
-  - lower:INTEGER := 1;
-  
-  - upper:INTEGER <- count;
-  
-  - capacity:INTEGER <- count;
-  
-  //
-  // Access.
-  //
-  
-  - item index:INTEGER :CHARACTER <-
-  // Character at position `index'.
-  ( ? {valid_index index};
-        
-    storage.item (index - 1)
-  );
-  
-  - '@' Left 1 index:INTEGER :CHARACTER <-
-  // Character at position `index'.
-  (
-    item index
-  );
-  
-  //
-  // Switch case :
-  //
-  
-  - when value:ABSTRACT_STRING then block:BLOCK :ABSTRACT_STRING <-
-  (
-    (Self = value).if block;
-    Self
-  );
-
-  - when value1:ABSTRACT_STRING or value2:ABSTRACT_STRING then block:BLOCK :ABSTRACT_STRING <-
-  (
-    ((Self = value1) || {Self = value2}).if block;
-    Self
-  );
-
-  //
-  // Testing.
-  //
-  
-  - valid_index index:INTEGER :BOOLEAN <-
-  // True when `index' is valid (i.e., inside actual bounds).
-  ( index.in_range lower to count );
-  
-  - is_empty : BOOLEAN <- count == 0;
-  
-  - hash_code: INTEGER <-
-  ( + result:INTEGER;
-    
-    1.to count do { i:INTEGER;
-      result := (5 * result) + (item i).code;
-    };
-    (result < 0).if	{
-      result := ~ result;
-    };
-    result
-  );
-  
-  - '<' other:ABSTRACT_STRING :BOOLEAN <-
-  // Is Current less than `other' ?
-  ( + i: INTEGER;
-    + result: BOOLEAN;
-    
-    i := 1;
-    {(count < i) || {other.count < i} || {item i != other.item i}}.until_do {
-      i := i + 1;
-    };
-    (count < i).if {
-      result := other.count >= i;
-    } else {
-      (other.count < i).if {
-	result := FALSE;
-      };
-      result := item i < other.item i;
-    };
-    result
-  );
-  
-  - compare other:ABSTRACT_STRING :INTEGER <-
-  ( + i: INTEGER;
-    + result:INTEGER;
-    i := 1;
-    {(count < i) || {other.count < i} || {item i != other.item i}}.until_do {
-      i := i + 1;
-    };
-    (count < i).if {
-      (other.count < i).if {
-	result := 0;
-      } else {
-	result := -1;
-      };
-    } else {
-      (other.count < i).if {
-	result := 1;
-      } else {
-	(item i < other.item i).if {
-	  result := -1;
-	} else {
-	  result := 1;
-	};
-      };
-    };
-    
-    result
-  );
-  
-  - same_as other:ABSTRACT_STRING :BOOLEAN <-
-  // Case insensitive `=='.
-  ( + s1, s2:NATIVE_ARRAY[CHARACTER];
-    + i:INTEGER;
-    + result:BOOLEAN;
-    ? {other != NULL};
-
-    i := count;
-    (i = other.count).if {
-      (storage.fast_memcmp (other.storage) until i).if {
-	result:=TRUE;
-      } else {
-	i := i - 1;
-	s1 := storage;
-	s2 := other.storage;
-	result:=TRUE;
-	{(i!=0) && {result}}.while_do {
-	  result:=s1.item i.same_as (s2.item i);
-	  i:=i-1;
-	};
-      };
-    };
-    result
-  );
-  
-  - '==' Left 40 other:ABSTRACT_STRING :BOOLEAN <-
-  // Has Current the same text as `other' ?
-  ( + result:BOOLEAN;
-    ? {other != NULL};
-    (count = other.count).if {
-      (count = 0).if {
-	result := TRUE;
-      } else {
-	result:=storage.fast_memcmp (other.storage) until count;
-      };
-    };
-    result
-  );
-  
-  - item_code i:INTEGER :INTEGER <-
-  // Code of character at position `i'.
-  (
-    ? { valid_index i};
-    storage.item (i - 1).code
-  );
-  
-  - index_of ch:CHARACTER since start_index:INTEGER :INTEGER <-
-  // Index of first occurrence of `c' at or after `start_index',
-  // result = count + 1, if none.
-  ( + result:INTEGER;
-    ? { start_index.in_range 1 to (count + 1)};
-    
-    result := start_index;
-    
-    {(result > count) || {ch = item result}}.until_do {
-      result := result + 1;
-    };
-        
-    result
-  );
-  
-  - last_index_of ch:CHARACTER since start_index:INTEGER :INTEGER <-
-  // Index of first occurrence of `c' at or before `start_index',
-  // 0 if none.
-  ( + result:INTEGER;
-    ? {start_index.in_range 0 to upper};
-    
-    result := start_index;
-    
-    {(result < lower) || {ch = item result}}.until_do {
-      result := result - 1;
-    };
-        
-    ? {(result != 0) ->> {item result == ch}};    
-    result
-  );
-  
-  - fast_index_of ch:CHARACTER :INTEGER <-
-  // Gives the index of the first occurrence `ch' or
-  // 0 if none.
-  (+ result:INTEGER;
-    result := 1 + storage.fast_index_of (ch,1) until (count - 1);    
-    ?	{(result != count + 1) ->> {item result = ch}};    
-    result
-  );
-  
-  - first_index_of c:CHARACTER :INTEGER <-  
-  // Index of first occurrence of `c' at index 1 or after index 1.
-  (
-    fast_index_of c
-  );
-  
-  - fast_last_index_of ch:CHARACTER :INTEGER <-
-  // Gives the index of the last occurrence `ch' or
-  // 0 if none.
-  (+ result:INTEGER;
-    result := 1 + storage.fast_reverse_index_of ch from (upper-1);    
-    
-    ? {(result != 0) ->> {item result = ch}};    
-    result
-  );
-    
-  - last_index_of c:CHARACTER :INTEGER <-
-  // Index of last occurrence of `c' at index upper or before index upper.
-  (
-    fast_last_index_of c
-  );
-  
-  - has ch:CHARACTER :BOOLEAN <- storage.fast_has ch until (count - 1);
-  // True if `ch' is in the STRING.
-  
-  - has_substring other:ABSTRACT_STRING :BOOLEAN <-
-  // True if `other' is in the STRING.
-  ( first_substring_index other != 0 );
-    
-  - occurrences c:CHARACTER :INTEGER <-
-  // Number of times character `c' appears in the string.
-  (
-    storage.fast_occurrences c until (count - 1)
-  );
-  
-  -  has_suffix s:ABSTRACT_STRING :BOOLEAN <-
-  // True if suffix of `Current' is `s'.
-  (
-    + result:BOOLEAN;
-    + i1,i2:INTEGER;
-    
-    ? { s != NULL };
-    
-    (s.count <= count).if {
-      i1 := count - s.count + 1;
-      i2 := 1;
-      { (i1 > count) || { i2 > s.count} || { item i1 != s.item i2}}.until_do {
-	i1 := i1 + 1;
-	i2 := i2 + 1;
-      };
-      result := i1 > count;
-    };
-    
-    result
-  );
-  
-  - has_prefix p:ABSTRACT_STRING :BOOLEAN <-
-  // True if prefix of `Current' is `p'.
-  (
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    ? { p != NULL };
-    
-    ( p.count <= count ).if {
-      i := p.count;
-      { (i == 0) || { item i != p.item i}}.until_do {
-	i := i - 1;
-      };
-      result := i == 0;
-    };
-    
-    result
-  );
-  
-  // Testing and Conversion:
-  
-  - is_boolean:BOOLEAN <-
-  // does self represent a BOOLEAN?
-  // valid BOOLEANS are "TRUE" and "FALSE".
-  (
-    (Self == "TRUE") || { Self == "FALSE"}
-  );
-  
-  - to_boolean:BOOLEAN <-
-  // Boolean value;
-  // "true" yields true, "false" yields false (what a surprise).
-  (
-    ?{ is_boolean };
-    Self == "TRUE"
-  );
-  
-  - is_bit:BOOLEAN <-
-  // True when the contents is a sequence of bits (i.e., mixed
-  // characters `0' and characters `1').
-  ( + i:INTEGER;
-    + result:BOOLEAN;
-    i := count;
-    result := TRUE;
-    { (! result) || { i = 0}}.until_do {
-      result := item i.is_bit;
-      i := i - 1
-    };
-    ? {result = (count = occurrences '0' + occurrences '1')};
-    result
-  );
-
-  - is_integer:BOOLEAN <-
-  // Does self represent an INTEGER?
-  // `Result' is true if and only if the following two conditions hold:
-  //
-  // 1. In the following BNF grammar, the value of self can be
-  // produced by "Integer_literal", if leading and trailing
-  // separators are ignored:
-  //
-  // Integer_literal = [Sign] Integer
-  // Sign            = "+" | "-"
-  // Integer         = Digit | Digit Integer
-  // Digit           = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
-  //
-  // 2. The numerical value represented by self is within the
-  // range that can be represented by an instance of type INTEGER.
-  (
-    + i, state, value: INTEGER;
-    + negative: BOOLEAN;
-    + result:BOOLEAN;
-    + cc: CHARACTER;
-    
-    // state 0: nothing read.
-    // state 1: "+" or "-" read.
-    // state 2: in the number.
-    // state 3: after the number.
-    // state 4: error.
-    
-    i := 1;
-    
-    { (state = 4) || {i > count}}.until_do {
-      cc := item i;
-      ( state = 0).if {
-	cc.is_separator.if {
-	}.elseif {cc = '+'} then {
-	  state := 1;
-	}.elseif {cc = '-'} then {
-	  negative := TRUE;
-	  state := 1;
-	}.elseif {cc.is_digit} then {
-	  value := cc.decimal_value;
-	  state := 2;
-	} else {
-	  state := 4;
-	};
-      }.elseif { state = 1} then {
-	cc.is_digit.if {
-	  value := cc.decimal_value;
-	  negative.if {
-	    value := - value;
-	  };
-	  state := 2;
-	} else {
-	  state := 4;
-	};
-      }.elseif { state = 2 } then {
-	cc.is_digit.if {
-	  negative.if {
-	    value := 10 * value - cc.decimal_value;
-	  } else {
-	    value := 10 * value + cc.decimal_value;
-	  };
-	  // over/underflow check here
-	  ((negative && {value > 0}) || { ! negative && {value < 0}}).if {
-	    state := 4;
-	  };
-	}.elseif {cc.is_separator} then {
-	  state := 3;
-	} else {
-	  state := 4;
-	};
-      }.elseif { state = 3 } then {
-	cc.is_separator.if {
-	} else {	    
-	  state := 4;
-	};
-      };
-      
-      i := i + 1;
-    };
-    ( (state != 0) && { state != 4}).if {
-      result := TRUE;
-    };
-    
-    result
-  );
-  
-  - to_integer:INTEGER <-
-  // self must look like an INTEGER.
-  (
-    + i, state:INTEGER;
-    + cc: CHARACTER;
-    + negative: BOOLEAN;
-    + result:INTEGER;
-    
-    ? { is_integer };
-    // state 0: nothing read.
-    // state 1: "+" or "-" read.
-    // state 2: in the number.
-    // state 3: after the number.
-
-    i := 1;
-
-    { i > count }.until_do {
-      cc := item i;
-
-      (state = 0).if {
-	cc.is_separator.if {
-	}.elseif {cc = '+'} then {
-	  state := 1;
-	}.elseif {cc = '-'} then {
-	  negative := TRUE;
-	  state := 1;
-	} else { // cc.is_digit
-	  result := cc.decimal_value;
-	  state := 2;
-	};
-      }.elseif { state = 1 } then {
-	// cc.is_digit
-	result := cc.decimal_value;
-	negative.if {
-	  result := - result
-	};
-	state := 2;
-      }.elseif { state = 2} then {
-	cc.is_digit.if {
-	  negative.if {
-	    result := 10 * result - cc.decimal_value;
-	  } else {
-	    result := 10 * result + cc.decimal_value;
-	  };
-	} else { // cc.is_separator
-	  state := 3;
-	};
-      }.elseif { state = 3 } then {
-	// cc.is_separator
-	i := count; // terminate the loop
-      };
-      
-      i := i + 1;
-    };
-    
-    result
-  );
-  
-  - is_hexadecimal :BOOLEAN <-
-  ( + j:INTEGER;
-    + result:BOOLEAN;
-    (is_empty).if_false {
-      j := lower;
-      {(j > upper) || {! item j.is_hexadecimal_digit}}.until_do {
-	j:=j+1;
-      };
-      result := j > upper;
-    };
-    result
-  );
-
-  - to_hexadecimal :INTEGER_64 <-
-  ( + result:INTEGER_64;
-    ? {is_hexadecimal};
-    lower.to upper do { j:INTEGER;
-      result := (result << 4) | item j.hexadecimal_value;
-    };
-    result
-  );
-
-  - is_octal :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    (is_empty).if_false {        
-      j := lower;
-      {(j > upper) || {! item j.is_octal_digit}}.until_do {
-	j:=j+1;
-      };
-      result:= j > upper;
-    };
-    result
-  );
-
-  - to_octal:INTEGER_64 <-
-  ( + result:INTEGER_64;
-    ? {is_octal};
-    
-    lower.to upper do { j:INTEGER;
-      result := (result << 3) | item j.octal_value;
-    };
-    result
-  );
-
-  - to_binary :INTEGER_64 <-
-  ( + result:INTEGER_64;
-    ? {is_bit};
-    
-    lower.to upper do { j:INTEGER;
-      result := result << 1;
-      (item j = '1').if {
-	result := result | 1;
-      };
-    };
-    result
-  );
-  
-  - is_real_16_16:BOOLEAN <-
-  // Does self represent an REAl_16_16 ?
-  // `Result' is true if and only if the following two conditions hold:
-  //
-  // 1. In the following BNF grammar, the value of self can be
-  // produced by "real_literal", if leading and trailing
-  // separators are ignored:
-  //
-  // Real_literal = [Sign] Integer [Point Integer]
-  // Sign            = "+" | "-"
-  // Point           = "."
-  // Integer         = Digit | Digit Integer
-  // Digit           = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
-  //
-  // 2. The numerical value represented by self is within the
-  // range that can be represented by an instance of type REAL_16_16.
-  (
-    + i, state, value_int: INTEGER;
-    + value:REAL_16_16;
-    + negative: BOOLEAN;
-    + result:BOOLEAN;
-    + cc: CHARACTER;
-    + d:INTEGER;
-    
-    // state 0: nothing read.
-    // state 1: "+" or "-" read.
-    // state 2: in the number before the point
-    // state 3: in the number after the point
-    // state 4: after the number.
-    // state 5: error.
-    
-    i := 1;
-    d := 1;
-    
-    { (state = 5) || {i > count}}.until_do {
-      cc := item i;
-      ( state = 0).if {
-	cc.is_separator.if {
-	}.elseif {cc = '+'} then {
-	  state := 1;
-	}.elseif {cc = '-'} then {
-	  negative := TRUE;
-	  state := 1;
-	}.elseif {cc.is_digit} then {
-	  value_int := cc.decimal_value;
-	  state := 2;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 1} then {
-	cc.is_digit.if {
-	  value_int := cc.decimal_value;
-	  state := 2;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 2 } then {
-	cc.is_digit.if {
-	  value_int := 10 * value_int + cc.decimal_value;
-	  // over/underflow check here
-	  ((negative && {value_int > 0}) || { ! negative && {value_int < 0}}).if {
-	    state := 5;
-	  };
-	}.elseif { cc = '.' } then {
-	  state := 3;	
-	  value := value_int.to_real_16_16;
-	}.elseif {cc.is_separator} then {
-	  state := 4;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 3 } then {
-	cc.is_digit.if {
-	  d := d * 10;
-	  value := value + (cc.decimal_value.to_real_16_16) /# d;
-	}.elseif {cc.is_separator} then {
-	  state := 4;
-	} else {
-	  state := 5;
-	};
-      }.elseif { state = 4 } then {
-	cc.is_separator.if {
-	} else {	    
-	  state := 5;
-	};
-      };
-      
-      i := i + 1;
-    };
-    negative.if {
-      value := - value;
-    };
-    ( (state != 0) && { state != 5}).if {
-      result := TRUE;
-    };
-    
-    result
-  );
-  
-  - to_real_16_16:REAL_16_16 <-
-  (
-    + i, state, value_int: INTEGER;
-    + value:REAL_16_16;
-    + negative: BOOLEAN;    
-    + cc: CHARACTER;
-    + d:INTEGER;
-    
-    // state 0: nothing read.
-    // state 1: "+" or "-" read.
-    // state 2: in the number before the point
-    // state 3: in the number after the point
-    // state 4: after the number.
-    
-    i := 1;
-    d := 1;
-
-    {i > count}.until_do {
-      cc := item i;
-      ( state = 0).if {
-	cc.is_separator.if {
-	}.elseif {cc = '+'} then {
-	  state := 1;
-	}.elseif {cc = '-'} then {
-	  negative := TRUE;
-	  state := 1;
-	}.elseif {cc.is_digit} then {
-	  value_int := cc.decimal_value;
-	  state := 2;
-	};
-      }.elseif { state = 1} then {
-	cc.is_digit.if {
-	  value_int := cc.decimal_value;
-	  state := 2;
-	};
-      }.elseif { state = 2 } then {
-	cc.is_digit.if {
-	  value_int := value_int * 10 + cc.decimal_value;
-	}.elseif { cc = '.' } then {
-	  state := 3;	
-	  value := value_int.to_real_16_16;
-	} else {  // cc is separator
-	  value := value_int.to_real_16_16;
-	  state := 4;
-	};
-      }.elseif { state = 3 } then {
-	cc.is_digit.if {
-	  d := d * 10;
-	  value := value + (cc.decimal_value.to_real_16_16) /# d;
-	} else { // cc is separator
-	  state := 4;
-	};
-      }.elseif { state = 4 } then {
-	// cc is separator
-	i := count;  // terminate the loop
-      };
-      
-      i := i + 1;
-    };
-    
-    (state = 2).if {
-      value := value_int.to_real_16_16;
-    };
-    
-    negative.if {
-      value := - value;
-    };
-    
-    value
-  );
-  
-  //
-  // Modification:
-  //
-  
-  - '+' other:ABSTRACT_STRING :STRING <-
-  // Create a new STRING which is the concatenation of
-  // `self' and `other'.
-  ( + result:STRING;
-    ? {other != NULL};
-    
-    result:=STRING.create (count + other.count);
-    result.append Self;
-    result.append other;
-    
-    ? {result.count = count + other.count};
-    result
-  );
-    
-  - as_lower:STRING <-
-  // New object with all letters in lower case.
-  (
-    + result:STRING;
-    result := STRING.create capacity;
-    result.copy Self;
-    result.to_lower;
-    result
-  );
-  
-  - as_upper:STRING <-
-  // New object with all letters in upper case.
-  (
-    + result:STRING;
-    result := STRING.create capacity;
-    result.copy Self;
-    result.to_upper;
-    result
-  ); 
-  
-  // Other features:
-  
-  - first:CHARACTER <-
-  // Access to the very `first' character.
-  (
-    + result:CHARACTER;
-    //? {! is_empty};
-    
-    result := storage.item 0;
-    
-    //? { result == item 1};
-    result
-  );
-
-  - last:CHARACTER <-
-  // Access to the very `last' character.
-  (
-    + result:CHARACTER;
-    ? {! is_empty};
-    
-    result := storage.item (count - 1);
-    
-    ? { result == item count};
-    result
-  );
-    
-  - substring start_index:INTEGER to end_index:INTEGER :STRING <-
-  // New string consisting of items [`start_index'.. `end_index'].
-  (
-    + c:INTEGER;
-    + result:STRING;
-    
-    ? { start_index >= 1 };
-    ? { end_index <= count };
-    ? { start_index <= end_index + 1 };
-    
-    c := end_index - start_index + 1;
-    result := STRING.create c;
-    result.set_count c;
-    result.storage.slice_copy storage to 0 from (start_index - 1) to (end_index - 1);
-
-    ? { result.count == end_index - start_index + 1 };
-    result
-  );
-    
-  - substring_index (other:ABSTRACT_STRING,start_index:INTEGER) :INTEGER <-
-  // Position of the first occurrence of `other' at or after 1
-  // or 0 f none.
-  ( + i,s,result:INTEGER;
-    
-    //? {! other.is_empty };
-    ? { (start_index >=1) && { start_index <= count + 1 }};
-    
-    s := start_index;
-    {(result != 0) || {(s + other.count - 1) > count }}.until_do {
-      i := 1;
-      {(i > other.count) || {item (s + i - 1) != other.item i}}.until_do {
-	i := i + 1;
-      };
-      
-      (i > other.count).if {
-	result := s;
-      } else {
-	s := s + 1;
-      };
-    };
-    
-    result
-  );
-  
-  - first_substring_index other:ABSTRACT_STRING :INTEGER <-
-  // Position of the first occurrence of `other' at or after 1
-  // or 0 if none.
-  (
-    ? {! other.is_empty };
-    
-    substring_index (other,1)
-  );
-  
-  //
-  // Splitting a STRING:
-  //
-  
-  - split:ARRAY[STRING] <-
-  // Split the string into an array of words. Uses `is_separator' of
-  // CHARACTER to find words. Gives Void or a non empty array.
-  (
-    + result:ARRAY[STRING];
-    ( count > 0 ).if {
-      split_buffer.clear;
-      split_in split_buffer;
-      (! split_buffer.is_empty).if {
-	result := ARRAY[STRING].create (split_buffer.lower) to (split_buffer.upper);
-	result.copy split_buffer;
-      };
-    };
-    ? { (result != NULL) ->> { ! result.is_empty }};
-    
-    result
-  );
-  
-  - split_in words:COLLECTION[STRING] <-
-  // Same jobs as `split' but result is appended in `words'.
-  (
-    + state,old_count: INTEGER;
-    // state = 0: waiting next word.
-    // state = 1: inside a new word.
-    + c: CHARACTER;
-    
-    ? { words != NULL};
-    old_count := words.count;
-    (count > 0).if {
-      1.to upper do { i:INTEGER;
-	c := item i;
-	(state = 0).if {
-	  (! c.is_separator).if {
-	    string_buffer.clear;
-	    string_buffer.append_character c;
-	    state := 1;
-	  };
-	} else {
-	  (! c.is_separator).if {
-	    string_buffer.append_character c;
-	  } else {
-	    words.add_last (string_buffer.twin);	    
-	    state := 0;
-	  };
-	};
-      };
-      ( state == 1).if {
-	words.add_last (string_buffer.twin);
-      };
-    };
-    
-    ? { (words.count) >= old_count };
-  );
-  
-  - get_new_iterator:ITERATOR[CHARACTER] <-
-  (
-    ITERATOR_ON_STRING[CHARACTER].create Self
-  );
-  
-  - same_string other:ABSTRACT_STRING :BOOLEAN <-
-  // Do self and other have the same character sequence?
-  // Useful in proper descendants of STRING.
-  (
-    ? { other != NULL };
-    string == other.to_string
-  );
-  
-  - to_string:Strict STRING <-
-  // New STRING having the same character sequence as self.
-  // Useful in proper descendants of STRING.
-  (
-    STRING.create_from_string Self
-  );
-  
-  - string_buffer:STRING := STRING.create 256; // Private, temporary once buffer.
-  
-  - split_buffer:ARRAY[STRING] := ARRAY[STRING].create_with_capacity 4 lower 1;
-    
-  //
-  // Display.
-  //
-  
-  - print <- 
-  (    
-    IO.put_string Self;      
-  );
-
-  -  printline <-
-  (
-    IO.put_string Self;
-    IO.put_string "\n";
-  );
-    
-  - println <-
-  [ -? {storage.item count = '\0'}; ]
-  (
-    to_external.println;
-  );
-                                   
-
-  //
-  // The guru section
-  //
-  
-  - to_external:NATIVE_ARRAY[CHARACTER] <- 
-  // Gives C access to the internal `storage' (may be dangerous).
-  // To be compatible with C, a null character is added at the end
-  // of the internal `storage'. This extra null character is not
-  // part of the Lisaac STRING.
-  (
-    deferred;
-    NULL
-  );
-
-
-
diff --git a/lib/string/string.li b/lib/string/string.li
deleted file mode 100644
index 7ce665f..0000000
--- a/lib/string/string.li
+++ /dev/null
@@ -1,768 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := STRING;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment := "String library.";
-  
-Section Inherit
-  
-  - parent_abstract_string:ABSTRACT_STRING := ABSTRACT_STRING;
-  
-  - parent_arrayed:ARRAYED := ARRAYED;
-  
-Section Public //ABSTRACT_STRING, ABSTRACT_ENTRY
-  
-  + storage:NATIVE_ARRAY[CHARACTER];
-  
-Section Public
-    
-  + count:INTEGER;
-
-  + capacity:INTEGER;
-  
-  //
-  // General :
-  //
-  
-  - set_storage tab:NATIVE_ARRAY[CHARACTER] <-
-  ( ? {tab != NULL};
-    storage := tab;
-  );
-    
-  //
-  // Creation / Modification :
-  //
-  
-  - create needed_capacity:INTEGER :SELF <-
-  ( + result:SELF;
-    result := SELF.clone;   
-    result.make needed_capacity;
-    result
-  );
-  
-  - create_from_string str:ABSTRACT_STRING :SELF <-
-  ( + result:SELF;
-       
-    result := create (str.count);
-    result.copy str;       
-    result
-  );
-  
-  - make needed_capacity:INTEGER <-
-  // Initialize the string to have at least `needed_capacity'
-  // characters of storage.
-  ( ? {needed_capacity >= 0};
-    (needed_capacity > 0).if {
-      (capacity < needed_capacity).if	{	
-	storage := NATIVE_ARRAY[CHARACTER].create needed_capacity;
-	capacity := needed_capacity;
-      };
-    };
-    count := 0;
-    
-    //? {needed_capacity <= capacity};
-    //? {count = 0};
-  );
-  
-  - make_empty <-
-  // Create an empty string
-  (
-    make 0;
-  );  
-  
-  
-  - create_filled (c:CHARACTER,n:INTEGER) :SELF <-
-  ( + result:SELF;
-    result := SELF.clone;
-    result.make_filled (c,n);
-    result
-  );
-  
-  - make_filled (c:CHARACTER,n:INTEGER) <-
-  // Initialize string with `n` copies of `c`
-  ( ? {n >= 0};
-    
-    make n;
-    count := n;
-    fill_with c;
-    
-    ? {count == n};
-    ? {occurrences c == count};
-  );
-  
-  - twin:STRING <-
-  (
-    create_from_string Self
-  );
-  
-  //
-  // Modification :
-  //
-  
-  - resize new_count:INTEGER <-
-  // Resize self. When `new_count' is greater than `count', 
-  // new positions are initialized with the default value of CHARACTER
-  (+ old_capacity:INTEGER;
-    ? { new_count >= 0 };
-    old_capacity := capacity;
-    
-    (new_count <= count).if {
-    }.elseif { capacity < new_count } then {
-      (capacity = 0).if {
-	storage := NATIVE_ARRAY[CHARACTER].create new_count;
-      } else {
-	storage := storage.realloc capacity with new_count;
-      };
-      capacity := new_count;
-    } else {
-      storage.clear count to (new_count - 1);
-    };    
-    count := new_count;
-    
-    ? {count == new_count};
-    ? {capacity >= old_capacity};    
-  );
-
-  - set_capacity new_capacity:INTEGER <-
-  // Resize `capacity' self, but not count.
-  ( + old_capacity:INTEGER;
-    ? { new_capacity >= 0 };
-    old_capacity := capacity;
-    
-    (new_capacity > capacity).if {   
-      (capacity = 0).if {
-	storage := NATIVE_ARRAY[CHARACTER].create new_capacity;
-      } else {
-	storage := storage.realloc capacity with new_capacity;
-      };
-      capacity := new_capacity;
-    };
-    
-    ? {(new_capacity > old_capacity) ->> {new_capacity = capacity}};    
-  );
-  
-  - clear <-
-  // Clear out the current STRING.
-  // Note: internal `storage' memory is neither released nor shrunk.
-  (
-    count := 0;
-    ? {count = 0};
-  );
-  
-  - copy other:ABSTRACT_STRING<-
-  // Copy `other' onto Current.
-  (    
-    count := other.count;
-    (count > 0).if {
-      (capacity < count).if	{
-	storage  := NATIVE_ARRAY[CHARACTER].create count;
-	capacity := count;
-      };
-      storage.copy_from (other.storage) until (count-1);
-    };
-    ? {count = other.count};
-  );
-  
-  - fill_with c:CHARACTER <-
-  // Replace every character with `c'.
-  (
-    storage.set_all_with c until (count - 1);
-    
-    ? {occurrences c = count};
-  );
-  
-  - replace_all old_char:CHARACTER with new_char:CHARACTER <-
-  // Replace all occurrences of the element `old_char' by `new_character'
-  ( + old_count:INTEGER;
-    old_count := count;
-    storage.fast_replace_all old_char with new_char until (count - 1);
-    ? { count == old_count };
-    ? { occurrences old_char = 0};
-  );
-  
-  - append other:ABSTRACT_STRING <-
-  // Append `other' to Current.
-  ( + other_count, needed_capacity:INTEGER;
-    ? {other != NULL};
-    
-    other_count := other.count;
-    needed_capacity := count + other_count;
-    (capacity < needed_capacity).if	{
-      (capacity = 0).if	{
-	capacity := needed_capacity;
-	storage  := NATIVE_ARRAY[CHARACTER].create capacity;
-      } else {
-	storage  := storage.realloc capacity with needed_capacity;
-	capacity := needed_capacity;
-      };
-    };
-    storage.copy (other.storage) to count until other_count;
-    count := needed_capacity;
-  );
-  
-  - prepend other:ABSTRACT_STRING <-
-  // Prepend `other' to Current
-  ( + i, j: INTEGER;
-    ? {other!=NULL};
-    
-    i := count;
-    j := other.count;
-    resize (i + j);
-    ((i > 0) && {j > 0}).if	{
-      storage.move 0 to (i - 1) by j;
-    };
-    storage.copy_from (other.storage) until (j - 1);    
-  );
-  
-  - insert_string s:ABSTRACT_STRING to i:INTEGER <-
-  // Insert `s' at index `i', shifting characters from index `i'
-  // to `count' rightwards.
-  (
-    + j,k:INTEGER;
-    
-    ? { s != NULL };
-    ? { i.in_range 1 to (count + 1)};
-    
-    j := count;
-    k := s.count;
-    resize (j + k);
-    (i <= j).if {
-      storage.move (i - 1) to (j - 1) by k;
-    };
-    storage.copy (s.storage) to (i - 1) until k;
-  );
-  
-  - replace_substring s:ABSTRACT_STRING from start:INTEGER to end:INTEGER <-
-  // Replace the substring from start to end, inclusive, with s
-  (
-    + remove_len,insert_len, difference, old_count: INTEGER;
-    
-    ? {s != NULL};
-    ? { end <= count};
-    ? {start.in_range 1 to (end + 1)};
-    
-    old_count := count;
-    remove_len := end - start + 1;
-    insert_len := s.count;
-    difference := insert_len - remove_len;
-    
-    (difference > 0).if {
-      resize (old_count + difference);
-      (end < old_count).if { // something to move ?
-	storage.move (end + 1 - 1) to (old_count - 1) by difference;
-      };
-    }.elseif {difference < 0} then {
-      (end < count).if { // something to move?
-	storage.move(end + 1 - 1) to (old_count - 1) by difference;
-      };
-      resize (old_count + difference)
-    };
-    storage.copy (s.storage) to (start - 1) until (s.count);
-  );
-        
-  - put ch:CHARACTER to index:INTEGER<-
-  // Put `ch' at position `index'.
-  ( ? {valid_index index};
-    
-    storage.put ch to (index - 1);
-    
-    ? {item index = ch};
-  );
-  
-  - swap i1:INTEGER with i2: INTEGER <-
-  ( + tmp,old_i1,old_i2: CHARACTER;
-    ? {valid_index i1};
-    ? {valid_index i2};
-    
-    old_i1:=item i1;
-    old_i2:=item i2;
-    tmp := item i1;
-    put (item i2) to i1;
-    put tmp to i2;
-    
-    ? {item i1 = old_i2};
-    ? {item i2 = old_i1};
-  );
-  
-  - insert ch:CHARACTER to index:INTEGER <-
-  // Insert `ch' after position `index'.
-  ( + i:INTEGER;
-    ? {0 <= index};
-    ? {index <= count};
-    
-    i:=count;
-    extend ' ';
-    {i = index}.until_do {
-      put (item i) to (i + 1);
-      i := i - 1;
-    };
-    put ch to (index + 1);
-    
-    ? {item (index + 1) = ch};
-  );
-
-  - insert ch:CHARACTER to index:INTEGER on nb:INTEGER <-
-  // Insert `ch' after position `index'.
-  ( 
-    ? {0 <= index};
-    ? {index <= count};
-
-    1.to nb do { cpt:INTEGER; // Version bourin!!!
-      insert ch to index;
-    };
-  );
-    
-  - shrink min_index:INTEGER to max_index:INTEGER <-
-  // Keep only the slice [`min_index' .. `max_index'] or nothing
-  // when the slice is empty.
-  (
-    ? {1 <= min_index};
-    ? {max_index <= count};
-    ? {min_index <= max_index + 1};
-    
-    (max_index < min_index).if {
-      count := 0;
-    } else {
-      (min_index = 1).if {
-	count := max_index;
-      } else {
-	storage.copy_slice storage to 0 from (min_index - 1) to (max_index - 1);
-	count := max_index - min_index + 1
-      };
-    };
-    
-    ? {count = max_index - min_index + 1};
-  );
-  
-  - remove index:INTEGER <-
-  // Remove character at position `index'.
-  ( + old_count:INTEGER;
-    ? {valid_index index};
-    
-    old_count:=count;
-    remove_between index to index;
-    
-    ? {count = old_count - 1};
-  );
-  
-  - add_first ch: CHARACTER <-
-  // Add `ch' at first position.
-  ( + old_count: INTEGER;
-    
-    old_count:=count;
-    add_last(' ');
-    count.downto 2 do { i:INTEGER;
-      put (item (i - 1)) to i;
-    };
-    put ch to 1;
-    
-    ? {count = 1 + old_count};
-    ? {item 1 = ch};
-  );
-  
-  - add_last ch:CHARACTER <-
-  // Append `ch' to string
-  ( + new_capacity:INTEGER;
-    //+ old_count:INTEGER;
-    
-    //old_count:=count;
-    (capacity <= count).if {
-      (capacity = 0).if	{
-	capacity := 32;
-	storage  := NATIVE_ARRAY[CHARACTER].create capacity;
-      } else {
-	new_capacity := capacity * 2;
-	storage      := storage.realloc capacity with new_capacity;
-	capacity     := new_capacity;
-      };
-    };
-    storage.put ch to count;
-    count := count + 1;
-    
-    //? {count = 1 + old_count};
-    //? {item count = ch};
-  );
-  
-  - append_character c:CHARACTER <- add_last c; 
-
-  - extend c:CHARACTER <- add_last c;
-  
-  - to_lower <-
-  // Convert all characters to lower case.
-  (
-    count.downto 1 do { i:INTEGER;
-      put (item i.to_lower) to i;
-    };
-  );
-  
-  - to_upper <-
-  // Convert all characters to upper case.
-  (
-    count.downto 1 do { i:INTEGER;
-      put (item i.to_upper) to i;
-    };
-  );
-  
-  - keep_head n:INTEGER <-
-  // Remove all characters except for the first `n'.
-  // Do nothing if `n' >= `count'.
-  (
-    + old_count:INTEGER;
-    ? { n >= 0};
-    old_count := count;
-    ( n < count).if {
-      remove_last (count - n);
-    };
-    
-    ? { count == n.min old_count};
-  );
-  
-  - keep_tail n:INTEGER <-
-  // Remove all characters except for the last `n'.
-  // Do nothing if `n' >= `count'.
-  (
-    + old_count:INTEGER;
-    ? { n >= 0};
-    old_count := count;
-    ( n < count).if {
-      remove_first (count - n);
-    };
-    
-    ? { count == n.min old_count};
-  );
-  
-  - remove_first n:INTEGER <-
-  // Remove `n' first characters.
-  // If `n' >= `count', remove all.
-  (
-    + old_count:INTEGER;
-    ? { n >= 0};
-    old_count:=count;
-    (n > count).if {
-      count := 0;
-    } else {
-      (n > 0).if {
-	remove_between 1 to n;
-      };
-    };
-    
-    ? { count == 0.max(old_count - n)};
-  );
-  
-  - remove_between start:INTEGER to end:INTEGER <-
-  // Remove all characters from `strt_index' to `end_index' inclusive.
-  (
-    + len,old_count:INTEGER;
-    ? { end <= count };
-    ? { start.in_range 1 to (end + 1)};
-    
-    old_count := count;
-    len := end - start + 1;
-    (len > 0).if {
-      (end + 1).to count do { i:INTEGER;
-	put (item i) to  (i - len);
-      };
-      count := count - len;
-    };
-    ? { count = (old_count - (end - start + 1))};
-  );
-  
-  - remove_suffix s:ABSTRACT_STRING <-
-  // Remove the suffix `s' of current string.
-  (
-    ?{ has_suffix s};
-    remove_last (s.count);
-  );
-  
-  - remove_last n:INTEGER <-
-  ( + old_count:INTEGER;
-    // Remove `n' last characters. If `n' >= `count', remove all.
-    ?{ n >= 0 };
-    old_count:=count;
-    
-    (n > count).if {
-      count := 0;
-    } else {
-      count := count - n
-    };
-
-    ? { count = 0.max(old_count - n) };
-  );
-  
-  - remove_tail n:INTEGER <-
-  (
-    remove_last n;
-  );
-      
-  - remove_prefix s:ABSTRACT_STRING <-
-  // Remove the prefix `s' of current string.
-  (
-    ?{ has_prefix s};
-    remove_first (s.count);
-  );
-  
-  - left_adjust <-
-  // Remove leading blanks.
-  (+ i: INTEGER;
-    { ((i + 1) > count) || {item (i + 1) != ' '}}.until_do {
-      i := i + 1;
-    };
-    remove_first i;
-    ? { is_empty || {item 1 != ' '}};
-  );
-
-  - right_adjust <-
-  // Remove trailing blanks.
-  (
-    { (count == 0) || { item count != ' '}}.until_do {
-      count := count - 1;
-    };
-    ? { is_empty || {item count != ' '}};
-  );
-  
-  - extend_multiple c:CHARACTER by n:INTEGER <-
-  // Extend Current with `n' times character `c'.
-  (
-    + old_count:INTEGER;
-    ? { n >= 0};
-    old_count := count;
-    (n - 1).downto 0 do { i:INTEGER; 
-      append_character c;
-    };
-    
-    ? { count == n + old_count};
-  );
-  
-  - precede_multiple c:CHARACTER by n:INTEGER <-
-  // Prepend `n' times character `c' to Current.
-  (
-    + old_count:INTEGER;
-    
-    ? { n >= 0 };
-    old_count := count;
-    (n > 0).if {
-      (old_count == 0).if {
-	extend_multiple c by n;
-      } else {
-	extend_multiple '\0' by n;
-	storage.move 0 to (old_count - 1) by n;
-	storage.set_all_with c until (n - 1);
-      };
-    }; 
-    ? { count == n + old_count};
-  );
-  
-  - extend_to_count c:CHARACTER until needed_count:INTEGER <-
-  // Extend Current with `c' until `needed_count' is reached.
-  // Do nothing if `needed_count' is already greater or equal
-  // to `count'.
-  (
-    ? { needed_count >= 0 };
-    (needed_count - count).downto 1 do { i:INTEGER;
-      append_character(c);
-    };
-    
-    ? { count >= needed_count};
-  );
-  
-  -  precede_to_count c:CHARACTER until needed_count:INTEGER <-
-  // Prepend `c' to Current until `needed_count' is reached.
-  // Do nothing if `needed_count' is already greater or equal
-  // to `count'.
-  ( + offset, old_count: INTEGER;
-    ? { needed_count >= 0};
-    old_count := count;
-    offset := needed_count - old_count;
-    (offset > 0).if {
-      extend_to_count '\0' until needed_count;
-      storage.move 0 to (old_count - 1) by offset;
-      storage.set_all_with c until (offset - 1);
-    };
-
-    ? { count >= needed_count };
-  );
-  
-  - reverse <-
-  // Reverse the string.
-  (
-    + i1, i2: INTEGER;
-    i1 := 1;
-    i2 := count;
-    { i1 >= i2 }.until_do {
-      swap i1 with i2;
-      i1 := i1 + 1;
-      i2 := i2 - 1;
-    };
-  );
-  
-  - remove_all_occurrences ch:CHARACTER <-
-  // Remove all occurrences of `ch'.
-  (
-    +  j: INTEGER;
-    j := 1;
-    lower.to upper do { i:INTEGER;
-      (item i != ch).if {
-	put (item i) to j;
-	j := j + 1;
-      };
-    };
-    count := j - 1;
-  );
-  
-  - extend_unless ch:CHARACTER <-
-  // Extend `Current' (using `extend') with `ch' unless `ch' is
-  // already the `last' character.
-  (
-    + old_count:INTEGER;
-    old_count := count;
-    ( (count == 0) || {item count != ch}).if {
-      append_character ch;
-    };
-    
-    ? { last == ch };
-    ? { count >= old_count };
-  );
-  
-  - make_from_string model:ABSTRACT_STRING <-
-  // Initialize from the characters of `model'.
-  // Useful in proper descendants of STRING.
-  ( + c:INTEGER;
-
-    ? { model != NULL };
-    c := model.count;
-    (capacity < c).if {
-      storage := NATIVE_ARRAY[CHARACTER].calloc c;
-      capacity := c;
-    };
-    count := c;
-    storage.copy_from (model.storage) until (c - 1);
-
-    ? { count == model.count};
-  );
-  
-  - set_count new_count:INTEGER <-
-  [
-    -? { new_count <= capacity };
-  ]
-  (    
-    count := new_count;
-  );
-  
-  //
-  // Interfacing with C string :
-  //
-  
-  - to_external:NATIVE_ARRAY[CHARACTER] <-
-  // Gives C access to the internal `storage' (may be dangerous).
-  // To be compatible with C, a null character is added at the end
-  // of the internal `storage'. This extra null character is not
-  // part of the Eiffel STRING.
-  (     
-    // Append 0 terminal.
-    (capacity > count).if {       
-      storage.put '\0' to count;
-    } else {
-      add_last '\0';
-      count := count - 1;
-    }; 
-    
-    storage
-  )
-  [    
-    +? {count = Old count};
-    +? {Result.is_not_null};
-  ];
-  
-  - from_external p:NATIVE_ARRAY[CHARACTER] <-
-  // Internal `storage' is set using `p' (may be dangerous because
-  // the external C string `p' is not duplicated).
-  // Assume `p' has a null character at the end in order to
-  // compute the Eiffel `count'. This extra null character
-  // is not part of the Eiffel STRING.
-  // Also consider `from_external_copy' to choose the most appropriate.
-  ( ? {p.is_not_null};
-    
-    count := 0;
-    {p.item count = '\0'}.until_do {
-      count := count + 1;
-    };
-    (storage != p).if {
-      storage := p;
-      capacity := count + 1;
-    };
-    
-    ? {capacity >= (count + 1)};
-    ? {p = to_external};
-  );
-  
-  - from_external_copy p:NATIVE_ARRAY[CHARACTER]  <-
-  // Internal `storage' is set using a copy of `p'.
-  // Assume `p' has a null character at the end in order to
-  // compute the Eiffel `count'. This extra null character
-  // is not part of the Eiffel STRING.
-  // Also consider `from_external' to choose the most appropriate.
-  ( + i:INTEGER;
-    ? {p.is_not_null};
-    i := 0;
-    count := 0;
-    {p.item i = '\0'}.until_do {
-      add_last (p.item i);
-      i := i + 1;
-    };
-  );
-  
-  //
-  // Guru section.
-  //
-  
-  - element_sizeof:INTEGER <- 1;
-  
-  - to_native_array_uinteger_8:NATIVE_ARRAY[UINTEGER_8] <- 
-  (
-    CONVERT[NATIVE_ARRAY[CHARACTER],NATIVE_ARRAY[UINTEGER_8]].on storage
-  );
-  
-  - add_last_buffer buf:FAST_ARRAY[UINTEGER_8] from beg:INTEGER to end:INTEGER <-
-  (
-    beg.to end do { j:INTEGER;
-      add_last (buf.item j.to_character);
-    };
-  );
-    
-  - item_byte idx:INTEGER offset ofs:INTEGER :UINTEGER_8 <-
-  ( 
-    ? {ofs = 0};
-    ? {idx <= upper};
-    item idx.to_uinteger_8
-  );
-  
-  - restore_after_external <-
-  (
-    count := 0;
-    {storage.item count = '\0'}.until_do {
-      count := count + 1;
-    };
-  );
\ No newline at end of file
diff --git a/lib/string/string_constant.li b/lib/string/string_constant.li
deleted file mode 100644
index b87f58d..0000000
--- a/lib/string/string_constant.li
+++ /dev/null
@@ -1,124 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := /*Strict*/ STRING_CONSTANT; 
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-   
-  - comment := "String built in.";
-  
-Section Inherit
-  
-  - parent_abstract_string:ABSTRACT_STRING := ABSTRACT_STRING;
-        
-Section Public //ABSTRACT_STRING, ABSTRACT_ENTRY
-  
-  // BSBS: A revoir avec les Section External.
-  
-  + storage:NATIVE_ARRAY[CHARACTER] := 
-  `NULL`:NATIVE_ARRAY[CHARACTER](NATIVE_ARRAY[CHARACTER],NULL);
-  
-Section Public  
-  
- // - clone:SELF <- Self;
-  
-  + count:INTEGER := `(0)`:INTEGER;
-  
-  - to_string:Strict STRING <-
-  ( + new:Strict STRING;
-    new := STRING.create capacity;
-    new.copy Self;
-    new
-  );
-  
-Section Public
-
-  - capacity:INTEGER <- count;
-  
-  //
-  // Aliasing String.
-  //
-  
-  - bucket:SET[STRING_CONSTANT] := SET[STRING_CONSTANT].make;
-  
-  //
-  // The Guru section: The Compiler consideration.
-  //
-  
-  - set_storage p:NATIVE_ARRAY[CHARACTER] count nb_char:INTEGER <-
-  // Do not use directly.
-  (
-    storage := p;
-    count   := nb_char;
-  );
-  
-  - new_intern p:NATIVE_ARRAY[CHARACTER] count nb_char:INTEGER :STRING_CONSTANT<-
-  // Do not use directly. WARNING: Use by c_string and c_argument (COMMAND_LINE). 
-  ( + result:STRING_CONSTANT;
-    
-    result := clone;
-    result.set_storage p count nb_char;    
-    //bucket.add result;
-    result
-  );
-  
-  - to_external:NATIVE_ARRAY[CHARACTER] <-
-  // Gives C access to the internal `storage' (may be dangerous).
-  // To be compatible with C, a null character is added at the end
-  // of the internal `storage'. This extra null character is not
-  // part of the Lisaac STRING.
-  (
-    storage
-  );
-
-  - create_copy other:ABSTRACT_STRING :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make_copy other;
-    result
-  );
-  
-  - make_copy other:ABSTRACT_STRING <-
-  ( + c:INTEGER;
-    
-    c := other.count;
-    (c != 0).if {
-      storage := NATIVE_ARRAY[CHARACTER].create (c+1);
-      storage.copy_from (other.storage) until (c-1);
-      storage.put '\0' to c;
-      count := c;
-    };
-  );
-
-  //
-  // Debug: Require / Ensure / Check
-  //
-  
-  - '?'  test:BLOCK <- test ? Self;
-  
-  - '-?' test:BLOCK <- test -? Self;
-  
-  - '+?' test:BLOCK <- test +? Self;
-    
-
diff --git a/lib/system/command_line.li b/lib/system/command_line.li
deleted file mode 100644
index 6c18e8f..0000000
--- a/lib/system/command_line.li
+++ /dev/null
@@ -1,74 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COMMAND_LINE;
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - comment := "Interface Command line (Unix).";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-
-  - c_item idx:INTEGER :NATIVE_ARRAY[CHARACTER] <- `arg_vector[@idx]`:NATIVE_ARRAY[CHARACTER];
-  
-  - c_count:INTEGER <- `arg_count`:INTEGER;
-  
-  - args:FAST_ARRAY[STRING] := 
-  ( + result:FAST_ARRAY[STRING];
-    + arg:NATIVE_ARRAY[CHARACTER];
-    + str:STRING;
-    
-    result := FAST_ARRAY[STRING].create_with_capacity c_count;
-    0.to (c_count - 1) do { j:INTEGER;
-      arg := c_item j;
-      str := STRING.create (arg.fast_first_index_of '\0' until 1024);
-      str.from_external_copy arg;
-      result.add_last str;
-    };
-    result
-  );
-  
-Section Public
-
-  - count:INTEGER <- args.count;
-
-  - lower:INTEGER := 0;
-
-  - upper:INTEGER <- args.upper;
-
-  - item idx:INTEGER :STRING <- args.item idx;  
-  
-  - executable_name:STRING   <- args.first;
-  
-
-
-
-
-
-
-
-
diff --git a/lib/testing/unit_test.li b/lib/testing/unit_test.li
deleted file mode 100644
index 8cf3af6..0000000
--- a/lib/testing/unit_test.li
+++ /dev/null
@@ -1,240 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-
-Section Header
-
-  + name := UNIT_TEST;
-
-  - copyright := "2009 Jeremy Cowgar";
-
-  - comment := "Unit testing framework for Lisaac";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Private
-
-  + pass_count:REAL_32 := 0;
-  + fail_count:REAL_32 := 0;
-  + verbose:BOOLEAN := FALSE;
-  + suite_name:ABSTRACT_STRING;
-  + section_name:ABSTRACT_STRING;
-
-  - usage <-
-  // Display common usage message on console
-  (
-    ("Usage: " + (COMMAND_LINE.item 0) + " [-v]").printline;
-    "  -v    verbose reporting".println;
-    OBJECT.die_with_code 1;
-  );
-
-  - bar <-
-  // Print a double line bar for visual separation.
-  (
-    "\n==============================\n".print;
-  );
-
-  - minibar <-
-  // Print a single line bar for visual separation.
-  (
-    "\n   ---------------------------\n".print;
-  );
-
-Section Public
-  // Setup
-
-  - init <-
-  // Initialize unit testing. This currently looks for
-  // command line parameters and configures itself
-  // accordingly.
-  (
-    + arg:ABSTRACT_STRING;
-
-    1.to (COMMAND_LINE.count-1) do { idx:INTEGER;
-      arg := (COMMAND_LINE.item idx);
-
-      (arg == "-v").if {
-        set_verbose TRUE;
-      } else {
-        usage;
-      };
-    };
-  );
-
-  - set_verbose verbose_mode:BOOLEAN <-
-  // When verbose is true, suite names, section names, passed and
-  // failed tests will all be reported. When verbose is false, only
-  // failed tests will be reported.
-  (
-    verbose := verbose_mode;
-  );
-
-Section Public
-  // Sectioning
-
-  - suite name:ABSTRACT_STRING <-
-  // Set the major suite name
-  (
-    suite_name := name;
-
-    verbose.if {
-      ("\n" + name).print;
-      bar;
-    };
-  );
-
-  - section name:ABSTRACT_STRING <-
-  // Set the minor section of a suite
-  (
-    section_name := name;
-
-    verbose.if {
-      ("\n   " + name).print;
-      minibar;
-    };
-  );
-
-Section Public
-  // Tests
-
-  - test_failed name:ABSTRACT_STRING <-
-  // Fail a test with no data report
-  (
-    fail_count := fail_count + 1;
-
-    (verbose = FALSE).if {
-      (suite_name + ":" + section_name + " -> ").print;
-    } else {
-      "   ".print;
-    };
-
-    (name + "... failed, no data given\n").print;
-  );
-
-  - test_failed name:ABSTRACT_STRING got got:ABSTRACT_STRING expected expected:ABSTRACT_STRING <-
-  // Fail a test
-  (
-    fail_count := fail_count + 1;
-
-    (verbose = FALSE).if {
-      (suite_name + ":" + section_name + " -> ").print;
-    } else {
-      "   ".print;
-    };
-
-    (name + "... failed: expected '" + expected + "' got '" + got + "'\n").print;
-  );
-
-  - test_passed name:ABSTRACT_STRING <-
-  // Pass a test
-  (
-    pass_count := pass_count + 1;
-
-    verbose.if {
-      ("   " + name + "... passed\n").print;
-    };
-  );
-
-  - test name:ABSTRACT_STRING integer got:INTEGER equals expected:INTEGER <-
-  // Test equality between two INTEGER values, fail on not equal
-  (
-    (expected = got).if {
-      test_passed name;
-    } else {
-      test_failed name got (got.to_string) expected (expected.to_string);
-    };
-  );
-
-  - test name:ABSTRACT_STRING real_16_16 got:REAL_16_16 equals expected:REAL_16_16 <-
-  // Test equality between two REAL_16_16 values, fail on not equal
-  (
-    (expected = got).if {
-      test_passed name;
-    } else {
-      test_failed name got (got.to_string) expected (expected.to_string);
-    }
-  );
-
-  - test name:ABSTRACT_STRING boolean got:BOOLEAN equals expected:BOOLEAN <-
-  // Test equality between two BOOLEAN values, fail on not equal
-  (
-    (got = expected).if {
-      test_passed name;
-    } else {
-      test_failed name got (got.to_string) expected (expected.to_string);
-    };
-  );
-
-  - test name:ABSTRACT_STRING character got:CHARACTER equals expected:CHARACTER <-
-  // Test equality between two CHARACTER values, fail on not equal
-  (
-    (got = expected).if {
-      test_passed name;
-    } else {
-      test_failed name got (got.to_string) expected (expected.to_string);
-    };
-  );
-
-  - test name:ABSTRACT_STRING string got:ABSTRACT_STRING equals expected:ABSTRACT_STRING <-
-  // Test equality between two STRING values, fail on not equal
-  (
-    (got == expected).if {
-      test_passed name;
-    } else {
-      test_failed name got got expected expected;
-    };
-  );
-
-Section Public
-  // Reporting
-
-  - test_results <-
-  // Print the test results to the screen. If fail_count > 0 then
-  // the program will exit with an error level of 1.
-  (
-    + total:REAL_32;
-    + success:REAL_32;
-
-    total := pass_count + fail_count;
-    success := pass_count / total;
-
-    verbose.if {
-      "\nResults".print;
-      bar;
-      "  Passed: ".print; pass_count.to_integer.print; "\n".print;
-      "  Failed: ".print; fail_count.to_integer.print; "\n".print;
-      "   Total: ".print; total.to_integer.print; "\n".print;
-      " Success: ".print; (success * 100).to_integer.print; "%\n".print;
-    } else {
-      (
-        "\n" +
-        "Pass: " + pass_count.to_integer.to_string +
-        " Fail: " + fail_count.to_integer.to_string +
-        " Total: " + total.to_integer.to_string +
-        " Success: " + (success * 100).to_integer.to_string + "%\n"
-      ).print;
-    };
-
-    (fail_count > 0).if {
-      OBJECT.die_with_code 1;
-    };
-  );
diff --git a/lib/time/date.li b/lib/time/date.li
deleted file mode 100644
index 2031232..0000000
--- a/lib/time/date.li
+++ /dev/null
@@ -1,160 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=Expanded  DATE;
-
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Date";
-  
-  - type        := `unsigned long`;
-  
-  - default     := `0`:DATE;
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT; 
-  
-Section Private
-  
-  - to_raw:UINTEGER_32 <-
-  (
-    CONVERT[SELF,UINTEGER_32].on Self
-  );
-  
-Section Public
-  
-  - '>' Right 60 other:SELF :BOOLEAN <- to_raw > other.to_raw;
-  
-  - '<' Right 60 other:SELF :BOOLEAN <- to_raw < other.to_raw;
-  
-  - '>=' Right 60 other:SELF :BOOLEAN <- to_raw >= other.to_raw;
-  
-  - '<=' Right 60 other:SELF :BOOLEAN <- to_raw <= other.to_raw;
-  
-  - year :UINTEGER_16 <-
-  ( 
-    (to_raw >> 16).to_uinteger_16
-  );
-  
-  - month:UINTEGER_8 <-
-  (
-    ((to_raw & 0FF00h)>>8).to_uinteger_8 
-  );
-  
-  - day  :UINTEGER_8 <-
-  (
-    (to_raw & 01Fh).to_uinteger_8 
-  );
-  
-  - week_day :UINTEGER_8 <-
-  (
-    ((to_raw >> 5) & 0111b).to_uinteger_8
-  );
-  
-  
-Section Public
-  
-  - create (y:UINTEGER_16,m,d,wd:UINTEGER_8) :DATE <-
-  ( + date:UINTEGER_32;
-    ? { m.in_range 1 to 12};
-    ? { d.in_range 1 to 31};
-    ? { wd.in_range 1 to 7};
-    date := y.to_uinteger_32 << 16;
-    date := date | (m.to_uinteger_32 << 8);
-    date := date | d;
-    date := date | (wd << 5);
-    CONVERT[UINTEGER_32,SELF].on date
-  );
-  
-  - to_string:STRING <-
-  ( + result:STRING;
-    result := STRING.create 13;
-    append_in result;
-    result
-  );
-  
-  - append_in str:STRING <-
-  (
-    week_day
-    .when 1 then {
-      str.append "Mo";
-    }
-    .when 2 then {
-      str.append "Tu";
-    }
-    .when 3 then {
-      str.append "We";
-    }
-    .when 4 then {
-      str.append "Th";
-    }
-    .when 5 then {
-      str.append "Fr";
-    }
-    .when 6 then {
-      str.append "Sa";
-    }
-    .when 7 then {
-      str.append "Su";
-    };
-    (week_day != 0).if {
-      str.add_last ' ';
-    };
-    day.append_in str format 2 with '0';
-    str.add_last '/';
-    month.append_in str format 2 with '0';
-    str.add_last '/';
-    year.append_in str format 4;           
-  );
-
-  - append_short_in str:STRING <-
-  (
-    day.append_in str format 2 with '0';
-    str.add_last '/';
-    month.append_in str format 2 with '0';
-    str.add_last '/';
-    (year % 100).append_in str format 2 with '0';           
-  );
-
-  - append_short2_in str:STRING <-
-  (
-    day.append_in str format 2 with '0';
-    str.add_last '/';
-    month.append_in str format 2 with '0';
-    str.add_last '/';
-    year.append_in str format 4 with '0';           
-  );
-    
-  - print <-
-  (
-    to_string.print;
-  );
-  
-  - create_with_sec sec:INTEGER :DATE <-
-  // JHJH : to do
-  (
-    DATE.create (2008,07,24,3)
-  );
-
diff --git a/lib/time/time.li b/lib/time/time.li
deleted file mode 100644
index c262531..0000000
--- a/lib/time/time.li
+++ /dev/null
@@ -1,166 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=Expanded  TIME;
-
-
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Time";
-  
-  - type        := `unsigned long`;
-  
-  - default     := `0`:TIME;
-  
-Section Insert
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  - to_raw:UINTEGER_32 <-
-  (
-    CONVERT[SELF, UINTEGER_32].on Self
-  );
-Section Public
-
-  - hour:UINTEGER_8 <-
-  (
-    (to_raw >> 24).to_uinteger_8
-  );
-  
-  - minute:UINTEGER_8 <-
-  (
-    ((to_raw & 0FF0000h) >> 16).to_uinteger_8
-  );
-  
-  - second:UINTEGER_8 <-
-  (
-    ((to_raw & 0FF00h) >> 8).to_uinteger_8
-  );
-
-  - csecond:UINTEGER_8 <-
-  (
-    (to_raw & 0FFh).to_uinteger_8
-  );
-  
-Section Public
-  
-  - '>' Right 60 other:SELF :BOOLEAN <- to_raw > other.to_raw;
-  
-  - '<' Right 60 other:SELF :BOOLEAN <- to_raw < other.to_raw;
-  
-  - '>=' Right 60 other:SELF :BOOLEAN <- to_raw >= other.to_raw;
-  
-  - '<=' Right 60 other:SELF :BOOLEAN <- to_raw <= other.to_raw;
-  
-  - to_csecond:INTEGER <- hour.to_integer * (60*60*100) + 
-  minute.to_integer * (60*100) + 
-  second.to_integer * 100 + 
-  csecond;
-  
-  - '-' Right 60 other:SELF :SELF <- 
-  ( 
-    create_csecond (Self -# other)
-  );
-  
-  // BSBS: A uniformiser -# +# ???
-  
-  - '-#' Right 60 other:SELF :INTEGER <- to_csecond - other.to_csecond;
-  
-  - '+#' Right 60 other:INTEGER :TIME <-
-  ( 
-    create_csecond (to_csecond + other)
-  );
-  
-  - create (h,m,s,cs:INTEGER) :TIME <-
-  ( + t:UINTEGER_32;
-    ? {h.in_range 0 to 23};
-    ? {m.in_range 0 to 59};
-    ? {s.in_range 0 to 59};
-    ? {cs.in_range 0 to 99};
-    
-    t := h.to_uinteger_32 <<24;
-    t := t | (m.to_uinteger_32 << 16);
-    t := t | (s.to_uinteger_32 << 8);
-    t := t | cs;
-    CONVERT[UINTEGER_32, SELF].on t
-  );
-  
-  - create_csecond csec:INTEGER :SELF <-
-  ( + h,m,s,cs,diff:INTEGER;
-    
-    diff := csec;
-    h := diff / (60*60*100);
-    diff := diff % (60*60*100);
-    
-    m := diff / (60*100);
-    diff := diff % (60*100);
-    
-    s := diff / 100;
-    cs := diff % 100;    
-    
-    create (h,m,s,cs)
-  );
-  
-  - to_string:STRING <-
-  ( + result:STRING;
-    result := STRING.create 8;
-    append_in result;
-    result
-  );
-  
-  - append_in str:STRING <-
-  (
-    hour.append_in str format 2 with '0';
-    str.add_last ':';
-    minute.append_in str format 2 with '0';
-    str.add_last ':';
-    second.append_in str format 2 with '0';
-    str.add_last ',';
-    csecond.append_in str format 2 with '0';
-  );
-
-  - append_short_in str:STRING <-
-  (
-    hour.append_in str format 2 with '0';
-    str.add_last ':';
-    minute.append_in str format 2 with '0';
-  );
-  
-  - update <-
-  (
-    // JBJB A FAIRE !!    
-  );
-  
-  - print <-
-  (
-    to_string.print;
-  );
-
-  - create_with_sec sec:INTEGER :TIME <-
-  // JHJH : to do
-  (
-    TIME.create (3,13,30,5)
-  );
-
diff --git a/lib_os/clean.sh b/lib_os/clean.sh
deleted file mode 100755
index ff16fad..0000000
--- a/lib_os/clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-for i in `find -name "*~"` ; do rm $i ; done
-for i in `find -name "*.c"` ; do rm $i ; done
-for i in `find -name "*.old"` ; do rm $i ; done
diff --git a/lib_os/dos/file_system/entry.li b/lib_os/dos/file_system/entry.li
deleted file mode 100644
index 8a0533a..0000000
--- a/lib_os/dos/file_system/entry.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENTRY;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";  
-
-  - comment     := "Entry ANSI";
-    
-Section Inherit
-  
-  + parent_abstract_entry:Expanded ABSTRACT_ENTRY;
-    
-Section Public  
-    
-  //
-  // Physical implementation.
-  //
-
-  - physical_make:BOOLEAN <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:BOOLEAN;
-
-    pe := path.to_external;
-    `{ struct stat t`;
-      result := `stat(@pe,&t)`:INTEGER = 0;
-      (result).if {
-	is_directory := `S_ISDIR(t.st_mode)`:BOOLEAN(TRUE,FALSE);
-	tt := `localtime(&(t.st_atime))`:POINTER;
-	access_date := to_date tt;
-	access_time := to_time tt;
-	tt := `localtime(&(t.st_mtime))`:POINTER;
-	update_date := to_date tt;
-	update_time := to_time tt;
-	size := `t.st_size`:UINTEGER;
-      };
-    `}`;
-    result
-  );
-  
-  - physical_remove_directory:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `rmdir(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_remove_file:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `remove(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
-  
-  //
-  // Time / Date: Unix -> Lisaac
-  //
-  
-  - to_date t:POINTER :DATE <-
-  ( + result:DATE;
-    + wd,md,m:UINTEGER_8;
-    + y:UINTEGER_16;
-    
-    y  := `((struct tm *)@t)->tm_year`:UINTEGER_16 + 1900;
-    m  := `((struct tm *)@t)->tm_mon` :UINTEGER_8 + 1;
-    md := `((struct tm *)@t)->tm_mday`:UINTEGER_8;
-    wd := `((struct tm *)@t)->tm_wday`:UINTEGER_8;
-    (! wd.in_range 1 to 7).if { // Bug in UNIX ?
-      wd := 1;
-    };
-    result := DATE.create (y,m,md,wd)     
-  );
-
-  - to_time t:POINTER :TIME <-
-  (
-    TIME.create 
-    ((`((struct tm *)@t)->tm_hour`:UINTEGER_8),
-    (`((struct tm *)@t)->tm_min` :UINTEGER_8),
-    (`((struct tm *)@t)->tm_sec` :UINTEGER_8),
-    0)
-  );
-  
diff --git a/lib_os/dos/video/bitmap_8.li b/lib_os/dos/video/bitmap_8.li
deleted file mode 100644
index 667ebf6..0000000
--- a/lib_os/dos/video/bitmap_8.li
+++ /dev/null
@@ -1,91 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BITMAP_8;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Bitmap 8 bits";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP;
-  
-Section Public
-  
-  - pixel_geometry:PIXEL := PIXEL_8;
-  
-Section Private  
-  
-  //
-  // Data.
-  //
-  
-  // Mapping memory bitmap.
-  + image:FAST_ARRAY[BMP_LINE_8];
-  
-  - get_line y:INTEGER :BMP_LINE <-
-  (
-    image.item y
-  );
-  
-  //
-  // Creation. 
-  //
-
-  - make (w,h:INTEGER) <-
-  (
-    width  := w;
-    height := h;
-    //bytes_per_line:=(w * PIXEL_8.size + 7)>>3;
-    image := FAST_ARRAY[BMP_LINE_8].create h;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE_8.create w) to y;
-    };
-    clipping_off;
-  );  
-  
-  - make (w,h:INTEGER) at offset_begin:UINTEGER_32 bytes_per_line lx:INTEGER <-
-  ( + offset:UINTEGER_32;
-    
-    width  := w;
-    height := h;    
-    image := FAST_ARRAY[BMP_LINE_8].create h;
-    offset:=offset_begin;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE_8.create w at offset) to y;
-      offset:=offset+lx;
-    };
-    clipping_off;
-  );
-  
- 
-
-
-
-
-
diff --git a/lib_os/dos/video/bmp_line_8.li b/lib_os/dos/video/bmp_line_8.li
deleted file mode 100644
index 3b28aec..0000000
--- a/lib_os/dos/video/bmp_line_8.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BMP_LINE_8;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Bitmap line 8 bits";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-
-Section Inherit
-  
-  + parent_bmp_line:Expanded BMP_LINE;
-  
-Section Private
-  
-  + storage:MAP_NATIVE_ARRAY[PIXEL_8];
-  
-  - get_storage:NATIVE_ARRAY[UINTEGER_8] <- NATIVE_ARRAY[UINTEGER_8].force_conversion storage;
-  
-  - make n:INTEGER <-
-  ( 
-    capacity := n;
-    upper    := n - 1;    
-    storage  := MAP_NATIVE_ARRAY[PIXEL_8].calloc n;    
-  );
-  
-  - make_with_capacity n:INTEGER <-
-  (
-    capacity := n;
-    upper    := -1;
-    storage  := MAP_NATIVE_ARRAY[PIXEL_8].calloc n;    
-  );
-  
-  - make n:INTEGER at offset:UINTEGER_32 <-
-  ( 
-    capacity := n;
-    upper    := n - 1;    
-    storage  := MAP_NATIVE_ARRAY[PIXEL_8].force_conversion offset;    
-  );
-
-Section Public
-  
-  - pixel_geometry:PIXEL := PIXEL_8;
-  
-  //
-  // Put.
-  //
-  
-  - put (r,g,b:UINTEGER_8) from idx_begin:INTEGER to idx_end:INTEGER <- 
-  ( + pixel:PIXEL_8;    
-    ? {idx_begin<=idx_end};
-    ? {idx_begin>=0};
-    ? {idx_end.in_range 0 to upper};
-    
-    PIXEL_24.color (r,g,b);
-    pixel := PIXEL_24.to_pixel_8;
-    idx_begin.to idx_end do { n:INTEGER;
-      storage.item n.copy pixel;
-    };
-  );
-  
-  - put bmp:BMP_LINE offset ofs:INTEGER from idx_begin:INTEGER to idx_end:INTEGER <-
-  ( + offset:INTEGER;
-    + pixel:PIXEL_8;
-    ? {idx_begin <= idx_end};
-    ? {idx_begin >= 0};
-    ? {idx_end.in_range 0 to upper};
-    ? {ofs >= 0};
-    ? {(ofs + (idx_end - idx_begin)) <= bmp.upper};        
-    
-    offset := ofs;
-    idx_begin.to idx_end do { n:INTEGER;
-      pixel := bmp.item_8 offset;
-      storage.item n.copy pixel;
-      offset := offset + 1;
-    };
-  );
-  
-  //
-  // Get.
-  //
-  
-  - item n:INTEGER :PIXEL <-
-  ( ? {n.in_range 0 to upper};
-    storage.item n
-  );
-    
-
-
diff --git a/lib_os/dos/video/event_system.li b/lib_os/dos/video/event_system.li
deleted file mode 100644
index d526eb6..0000000
--- a/lib_os/dos/video/event_system.li
+++ /dev/null
@@ -1,60 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EVENT_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 - Event System";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-
-  - make <-  
-  (
-    // Nothing.
-  );
-    
-  - get_event <-
-  (     
-    KEYBOARD.get_scan;
-    MOUSE.get_new_event;
-  );
-  
-  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/dos/video/keyboard.li b/lib_os/dos/video/keyboard.li
deleted file mode 100644
index a07e3a3..0000000
--- a/lib_os/dos/video/keyboard.li
+++ /dev/null
@@ -1,273 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  - name    := KEYBOARD;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - category:= MICRO;
-  
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Boutet Jerome (boutet at loria.fr),Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Keyboard for DOS - AZERTY";
-
-  - version :="1.0";  
-  - date    :="2003/04";
-  
-Section Inherit
-  
-  + parent_input_keyboard:Expanded INPUT_KEYBOARD;
-
-Section Private
- 
-  + e_code:BOOLEAN;   // TRUE If extended mode 
-  
-  // Lower case.
-  - cmin:STRING_CONSTANT := "\0d\&‚\"\39d\(-Š_‡…)=\1d\\2d\azertyuiop^$\3d\^qsdfghjklm—ý^*wxcvbn,;:!^*^ ";
-  // Upper case.
-  - cmaj:STRING_CONSTANT := "\0d\1234567890ø+\1d\\2d\AZERTYUIOPùœ\3d\^QSDFGHJKLM%ý^æWXCVBN?./^*^ ";
-
-  - cmm:STRING_CONSTANT  := "\27d\\8d\\9d\\13d\"; // 0:Echap 1:Del 2:Tab 3:Enter
-  - caltgr:STRING_CONSTANT  := "'~#{[|`\\^@]}";
-  
-  // Num keyb.
-  - keynum0:STRING_CONSTANT := "789-456+1230."; // from 70-82
-  - keynum1:STRING_CONSTANT := "BUA\0d\LMR\0d\ELZIS"; // Without NumLock
-  
-  // Extended keyboard from 88 to 102
-  - ext_key:STRING_CONSTANT := "\55d\\28d\\52d\\27d\\70d\\78d\\81d\\82d\\76d\\74d\\71d\\79d\\80d\\72d\\54d\"; 
-  - buf_extk:STRING_CONSTANT := "\13d\BEISRLUDZAH";
-
-Section Public  
-  
-  - old_scan:UINTEGER_8;
-  
-  //
-  // Get Character (Interrupt #21)
-  //
-
-  - get_scan <-
-  ( + cu,scancode,tmp:UINTEGER_8;
-        
-    scancode:=SYSTEM.itemb 60h;     
-    (scancode != old_scan).if {
-      old_scan := scancode;
-      cu:=getcode (scancode-1);
-      (cu!=0).if {
-	// Routine Pour Reboot Violant : CTRL+(ALT | ALT Gr)+Suppr
-	((cu=='S'.to_uinteger_8) && { ((cmd&0Fh)==0Dh) || {(cmd&0Fh)==0Bh} }).if {
-	  "Reboot ...\n".print;
-	  die_with_code exit_failure_code;
-	};
-	
-	tmp:=(p_end+1)&003h;
-	buffer_event.item p_end.make ((cmd.to_uinteger_16<<8)|cu);
-	(((tmp+2)&3)!=p_beg).if {
-	  p_end:=tmp;
-	};
-	get_event;
-      };
-    };
-  );
-  
-Section Private
-  
-  - send_cmd (comm,dta:UINTEGER_8) <-
-  // Send a command to keyboard 
-  (
-    // Empty buffer
-    { ((SYSTEM.itemb 64h) & 2) != 0}.while_do {
-      SYSTEM.itemb 60h;                         
-    };    
-    // Send command
-    SYSTEM.putb comm to 60h;                      
-    // Waiting for answer
-    { ((SYSTEM.itemb 64h) & 1) == 0}.while_do {};       
-    // Read answer
-    SYSTEM.itemb 60h;                           
-    // Send data
-    SYSTEM.putb dta to 60h;                      
-    // Waiting for answer
-    { ((SYSTEM.itemb 64h) & 1) == 0}.while_do {};   
-    // Read answer
-    SYSTEM.itemb 60h;                           
-  );
-  
-  - light <-
-  (
-    send_cmd (0EDh,(((cmd & 80h)>>7)|((cmd & 40h)>>5)|((cmd & 20h)>>3)));
-  );
-
-  - keyup cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    cmd := cmd & 0F7h; // Deactivate the cmd bit    
-    bin_code.put ((bin_code.item (cu>>3)) & ~(1<<(cu&7))) to (cu>>3);
-    // Analyze: for deactivate the cmd
-    ((cu == 28) || {cu == 89}).if {
-      //CTRL 1 or CTRL2
-      cmd := cmd & (~01h);
-    }.elseif { cu == 88 } then {
-      // Alt Gr
-      cmd := cmd & (~02h);
-    }.elseif { cu == 55 } then {
-      // Alt
-      cmd := cmd & (~04h);      
-      result := ascii_code;
-      ascii_code := 0;      
-    }.elseif { (cu == 41) || { cu == 53} } then {
-      // Shift 1 or Shift 2
-      cmd := cmd & (~10h);
-    };
-    result
-  );
-
-  - keydown cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + cu2,result:UINTEGER_8;
-    bin_code.put ((bin_code.item (cu>>3)) | (~(1<<(cu&7)))) to (cu>>3); // Activate key
-    // Analyze: for activate the cmd
-    ((cu == 28) || {cu == 89}).if {
-      //CTRL 1 or CTRL2
-      cmd := cmd | 01h;
-    }.elseif { cu == 88 } then {
-      // Alt Gr
-      cmd := cmd | 02h;
-    }.elseif { cu == 55 } then {
-      // Alt
-      cmd := cmd | 04h;      
-    }.elseif { (cu == 41) || { cu == 53} } then {
-      // Shift 1 or Shift 2
-      cmd := cmd | 10h;
-      ((cmd & 20h)!=0).if {
-	cmd := cmd & (~20h);
-	light;
-      };
-    }.elseif { cu == 57 } then {
-      // Cap
-      cmd := cmd ^ 20h;
-      light;
-    }.elseif { cu == 68 } then {
-      // Num Lock
-      cmd := cmd ^ 40h;
-      light;
-    }.elseif { cu == 69 } then {
-      // Scroll Lock
-      cmd := cmd ^ 80h;
-      light;
-    }.elseif { cu<=56 } then {
-      (cu == 0).if {
-	// Esc
-	cmd :=  cmd | 08h;
-	result := cmm.item 1.to_uinteger_8;
-      }.elseif {((cmd&2)!=0) && {cu<=12}} then {
-	cmd :=  cmd & (~02h);
-	result := caltgr.item cu.to_uinteger_8;
-      } else {
-	((cmd & 30h)==0).if {
-	  cu2 := cmin.item (cu+1).to_uinteger_8;
-	} else {
-	  cu2 := cmaj.item (cu+1).to_uinteger_8;
-	};
-	((cu2 & 0FCh)!=0).if {
-	  result := cu2;
-	} else {
-	  cmd := cmd | 08h;
-	  result := cmm.item (cu2+1).to_uinteger_8;
-	};	
-      };
-    }.elseif {cu <= 67} then {
-      cmd :=  cmd | 08h;      // F1 to F10 = cmd
-      result :=  cu+39;  // 'a' to 'j'
-    }.elseif {cu < 85} then {
-      cu2 := keynum0.item (cu-69).to_uinteger_8;
-      (cu2 < 46).if {
-	result := cu2;
-      }.elseif {(cmd & 40h)!=0} then {
-	((cmd & 04h)==0).if {
-	  result := cu2;
-	} else {
-	  ascii_code := (ascii_code*10)+(cu2-48);
-	};
-      } else {
-	cmd := cmd | 08h;      // cmd
-	result := cu2;
-      };
-    }.elseif {cu==85} then {
-      ((cmd & 30h)==0).if {
-	result := '<'.to_uinteger_8;
-      } else {
-	result := '>'.to_uinteger_8;
-      };
-    }.elseif {cu<=87} then {
-      cmd := cmd |08h;    // 'k' to 'l'
-      result := cu+21;
-    }.elseif {cu==90} then {
-      result := '/'.to_uinteger_8;
-    } else {
-      cmd := cmd | 08h;
-      result := buf_extk.item (cu-90).to_uinteger_8;       
-    };
-    result
-  );
-  
-  - getcode cu:UINTEGER_8 :UINTEGER_8 <-
-  // Translate Scan Code -> cmd.ASCII
-  ( + j:INTEGER;
-    + result:UINTEGER_8;
-    (! e_code).if {
-      // Non extended keys
-      (cu==(0E0h-1)).if {
-	e_code := TRUE;  // Extended Code
-      } else {
-	((cu & 80h)==0).if {
-	  result :=  keydown cu.to_uinteger_8;
-	} else {
-	  result := keyup (cu & 07Fh).to_uinteger_8;
-	};
-      };
-    } else {
-      // Extended keys
-      (cu!=(0E0h-1)).if {
-	// not Pause
-	(cu !=41).if {
-	  e_code := FALSE;               // Deactivate extended code
-	  (cu != 169).if {
-	    {(ext_key.item (j+1).to_uinteger_8 != (cu & 07Fh)) && {j < 15}}.while_do {
-	      j := j + 1;
-	    };
-	    (j < 15).if {
-	      ((cu & 80h)==0).if {
-		result := keydown (88+j).to_uinteger_8;
-	      } else {
-		result := keyup (88+j).to_uinteger_8;
-	      };
-	    };
-	  };
-	};
-      };
-    };
-    result
-  );
-  
-  
-
-
-
diff --git a/lib_os/dos/video/mouse.li b/lib_os/dos/video/mouse.li
deleted file mode 100644
index bc0d2f4..0000000
--- a/lib_os/dos/video/mouse.li
+++ /dev/null
@@ -1,260 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  - name    := MOUSE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - category:=MICRO;
-  
-  - bibliography:="http://IsaacOS.com";
-  - author      :="Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     :="Mouse for DOS.";
-  
-  - external := `union REGS __in_mouse;`;
-  
-Section Inherit
-
-  + parent_input:Expanded INPUT;
-  
-  + parent_window:Expanded AREA;
-    
-Section Public
-
-  - set (x,y:INTEGER) with (left_new,right_new:BOOLEAN) <-
-  ( + tmp:UINTEGER_8;
-    + x_new, y_new:INTEGER;
-    
-    y_new := y.max y_minimum.min y_maximum;
-    x_new := x.max x_minimum.min x_maximum;
-          
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make (x_new,y_new) button (left_new,right_new);
-
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    
-    get_event;
-    
-    // Update status.
-    x_current:=x_new;
-    y_current:=y_new;
-    Right:=right_new;
-    left :=left_new;    
-  );
-  
-Section Public
-  
-  + x_minimum:INTEGER;
-  + x_maximum:INTEGER;
-  
-  + y_minimum:INTEGER;
-  + y_maximum:INTEGER;
-  
-  + x_current:INTEGER;
-  + y_current:INTEGER; 
-  
-  + Right:BOOLEAN;
-  + Left:BOOLEAN;
-  
-Section Private
-  
-  + buffer_event:MAP_FAST_ARRAY[EVENT_MOUSE];
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public
-  
-  //
-  // Creation / Initialisation.
-  //
-  
-  - make <-
-  (
-    //
-    // Mouse hardware configuration.
-    //
-    //display_on;
-    
-    x_maximum := VIDEO.x_max;
-    y_maximum := VIDEO.y_max;
-
-    //
-    // Software configuration.
-    //
-    buffer_event := MAP_FAST_ARRAY[EVENT_MOUSE].create 4;
-    0.to 3 do { j:INTEGER;
-      buffer_event.item j.set_prev (buffer_event.item ((j-1)&3));
-    };
-    
-    mask := FAST_ARRAY[UINTEGER_16].create 16;
-    make (INTERFACE.screen) from (x_current,y_current) size (16,16);
-  );
-  
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_MOUSE;
-    
-    p := p_beg;
-    { p != p_end }.while_do {
-      evt := buffer_event.item p;
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
-    
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  - display_on <- `__in_mouse.w.ax=0x01; int386(0x33,&__in_mouse,&__in_mouse)`;
-
-  - display_off <- `__in_mouse.w.ax=0x02; int386(0x33,&__in_mouse,&__in_mouse)`;
-  
-  - get_new_event <-
-  ( + b,x,y:INTEGER;
-    + new_r,new_l,is_move:BOOLEAN;
-    
-    `__in_mouse.w.ax=0x03; int386(0x33,&__in_mouse,&__in_mouse)`;
-    b:=`__in_mouse.w.bx`:INTEGER;
-    x:=`__in_mouse.w.cx`:INTEGER / 2;
-    y:=`__in_mouse.w.dx`:INTEGER;
-    new_l := (b & 01b) != 0;
-    new_r := (b & 10b) != 0;
-    (
-      (is_move := (x != x_current) || {y != y_current}) || {new_l != Left} || {new_r != Right}
-    ).if {
-      (is_move).if {
-	set_position (x,y);
-      };
-      set (x,y) with (new_l,new_r);
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  // BSBS: A refaire avec une bitmap en dehors contenant le dessin avec une couleur de mask!!
-  // Plus simple, plus puissant, plus rapide ! 
-  
-  + mask:FAST_ARRAY[UINTEGER_16];
-
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x<16};
-    ? {y<16};
-
-    m:=mask.item y;
-    m:=m | (1<<x);
-    mask.put m to y;
-
-    parent_window.pixel_hard (x,y) color col;
-  );
-  
-  - line_h_hard (x0,y0:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x0<16};
-    ? {y0<16};
-    ? {x1<16};
-    
-    m:=mask.item y0;
-    x0.to x1 do { xx:INTEGER;
-      m:=m | (1<<xx);
-    };
-    
-    mask.put m to y0;
-    parent_window.line_h_hard (x0,y0) until x1 color col;
-  );
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    ((m & (1<<x))=0).if {
-      parent_window.pixel_hard (x,y) color col;
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	parent_window.pixel_hard (xx,y) color col;
-      };
-    };
-  );  
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER image line:BMP_LINE offset ofs:INTEGER <-
-  ( + m:UINTEGER_16;
-    + col:UINTEGER_32;
-    + ofs_img:INTEGER;
-    ofs_img := ofs;
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	col := line.get_color ofs_img;	
-	parent_window.pixel_hard (xx,y) color col;
-      };     
-      ofs_img := ofs_img + 1;
-    };
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    clipping (x0,y0) to (x1,y1);
-    
-    color white;
-    poly_move_to (1,1);
-    poly_line_to (9,9);
-    poly_line_to (6,9);
-    poly_line_to (8,14);
-    poly_line_to (5,14);
-    poly_line_to (5,9);
-    poly_line_to (1,9);    
-    poly_move_to (1,1);    
-    poly_trace;
-    
-    color red;
-    line_v (0,0)  until 10;
-    line_h (1,10) until 4;
-    line_v (4,11) until 15;
-    line_h (5,15) until 9;
-    line (9,15) to (7,10);
-    line_h (7,10) until 10;
-    line (1,0) to (10,9);
-  );
-  
-  - get_object (x,y:INTEGER) :AREA <-
-  (
-    NULL
-  );
- 
-  
-  
-  
\ No newline at end of file
diff --git a/lib_os/dos/video/pixel_8.li b/lib_os/dos/video/pixel_8.li
deleted file mode 100644
index 103cc1c..0000000
--- a/lib_os/dos/video/pixel_8.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PIXEL_8;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Pixel 8 bits (RR-VVV-BBB)";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-Section Inherit
-  
-  - parent_pixel:PIXEL := PIXEL;
-  
-Section Mapping
-  
-  + real_color:UINTEGER_8;
-        
-Section Public
-  
-  - red:UINTEGER_8   <- real_color & 11000000b;
-  
-  - green:UINTEGER_8 <- (real_color & 00111000b) << 2;
-  
-  - blue:UINTEGER_8  <- real_color << 5;
-  
-  - color col:UINTEGER_32 <-
-  (
-    real_color := (((col >> 16).to_uinteger_8) &11000000b) | ((((col & 00FF00h) >> 10).to_uinteger_8)&00111000b) | (((col & 0000FFh).to_uinteger_8) >>5);
-  );
-  
-  - color_rgb (r,g,b:UINTEGER_8) <-
-  (
-    real_color := (r &11000000b) | (g&00111000b) | (b >>5);
-  );
-  
-  - size:UINTEGER_8       := 8; 
-  - red_size:UINTEGER_8   := 2;
-  - red_pos:UINTEGER_8    := 6;
-  - green_size:UINTEGER_8 := 3;
-  - green_pos:UINTEGER_8  := 3;
-  - blue_size:UINTEGER_8  := 3;
-  - blue_pos:UINTEGER_8   := 0;
-  - reserved_size:UINTEGER_8 :=0;
-  - reserved_pos:UINTEGER_8  :=0;
-  
-  - copy other:SELF <-  
-  (
-    real_color := other.real_color;
-  );
-  
-  - to_pixel_8:PIXEL_8 <- Self;
-  
-
-
-
-
-
-
-
diff --git a/lib_os/dos/video/video.li b/lib_os/dos/video/video.li
deleted file mode 100644
index 7bf32c4..0000000
--- a/lib_os/dos/video/video.li
+++ /dev/null
@@ -1,160 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Driver video - For DOS -";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - external := 
-  `
-#include <stdio.h> 
-#include <dos.h>
-#include <dpmi.h>
-#include <pc.h>
-#include <go32.h>
-#include <conio.h>
-unsigned short __desc_video;
-void __init_video_320x200()
-{ union REGS in;
-  
-  __desc_video=__dpmi_allocate_ldt_descriptors(1);
-  __djgpp_map_physical_memory((void *)0xA0000, 64000,0xA0000);
-  __dpmi_set_segment_base_address(__desc_video,0xA0000);
-  __dpmi_set_segment_limit(__desc_video,63999);
-  __dpmi_set_descriptor_access_rights(__desc_video,0x40F3);
-  in.w.ax=0x13;
-  int86(0x10,&in,&in);
-};
-void __init_video_text()
-{ union REGS in;
-  
-  in.w.ax=0x03;
-  int86(0x10,&in,&in);
-};
-`;
-  
-  
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP;
-  
-Section Public
-  
-  - message str:ABSTRACT_STRING <-
-  (
-    str.print;
-  );
-  
-  - is_active:BOOLEAN;
-
-  - make (w,h:INTEGER) <-
-  (     
-    ? {w = 320};
-    ? {h = 200};
-    
-    // Init BITMAP:
-    width  := w;
-    height := h;
-    
-    //
-    // Init mode 320x200.
-    //
-    `__init_video_320x200()`;
-    
-    //
-    // Init palette.
-    //
-    SYSTEM.putb 0 to 3C8h;
-    0.to 255 do { j:INTEGER;
-      + r,g,b,c:UINTEGER_8;
-      
-      c:=j.to_uinteger_8;
-      r:=(c&11000000b)>>2;
-      g:=(c&00111000b);
-      b:=(c&00000111b)<<3;
-      SYSTEM.putb r to 3C9h;
-      SYSTEM.putb g to 3C9h;
-      SYSTEM.putb b to 3C9h;
-    };
-    is_active := TRUE;
-  );
-
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + col8:UINTEGER_8;
-    + ofs:INTEGER;
-    col8 := 
-    (((col >> 16).to_uinteger_8) & 11000000b) | // Red
-    (((col >> 10).to_uinteger_8) & 00111000b) | // Green
-    (((col >>  5).to_uinteger_8) & 00000111b);  // Blue
-    ofs:=(y<<8)+(y<<6)+x;
-    //MOUSE.display_off;
-    `_farpokeb(__desc_video, at ofs, at col8)`;
-    //MOUSE.display_on;
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + col8:UINTEGER_8;
-    + ofs:INTEGER;
-    col8 := (((col >> 16).to_uinteger_8) &11000000b) | ((((col & 00FF00h) >> 10).to_uinteger_8)&00111000b) | (((col & 0000FFh).to_uinteger_8) >>5);
-    ofs:=(y<<8)+(y<<6)+x;
-    //MOUSE.display_off;
-    ofs.to (ofs+x1-x) do { j:INTEGER;
-      `_farpokeb(__desc_video, at j, at col8)`;
-    };
-    //MOUSE.display_on;
-  );
-
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER image line:BMP_LINE offset ofs:INTEGER <-
-  ( + ofs2,ofs_img2:INTEGER;
-    + col8:UINTEGER_8;
-    + col:UINTEGER_32;
-    ofs2:=(y<<8)+(y<<6)+x;
-    ofs_img2:=ofs;
-    //MOUSE.display_off;
-    ofs2.to (ofs2+x1-x) do { j:INTEGER;
-      col  := line.get_color ofs_img2;
-      col8 := (((col >> 16).to_uinteger_8) &11000000b) | ((((col & 00FF00h) >> 10).to_uinteger_8)&00111000b) | (((col & 0000FFh).to_uinteger_8) >>5);
-      `_farpokeb(__desc_video, at j, at col8)`;
-      ofs_img2:=ofs_img2+1;
-    };  
-    //MOUSE.display_on;
-  );
-
-  - close <-
-  (
-    ? {is_active};
-    `__init_video_text()`;
-    is_active := FALSE;
-    ? {! is_active};
-  );
-
-
-
-
-
diff --git a/lib_os/java/file_system/directory_unix.li b/lib_os/java/file_system/directory_unix.li
deleted file mode 100644
index cacd50b..0000000
--- a/lib_os/java/file_system/directory_unix.li
+++ /dev/null
@@ -1,155 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=DIRECTORY_UNIX;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  
-  - author      :="Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - comment     :="Directory management";
-  
-  - external := 
-`
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-`;
-  
-Section Inherit
-  
-  + parent_entry_unix:Expanded ENTRY_UNIX;
-  
-  + parent_directory:Expanded DIRECTORY;
-  
-Section Public
-  
-  - is_open:BOOLEAN <- ( list != NULL);
-  
-  //
-  // Scanning
-  //
-      
-  - open:BOOLEAN <-
-  ( + p,n:NATIVE_ARRAY[CHARACTER];
-    + dir,dirent:POINTER;
-    + new_entry:ENTRY;
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    (list = NULL).if {
-      list := LINKED_LIST[ENTRY].create;
-    } else {
-      list.clear;
-    };
-    p := path.to_external;
-    dir := `opendir(@p)`:POINTER; 
-    (dir != NULL).if {
-      result := TRUE;
-      {
-
-	dirent := `readdir(@dir)`:POINTER;
-	(dirent != NULL).if {
-	  n := `((struct dirent *)@dirent)->d_name`:NATIVE_ARRAY[CHARACTER];	
-	  string_tmp.clear;
-	  i := 0;
-	  {n.item i = '\0'}.until_do { 
-	    string_tmp.add_last (n.item i);
-	    i := i + 1;
-	  };
-	  (string_tmp !== ".".to_string).if {
-	    string_tmp.add_first '/';
-            string_tmp.prepend path;            
-            reduce_path string_tmp;            
-	    new_entry := get_entry string_tmp;
-	    (new_entry = NULL).if {	      	      
-	      result := FALSE;
-	    } else {
-	      (new_entry.path.count >= path.count).if {
-		list.add_last new_entry;
-	      };
-	    };
-	  };
-	};
-      }.do_while {(dirent != NULL) && {result}};
-      `closedir(@dir)`;
-    };
-    result
-  );
-  
-Section DIRECTORY
-  
-  - physical_get_entry new_path:ABSTRACT_STRING :ENTRY <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:ENTRY;
-        
-    pe := new_path.to_external;
-    `{ struct stat t`; 
-      (`stat(@pe,&t)`:INTEGER = 0).if {		  
-        (`S_ISDIR(t.st_mode)`:INTEGER = 0).if {
-          // File.
-          result := FILE_UNIX.clone;
-        } else {
-          // Directory.
-          result := DIRECTORY_UNIX.clone;
-        };          
-        result.set_path new_path;
-        alias.put result to (result.path);
-      };
-    `}`;
-        
-    result
-  );
-  
-  - physical_make_directory new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := new_path.to_external;
-    `mkdir(@pa,S_IRWXU)`:(INTEGER) = 0
-  );
-
-  - physical_make_file new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    pa := new_path.to_external;
-    stream := `fopen((char*)@pa,"w+b")`:POINTER;
-    (stream != NULL).if {
-      result := `fclose((FILE*)@stream)`:INTEGER = 0;
-    };
-    result
-  );
-
-  - physical_remove p:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := p.to_external;
-    `remove(@pa)`:(INTEGER) = 0
-  );
-      
-  - physical_move old_path:ABSTRACT_STRING to new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
diff --git a/lib_os/java/file_system/entry_unix.li b/lib_os/java/file_system/entry_unix.li
deleted file mode 100644
index e100640..0000000
--- a/lib_os/java/file_system/entry_unix.li
+++ /dev/null
@@ -1,150 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENTRY_UNIX;
-
-  - copyright   := "2003-2008 Benoit Sonntag";
-  
-  - bibliography:= "http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-
-  - comment     := "Entry ANSI C";
-    
-Section Inherit
-  
-  + parent_entry:Expanded ENTRY;
-    
-Section Public  
-  
-  - access:UINTEGER_16 <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:UINTEGER_16;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      result := `t.st_mode`:UINTEGER_16 & 111_111_111b;
-    `}`;
-    result
-  );
-    
-  - access_time:TIME <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_atime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - access_date:DATE <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_atime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-  
-  - update_time:TIME   <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_mtime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - update_date:DATE <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_mtime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-    
-  - create_time:TIME <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_ctime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - create_date:DATE <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_ctime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-  
-Section Private  
-  
-  //
-  // Time / Date: Unix -> Lisaac
-  //
-  
-  - to_date t:POINTER :DATE <-
-  ( + result:DATE;
-    + wd,md,m:UINTEGER_8;
-    + y:UINTEGER_16;
-    
-    y  := `((struct tm *)@t)->tm_year`:UINTEGER_16 + 1900;
-    m  := `((struct tm *)@t)->tm_mon` :UINTEGER_8 + 1;
-    md := `((struct tm *)@t)->tm_mday`:UINTEGER_8;
-    wd := `((struct tm *)@t)->tm_wday`:UINTEGER_8;
-    (! wd.in_range 1 to 7).if { // Bug in UNIX ?
-      wd := 1;
-    };
-    result := DATE.create (y,m,md,wd)     
-  );
-
-  - to_time t:POINTER :TIME <-
-  (
-    TIME.create 
-    ((`((struct tm *)@t)->tm_hour`:UINTEGER_8),
-    (`((struct tm *)@t)->tm_min` :UINTEGER_8),
-    (`((struct tm *)@t)->tm_sec` :UINTEGER_8),
-    0)
-  );
-  
diff --git a/lib_os/java/file_system/file_system.li b/lib_os/java/file_system/file_system.li
deleted file mode 100644
index f90ea8e..0000000
--- a/lib_os/java/file_system/file_system.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=FILE_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :="File System manager for Unix.";
-  
-  - external := `#include <unistd.h>`; // For `getcwd'
-  
-Section Inherit  
-  
-  + parent_directory:DIRECTORY <-
-  ( + cwd:NATIVE_ARRAY[CHARACTER];    
-    + result:DIRECTORY;
-    
-    DIRECTORY.string_tmp.clear;
-    cwd := DIRECTORY.string_tmp.to_external;
-    `getcwd(@cwd,255)`;
-    DIRECTORY.string_tmp.from_external cwd;
-    
-    result ?= DIRECTORY_UNIX.physical_get_entry (DIRECTORY.string_tmp);
-    DIRECTORY.alias.put result to (result.path);
-    ? {result != NULL};
-    parent_directory := result
-  );
-  
-  
-
-
diff --git a/lib_os/java/file_system/file_unix.li b/lib_os/java/file_system/file_unix.li
deleted file mode 100644
index dc9e9c7..0000000
--- a/lib_os/java/file_system/file_unix.li
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FILE_UNIX;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "File management";
-    
-Section Inherit
-  
-  + parent_entry_unix:Expanded ENTRY_UNIX;
-  
-  + parent_file:Expanded STD_FILE;
-  
-Section Private  
-  
-  + stream:POINTER; // Unix file pointer (FILE *).
-
-Section Public
-    
-  //
-  // Physical implementation.
-  //
-  
-  - is_open:BOOLEAN <- stream != NULL;
-  
-  - size:UINTEGER_32 <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:UINTEGER_32;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      result := `t.st_size`:UINTEGER_32;
-    `}`;
-    result
-  );
-  
-  - cursor:UINTEGER_32 <-
-  ( + str:POINTER;    
-    str := stream;    
-    `ftell((FILE *)@str)`:UINTEGER_32
-  );
-  
-  - set_cursor n:UINTEGER_32 <-
-  [
-    ...
-    -? {stream != NULL};
-    -? {n <= size};
-  ]
-  ( + str:POINTER;    
-    str := stream;    
-    `fseek((FILE*)(@str), at n,SEEK_SET)`;
-  );    
-  
-  - open:BOOLEAN <-
-  [
-    -? {stream = NULL};
-  ]
-  ( + pa:NATIVE_ARRAY[CHARACTER];    
-        
-    pa := path.to_external;
-    stream := `fopen((char*)@pa,"r+b")`:(POINTER);         
-    stream != NULL
-  ); 
-
-  - open_read_only:BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];    
-    pa := path.to_external;
-    stream := `fopen((char*)@path_pointer,"rb")`:(POINTER); 
-    stream != NULL
-  ); 
-  
-  - close <-
-  [
-    -? {stream != NULL};
-  ]
-  ( + str:POINTER;
-        
-    str := stream;    
-    `fclose((FILE*)(@str))`;        
-    stream := NULL;
-  );
-    
-Section STD_FILE  
-  
-  - physical_read buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;    
-    str := stream;    
-    `fread((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-  - physical_write buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;
-    str := stream;      
-    `fwrite((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-
-  
diff --git a/lib_os/java/file_system/hello.java b/lib_os/java/file_system/hello.java
deleted file mode 100755
index aa25beb..0000000
--- a/lib_os/java/file_system/hello.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Java code generated by Lisaac compiler (www.isaacOS.com) //
-class hello {
-private static String arg[];
-
-//==========================//
-// EXTERNAL                 //
-//==========================//
-
-// SYSTEM_IO
-
-// Hardware 'print_char'
-private static void print_char(char car)
-{
-  System.out.print(car);
-}
-
-// Hardware 'exit'
-private static void die_with_code(int code)
-{
-  System.exit(code);
-}
-
-
-
-//==========================//
-// TYPE                     //
-//==========================//
-
-// Generic Object
-class ___OBJ {
-  long __id;
-};
-
-// STRING_CONSTANT
-static private int __STRING_CONSTANT__ = 0;
-static class __STRING_CONSTANT {
-  char []storage__0;
-
-  public __STRING_CONSTANT(String pstorage)
-  {
-    storage__0 = pstorage.toCharArray();
-  };
-
-  public __STRING_CONSTANT()
-  {
-    super();
-  };
-};
-
-//==========================//
-// GLOBAL                   //
-//==========================//
-
-private static __STRING_CONSTANT STRING_CONSTANT_=new __STRING_CONSTANT();
-
-//==========================//
-// STRING CONSTANT          //
-//==========================//
-
-private static __STRING_CONSTANT __string_1=new __STRING_CONSTANT("Helloo\n");
-
-//==========================//
-// FUNCTION HEADER          //
-//==========================//
-
-// Source code
-
-//==========================//
-// SOURCE CODE              //
-//==========================//
-
-public static void main(String parg[])
-{
-  int Self__WE;
-  arg = parg;
-  Self__WE= 1;
-  while ((Self__WE <=  7)) {
-    System.out.print((__string_1.storage__0[(int)(Self__WE -  1)]));
-    Self__WE=(int)(Self__WE +  1);
-  };
-}
-
-
-} // End class MAIN
diff --git a/lib_os/java/system/clock.li b/lib_os/java/system/clock.li
deleted file mode 100644
index da3cb05..0000000
--- a/lib_os/java/system/clock.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := CLOCK;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-
-  - comment     :="X11 - Clock management.";
-
-  - date    :="2003/04";
-  
-  - external := `#include <time.h>`;
-  
-Section Inherit  
-  
-  - parent_input:INPUT := INPUT;
-      
-Section Public  
-  
-  - date:DATE <-
-  ( + wd,d,mo:UINTEGER_8;    
-    + y:UINTEGER_16;
-    
-    `{ 
-      struct tm *t; time_t tt;
-      tt = time(NULL);
-      t = localtime(&tt)`;      
-      wd := `t->tm_wday`:UINTEGER_8 + 1;
-      d  := `t->tm_mday`:UINTEGER_8;
-      mo := `t->tm_mon` :UINTEGER_8 + 1;
-      y  := `t->tm_year`:UINTEGER_16 + 1900;    
-    `}`;
-    DATE.create (y,mo,d,wd)
-  );
-    
-  - time:TIME <-
-  ( + s,m,h:UINTEGER_8;
-        
-    `{ 
-      struct tm *t; time_t tt;
-      tt = time(NULL);
-      t = localtime(&tt)`;      
-      h := `t->tm_hour`:UINTEGER_8;
-      m := `t->tm_min` :UINTEGER_8;
-      s := `t->tm_sec` :UINTEGER_8;      
-    `}`;    
-    TIME.create (h,m,s,0)
-  );
-  
-  - make <-
-  (
-    // Nothing.
-  );
-
-
-
-
-
diff --git a/lib_os/java/system/environment.li b/lib_os/java/system/environment.li
deleted file mode 100644
index 6fa01c1..0000000
--- a/lib_os/java/system/environment.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENVIRONMENT;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Execute system command and to get/set environment variables.";
-
-Section Public
-
-  - get_environment_variable variable:ABSTRACT_STRING :STRING <-
-  // Try to get the value of the system environment `variable' or some
-  // `variable' in the system registry. Gives NULL when no information
-  // about the `variable' is available. Under UNIX like system, this is in
-  // fact the good way to know about some system environment variable.
-  // Under Windows, this function also look in the system registery.
-  (
-    + result:STRING;
-    + p:NATIVE_ARRAY[CHARACTER];
-    ? { variable != NULL };
-    
-    p := basic_getenv(variable.to_external);
-    (p != NULL).if {
-      result := STRING.clone;
-      result.from_external p;
-    };
-    result
-  );
-
-  - set_environment_variable (variable,value:ABSTRACT_STRING) <-
-  // Try to assign the system environment `variable' with `value'.
-  (
-    ? { variable != NULL };
-    ? { value != NULL };
-    basic_putenv (variable,value);
-  );
-  
-  - execute_command system_command_line:ABSTRACT_STRING :INTEGER <-
-  // To execute a `system_command_line' as for example, "ls -l" on UNIX.
-  // The `Result' depends of the actual operating system. As an exemple,
-  // this `execute' feature is under UNIX the equivalent of a `system' call.
-  (
-    ? { system_command_line != NULL};
-    basic_system_execute_command (system_command_line.to_external)
-  );
-
-  - execute_command_line system_command_line:ABSTRACT_STRING <-
-  // The equivalent of `execute_command' without `Result'.
-  (
-    execute_command (system_command_line);
-  );
-  
-Section Private
-
-  - basic_getenv environment_variable:NATIVE_ARRAY[CHARACTER] :NATIVE_ARRAY[CHARACTER] <-
-  // To implement `get_environment_variable'.
-  (
-    `getenv((char*)@environment_variable)`:NATIVE_ARRAY[CHARACTER]
-  );
-  
-  - basic_putenv (variable,value:ABSTRACT_STRING) <-
-  // To implement `set_environment_variable'.
-  (
-    + v:NATIVE_ARRAY[CHARACTER];
-    
-    v := NATIVE_ARRAY[CHARACTER].calloc (variable.count + value.count + 2);
-    v.copy_from (variable.to_external) until (variable.upper);
-    v.put '=' to (variable.count);
-    v.copy (value.to_external) to (variable.count + 1) until (value.capacity);
-    v.put '\0' to (variable.count + 1 + value.count);
-    `putenv((char*)@v)`;
-  );
-  
-  - basic_system_execute_command system_command_line:NATIVE_ARRAY[CHARACTER] :INTEGER <-
-  (
-    `system(((char*)(@system_command_line)))`:(INTEGER)
-  );
-
-
-
diff --git a/lib_os/java/system/float_processor.li b/lib_os/java/system/float_processor.li
deleted file mode 100644
index 2517c4a..0000000
--- a/lib_os/java/system/float_processor.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := FLOAT_PROCESSOR;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-  
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-  
-  - init; // Compatibility IsaacOS.
-  
-  - atan    n:REAL    :REAL    <- `Math.atan(@n)`:REAL;  
-  - atan_32 n:REAL_32 :REAL_32 <- `Math.atan(@n)`:REAL_32;  
-  - atan_64 n:REAL_64 :REAL_64 <- `Math.atan(@n)`:REAL_64;
-  - atan_80 n:REAL_80 :REAL_80 <- `Math.atan(@n)`:REAL_80;
-  
-  - sqrt    n:REAL    :REAL    <- `Math.sqrt(@n)`:REAL;
-  - sqrt_32 n:REAL_32 :REAL_32 <- `Math.sqrt(@n)`:REAL_32;
-  - sqrt_64 n:REAL_64 :REAL_64 <- `Math.sqrt(@n)`:REAL_64;
-  - sqrt_80 n:REAL_80 :REAL_80 <- `Math.sqrt(@n)`:REAL_80;
-
-  - log     n:REAL    :REAL    <- `Math.log(@n)`:REAL;
-  - log_32  n:REAL_32 :REAL_32 <- `Math.log(@n)`:REAL_32;
-  - log_64  n:REAL_64 :REAL_64 <- `Math.log(@n)`:REAL_64;
-  - log_80  n:REAL_80 :REAL_80 <- `Math.log(@n)`:REAL_80;
-
-  - sin     n:REAL    :REAL    <- `Math.sin(@n)`:REAL;
-  - sin_32  n:REAL_32 :REAL_32 <- `Math.sin(@n)`:REAL_32;
-  - sin_64  n:REAL_64 :REAL_64 <- `Math.sin(@n)`:REAL_64;
-  - sin_80  n:REAL_80 :REAL_80 <- `Math.sin(@n)`:REAL_80;
-
-  - cos     n:REAL    :REAL    <- `Math.cos(@n)`:REAL;
-  - cos_32  n:REAL_32 :REAL_32 <- `Math.cos(@n)`:REAL_32;
-  - cos_64  n:REAL_64 :REAL_64 <- `Math.cos(@n)`:REAL_64;
-  - cos_80  n:REAL_80 :REAL_80 <- `Math.cos(@n)`:REAL_80;
-
-  - pow    (n,exp:REAL)    :REAL    <- `Math.pow(@n, at exp)`:REAL;
-  - pow_32 (n,exp:REAL_32) :REAL_32 <- `Math.pow(@n, at exp)`:REAL_32;
-  - pow_64 (n,exp:REAL_64) :REAL_64 <- `Math.pow(@n, at exp)`:REAL_64;
-  - pow_80 (n,exp:REAL_80) :REAL_80 <- `Math.pow(@n, at exp)`:REAL_80;
-
-  
\ No newline at end of file
diff --git a/lib_os/java/system/processor.li b/lib_os/java/system/processor.li
deleted file mode 100644
index 44f482c..0000000
--- a/lib_os/java/system/processor.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name        := PROCESSOR;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:= "http://IsaacOS.com";
-  - comment     := "Processor object.";
-
-Section Public
-  
-  - to_intel_ulong v:UINTEGER_64 :UINTEGER_64 <- deferred;
-  
-  - to_intel_uint v:UINTEGER_32 :UINTEGER_32 <- deferred;
-  
-  - to_intel_ushort v:UINTEGER_16 :UINTEGER_16 <- deferred;
-  
-  - to_motorola_ulong v:UINTEGER_64 :UINTEGER_64 <-
-  (    
-    (v << 56) | ((v & 0FF00h) << 40) | ((v & 0FF0000h) << 24) | ((v & 0FF000000h) << 8) |
-           (v >> 56)   | ((v >> 40) & 0FF00h) | ((v >> 24) & 0FF0000h) | ((v >> 8) & 0FF000000h)
-  );
-  
-  - to_motorola_uint v:UINTEGER_32 :UINTEGER_32 <-
-  (
-    (v << 24) | ((v & 0FF00h) << 8) | ((v >> 8) & 0FF00h) | (v >> 24)     
-  );
-  
-  - to_motorola_int v:INTEGER :INTEGER <-
-  (
-    // Conversion in uxxx to cut the sign
-    (v  << 24) | (((v & 0FF00h) << 8).to_uinteger_16) | (((v >> 8) & 0FF00h).to_uinteger_16) | ((v >> 24).to_uinteger_8)     
-  );
-  
-  - to_motorola_ushort v:UINTEGER_16 :UINTEGER_16 <-
-  (
-    (v  << 8) | (v >> 8)
-  );
-
-  - to_motorola_short v:INTEGER_16 :INTEGER_16 <-
-  (
-    // Conversion in usmall to cut the sign
-    ((v << 8) | ((v >> 8) & 0FFh))
-  );
-
diff --git a/lib_os/java/system/system.li b/lib_os/java/system/system.li
deleted file mode 100644
index 555d65e..0000000
--- a/lib_os/java/system/system.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic System Object (methods).";
-
-Section Public
-  
-  - is_ansi:BOOLEAN := TRUE;
-  
-  - exit code:INTEGER <- `System.exit(@code)`;
-  
-  - putb value:UINTEGER_8 to port:UINTEGER_16 <-
-  // Write in port
-  ( 
-    not_yet_implemented;
-  );
-
-  - itemb port:UINTEGER_16 :UINTEGER_8 <-
-  // Read in port
-  ( 
-    not_yet_implemented;
-    0
-  );
-       
-  - get_universal_time:UINTEGER_64 <-
-  (
-    //`(unsigned long long)time(NULL)`:UINTEGER_64
-    not_yet_implemented;
-    0
-  );
-
-  // Memory Management
-   
-  - memory:MEMORY := MEMORY;
-  
-  - get_begin_memory:POINTER <-
-  (
-    not_yet_implemented;
-    NULL
-  );
-  
-  - get_memory_capacity:UINTEGER_64 <- 
-  ( 
-    `MemoryUsage.getMax()`:UINTEGER_64
-  );
-  
-Section SYSTEM,MEMORY
-  
-  - realloc_c (beg:UINTEGER_32,nb:INTEGER) :UINTEGER_32 <-
-  ( 
-    not_yet_implemented;
-    0
-  );
-  
-Section ISAAC  
-  
-  - make <-
-  // Isaac compatibility.
-  (
-    // Nothing.
-  );
\ No newline at end of file
diff --git a/lib_os/java/system/system_io.li b/lib_os/java/system/system_io.li
deleted file mode 100644
index 04d92c0..0000000
--- a/lib_os/java/system/system_io.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := SYSTEM_IO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment  := "Lower level for Input / Output";
-  
-  - external := `
-// Hardware 'print_char'
-private static void print_char(char car)
-{
-  System.out.print(car);
-}
-
-// Hardware 'exit'
-private static void die_with_code(int code)
-{
-  System.exit(code);
-}
-
-`;
-
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-
-  - print_char byte:CHARACTER <-
-  // Low level buffered output.
-  (
-    `System.out.print(@byte)`;
-  );
-  
-   - print_error_char byte:CHARACTER <-
-  // Low level buffered error output.
-  (
-    `System.err.print(@byte)`;
-  ); 
-  
-  - get_char :CHARACTER <- `System.in.read()`:(CHARACTER);
-  
-  - eof:CHARACTER <- `EOF`:CHARACTER;
-  
\ No newline at end of file
diff --git a/lib_os/unix/file_system/directory.li b/lib_os/unix/file_system/directory.li
deleted file mode 100644
index abc05f2..0000000
--- a/lib_os/unix/file_system/directory.li
+++ /dev/null
@@ -1,118 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=DIRECTORY;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  
-  - author      :="Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - comment     :="Directory management";
-  
-  - external := 
-`
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-`;
-  
-Section Inherit
-  
-  + parent_abstract_directory:Expanded ABSTRACT_DIRECTORY;
-  
-Section Private  
-  
-  //
-  // Physical implementation.
-  //
-  
-  //
-  // Scanning
-  //
-      
-  - physical_refresh:BOOLEAN <-
-  ( + p,n:NATIVE_ARRAY[CHARACTER];
-    + dir,dirent:POINTER;
-    + new_entry:ENTRY;
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    list.clear;
-    p := path.to_external;
-    dir := `opendir(@p)`:POINTER; 
-    (dir != NULL).if {
-      result := TRUE;
-      {
-
-	dirent := `readdir(@dir)`:POINTER;
-	(dirent != NULL).if {
-	  n := `((struct dirent *)@dirent)->d_name`:NATIVE_ARRAY[CHARACTER];	
-	  string_tmp.clear;
-	  i := 0;
-	  {n.item i = '\0'}.until_do { 
-	    string_tmp.add_last (n.item i);
-	    i := i + 1;
-	  };
-	  (string_tmp !== ".".to_string).if {
-	    string_tmp.add_first '/';
-	    string_tmp.prepend path;
-	    reduce_path string_tmp;
-	    new_entry := get_entry string_tmp;
-	    (new_entry = NULL).if {	      	      
-	      result := FALSE;
-	    } else {
-	      (new_entry.path.count < path.count).if {
-		parent := new_entry;
-	      } else {
-		list.add_last new_entry;
-	      };
-	    };
-	  };
-	};
-      }.do_while {(dirent != NULL) && {result}};
-      `closedir(@dir)`;
-    };
-    result
-  );
-    
-  - physical_make_directory new_path:STRING :BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := new_path.to_external;
-    `mkdir(@p,S_IRWXU)`:(INTEGER) = 0
-  );
-
-  - physical_make_file new_path:STRING :BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    p := new_path.to_external;
-    stream := `fopen((char*)@p,"w+b")`:POINTER;
-    (stream != NULL).if {
-      result := `fclose((FILE*)@stream)`:INTEGER = 0;
-    };
-    result
-  );
-
-  
diff --git a/lib_os/unix/file_system/directory_unix.li b/lib_os/unix/file_system/directory_unix.li
deleted file mode 100644
index 6d9f870..0000000
--- a/lib_os/unix/file_system/directory_unix.li
+++ /dev/null
@@ -1,155 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=DIRECTORY_UNIX;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  
-  - author      :="Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - comment     :="Directory management";
-  
-  - external := 
-`
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-`;
-  
-Section Inherit
-  
-  + parent_entry_unix:Expanded ENTRY_UNIX;
-  
-  + parent_directory:Expanded DIRECTORY;
-  
-Section Public
-  
-  - is_open:BOOLEAN <- ( list != NULL);
-  
-  //
-  // Scanning
-  //
-      
-  - open:BOOLEAN <-
-  ( + p,n:NATIVE_ARRAY[CHARACTER];
-    + dir,dirent:POINTER;
-    + new_entry:ENTRY;
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    (list = NULL).if {
-      list := LINKED_LIST[ENTRY].create;
-    } else {
-      list.clear;
-    };
-    p := path.to_external;
-    dir := `opendir(@p)`:POINTER; 
-    (dir != NULL).if {
-      result := TRUE;
-      {
-
-	dirent := `readdir(@dir)`:POINTER;
-	(dirent != NULL).if {
-	  n := `((struct dirent *)@dirent)->d_name`:NATIVE_ARRAY[CHARACTER];	
-	  string_tmp.clear;
-	  i := 0;
-	  {n.item i = '\0'}.until_do { 
-	    string_tmp.add_last (n.item i);
-	    i := i + 1;
-	  };
-	  (string_tmp !== ".".to_string).if {
-	    string_tmp.add_first '/';
-            string_tmp.prepend path;            
-            reduce_path string_tmp;            
-	    new_entry := get_entry string_tmp;
-	    (new_entry = NULL).if {	      	      
-	      result := FALSE;
-	    } else {
-	      (new_entry.path.count >= path.count).if {
-		list.add_last new_entry;
-	      };
-	    };
-	  };
-	};
-      }.do_while {(dirent != NULL) && {result}};
-      `closedir(@dir)`;
-    };
-    result
-  );
-  
-Section DIRECTORY
-  
-  - physical_get_entry new_path:ABSTRACT_STRING :ENTRY <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:ENTRY;
-        
-    pe := new_path.to_external;        
-    `{ struct stat t`; 
-      (`stat(@pe,&t)`:INTEGER = 0).if {		  
-        (`S_ISDIR(t.st_mode)`:INTEGER = 0).if {
-          // File.
-          result := FILE_UNIX.clone;
-        } else {
-          // Directory.
-          result := DIRECTORY_UNIX.clone;
-        };          
-        result.set_path new_path;
-        alias.put result to (result.path);
-      };
-    `}`;
-        
-    result
-  );
-  
-  - physical_make_directory new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := new_path.to_external;
-    `mkdir(@pa,S_IRWXU)`:(INTEGER) = 0
-  );
-
-  - physical_make_file new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    pa := new_path.to_external;
-    stream := `fopen((char*)@pa,"w+b")`:POINTER;
-    (stream != NULL).if {
-      result := `fclose((FILE*)@stream)`:INTEGER = 0;
-    };
-    result
-  );
-
-  - physical_remove p:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := p.to_external;
-    `remove(@pa)`:(INTEGER) = 0
-  );
-      
-  - physical_move old_path:ABSTRACT_STRING to new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
diff --git a/lib_os/unix/file_system/directory_unix.li~ b/lib_os/unix/file_system/directory_unix.li~
deleted file mode 100755
index cacd50b..0000000
--- a/lib_os/unix/file_system/directory_unix.li~
+++ /dev/null
@@ -1,155 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=DIRECTORY_UNIX;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  
-  - author      :="Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - comment     :="Directory management";
-  
-  - external := 
-`
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-`;
-  
-Section Inherit
-  
-  + parent_entry_unix:Expanded ENTRY_UNIX;
-  
-  + parent_directory:Expanded DIRECTORY;
-  
-Section Public
-  
-  - is_open:BOOLEAN <- ( list != NULL);
-  
-  //
-  // Scanning
-  //
-      
-  - open:BOOLEAN <-
-  ( + p,n:NATIVE_ARRAY[CHARACTER];
-    + dir,dirent:POINTER;
-    + new_entry:ENTRY;
-    + result:BOOLEAN;
-    + i:INTEGER;
-    
-    (list = NULL).if {
-      list := LINKED_LIST[ENTRY].create;
-    } else {
-      list.clear;
-    };
-    p := path.to_external;
-    dir := `opendir(@p)`:POINTER; 
-    (dir != NULL).if {
-      result := TRUE;
-      {
-
-	dirent := `readdir(@dir)`:POINTER;
-	(dirent != NULL).if {
-	  n := `((struct dirent *)@dirent)->d_name`:NATIVE_ARRAY[CHARACTER];	
-	  string_tmp.clear;
-	  i := 0;
-	  {n.item i = '\0'}.until_do { 
-	    string_tmp.add_last (n.item i);
-	    i := i + 1;
-	  };
-	  (string_tmp !== ".".to_string).if {
-	    string_tmp.add_first '/';
-            string_tmp.prepend path;            
-            reduce_path string_tmp;            
-	    new_entry := get_entry string_tmp;
-	    (new_entry = NULL).if {	      	      
-	      result := FALSE;
-	    } else {
-	      (new_entry.path.count >= path.count).if {
-		list.add_last new_entry;
-	      };
-	    };
-	  };
-	};
-      }.do_while {(dirent != NULL) && {result}};
-      `closedir(@dir)`;
-    };
-    result
-  );
-  
-Section DIRECTORY
-  
-  - physical_get_entry new_path:ABSTRACT_STRING :ENTRY <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:ENTRY;
-        
-    pe := new_path.to_external;
-    `{ struct stat t`; 
-      (`stat(@pe,&t)`:INTEGER = 0).if {		  
-        (`S_ISDIR(t.st_mode)`:INTEGER = 0).if {
-          // File.
-          result := FILE_UNIX.clone;
-        } else {
-          // Directory.
-          result := DIRECTORY_UNIX.clone;
-        };          
-        result.set_path new_path;
-        alias.put result to (result.path);
-      };
-    `}`;
-        
-    result
-  );
-  
-  - physical_make_directory new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := new_path.to_external;
-    `mkdir(@pa,S_IRWXU)`:(INTEGER) = 0
-  );
-
-  - physical_make_file new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    pa := new_path.to_external;
-    stream := `fopen((char*)@pa,"w+b")`:POINTER;
-    (stream != NULL).if {
-      result := `fclose((FILE*)@stream)`:INTEGER = 0;
-    };
-    result
-  );
-
-  - physical_remove p:ABSTRACT_STRING :BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];
-    pa := p.to_external;
-    `remove(@pa)`:(INTEGER) = 0
-  );
-      
-  - physical_move old_path:ABSTRACT_STRING to new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
diff --git a/lib_os/unix/file_system/entry.li b/lib_os/unix/file_system/entry.li
deleted file mode 100644
index 26b7476..0000000
--- a/lib_os/unix/file_system/entry.li
+++ /dev/null
@@ -1,116 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENTRY;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:= "http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";  
-
-  - comment     := "Entry ANSI";
-    
-Section Inherit
-  
-  + parent_abstract_entry:Expanded ABSTRACT_ENTRY;
-    
-Section Public  
-    
-  //
-  // Physical implementation.
-  //
-
-  - physical_make:BOOLEAN <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:BOOLEAN;
-    
-    ((path.count = 2) && {path.last = ':'}).if {
-      is_directory := TRUE;
-      result := TRUE;
-    } else {
-      pe := path.to_external;
-      `{ struct stat t`;
-	result := `stat(@pe,&t)`:INTEGER = 0;
-	(result).if {
-	  is_directory := `S_ISDIR(t.st_mode)`:BOOLEAN(TRUE,FALSE);
-	  tt := `localtime(&(t.st_atime))`:POINTER;
-	  access_date := to_date tt;
-	  access_time := to_time tt;
-	  tt := `localtime(&(t.st_mtime))`:POINTER;
-	  update_date := to_date tt;
-	  update_time := to_time tt;
-	  size := `t.st_size`:UINTEGER_32;
-	};
-      `}`;
-    };
-    result
-  );
-  
-  - physical_remove_directory:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `rmdir(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_remove_file:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `remove(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
-  
-  //
-  // Time / Date: Unix -> Lisaac
-  //
-  
-  - to_date t:POINTER :DATE <-
-  ( + result:DATE;
-    + wd,md,m:UINTEGER_8;
-    + y:UINTEGER_16;
-    
-    y  := `((struct tm *)@t)->tm_year`:UINTEGER_16 + 1900;
-    m  := `((struct tm *)@t)->tm_mon` :UINTEGER_8 + 1;
-    md := `((struct tm *)@t)->tm_mday`:UINTEGER_8;
-    wd := `((struct tm *)@t)->tm_wday`:UINTEGER_8;
-    (! wd.in_range 1 to 7).if { // Bug in UNIX ?
-      wd := 1;
-    };
-    result := DATE.create (y,m,md,wd)     
-  );
-
-  - to_time t:POINTER :TIME <-
-  (
-    TIME.create 
-    ((`((struct tm *)@t)->tm_hour`:UINTEGER_8),
-    (`((struct tm *)@t)->tm_min` :UINTEGER_8),
-    (`((struct tm *)@t)->tm_sec` :UINTEGER_8),
-    0)
-  );
-  
diff --git a/lib_os/unix/file_system/entry_unix.li b/lib_os/unix/file_system/entry_unix.li
deleted file mode 100644
index e100640..0000000
--- a/lib_os/unix/file_system/entry_unix.li
+++ /dev/null
@@ -1,150 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENTRY_UNIX;
-
-  - copyright   := "2003-2008 Benoit Sonntag";
-  
-  - bibliography:= "http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-
-  - comment     := "Entry ANSI C";
-    
-Section Inherit
-  
-  + parent_entry:Expanded ENTRY;
-    
-Section Public  
-  
-  - access:UINTEGER_16 <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:UINTEGER_16;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      result := `t.st_mode`:UINTEGER_16 & 111_111_111b;
-    `}`;
-    result
-  );
-    
-  - access_time:TIME <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_atime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - access_date:DATE <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_atime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-  
-  - update_time:TIME   <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_mtime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - update_date:DATE <- 
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_mtime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-    
-  - create_time:TIME <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:TIME;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_ctime))`:POINTER;	  
-      result := to_time tt;
-    `}`;
-    result
-  );
-  
-  - create_date:DATE <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + tt:POINTER;
-    + result:DATE;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      tt := `localtime(&(t.st_ctime))`:POINTER;	  
-      result := to_date tt;
-    `}`;
-    result
-  );
-  
-Section Private  
-  
-  //
-  // Time / Date: Unix -> Lisaac
-  //
-  
-  - to_date t:POINTER :DATE <-
-  ( + result:DATE;
-    + wd,md,m:UINTEGER_8;
-    + y:UINTEGER_16;
-    
-    y  := `((struct tm *)@t)->tm_year`:UINTEGER_16 + 1900;
-    m  := `((struct tm *)@t)->tm_mon` :UINTEGER_8 + 1;
-    md := `((struct tm *)@t)->tm_mday`:UINTEGER_8;
-    wd := `((struct tm *)@t)->tm_wday`:UINTEGER_8;
-    (! wd.in_range 1 to 7).if { // Bug in UNIX ?
-      wd := 1;
-    };
-    result := DATE.create (y,m,md,wd)     
-  );
-
-  - to_time t:POINTER :TIME <-
-  (
-    TIME.create 
-    ((`((struct tm *)@t)->tm_hour`:UINTEGER_8),
-    (`((struct tm *)@t)->tm_min` :UINTEGER_8),
-    (`((struct tm *)@t)->tm_sec` :UINTEGER_8),
-    0)
-  );
-  
diff --git a/lib_os/unix/file_system/file_system.li b/lib_os/unix/file_system/file_system.li
deleted file mode 100644
index f90ea8e..0000000
--- a/lib_os/unix/file_system/file_system.li
+++ /dev/null
@@ -1,50 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=FILE_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment     :="File System manager for Unix.";
-  
-  - external := `#include <unistd.h>`; // For `getcwd'
-  
-Section Inherit  
-  
-  + parent_directory:DIRECTORY <-
-  ( + cwd:NATIVE_ARRAY[CHARACTER];    
-    + result:DIRECTORY;
-    
-    DIRECTORY.string_tmp.clear;
-    cwd := DIRECTORY.string_tmp.to_external;
-    `getcwd(@cwd,255)`;
-    DIRECTORY.string_tmp.from_external cwd;
-    
-    result ?= DIRECTORY_UNIX.physical_get_entry (DIRECTORY.string_tmp);
-    DIRECTORY.alias.put result to (result.path);
-    ? {result != NULL};
-    parent_directory := result
-  );
-  
-  
-
-
diff --git a/lib_os/unix/file_system/file_unix.li b/lib_os/unix/file_system/file_unix.li
deleted file mode 100644
index dc9e9c7..0000000
--- a/lib_os/unix/file_system/file_unix.li
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := FILE_UNIX;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "File management";
-    
-Section Inherit
-  
-  + parent_entry_unix:Expanded ENTRY_UNIX;
-  
-  + parent_file:Expanded STD_FILE;
-  
-Section Private  
-  
-  + stream:POINTER; // Unix file pointer (FILE *).
-
-Section Public
-    
-  //
-  // Physical implementation.
-  //
-  
-  - is_open:BOOLEAN <- stream != NULL;
-  
-  - size:UINTEGER_32 <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:UINTEGER_32;
-    pe := path.to_external;
-    `{ struct stat t; stat(@pe,&t)`;		  
-      result := `t.st_size`:UINTEGER_32;
-    `}`;
-    result
-  );
-  
-  - cursor:UINTEGER_32 <-
-  ( + str:POINTER;    
-    str := stream;    
-    `ftell((FILE *)@str)`:UINTEGER_32
-  );
-  
-  - set_cursor n:UINTEGER_32 <-
-  [
-    ...
-    -? {stream != NULL};
-    -? {n <= size};
-  ]
-  ( + str:POINTER;    
-    str := stream;    
-    `fseek((FILE*)(@str), at n,SEEK_SET)`;
-  );    
-  
-  - open:BOOLEAN <-
-  [
-    -? {stream = NULL};
-  ]
-  ( + pa:NATIVE_ARRAY[CHARACTER];    
-        
-    pa := path.to_external;
-    stream := `fopen((char*)@pa,"r+b")`:(POINTER);         
-    stream != NULL
-  ); 
-
-  - open_read_only:BOOLEAN <-
-  ( + pa:NATIVE_ARRAY[CHARACTER];    
-    pa := path.to_external;
-    stream := `fopen((char*)@path_pointer,"rb")`:(POINTER); 
-    stream != NULL
-  ); 
-  
-  - close <-
-  [
-    -? {stream != NULL};
-  ]
-  ( + str:POINTER;
-        
-    str := stream;    
-    `fclose((FILE*)(@str))`;        
-    stream := NULL;
-  );
-    
-Section STD_FILE  
-  
-  - physical_read buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;    
-    str := stream;    
-    `fread((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-  - physical_write buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;
-    str := stream;      
-    `fwrite((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-
-  
diff --git a/lib_os/unix/file_system/std_file.li b/lib_os/unix/file_system/std_file.li
deleted file mode 100644
index c1cc8b2..0000000
--- a/lib_os/unix/file_system/std_file.li
+++ /dev/null
@@ -1,89 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := STD_FILE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "File management";
-    
-Section Inherit
-  
-  + parent_abstract_file:Expanded ABSTRACT_FILE;
-  
-Section Private  
-  
-  + stream:POINTER; // Unix file pointer (FILE *).
-
-Section Public
-    
-  //
-  // Physical implementation.
-  //
-  
-  - physical_open:BOOLEAN <-
-  ( + path_pointer:NATIVE_ARRAY[CHARACTER];    
-    path_pointer := path.to_external;
-    stream := `fopen((char*)@path_pointer,"r+b")`:(POINTER); 
-    stream != NULL
-  ); 
-
-  - physical_open_read_only:BOOLEAN <-
-  ( + path_pointer:NATIVE_ARRAY[CHARACTER];    
-    path_pointer := path.to_external;
-    stream := `fopen((char*)@path_pointer,"rb")`:(POINTER); 
-    stream != NULL
-  ); 
-    
-  - basic_seek pos:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;
-    ? {is_open};
-    ? {stream != NULL};
-    str := stream;    
-    `fseek((FILE*)(@str), at pos,SEEK_SET)`:(INTEGER)
-  );
-  
-  - basic_read buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;
-    ? {is_open};
-    str := stream;    
-    `fread((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-  - basic_write buf:NATIVE_ARRAY[UINTEGER_8] size s:INTEGER :INTEGER <-
-  // return size read or 0 if end of input (-1 on error => exception ?)
-  ( + str:POINTER;
-    ? {is_open};
-    str := stream;      
-    `fwrite((void *)(@buf),(size_t)(1), (size_t)(@s),(FILE*)(@str))`:(INTEGER)
-  );
-  
-  - basic_close:BOOLEAN <-
-  ( + str:POINTER;
-    str := stream;
-    stream := NULL;
-    `fclose((FILE*)(@str))`:(INTEGER) = 0
-  );
-
-  
diff --git a/lib_os/unix/system/clock.li b/lib_os/unix/system/clock.li
deleted file mode 100644
index da3cb05..0000000
--- a/lib_os/unix/system/clock.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := CLOCK;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-
-  - comment     :="X11 - Clock management.";
-
-  - date    :="2003/04";
-  
-  - external := `#include <time.h>`;
-  
-Section Inherit  
-  
-  - parent_input:INPUT := INPUT;
-      
-Section Public  
-  
-  - date:DATE <-
-  ( + wd,d,mo:UINTEGER_8;    
-    + y:UINTEGER_16;
-    
-    `{ 
-      struct tm *t; time_t tt;
-      tt = time(NULL);
-      t = localtime(&tt)`;      
-      wd := `t->tm_wday`:UINTEGER_8 + 1;
-      d  := `t->tm_mday`:UINTEGER_8;
-      mo := `t->tm_mon` :UINTEGER_8 + 1;
-      y  := `t->tm_year`:UINTEGER_16 + 1900;    
-    `}`;
-    DATE.create (y,mo,d,wd)
-  );
-    
-  - time:TIME <-
-  ( + s,m,h:UINTEGER_8;
-        
-    `{ 
-      struct tm *t; time_t tt;
-      tt = time(NULL);
-      t = localtime(&tt)`;      
-      h := `t->tm_hour`:UINTEGER_8;
-      m := `t->tm_min` :UINTEGER_8;
-      s := `t->tm_sec` :UINTEGER_8;      
-    `}`;    
-    TIME.create (h,m,s,0)
-  );
-  
-  - make <-
-  (
-    // Nothing.
-  );
-
-
-
-
-
diff --git a/lib_os/unix/system/environment.li b/lib_os/unix/system/environment.li
deleted file mode 100644
index 6fa01c1..0000000
--- a/lib_os/unix/system/environment.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENVIRONMENT;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Execute system command and to get/set environment variables.";
-
-Section Public
-
-  - get_environment_variable variable:ABSTRACT_STRING :STRING <-
-  // Try to get the value of the system environment `variable' or some
-  // `variable' in the system registry. Gives NULL when no information
-  // about the `variable' is available. Under UNIX like system, this is in
-  // fact the good way to know about some system environment variable.
-  // Under Windows, this function also look in the system registery.
-  (
-    + result:STRING;
-    + p:NATIVE_ARRAY[CHARACTER];
-    ? { variable != NULL };
-    
-    p := basic_getenv(variable.to_external);
-    (p != NULL).if {
-      result := STRING.clone;
-      result.from_external p;
-    };
-    result
-  );
-
-  - set_environment_variable (variable,value:ABSTRACT_STRING) <-
-  // Try to assign the system environment `variable' with `value'.
-  (
-    ? { variable != NULL };
-    ? { value != NULL };
-    basic_putenv (variable,value);
-  );
-  
-  - execute_command system_command_line:ABSTRACT_STRING :INTEGER <-
-  // To execute a `system_command_line' as for example, "ls -l" on UNIX.
-  // The `Result' depends of the actual operating system. As an exemple,
-  // this `execute' feature is under UNIX the equivalent of a `system' call.
-  (
-    ? { system_command_line != NULL};
-    basic_system_execute_command (system_command_line.to_external)
-  );
-
-  - execute_command_line system_command_line:ABSTRACT_STRING <-
-  // The equivalent of `execute_command' without `Result'.
-  (
-    execute_command (system_command_line);
-  );
-  
-Section Private
-
-  - basic_getenv environment_variable:NATIVE_ARRAY[CHARACTER] :NATIVE_ARRAY[CHARACTER] <-
-  // To implement `get_environment_variable'.
-  (
-    `getenv((char*)@environment_variable)`:NATIVE_ARRAY[CHARACTER]
-  );
-  
-  - basic_putenv (variable,value:ABSTRACT_STRING) <-
-  // To implement `set_environment_variable'.
-  (
-    + v:NATIVE_ARRAY[CHARACTER];
-    
-    v := NATIVE_ARRAY[CHARACTER].calloc (variable.count + value.count + 2);
-    v.copy_from (variable.to_external) until (variable.upper);
-    v.put '=' to (variable.count);
-    v.copy (value.to_external) to (variable.count + 1) until (value.capacity);
-    v.put '\0' to (variable.count + 1 + value.count);
-    `putenv((char*)@v)`;
-  );
-  
-  - basic_system_execute_command system_command_line:NATIVE_ARRAY[CHARACTER] :INTEGER <-
-  (
-    `system(((char*)(@system_command_line)))`:(INTEGER)
-  );
-
-
-
diff --git a/lib_os/unix/system/float_processor.li b/lib_os/unix/system/float_processor.li
deleted file mode 100644
index 1a5a13f..0000000
--- a/lib_os/unix/system/float_processor.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Library                                //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := FLOAT_PROCESSOR;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-  
-  - init; // Compatibility IsaacOS.
-  
-  - atan    n:REAL    :REAL    <- `atanf(@n)`:REAL;  
-  - atan_32 n:REAL_32 :REAL_32 <- `atanf(@n)`:REAL_32;  
-  - atan_64 n:REAL_64 :REAL_64 <- `atan(@n)`:REAL_64;
-  - atan_80 n:REAL_80 :REAL_80 <- `atanl(@n)`:REAL_80;
-  
-  - sqrt    n:REAL    :REAL    <- `sqrtf(@n)`:REAL;
-  - sqrt_32 n:REAL_32 :REAL_32 <- `sqrtf(@n)`:REAL_32;
-  - sqrt_64 n:REAL_64 :REAL_64 <- `sqrt(@n)`:REAL_64;
-  - sqrt_80 n:REAL_80 :REAL_80 <- `sqrtl(@n)`:REAL_80;
-
-  - log     n:REAL    :REAL    <- `logf(@n)`:REAL;
-  - log_32  n:REAL_32 :REAL_32 <- `logf(@n)`:REAL_32;
-  - log_64  n:REAL_64 :REAL_64 <- `log(@n)`:REAL_64;
-  - log_80  n:REAL_80 :REAL_80 <- `logl(@n)`:REAL_80;
-
-  - sin     n:REAL    :REAL    <- `sinf(@n)`:REAL;
-  - sin_32  n:REAL_32 :REAL_32 <- `sinf(@n)`:REAL_32;
-  - sin_64  n:REAL_64 :REAL_64 <- `sin(@n)`:REAL_64;
-  - sin_80  n:REAL_80 :REAL_80 <- `sinl(@n)`:REAL_80;
-
-  - cos     n:REAL    :REAL    <- `cosf(@n)`:REAL;
-  - cos_32  n:REAL_32 :REAL_32 <- `cosf(@n)`:REAL_32;
-  - cos_64  n:REAL_64 :REAL_64 <- `cos(@n)`:REAL_64;
-  - cos_80  n:REAL_80 :REAL_80 <- `cosl(@n)`:REAL_80;
-
-  - pow    (n,exp:REAL)    :REAL    <- `powf(@n, at exp)`:REAL;
-  - pow_32 (n,exp:REAL_32) :REAL_32 <- `powf(@n, at exp)`:REAL_32;
-  - pow_64 (n,exp:REAL_64) :REAL_64 <- `pow(@n, at exp)`:REAL_64;
-  - pow_80 (n,exp:REAL_80) :REAL_80 <- `powl(@n, at exp)`:REAL_80;
-
-  
\ No newline at end of file
diff --git a/lib_os/unix/system/processor.li b/lib_os/unix/system/processor.li
deleted file mode 100644
index 103b73a..0000000
--- a/lib_os/unix/system/processor.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name        := PROCESSOR;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Processor object.";
-
-Section Public
-  
-  - to_intel_ulong v:UINTEGER_64 :UINTEGER_64 <- deferred;
-  
-  - to_intel_uint v:UINTEGER_32 :UINTEGER_32 <- deferred;
-  
-  - to_intel_ushort v:UINTEGER_16 :UINTEGER_16 <- deferred;
-  
-  - to_motorola_ulong v:UINTEGER_64 :UINTEGER_64 <-
-  (    
-    (v << 56) | ((v & 0FF00h) << 40) | ((v & 0FF0000h) << 24) | ((v & 0FF000000h) << 8) |
-           (v >> 56)   | ((v >> 40) & 0FF00h) | ((v >> 24) & 0FF0000h) | ((v >> 8) & 0FF000000h)
-  );
-  
-  - to_motorola_uint v:UINTEGER_32 :UINTEGER_32 <-
-  (
-    (v << 24) | ((v & 0FF00h) << 8) | ((v >> 8) & 0FF00h) | (v >> 24)     
-  );
-  
-  - to_motorola_int v:INTEGER :INTEGER <-
-  (
-    // Conversion in uxxx to cut the sign
-    (v  << 24) | (((v & 0FF00h) << 8).to_uinteger_16) | (((v >> 8) & 0FF00h).to_uinteger_16) | ((v >> 24).to_uinteger_8)     
-  );
-  
-  - to_motorola_ushort v:UINTEGER_16 :UINTEGER_16 <-
-  (
-    (v  << 8) | (v >> 8)
-  );
-
-  - to_motorola_short v:INTEGER_16 :INTEGER_16 <-
-  (
-    // Conversion in usmall to cut the sign
-    ((v << 8) | ((v >> 8) & 0FFh))
-  );
-
diff --git a/lib_os/unix/system/system.li b/lib_os/unix/system/system.li
deleted file mode 100644
index 71fc25a..0000000
--- a/lib_os/unix/system/system.li
+++ /dev/null
@@ -1,125 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic System Object (methods).";
-
-  - external    := `#include <time.h>`;
-
-Section Public
-  
-  - is_ansi:BOOLEAN := TRUE;
-  
-  - exit code:INTEGER <- `exit(@code)`;
-  
-  - putb value:UINTEGER_8 to port:UINTEGER_16 <-
-  // Write in port
-  ( 
-    `{ unsigned short val;
-      val = @value;
-      asm
-      (
-	"movw %0,%%dx \n\
-	movw %1,%%ax     \n\
-	outb %%al,%%dx  "
-	: /* No output */ 
-	:"r"(@port), "r"(val)
-	:"%ax","%dx"
-      );
-    }`;
-  );
-
-  - itemb port:UINTEGER_16 :UINTEGER_8 <-
-  // Read in port
-  ( + result:UINTEGER_8;
-    `{ unsigned short res;
-      asm
-      (
-	"movw %1,%%dx \n\
-	inb %%dx,%%al \n\
-	movw %%ax,%0  "
-	:"=r"(res)
-	:"r"(@port)
-	:"%ax","%dx"
-      )`;
-      result := `res`:UINTEGER_8;
-    `}`;
-    result
-  );
-       
-  - get_universal_time:UINTEGER_64 <-
-  (
-    `(unsigned long long)time(NULL)`:UINTEGER_64
-  );
-
-  // Memory Management
-   
-  - memory:MEMORY := MEMORY;
-  
-  - get_begin_memory:POINTER;
-  
-  - get_memory_capacity:UINTEGER_64 <- 
-  ( + cap:UINTEGER_64;
-    + mem:POINTER;
-    cap := 32.mb;
-    {
-      cap := cap * 2;
-      mem := `malloc(@cap)`:POINTER;    
-      (mem != NULL).if { 
-	`free(@mem)`;
-      };      
-    }.do_until {(mem = NULL) || {cap = `2048LU << 20`:UINTEGER_64}}; // BSBS: BUG COMPILO 0.13
-    (mem = NULL).if {
-      cap := cap / 2;
-    };
-    get_begin_memory := `malloc(@cap)`:POINTER;
-    //
-    cap
-  );
-  
-Section SYSTEM,MEMORY
-  
-  - realloc_c (beg:UINTEGER_32,nb:INTEGER) :UINTEGER_32 <-
-  ( + result:UINTEGER_32;
-    result := `(unsigned long)realloc((void *)@beg, at nb+15)`:UINTEGER_32;
-    ((beg != 0) && {result != beg}).if {
-      MEMORY.print_nbx beg;
-      '\n'.print;
-      MEMORY.print_nbx result;
-      '\n'.print;
-      exit 1;
-    };
-    ? {(beg != 0) ->> {beg = result}};
-    ? {result != 0};
-    result
-  );
-  
-Section ISAAC  
-  
-  - make <-
-  // Isaac compatibility.
-  (
-    // Nothing.
-  );
\ No newline at end of file
diff --git a/lib_os/unix/system/system_io.li b/lib_os/unix/system/system_io.li
deleted file mode 100644
index 2c31062..0000000
--- a/lib_os/unix/system/system_io.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := SYSTEM_IO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment  := "Lower level for Input / Output";
-  
-  - external := `
-#include <stdio.h>
-#include <stdlib.h>
-  
-// Hardware 'print_char'
-void print_char(char car)
-{
-  fputc(car,stdout);
-}
-
-// Hardware 'exit'
-int die_with_code(int code)
-{
-  exit(code);
-}
-
-`;
-
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-
-  - print_char byte:CHARACTER <-
-  // Low level buffered output.
-  (
-    `fputc((int)@byte,stdout)`;
-  );
-  
-   - print_error_char byte:CHARACTER <-
-  // Low level buffered error output.
-  (
-    `fputc((int)@byte,stderr)`;
-  ); 
-  
-  - get_char :CHARACTER <- `fgetc(stdin)`:(CHARACTER);
-  
-  - eof:CHARACTER <- `EOF`:CHARACTER;
-  
\ No newline at end of file
diff --git a/lib_os/unix/video/event_system.li b/lib_os/unix/video/event_system.li
deleted file mode 100644
index 02e4b78..0000000
--- a/lib_os/unix/video/event_system.li
+++ /dev/null
@@ -1,158 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := EVENT_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment  := "X11 - Event System";
-  
-  - external := `volatile char is_sleep=0;`;
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-  
-  - x_root:INTEGER;
-  - y_root:INTEGER;
-/*  
-  - sleep n:INTEGER <-
-  // Milisecond
-  (
-    `usleep(@n * 1000)`;
-  );
-*/  
-  - make <-  
-  ( + mask:UINTEGER_32;
-    
-    mask := `ExposureMask`:UINTEGER_32;
-    mask := mask | `KeyPressMask|KeyReleaseMask`:UINTEGER_32;
-    mask := mask | `ButtonPressMask|ButtonReleaseMask|PointerMotionMask`:UINTEGER_32;
-    mask := mask | `ClientMessage`:UINTEGER_32;
-    //mask := mask | `ResizeRedirectMask`:UINTEGER_32;
-    mask := mask | `StructureNotifyMask`:UINTEGER_32;
-    `XSelectInput(display,window, at mask)`;    
-  );
-    
-  - get_event <-
-  ( //+ nb_ev:INTEGER;
-    + type:INTEGER;
-    + x0,y0,x1,y1:INTEGER;
-       
-    //nb_ev := `XPending(display)`:INTEGER;
-    //(nb_ev != 0).if {
-    `{ XEvent ev`;             
-      (`XPending(display)`:INTEGER = 0).if {
-	`is_sleep = 1`;
-      };
-      `XNextEvent(display,&ev)`;
-      `is_sleep = 0`;
-      type := `ev.type`:INTEGER;
-      
-      //(type != 21h).if {
-      //	"Event:".print; type.to_hexadecimal.print; "h\n".print;
-      //      };
-
-      type
-      .when `ClientMessage`:INTEGER then {
-        TIMER.get_event;                
-      }
-      //
-      // Event Window
-      //
-      .when `Expose`:INTEGER then {
-	// Refresh X Window
-	x0 := `ev.xexpose.x`:INTEGER;
-	y0 := `ev.xexpose.y`:INTEGER;
-	x1 := x0 + `ev.xexpose.width` :INTEGER - 1;
-	y1 := y0 + `ev.xexpose.height`:INTEGER - 1;		
-	DESK.physical_screen.redraw (x0,y0) to (x1,y1);
-      }
-      .when `ResizeRequest`:INTEGER then {
-	// Resize X Window
-	x1 := `ev.xresizerequest.width`:INTEGER;
-	y1 := `ev.xresizerequest.height`:INTEGER;
-	`XResizeWindow(display,window, at x1, at y1)`;
-	
-	VIDEO.pixel_hard (x1,10) color 0FF0000h;
-	
-	DESK.resize_window (x1,y1);
-      }
-      
-      .when `ConfigureNotify`:INTEGER then {
-	// Resize X Window
-	x1 := `ev.xconfigure.width`:INTEGER;
-	y1 := `ev.xconfigure.height`:INTEGER;		
-	DESK.resize_window (x1,y1);
-      }
-      
-      //
-      // Event Keyboard
-      //
-      .when `KeyPress`:INTEGER then {
-	KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press TRUE;
-      }
-      .when `KeyRelease`:INTEGER then {
-	KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press FALSE;
-      }	
-      //
-      // Event Mouse
-      //
-      .when `ButtonPress`:INTEGER then {        
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	(`ev.xbutton.button`:INTEGER = 1).if {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with (TRUE,(MOUSE.right));
-	} else {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with ((MOUSE.left),TRUE);
-	};
-      }
-      .when `ButtonRelease`:INTEGER then {
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	(`ev.xbutton.button`:INTEGER = 1).if {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with (FALSE,(MOUSE.right));
-	} else {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with ((MOUSE.left),FALSE);
-	};
-      }
-      .when `MotionNotify`:INTEGER then {
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	MOUSE.set (`ev.xmotion.x`:INTEGER,`ev.xmotion.y`:INTEGER) with ((MOUSE.left),(MOUSE.right));
-      };
-    `}`;
-  //  };
-  );
-  
-  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/unix/video/event_system.li~ b/lib_os/unix/video/event_system.li~
deleted file mode 100755
index ecadb54..0000000
--- a/lib_os/unix/video/event_system.li~
+++ /dev/null
@@ -1,157 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name     := EVENT_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment  := "X11 - Event System";
-  
-  - external := `volatile char is_sleep=0;`;
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public  
-  
-  - x_root:INTEGER;
-  - y_root:INTEGER;
-/*  
-  - sleep n:INTEGER <-
-  // Milisecond
-  (
-    `usleep(@n * 1000)`;
-  );
-*/  
-  - make <-  
-  ( + mask:UINTEGER_32;
-    
-    mask := `ExposureMask`:UINTEGER_32;
-    mask := mask | `KeyPressMask|KeyReleaseMask`:UINTEGER_32;
-    mask := mask | `ButtonPressMask|ButtonReleaseMask|PointerMotionMask`:UINTEGER_32;
-    mask := mask | `ClientMessage`:UINTEGER_32;
-    //mask := mask | `ResizeRedirectMask`:UINTEGER_32;
-    mask := mask | `StructureNotifyMask`:UINTEGER_32;
-    `XSelectInput(display,window, at mask)`;    
-  );
-    
-  - get_event <-
-  ( //+ nb_ev:INTEGER;
-    + type:INTEGER;
-    + x0,y0,x1,y1:INTEGER;
-       
-    //nb_ev := `XPending(display)`:INTEGER;
-    //(nb_ev != 0).if {
-    `{ XEvent ev`;             
-      (`XPending(display)`:INTEGER = 0).if {
-	`is_sleep = 1`;
-      };
-      `XNextEvent(display,&ev)`;
-      `is_sleep = 0`;
-      type := `ev.type`:INTEGER;
-      
-      //(type != 21h).if {
-      //	"Event:".print; type.to_hexadecimal.print; "h\n".print;
-      //      };
-
-      type
-      .when `ClientMessage`:INTEGER then {
-        TIMER.get_event;                
-      }
-      //
-      // Event Window
-      //
-      .when `Expose`:INTEGER then {
-	// Refresh X Window
-	x0 := `ev.xexpose.x`:INTEGER;
-	y0 := `ev.xexpose.y`:INTEGER;
-	x1 := x0 + `ev.xexpose.width` :INTEGER - 1;
-	y1 := y0 + `ev.xexpose.height`:INTEGER - 1;		
-	DESK.physical_screen.redraw (x0,y0) to (x1,y1);
-      }
-      .when `ResizeRequest`:INTEGER then {
-	// Resize X Window
-	x1 := `ev.xresizerequest.width`:INTEGER;
-	y1 := `ev.xresizerequest.height`:INTEGER;
-	`XResizeWindow(display,window, at x1, at y1)`;
-	
-	VIDEO.pixel_hard (x1,10) color 0FF0000h;
-	
-	DESK.resize_window (x1,y1);
-      }
-      
-      .when `ConfigureNotify`:INTEGER then {
-	// Resize X Window
-	x1 := `ev.xconfigure.width`:INTEGER;
-	y1 := `ev.xconfigure.height`:INTEGER;		
-	DESK.resize_window (x1,y1);
-      }
-      
-      //
-      // Event Keyboard
-      //
-      .when `KeyPress`:INTEGER then {
-	KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press TRUE;
-      }
-      .when `KeyRelease`:INTEGER then {
-	KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press FALSE;
-      }	
-      //
-      // Event Mouse
-      //
-      .when `ButtonPress`:INTEGER then {        
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	(`ev.xbutton.button`:INTEGER = 1).if {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with (TRUE,(MOUSE.right));
-	} else {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with ((MOUSE.left),TRUE);
-	};
-      }
-      .when `ButtonRelease`:INTEGER then {
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	(`ev.xbutton.button`:INTEGER = 1).if {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with (FALSE,(MOUSE.right));
-	} else {
-	  MOUSE.set (`ev.xbutton.x`:INTEGER,`ev.xbutton.y`:INTEGER) with ((MOUSE.left),FALSE);
-	};
-      }
-      .when `MotionNotify`:INTEGER then {
-        x_root := `ev.xmotion.x_root`:INTEGER;
-        y_root := `ev.xmotion.y_root`:INTEGER;
-	MOUSE.set (`ev.xmotion.x`:INTEGER,`ev.xmotion.y`:INTEGER) with ((MOUSE.left),(MOUSE.right));
-      };
-    `}`;
-  );
-  
-  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/unix/video/hello.c b/lib_os/unix/video/hello.c
deleted file mode 100755
index 5f0ca8e..0000000
--- a/lib_os/unix/video/hello.c
+++ /dev/null
@@ -1,95 +0,0 @@
-// C code generated by Lisaac compiler (www.isaacOS.com) //
-int arg_count;
-char **arg_vector;
-
-//==========================//
-// EXTERNAL                 //
-//==========================//
-
-// SYSTEM_IO
-
-#include <stdio.h>
-#include <stdlib.h>
-  
-// Hardware 'print_char'
-void print_char(char car)
-{
-  fputc(car,stdout);
-}
-
-// Hardware 'exit'
-int die_with_code(int code)
-{
-  exit(code);
-}
-
-
-// SYSTEM
-#include <time.h>
-
-//==========================//
-// TYPE                     //
-//==========================//
-
-// Generic Object
-struct ___OBJ {
-  unsigned long __id;
-};
-
-// NULL
-#ifndef NULL
-#define NULL ((void *)0)
-#endif
-
-// CHARACTER
-typedef char __CHARACTER;
-
-// STRING_CONSTANT
-#define __STRING_CONSTANT__ 0
-typedef struct STRING_CONSTANT_struct __STRING_CONSTANT;
-struct STRING_CONSTANT_struct {
-  __CHARACTER *storage__0;
-};
-// INTEGER
-typedef int __INTEGER;
-
-
-void *table_type[1];
-
-//==========================//
-// GLOBAL                   //
-//==========================//
-
-__STRING_CONSTANT STRING_CONSTANT_;
-#define STRING_CONSTANT__ (&STRING_CONSTANT_)
-
-
-//==========================//
-// STRING CONSTANT          //
-//==========================//
-
-__STRING_CONSTANT __string_1={"Helloo\n"};
-
-//==========================//
-// FUNCTION HEADER          //
-//==========================//
-
-// Source code
-
-//==========================//
-// SOURCE CODE              //
-//==========================//
-
-int main(int argc,char **argv)
-{
-  __INTEGER Self__WE;
-  arg_count  = argc;
-  arg_vector = argv;
-  Self__WE= 1;
-  while ((Self__WE <=  7)) {
-    fputc((int)((&__string_1)->storage__0[(__INTEGER)(Self__WE -  1)]),stdout);
-    Self__WE=(__INTEGER)(Self__WE +  1);
-  };
-  return(0);
-}
-
diff --git a/lib_os/unix/video/keyboard.li b/lib_os/unix/video/keyboard.li
deleted file mode 100644
index b27bfc9..0000000
--- a/lib_os/unix/video/keyboard.li
+++ /dev/null
@@ -1,167 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := KEYBOARD;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="X11 - Keyboard Driver";
-
-  - version := 1;  
-  - date    :="2003/04";
-  
-Section Inherit
-
-  + parent_input_keyboard:Expanded INPUT_KEYBOARD;
-
-Section Private
-  
-  // Lower case.
-  - lower_case:STRING_CONSTANT := "&é\"'(-è_çà)=\8\\9\azertyuiop^$\13\ qsdfghjklmù  *wxcvbn,;:!";
-  // Upper case.
-  - upper_case:STRING_CONSTANT := "1234567890°+\8\\9\AZERTYUIOP\"£\13\ QSDFGHJKLM%  µWXCVBN?./§";
-  
-  // Num lock.
-  - num_on :STRING_CONSTANT := "789-456+1230.";
-  - num_off:STRING_CONSTANT := "BUA-L\0R+EDZIS";
-  
-  // AltGr.
-  - alt_gr:STRING_CONSTANT := "¹~#{[|`\\^@]}";
-  
-  // Extension key.
-  - ext_key:STRING_CONSTANT := "BUAL REDZIS  HP";
-  
-  - keyup cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    cmd := cmd & 0F7h; // Deactivate the cmd bit    
-    //bin_code.put ((bin_code.item (cu>>3)) & ~(1<<(cu&7))) to (cu>>3);
-    // Analyze: for deactivate the cmd
-    ((cu == 37) || {cu == 109}).if {
-      //CTRL 1 or CTRL2
-      cmd := cmd & (~01h);
-    }.elseif { cu == 113 } then {
-      // Alt Gr
-      cmd := cmd & (~02h);
-    }.elseif { cu == 64 } then {
-      // Alt
-      cmd := cmd & (~04h);      
-      result := ascii_code;
-      ascii_code := 0;      
-    }.elseif { (cu == 50) || { cu == 62} } then {
-      // Shift 1 or Shift 2
-      cmd := cmd & (~10h);
-    };
-    result
-  );
-
-  - keydown cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    
-    //bin_code.put ((bin_code.item (cu>>3)) | (~(1<<(cu&7)))) to (cu>>3); // Activate key
-    // Analyze: for activate the cmd
-    ((cu == 37) || {cu == 109}).if {
-      //CTRL1 or CTRL2
-      cmd := cmd | 01h;
-    }.elseif { cu == 113 } then {
-      // Alt Gr
-      cmd := cmd | 02h;
-    }.elseif { cu == 64 } then {
-      // Alt
-      cmd := cmd | 04h;    
-    }.elseif { cu == 65 } then {
-      // Space
-      result := ' '.to_uinteger_8;      
-    }.elseif { (cu == 50) || { cu == 62} } then {
-      // Shift 1 or Shift 2
-      cmd := cmd | 10h;
-      ((cmd & 20h)!=0).if {
-	cmd := cmd & (~20h);
-	//light;
-      };
-    }.elseif { cu == 66 } then {
-      // Cap
-      cmd := cmd ^ 20h;
-      //light;
-    }.elseif { cu == 77 } then {
-      // Num Lock
-      cmd := cmd ^ 40h;
-    }.elseif { cu == 78 } then {
-      // Scroll Lock
-      cmd := cmd ^ 80h;
-    }.elseif { cu == 9 } then {
-      // Esc
-      cmd :=  cmd | 08h;
-      result := 27;
-    }.elseif {((cmd&2)!=0) && {cu.in_range 10 to 21}} then {
-      cmd :=  cmd & (~02h);
-      result := alt_gr.item (cu-9).to_uinteger_8;
-    }.elseif {cu.in_range 10 to 61} then {
-      ((cmd & 30h)==0).if {
-	result := lower_case.item (cu-9).to_uinteger_8;
-      } else {
-	result := upper_case.item (cu-9).to_uinteger_8;
-      };
-      (result <= 13).if {
-	cmd := cmd | 08h;
-      };	
-    }.elseif {cu = 63} then {
-      result := '*'.to_uinteger_8;
-    }.elseif {cu.in_range 67 to 76} then {
-      cmd :=  cmd | 08h;      // F1 to F10 = cmd
-      result :=  cu - 67 + 'a'.to_uinteger_8;  // 'a' to 'j'
-    }.elseif {cu.in_range 79 to 91} then {  
-      ((cmd & 40h) = 0).if {
-	// Ver num off
-	result := num_off.item (cu-78).to_uinteger_8;
-	(result.to_character.in_range 'A' to 'Z').if {
-	  cmd := cmd | 8h;
-	};
-      } else {
-	// Verr num on
-	result := num_on.item (cu-78).to_uinteger_8;
-	((cmd & 4) != 0).if {
-	  ascii_code := ascii_code * 10 + (result-'0'.to_uinteger_8);
-	  result := 0;
-	};
-      };
-    }.elseif {(cu = 95) || {cu = 96}} then { 
-      cmd :=  cmd | 08h;      // F11 to F12 = cmd
-      result :=  cu - 95 + 'k'.to_uinteger_8;  // 'k' to 'l'
-    }.elseif {cu = 94} then {
-      ((cmd & 30h)==0).if {
-	result := '<'.to_uinteger_8;
-      } else {
-	result := '>'.to_uinteger_8;
-      };
-    }.elseif {cu.in_range 97 to 111} then {
-      cmd := cmd | 08h;
-      result := ext_key.item (cu-96).to_uinteger_8;       
-    }.elseif {cu = 112} then {
-      result := '/'.to_uinteger_8;
-    };
-    result
-  );
-    
-
-
-
-
diff --git a/lib_os/unix/video/mouse.li b/lib_os/unix/video/mouse.li
deleted file mode 100644
index 8ac31e6..0000000
--- a/lib_os/unix/video/mouse.li
+++ /dev/null
@@ -1,285 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := MOUSE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "X11 - Mouse driver";
-  
-Section Inherit
-  
-  + parent_input:Expanded INPUT;
-  
-  + parent_window:Expanded AREA; // MASK
-  
-Section Public
-  
-  - set (x,y:INTEGER) with (left_new,right_new:BOOLEAN) <-
-  ( + tmp:UINTEGER_8;
-    + x_new, y_new:INTEGER;
-    
-    y_new := y.max y_minimum.min y_maximum;
-    x_new := x.max x_minimum.min x_maximum;
-          
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make (x_new,y_new) button (left_new,right_new);
-
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    
-    get_event;
-    
-    // Update status.
-    x_current:=x_new;
-    y_current:=y_new;
-    right :=right_new;
-    left  :=left_new;    
-  );
-  
-Section Public
-  
-  + x_minimum:INTEGER;
-  - x_maximum:INTEGER <- VIDEO.x_max;
-  
-  + y_minimum:INTEGER;
-  - y_maximum:INTEGER <- VIDEO.y_max;    
-  
-  + x_current:INTEGER;
-  + y_current:INTEGER; 
-  
-  + right:BOOLEAN;
-  + left :BOOLEAN;
-  
-Section Private
-  
-  + buffer_event:FAST_ARRAY[EVENT_MOUSE];
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public
-  
-  //
-  // Creation / Initialisation.
-  //
-  
-  - make <-
-  ( + new_event:EVENT_MOUSE;
-    
-    is_actif := TRUE;
-    
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_MOUSE].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_MOUSE.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-        
-    // MASK
-    mask := FAST_ARRAY[UINTEGER_16].create 16;
-    make (DESK.physical_screen) from (x_current,y_current) size (16,16);
-  );
-  
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_MOUSE;
-    
-    p := p_beg;
-    (p != p_end).if {
-      ((x_current != x_window) || {y_current != y_window}).if {
-	set_position (x_current,y_current);
-      };
-      { p != p_end }.while_do {
-        evt := buffer_event.item p;        
-	(list_client.lower).to (list_client.upper) do { j:INTEGER;
-	  list_client.item j.receive (buffer_event.item p);
-	};      
-	p := (p + 1) & 03h;
-      };    
-    };
-  );
-    
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  //
-  // Display.
-  //
-  
-  // BSBS: A refaire avec une bitmap en dehors contenant le dessin avec une couleur de mask!!
-  // Plus simple, plus puissant, plus rapide !
-  
-  + mask:FAST_ARRAY[UINTEGER_16];
-
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x<16};
-    ? {y<16};
-
-    m:=mask.item y;
-    m:=m | (1<<x);
-    mask.put m to y;
-
-    parent_window.pixel_hard (x,y) color col;
-  );
-  
-  - line_h_hard (x0,y0:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x0<16};
-    ? {y0<16};
-    ? {x1<16};
-    
-    m:=mask.item y0;
-    x0.to x1 do { xx:INTEGER;
-      m:=m | (1<<xx);
-    };
-    
-    mask.put m to y0;
-    parent_window.line_h_hard (x0,y0) until x1 color col;
-  );
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    ((m & (1<<x))=0).if {
-      parent_window.pixel_hard (x,y) color col;
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	parent_window.pixel_hard (xx,y) color col;
-      };
-    };
-  );  
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + m:UINTEGER_16;
-    + col:UINTEGER_32;
-    + ofs_img:INTEGER;
-    ofs_img := ofs;
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	col := line.get_color ofs_img;	
-	parent_window.pixel_hard (xx,y) color col;
-      };     
-      ofs_img := ofs_img + 1;
-    };
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    clipping (x0,y0) to (x1,y1);
-    
-    color white;
-    poly_move_to (1,1);
-    poly_line_to (9,9);
-    poly_line_to (6,9);
-    poly_line_to (8,14);
-    poly_line_to (5,14);
-    poly_line_to (5,9);
-    poly_line_to (1,9);    
-    poly_move_to (1,1);    
-    poly_trace;
-    
-    color red;
-    line_v (0,0)  until 10;
-    line_h (1,10) until 4;
-    line_v (4,11) until 15;
-    line_h (5,15) until 9;
-    line (9,15) to (7,10);
-    line_h (7,10) until 10;
-    line (1,0) to (10,9);
-  );
-  
-  - get_object (x,y:INTEGER) :AREA <-
-  (
-    NULL
-  );
-  
-  //
-  // Extern robot.
-  //
-  
-  - extern_event_move (x,y:INTEGER) <-
-  (
-    `XTestFakeMotionEvent(display,-1, at x, at y,1)`;
-  );
-
-  - extern_event_left_down <-
-  (
-    `XTestFakeButtonEvent(display,1,True,1)`;      
-  );
-
-  - extern_event_left_up <-
-  (
-    `XTestFakeButtonEvent(display,1,False,1)`;      
-  );
-  
-  - extern_event_right_down <-
-  (
-    `XTestFakeButtonEvent(display,3,True,1)`;      
-  );
-
-  - extern_event_right_up <-
-  (
-    `XTestFakeButtonEvent(display,3,False,1)`;      
-  );
-  
-  - extern_get_mouse:(INTEGER,INTEGER,BOOLEAN,BOOLEAN) <-
-  ( + x,y,mask:INTEGER;
-    + l,r:BOOLEAN;
-    `{ Window	dummy1, dummy2`;
-      `int x,y,winx,winy,mask`;
-      `XQueryPointer(display,RootWindow(display, DefaultScreen(display)), &dummy1, &dummy2, &x,&y, &winx, &winy, &mask)`;
-      x := `winx`:INTEGER;
-      y := `winy`:INTEGER;
-      mask := `mask`:INTEGER;
-    `}`;     
-    l := (mask & 100h)!=0;
-    r := (mask & 400h)!=0;
-    x,y,l,r
-  );  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/unix/video/mouse.li~ b/lib_os/unix/video/mouse.li~
deleted file mode 100755
index 8ac31e6..0000000
--- a/lib_os/unix/video/mouse.li~
+++ /dev/null
@@ -1,285 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := MOUSE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment := "X11 - Mouse driver";
-  
-Section Inherit
-  
-  + parent_input:Expanded INPUT;
-  
-  + parent_window:Expanded AREA; // MASK
-  
-Section Public
-  
-  - set (x,y:INTEGER) with (left_new,right_new:BOOLEAN) <-
-  ( + tmp:UINTEGER_8;
-    + x_new, y_new:INTEGER;
-    
-    y_new := y.max y_minimum.min y_maximum;
-    x_new := x.max x_minimum.min x_maximum;
-          
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make (x_new,y_new) button (left_new,right_new);
-
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    
-    get_event;
-    
-    // Update status.
-    x_current:=x_new;
-    y_current:=y_new;
-    right :=right_new;
-    left  :=left_new;    
-  );
-  
-Section Public
-  
-  + x_minimum:INTEGER;
-  - x_maximum:INTEGER <- VIDEO.x_max;
-  
-  + y_minimum:INTEGER;
-  - y_maximum:INTEGER <- VIDEO.y_max;    
-  
-  + x_current:INTEGER;
-  + y_current:INTEGER; 
-  
-  + right:BOOLEAN;
-  + left :BOOLEAN;
-  
-Section Private
-  
-  + buffer_event:FAST_ARRAY[EVENT_MOUSE];
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public
-  
-  //
-  // Creation / Initialisation.
-  //
-  
-  - make <-
-  ( + new_event:EVENT_MOUSE;
-    
-    is_actif := TRUE;
-    
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_MOUSE].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_MOUSE.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-        
-    // MASK
-    mask := FAST_ARRAY[UINTEGER_16].create 16;
-    make (DESK.physical_screen) from (x_current,y_current) size (16,16);
-  );
-  
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_MOUSE;
-    
-    p := p_beg;
-    (p != p_end).if {
-      ((x_current != x_window) || {y_current != y_window}).if {
-	set_position (x_current,y_current);
-      };
-      { p != p_end }.while_do {
-        evt := buffer_event.item p;        
-	(list_client.lower).to (list_client.upper) do { j:INTEGER;
-	  list_client.item j.receive (buffer_event.item p);
-	};      
-	p := (p + 1) & 03h;
-      };    
-    };
-  );
-    
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  //
-  // Display.
-  //
-  
-  // BSBS: A refaire avec une bitmap en dehors contenant le dessin avec une couleur de mask!!
-  // Plus simple, plus puissant, plus rapide !
-  
-  + mask:FAST_ARRAY[UINTEGER_16];
-
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x<16};
-    ? {y<16};
-
-    m:=mask.item y;
-    m:=m | (1<<x);
-    mask.put m to y;
-
-    parent_window.pixel_hard (x,y) color col;
-  );
-  
-  - line_h_hard (x0,y0:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + m:UINTEGER_16;
-    ? {x0<16};
-    ? {y0<16};
-    ? {x1<16};
-    
-    m:=mask.item y0;
-    x0.to x1 do { xx:INTEGER;
-      m:=m | (1<<xx);
-    };
-    
-    mask.put m to y0;
-    parent_window.line_h_hard (x0,y0) until x1 color col;
-  );
-
-  - slave_pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    ((m & (1<<x))=0).if {
-      parent_window.pixel_hard (x,y) color col;
-    };
-  );
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER color col:UINTEGER_32 <- 
-  ( + m:UINTEGER_16;
-    
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	parent_window.pixel_hard (xx,y) color col;
-      };
-    };
-  );  
-  
-  - slave_line_h_hard (x1,y:INTEGER) until x2:INTEGER image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + m:UINTEGER_16;
-    + col:UINTEGER_32;
-    + ofs_img:INTEGER;
-    ofs_img := ofs;
-    m:=mask.item y;
-    x1.to x2 do { xx:INTEGER;
-      ((m & (1<<xx))=0).if {
-	col := line.get_color ofs_img;	
-	parent_window.pixel_hard (xx,y) color col;
-      };     
-      ofs_img := ofs_img + 1;
-    };
-  );
-  
-  - draw (x0,y0:INTEGER) to (x1,y1:INTEGER) <-
-  (
-    clipping (x0,y0) to (x1,y1);
-    
-    color white;
-    poly_move_to (1,1);
-    poly_line_to (9,9);
-    poly_line_to (6,9);
-    poly_line_to (8,14);
-    poly_line_to (5,14);
-    poly_line_to (5,9);
-    poly_line_to (1,9);    
-    poly_move_to (1,1);    
-    poly_trace;
-    
-    color red;
-    line_v (0,0)  until 10;
-    line_h (1,10) until 4;
-    line_v (4,11) until 15;
-    line_h (5,15) until 9;
-    line (9,15) to (7,10);
-    line_h (7,10) until 10;
-    line (1,0) to (10,9);
-  );
-  
-  - get_object (x,y:INTEGER) :AREA <-
-  (
-    NULL
-  );
-  
-  //
-  // Extern robot.
-  //
-  
-  - extern_event_move (x,y:INTEGER) <-
-  (
-    `XTestFakeMotionEvent(display,-1, at x, at y,1)`;
-  );
-
-  - extern_event_left_down <-
-  (
-    `XTestFakeButtonEvent(display,1,True,1)`;      
-  );
-
-  - extern_event_left_up <-
-  (
-    `XTestFakeButtonEvent(display,1,False,1)`;      
-  );
-  
-  - extern_event_right_down <-
-  (
-    `XTestFakeButtonEvent(display,3,True,1)`;      
-  );
-
-  - extern_event_right_up <-
-  (
-    `XTestFakeButtonEvent(display,3,False,1)`;      
-  );
-  
-  - extern_get_mouse:(INTEGER,INTEGER,BOOLEAN,BOOLEAN) <-
-  ( + x,y,mask:INTEGER;
-    + l,r:BOOLEAN;
-    `{ Window	dummy1, dummy2`;
-      `int x,y,winx,winy,mask`;
-      `XQueryPointer(display,RootWindow(display, DefaultScreen(display)), &dummy1, &dummy2, &x,&y, &winx, &winy, &mask)`;
-      x := `winx`:INTEGER;
-      y := `winy`:INTEGER;
-      mask := `mask`:INTEGER;
-    `}`;     
-    l := (mask & 100h)!=0;
-    r := (mask & 400h)!=0;
-    x,y,l,r
-  );  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/unix/video/timer.li b/lib_os/unix/video/timer.li
deleted file mode 100644
index ac61d13..0000000
--- a/lib_os/unix/video/timer.li
+++ /dev/null
@@ -1,164 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := TIMER;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Unix - Timer management.";
-
-  - version := 1;  
-
-  - date    :="2003/04";
-  
-  - external := 
-`
-#include <signal.h>
-#define __BEGIN_INTERRUPT__
-#define __END_INTERRUPT__
-XEvent timer_ev;
-`;
-  
-Section Inherit  
-  
-  + parent_input:Expanded INPUT;
-  
-Section Private
-  
-  - timer_count:UINTEGER_32;
-  
-  - buffer_event:FAST_ARRAY[EVENT_TIMER];
-  
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Interrupt  
-  
-  - timer_interrupt <-  
-  ( + tmp:UINTEGER_8;     
-    
-    timer_count := timer_count + 1;
-    
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make timer_count; 
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    // ((timer_count % 20)=0).if {
-    //   CLOCK.rtc;
-    // };
-    
-    (`is_sleep`:INTEGER = 1).if {
-      `timer_ev.type           = ClientMessage`;
-      `timer_ev.xclient.format = 32`;
-      (`XSendEvent(display,window,0,ClientMessage,&timer_ev)`:INTEGER != 0).if {
-	`XFlush(display)`;
-      };
-    };
-    
-    `ualarm(50000,0)`;    
-    
-  );
-  
-Section Public
-
-  - make <-
-  ( + hdle:POINTER;
-    + new_event:EVENT_TIMER;
-    
-    is_actif := TRUE;
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_TIMER].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_TIMER.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-            
-    hdle := timer_interrupt;
-    `signal(SIGALRM, at hdle)`;
-    `ualarm(500000,0)`;
-  );
-
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_TIMER;
-    p := p_beg;
-    ( p != p_end ).if { //}.while_do {
-      evt := buffer_event.item p;      
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-        buffer_event.item p.set_destination NULL;        
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
-
-  - clear <-
-  (
-    p_beg := p_end;
-  );
-
-
-/* 
-//Other solution :
-void catcher( int sig ) {
-
-    time_count ++;
-}
-
-int main( int argc, char *argv[] ) {
-
-  int old_time;
-
-    struct itimerval value;
-
-    signal(SIGALRM,catcher);
-
-    value.it_interval.tv_sec = 1;   
-    value.it_interval.tv_usec = 0;  
-    value.it_value.tv_sec = 1;      
-    value.it_value.tv_usec = 0;     
-
-    setitimer(ITIMER_REAL, &value, NULL); 
-
-    while (1) {
-      if (old_time != time_count) {
-	printf("Time %ld\n",time_count);
-	old_time = time_count;
-      };
-    };
-
-    return(0);
-}
-*/
\ No newline at end of file
diff --git a/lib_os/unix/video/timer.li~ b/lib_os/unix/video/timer.li~
deleted file mode 100755
index 101196c..0000000
--- a/lib_os/unix/video/timer.li~
+++ /dev/null
@@ -1,169 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := TIMER;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Unix - Timer management.";
-
-  - version := 1;  
-
-  - date    :="2003/04";
-  
-  - external := 
-`
-#include <signal.h>
-#define __BEGIN_INTERRUPT__
-#define __END_INTERRUPT__
-XEvent timer_ev;
-`;
-  
-Section Inherit  
-  
-  + parent_input:Expanded INPUT;
-  
-Section Private
-  
-  - timer_count:UINTEGER_32;
-  
-  - buffer_event:FAST_ARRAY[EVENT_TIMER];
-  
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Interrupt  
-  
-  - timer_interrupt <-  
-  ( + tmp:UINTEGER_8;     
-    
-    timer_count := timer_count + 1;
-    
-    "T".print;
-    
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make timer_count; 
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    // ((timer_count % 20)=0).if {
-    //   CLOCK.rtc;
-    // };
-    
-    (`is_sleep`:INTEGER = 1).if {
-      `timer_ev.type           = ClientMessage`;
-      `timer_ev.xclient.format = 32`;
-      (`XSendEvent(display,window,0,ClientMessage,&timer_ev)`:INTEGER != 0).if {
-	`XFlush(display)`;
-      };
-    };
-    
-    `ualarm(50000,0)`;    
-    
-  );
-  
-Section Public
-
-  - make <-
-  ( + hdle:POINTER;
-    + new_event:EVENT_TIMER;
-    
-    is_actif := TRUE;
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_TIMER].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_TIMER.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-            
-    hdle := timer_interrupt;
-    `signal(SIGALRM, at hdle)`;
-    `ualarm(500000,0)`;
-  );
-
-  - acknowledge <-
-  (
-    "A".print;
-    p_beg := (p_beg+1) & 03h;
-  );
-
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_TIMER;
-    "TIMER".print;
-    p := p_beg;
-    ( p != p_end ).if { //}.while_do {
-      'D'.print;
-      evt := buffer_event.item p;      
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-        buffer_event.item p.set_destination NULL;        
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
-  /*
-  - clear <-
-  (
-    p_beg := p_end;
-  );
-  */
-
-/* 
-//Other solution :
-void catcher( int sig ) {
-
-    time_count ++;
-}
-
-int main( int argc, char *argv[] ) {
-
-  int old_time;
-
-    struct itimerval value;
-
-    signal(SIGALRM,catcher);
-
-    value.it_interval.tv_sec = 1;   
-    value.it_interval.tv_usec = 0;  
-    value.it_value.tv_sec = 1;      
-    value.it_value.tv_usec = 0;     
-
-    setitimer(ITIMER_REAL, &value, NULL); 
-
-    while (1) {
-      if (old_time != time_count) {
-	printf("Time %ld\n",time_count);
-	old_time = time_count;
-      };
-    };
-
-    return(0);
-}
-*/
\ No newline at end of file
diff --git a/lib_os/unix/video/video.li b/lib_os/unix/video/video.li
deleted file mode 100644
index d6b2cd7..0000000
--- a/lib_os/unix/video/video.li
+++ /dev/null
@@ -1,296 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 Driver video - Xlib -";
-
-  - external := 
-`
-#include <X11/Xlib.h>
-
-// For Frame buffer.
-#include <X11/extensions/XTest.h>  
-#include <linux/fb.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-
-Display *display;
-Window  window;
-GC      gc;
-Screen  *screen;
-XImage  *ximage=NULL;
-`;
-
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP[PIXEL_24];
-  
-Section Public //VIDEO
-  
-  - line_tmp:ABSTRACT_BMP_LINE;
-  
-Section Public
-  
-  - screen_width:INTEGER;
-  - screen_height:INTEGER;
-  
-  - message str:ABSTRACT_STRING <-
-  ( 
-    "Message : ".print; str.print; '\n'.print;
-  );
-  
-  - is_active:BOOLEAN;
-  
-  - planes:UINTEGER_32;
-  
-  - resize (w,h:INTEGER) <-
-  (
-    width  := w;
-    height := h;
-    clipping_off;
-  );
-  
-  - make (w,h:INTEGER) <-
-  ( + data:NATIVE_ARRAY[UINTEGER_8];
-    + w_max:INTEGER;
-    
-    // Init BITMAP:
-    width  := w;
-    height := h;
-    
-    // Creation Server X:
-    `display = XOpenDisplay(NULL)`;
-    // Screen Default:
-    `screen = ScreenOfDisplay(display,DefaultScreen(display))`;
-    // Init Graphic context:
-    `gc = DefaultGC(display,DefaultScreen(display))`;
-    // Creation Window:
-    `window = XCreateSimpleWindow(display,RootWindow(display,DefaultScreen(display)), 0,0, at w, at h,2,0,0)`; 
-
-    // Event manager:
-    //XSelectInput(display,window,ExposureMask);
-
-    // Title window:
-    `XStoreName(display,window,"X-Isaac")`;  
-
-    // Display Window:
-    `XMapWindow(display,window)`;
-    
-    planes := `PlanesOfScreen(screen)`:UINTEGER_32;
-    "Video mode: ".print;
-    planes.print; "bits\n".print;
-    
-    screen_width  := w_max := `WidthOfScreen(screen)`:INTEGER;
-    screen_height := `HeightOfScreen(screen)`:INTEGER;    
-    
-    planes
-    .when 15 then {
-      line_tmp := BMP_LINE[PIXEL_15].create w_max;
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,15,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
-    }
-    .when 16 then { 
-      line_tmp := BMP_LINE[PIXEL_16].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,16,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
-    }
-    .when 24 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,24,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
-    }
-    .when 32 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,32,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
-    };
-    
-    is_active := TRUE;
-  );
-  
-  - auto_make <-
-  (
-    make (800,600);
-  );
-  
-  - close <-
-  (
-    ? {is_active};
-    // Remove Window:
-    //`XUnmap(display,window)`;
-    is_active := FALSE;
-    ? {! is_active};
-  );
-
-  // 
-  // Redefine Low level Bitmap.
-  //
-  
-Section Public
-  
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + m:UINTEGER_8;
-    
-    VIDEO.planes
-    .when 15 then { 
-      real_col := PIXEL_15.get_raw col;
-    }
-    .when 16 then { 
-      real_col := PIXEL_16.get_raw col; 
-    }
-    .when 24 then { 
-      real_col := PIXEL_24.get_raw col; 
-    }
-    .when 32 then { 
-      real_col := PIXEL_32.get_raw col;
-    };
-    m := mode;
-    `XSetForeground(display,gc,(int)@real_col)`;
-    `XSetFunction(display,gc,(int)@m)`;
-    `XDrawPoint(display,window,gc, at x, at y)`;
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + m:UINTEGER_8;
-    
-    VIDEO.planes
-    .when 15 then { 
-      real_col := PIXEL_15.get_raw col;
-    }
-    .when 16 then { 
-      real_col := PIXEL_16.get_raw col; 
-    }
-    .when 24 then { 
-      real_col := PIXEL_24.get_raw col; 
-    }
-    .when 32 then { 
-      real_col := PIXEL_32.get_raw col;
-    };
-    m := mode;
-    `XSetForeground(display,gc,(int)@real_col)`;
-    `XSetFunction(display,gc,(int)@m)`;
-    `XDrawLine(display,window,gc, at x, at y, at x1, at y)`;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + len:INTEGER;
-
-    len := x1 - x;
-    VIDEO.line_tmp.put line offset ofs from 0 to len;
-    `XPutImage(display,window,gc, ximage, 0, 0, @x, @y, @len+1, 1)`;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    not_yet_implemented;
-  );
-  
-  //
-  // Frame buffer.
-  //
-  
-  - open_frame_buffer <-
-  ( + fb,w,h:INTEGER;
-    
-    fb := `open("/dev/fb0", O_RDWR)`:INTEGER;
-    (fb = 0).if {
-      "Error: cannot open framebuffer device.\n".print;
-      die_with_code 0;
-    };
-    
-    w := screen_width;
-    h := screen_height;  
-    view_screen := `mmap(0, @w*@h*4, PROT_READ | PROT_WRITE,MAP_SHARED, at fb, 0)`:
-    NATIVE_ARRAY[UINTEGER_8];
-    
-    (CONVERT[NATIVE_ARRAY[UINTEGER_8],INTEGER].on view_screen = -1).if {
-      "Error: failed to map framebuffer device to memory.\n".print;
-      die_with_code 0;
-    };
-  );
-  
-  - get_pixel_screen (x,y:INTEGER) :UINTEGER_32 <-
-  [
-    -? {x.in_range 0 to (screen_width -1)};
-    -? {y.in_range 0 to (screen_height-1)};
-  ]
-  ( + ofs:INTEGER;
-    /*
-    (x.in_range 0 to (screen_width -1)).if_false {
-      "MERDE\n".print;
-    };
-    (y.in_range 0 to (screen_height-1)).if_false {
-      "MERDE Y\n".print;
-    };
-    */
-    ofs := (y * screen_width + x) * 3;
-    (view_screen.item  ofs   .to_uinteger_32      ) | 
-    (view_screen.item (ofs+1).to_uinteger_32 <<  8) |
-    (view_screen.item (ofs+2).to_uinteger_32 << 16)    
-  );
-  
-  - set_pixel_screen (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + ofs:INTEGER;
-    
-    ofs := (y * screen_width + x) * 4;
-    view_screen.put ((col >> 16).to_uinteger_8)         to (ofs+2);
-    view_screen.put (((col >> 8) & 0FFh).to_uinteger_8) to (ofs+1);
-    view_screen.put ((col & 0FFh).to_uinteger_8)        to (ofs+0);    
-  );
-  
-Section Private
-  
-  - view_screen:NATIVE_ARRAY[UINTEGER_8];
-
-  /* A voir pour bloquer la size minimum
-  
-// pointer to the size hints structure. 
-XSizeHints* win_size_hints = XAllocSizeHints();
-if (!win_size_hints) {
-    fprintf(stderr, "XAllocSizeHints - out of memory\n");
-    exit(1);
-}
-
-// initialize the structure appropriately. 
-// first, specify which size hints we want to fill in. 
-// in our case - setting the minimal size as well as the initial size. 
-win_size_hints->flags = PSize | PMinSize;
-// next, specify the desired limits.                             
-// in our case - make the window's size at least 300x200 pixels. 
-// and make its initial size 400x250.                            
-win_size_hints->min_width = 300;
-win_size_hints->min_height = 200;
-win_size_hints->base_width = 400;
-win_size_hints->base_height = 250;
-
-// pass the size hints to the window manager. 
-XSetWMNormalHints(display, win, win_size_hints);
-
-// finally, we can free the size hints structure. 
-XFree(win_size_hints);
-*/
\ No newline at end of file
diff --git a/lib_os/unix/video/video.li~ b/lib_os/unix/video/video.li~
deleted file mode 100755
index d6b2cd7..0000000
--- a/lib_os/unix/video/video.li~
+++ /dev/null
@@ -1,296 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 Driver video - Xlib -";
-
-  - external := 
-`
-#include <X11/Xlib.h>
-
-// For Frame buffer.
-#include <X11/extensions/XTest.h>  
-#include <linux/fb.h>
-#include <sys/mman.h>
-#include <fcntl.h>
-
-Display *display;
-Window  window;
-GC      gc;
-Screen  *screen;
-XImage  *ximage=NULL;
-`;
-
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP[PIXEL_24];
-  
-Section Public //VIDEO
-  
-  - line_tmp:ABSTRACT_BMP_LINE;
-  
-Section Public
-  
-  - screen_width:INTEGER;
-  - screen_height:INTEGER;
-  
-  - message str:ABSTRACT_STRING <-
-  ( 
-    "Message : ".print; str.print; '\n'.print;
-  );
-  
-  - is_active:BOOLEAN;
-  
-  - planes:UINTEGER_32;
-  
-  - resize (w,h:INTEGER) <-
-  (
-    width  := w;
-    height := h;
-    clipping_off;
-  );
-  
-  - make (w,h:INTEGER) <-
-  ( + data:NATIVE_ARRAY[UINTEGER_8];
-    + w_max:INTEGER;
-    
-    // Init BITMAP:
-    width  := w;
-    height := h;
-    
-    // Creation Server X:
-    `display = XOpenDisplay(NULL)`;
-    // Screen Default:
-    `screen = ScreenOfDisplay(display,DefaultScreen(display))`;
-    // Init Graphic context:
-    `gc = DefaultGC(display,DefaultScreen(display))`;
-    // Creation Window:
-    `window = XCreateSimpleWindow(display,RootWindow(display,DefaultScreen(display)), 0,0, at w, at h,2,0,0)`; 
-
-    // Event manager:
-    //XSelectInput(display,window,ExposureMask);
-
-    // Title window:
-    `XStoreName(display,window,"X-Isaac")`;  
-
-    // Display Window:
-    `XMapWindow(display,window)`;
-    
-    planes := `PlanesOfScreen(screen)`:UINTEGER_32;
-    "Video mode: ".print;
-    planes.print; "bits\n".print;
-    
-    screen_width  := w_max := `WidthOfScreen(screen)`:INTEGER;
-    screen_height := `HeightOfScreen(screen)`:INTEGER;    
-    
-    planes
-    .when 15 then {
-      line_tmp := BMP_LINE[PIXEL_15].create w_max;
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,15,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
-    }
-    .when 16 then { 
-      line_tmp := BMP_LINE[PIXEL_16].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,16,ZPixmap,0,(char *)@data, at w_max,1,16,0)`;
-    }
-    .when 24 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,24,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
-    }
-    .when 32 then { 
-      line_tmp := BMP_LINE[PIXEL_32].create w_max; 
-      data := line_tmp.get_storage;
-      `ximage = XCreateImage(display,None,32,ZPixmap,0,(char *)@data, at w_max,1,32,0)`;
-    };
-    
-    is_active := TRUE;
-  );
-  
-  - auto_make <-
-  (
-    make (800,600);
-  );
-  
-  - close <-
-  (
-    ? {is_active};
-    // Remove Window:
-    //`XUnmap(display,window)`;
-    is_active := FALSE;
-    ? {! is_active};
-  );
-
-  // 
-  // Redefine Low level Bitmap.
-  //
-  
-Section Public
-  
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + m:UINTEGER_8;
-    
-    VIDEO.planes
-    .when 15 then { 
-      real_col := PIXEL_15.get_raw col;
-    }
-    .when 16 then { 
-      real_col := PIXEL_16.get_raw col; 
-    }
-    .when 24 then { 
-      real_col := PIXEL_24.get_raw col; 
-    }
-    .when 32 then { 
-      real_col := PIXEL_32.get_raw col;
-    };
-    m := mode;
-    `XSetForeground(display,gc,(int)@real_col)`;
-    `XSetFunction(display,gc,(int)@m)`;
-    `XDrawPoint(display,window,gc, at x, at y)`;
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + m:UINTEGER_8;
-    
-    VIDEO.planes
-    .when 15 then { 
-      real_col := PIXEL_15.get_raw col;
-    }
-    .when 16 then { 
-      real_col := PIXEL_16.get_raw col; 
-    }
-    .when 24 then { 
-      real_col := PIXEL_24.get_raw col; 
-    }
-    .when 32 then { 
-      real_col := PIXEL_32.get_raw col;
-    };
-    m := mode;
-    `XSetForeground(display,gc,(int)@real_col)`;
-    `XSetFunction(display,gc,(int)@m)`;
-    `XDrawLine(display,window,gc, at x, at y, at x1, at y)`;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + len:INTEGER;
-
-    len := x1 - x;
-    VIDEO.line_tmp.put line offset ofs from 0 to len;
-    `XPutImage(display,window,gc, ximage, 0, 0, @x, @y, @len+1, 1)`;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    not_yet_implemented;
-  );
-  
-  //
-  // Frame buffer.
-  //
-  
-  - open_frame_buffer <-
-  ( + fb,w,h:INTEGER;
-    
-    fb := `open("/dev/fb0", O_RDWR)`:INTEGER;
-    (fb = 0).if {
-      "Error: cannot open framebuffer device.\n".print;
-      die_with_code 0;
-    };
-    
-    w := screen_width;
-    h := screen_height;  
-    view_screen := `mmap(0, @w*@h*4, PROT_READ | PROT_WRITE,MAP_SHARED, at fb, 0)`:
-    NATIVE_ARRAY[UINTEGER_8];
-    
-    (CONVERT[NATIVE_ARRAY[UINTEGER_8],INTEGER].on view_screen = -1).if {
-      "Error: failed to map framebuffer device to memory.\n".print;
-      die_with_code 0;
-    };
-  );
-  
-  - get_pixel_screen (x,y:INTEGER) :UINTEGER_32 <-
-  [
-    -? {x.in_range 0 to (screen_width -1)};
-    -? {y.in_range 0 to (screen_height-1)};
-  ]
-  ( + ofs:INTEGER;
-    /*
-    (x.in_range 0 to (screen_width -1)).if_false {
-      "MERDE\n".print;
-    };
-    (y.in_range 0 to (screen_height-1)).if_false {
-      "MERDE Y\n".print;
-    };
-    */
-    ofs := (y * screen_width + x) * 3;
-    (view_screen.item  ofs   .to_uinteger_32      ) | 
-    (view_screen.item (ofs+1).to_uinteger_32 <<  8) |
-    (view_screen.item (ofs+2).to_uinteger_32 << 16)    
-  );
-  
-  - set_pixel_screen (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + ofs:INTEGER;
-    
-    ofs := (y * screen_width + x) * 4;
-    view_screen.put ((col >> 16).to_uinteger_8)         to (ofs+2);
-    view_screen.put (((col >> 8) & 0FFh).to_uinteger_8) to (ofs+1);
-    view_screen.put ((col & 0FFh).to_uinteger_8)        to (ofs+0);    
-  );
-  
-Section Private
-  
-  - view_screen:NATIVE_ARRAY[UINTEGER_8];
-
-  /* A voir pour bloquer la size minimum
-  
-// pointer to the size hints structure. 
-XSizeHints* win_size_hints = XAllocSizeHints();
-if (!win_size_hints) {
-    fprintf(stderr, "XAllocSizeHints - out of memory\n");
-    exit(1);
-}
-
-// initialize the structure appropriately. 
-// first, specify which size hints we want to fill in. 
-// in our case - setting the minimal size as well as the initial size. 
-win_size_hints->flags = PSize | PMinSize;
-// next, specify the desired limits.                             
-// in our case - make the window's size at least 300x200 pixels. 
-// and make its initial size 400x250.                            
-win_size_hints->min_width = 300;
-win_size_hints->min_height = 200;
-win_size_hints->base_width = 400;
-win_size_hints->base_height = 250;
-
-// pass the size hints to the window manager. 
-XSetWMNormalHints(display, win, win_size_hints);
-
-// finally, we can free the size hints structure. 
-XFree(win_size_hints);
-*/
\ No newline at end of file
diff --git a/lib_os/unix/video_ascii/bitmap_ascii.li b/lib_os/unix/video_ascii/bitmap_ascii.li
deleted file mode 100644
index ef45e32..0000000
--- a/lib_os/unix/video_ascii/bitmap_ascii.li
+++ /dev/null
@@ -1,94 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BITMAP_ASCII;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Bitmap for text mode";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-Section Inherit
-  
-  + parent_bitmap_generic:Expanded BITMAP;
-  
-Section Public
-  
-  - pixel_geometry:PIXEL := PIXEL_ASCII;
-  
-Section Public  
-  
-  //
-  // Data.
-  //
-  
-  // Mapping memory bitmap.
-  + image:FAST_ARRAY[BMP_LINE_ASCII];
-  
-  - get_line y:INTEGER :BMP_LINE <-
-  ( //? {y < height};
-    image.item y
-  );
-  
-  //
-  // Creation. 
-  //
-
-  - make (w,h:INTEGER) <-
-  (
-    width  := w;
-    height := h;
-    //bytes_per_line:=(w * PIXEL_ASCII.size + 7)>>3;
-    image := FAST_ARRAY[BMP_LINE_ASCII].create h;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE_ASCII.create w) to y;
-    };
-    clipping_off;
-  );  
-  
-  - make (w,h:INTEGER) at offset_begin:UINTEGER_32 bytes_per_line lx:INTEGER <-
-  ( + offset:UINTEGER_32;
-    
-    width  := w;
-    height := h;    
-    image := FAST_ARRAY[BMP_LINE_ASCII].create h;
-    offset:=offset_begin;
-    0.to (image.upper) do { y:INTEGER;
-      image.put (BMP_LINE_ASCII.create w at offset) to y;
-      offset:=offset+lx;
-    };
-    clipping_off;
-  );
-  
-  - print <-
-  (
-    0.to (height - 1) do {h:INTEGER;
-      image.item h.print;
-      '\n'.print;
-    };
-  );
- 
-
diff --git a/lib_os/unix/video_ascii/bmp_line_ascii.li b/lib_os/unix/video_ascii/bmp_line_ascii.li
deleted file mode 100644
index 9d95976..0000000
--- a/lib_os/unix/video_ascii/bmp_line_ascii.li
+++ /dev/null
@@ -1,115 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := BMP_LINE_ASCII;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Bitmap line for text mode";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-
-Section Inherit
-  
-  + parent_bmp_line:Expanded BMP_LINE;
-  
-Section Public
-  
-  + storage:MAP_NATIVE_ARRAY[PIXEL_ASCII];
-  
-  - get_storage:NATIVE_ARRAY[UINTEGER_8] <- NATIVE_ARRAY[UINTEGER_8].force_conversion storage;
-  
-  - make n:INTEGER <-
-  ( 
-    capacity := n;
-    upper    := n - 1;    
-    storage  := MAP_NATIVE_ARRAY[PIXEL_ASCII].calloc n;    
-  );
-  
-  - make_with_capacity n:INTEGER <-
-  (
-    capacity := n;
-    upper    := -1;
-    storage  := MAP_NATIVE_ARRAY[PIXEL_ASCII].calloc n;    
-  );
-  
-  - make n:INTEGER at offset:UINTEGER_32 <-
-  ( 
-    capacity := n;
-    upper    := n - 1;    
-    storage  := MAP_NATIVE_ARRAY[PIXEL_ASCII].force_conversion offset;    
-  );
-
-Section Public
-  
-  - pixel_geometry:PIXEL := PIXEL_ASCII;
-  
-  //
-  // Put.
-  //
-  
-  - put col:UINTEGER_32 from idx_begin:INTEGER to idx_end:INTEGER <- 
-  ( ? {idx_begin<=idx_end};
-    ? {idx_begin>=0};
-    ? {idx_end.in_range 0 to upper};
-        
-    idx_begin.to idx_end do { n:INTEGER;
-      storage.item n.color col;
-    };
-  );
-  
-  - put bmp:BMP_LINE offset ofs:INTEGER from idx_begin:INTEGER to idx_end:INTEGER <-
-  ( + offset:INTEGER;
-    + pixel:PIXEL_ASCII;
-    ? {idx_begin <= idx_end};
-    ? {idx_begin >= 0};
-    ? {idx_end.in_range 0 to upper};
-    ? {ofs >= 0};
-    ? {(ofs + (idx_end - idx_begin)) <= bmp.upper}; 
-    offset := ofs;
-    idx_begin.to idx_end do { n:INTEGER;
-      pixel := bmp.item_ascii offset;
-      storage.item n.copy pixel;
-      offset := offset + 1;
-    };
-  );
-  
-  //
-  // Get.
-  //
-  
-  - item n:INTEGER :PIXEL <-
-  ( ? {n.in_range 0 to upper};
-    
-    storage.item n
-  );
-  
-  - print <-
-  (
-    0.to upper do { i:INTEGER;
-      item i.print;
-    };
-  );
-
diff --git a/lib_os/unix/video_ascii/pixel_ascii.li b/lib_os/unix/video_ascii/pixel_ascii.li
deleted file mode 100644
index 559bd15..0000000
--- a/lib_os/unix/video_ascii/pixel_ascii.li
+++ /dev/null
@@ -1,127 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PIXEL_ASCII;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Version Generic ASCII";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-Section Inherit
-  
-  - parent_pixel:PIXEL := PIXEL;
-  
-Section Mapping
-  
-  + char:CHARACTER;
-  
-Section Public
-  
-  - red:UINTEGER_8 <- 
-  ( + result:UINTEGER_8;
-    
-    char
-    .when ' ' then { result := 31;  }
-    .when '.' then { result := 63;  }  
-    .when '-' then { result := 95;  }
-    .when '=' then { result := 127; }
-    .when '+' then { result := 159; }
-    .when '*' then { result := 191; }
-    .when '%' then { result := 223; } 
-    .when '#' then { result := 255; };
-    result
-  );
-  
-  - green:UINTEGER_8 <- red;
-
-  - blue:UINTEGER_8 <- red;
- 
-  - color col:UINTEGER_32 :UINTEGER_32 <- 
-  ( + gray:UINTEGER_32;
-    
-    gray := ((col >> 16)+ ((col & 00FF00h)>>8)+ ((col & 0000FFh) >> 3))/3;
-    gray
-    .when 0   to 31  then { char := ' '; }
-    .when 32  to 63  then { char := '.'; }  
-    .when 64  to 95  then { char := '-'; }
-    .when 96  to 127 then { char := '='; }
-    .when 128 to 159 then { char := '+'; }
-    .when 160 to 191 then { char := '*'; }
-    .when 192 to 223 then { char := '%'; } 
-    .when 224 to 255 then { char := '#'; };
-    col
-  );
-  
-  - color_rgb (r,g,b:UINTEGER_8) <- 
-  ( + gray:INTEGER;
-    
-    gray := (r.to_integer+g+b)/3;
-    gray
-    .when 0   to 31  then { char := ' '; }
-    .when 32  to 63  then { char := '.'; }  
-    .when 64  to 95  then { char := '-'; }
-    .when 96  to 127 then { char := '='; }
-    .when 128 to 159 then { char := '+'; }
-    .when 160 to 191 then { char := '*'; }
-    .when 192 to 223 then { char := '%'; } 
-    .when 224 to 255 then { char := '#'; };
-  );
-  
-  - size:UINTEGER_8          := 8; 
-  - red_size:UINTEGER_8      := 3;      
-  - red_pos:UINTEGER_8       := 0;
-  - green_size:UINTEGER_8    := 3;
-  - green_pos:UINTEGER_8     := 3;
-  - blue_size:UINTEGER_8     := 2;
-  - blue_pos:UINTEGER_8      := 6;
-  - reserved_size:UINTEGER_8 := 0;
-  - reserved_pos:UINTEGER_8  := 0;
-  
-  - copy other:SELF <-  
-  (
-    color_rgb ((other.red),(other.green),(other.blue));
-  );
-  
-  - print <-
-  (
-    (char=0).if {
-      char:=' ';
-    };
-    char.print;
-  );
-  
-  - set_char c:CHARACTER <-
-  (
-    char := c;
-  );
-
-  - to_pixel_ascii:PIXEL_ASCII <- Self;
-
-
-
-
diff --git a/lib_os/unix/video_ascii/video.li b/lib_os/unix/video_ascii/video.li
deleted file mode 100644
index 127e8ce..0000000
--- a/lib_os/unix/video_ascii/video.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Generic Driver video - Text mode -";
-  
-  - category    := MICRO;
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";
-  
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP_ASCII;
-  
-Section Public
-  
-  - is_active:BOOLEAN;
-  
-  - create <-
-  ( 
-    make (190,80);
-    is_active := TRUE;
-  );
-  
-  - display_screen <-
-  (
-    0.to (height-1) do { y:INTEGER;
-      '|'.print;
-      0.to (width-1) do { x:INTEGER;
-	image.item y.item x.print;
-      };
-      '|'.print;
-      '\n'.print;
-    };
-  );
-
-  - display_screen low:INTEGER to up:INTEGER <-
-  (
-    low.to up do { y:INTEGER;
-      '|'.print;
-      0.to (width-1) do { x:INTEGER;
-	image.item y.item x.print;
-      };
-      '|'.print;
-      '\n'.print;
-    };
-  );
-  
-  - close <-
-  (
-    ? {is_active};
-    is_active := FALSE;
-    ? {! is_active};
-  );
-
-
-
-
-
diff --git a/lib_os/windows/file_system/directory.li b/lib_os/windows/file_system/directory.li
deleted file mode 100644
index 74c05ef..0000000
--- a/lib_os/windows/file_system/directory.li
+++ /dev/null
@@ -1,118 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        :=DIRECTORY;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - bibliography:="http://IsaacOS.com";
-  
-  - author      :="Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - comment     :="Directory management";
-  
-  - external := 
-`
-#include <dirent.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <windows.h>
-WIN32_FIND_DATA data;
-HANDLE hfile;
-`;
-  
-Section Inherit
-  
-  + parent_abstract_directory:Expanded ABSTRACT_DIRECTORY;
-  
-Section Private  
-  
-  //
-  // Physical implementation.
-  //
-  
-  //
-  // Scanning
-  //
-      
-  - physical_refresh:BOOLEAN <-
-  ( + p,n:NATIVE_ARRAY[CHARACTER];
-    + new_entry:ENTRY;
-    + result:BOOLEAN;
-    + i:INTEGER;
-        
-    list.clear;
-    string_tmp.copy path;
-    string_tmp.append "\\*.*";
-    p := string_tmp.to_external;
-    `hfile = FindFirstFile(@p,&data)`;
-    (`hfile != INVALID_HANDLE_VALUE`:BOOLEAN(TRUE,FALSE)).if {
-      result := TRUE;
-      {
-	n := `data.cFileName`:NATIVE_ARRAY[CHARACTER];	
-	string_tmp.clear;
-	i := 0;
-	{n.item i = '\0'}.until_do { 
-	  string_tmp.add_last (n.item i);
-	  i := i + 1;
-	};
-	(string_tmp !== ".".to_string).if {
-	  string_tmp.add_first '/';
-	  string_tmp.prepend path;
-	  reduce_path string_tmp;
-	  new_entry := get_entry string_tmp;
-	  (new_entry = NULL).if {
-	    result := FALSE;
-	  } else {
-	    (new_entry.path.count < path.count).if {
-	      parent := new_entry;
-	    } else {
-	      list.add_last new_entry;
-	    };
-	  };
-	};
-      }.do_while {(`FindNextFile(hfile,&data)`:BOOLEAN(TRUE,FALSE)) && {result}};
-      `FindClose(hfile)`;
-    };
-    result
-  );
-    
-  - physical_make_directory new_path:STRING :BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := new_path.to_external;
-    `mkdir(@p)`:(INTEGER) = 0
-  );
-
-  - physical_make_file new_path:STRING :BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    + stream:POINTER;
-    + result:BOOLEAN;
-    
-    p := new_path.to_external;
-    stream := `fopen((char*)@p,"w+b")`:POINTER;
-    (stream != NULL).if {
-      result := `fclose((FILE*)@stream)`:INTEGER = 0;
-    };
-    result
-  );
-
-  
diff --git a/lib_os/windows/file_system/entry.li b/lib_os/windows/file_system/entry.li
deleted file mode 100644
index 01e2c19..0000000
--- a/lib_os/windows/file_system/entry.li
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ENTRY;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-    
-  - bibliography:= "http://IsaacOS.com";
-
-  - author      := "Benoit Sonntag (bsonntag at loria.fr), Jerome Boutet (boutet at loria.fr)";  
-
-  - comment     := "Entry ANSI";
-  
-  - external := 
-`
-SYSTEMTIME systime;
-WIN32_FIND_DATA data2;
-HANDLE hfile2;
-`;
-  
-Section Inherit
-  
-  + parent_abstract_entry:Expanded ABSTRACT_ENTRY;
-    
-Section Public  
-    
-  //
-  // Physical implementation.
-  //
-
-  - physical_make:BOOLEAN <-
-  ( + pe:NATIVE_ARRAY[CHARACTER];
-    + result:BOOLEAN;
-    
-    pe := path.to_external;
-    `hfile2 = FindFirstFile(@pe,&data2)`;
-    result := `hfile2 != INVALID_HANDLE_VALUE`:BOOLEAN(TRUE,FALSE);
-    (result).if {
-      is_directory := `(data2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0`:BOOLEAN(TRUE,FALSE);
-      `FileTimeToSystemTime(&data2.ftLastAccessTime,&systime)`;
-      access_date := to_date;
-      access_time := to_time;
-      `FileTimeToSystemTime(&data2.ftLastWriteTime,&systime)`;
-      update_date := to_date;
-      update_time := to_time;
-      size := `(data2.nFileSizeHigh << 16)|data2.nFileSizeLow`:UINTEGER_32;
-      `FindClose(hfile2)`;
-    };
-    result
-  );
-  
-  - physical_remove_directory:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `rmdir(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_remove_file:BOOLEAN <-
-  ( + p:NATIVE_ARRAY[CHARACTER];
-    p := path.to_external;
-    `remove(@p)`:(INTEGER) = 0
-  );
-  
-  - physical_rename old_path:ABSTRACT_STRING with new_path:ABSTRACT_STRING :BOOLEAN <-
-  ( + old_p,new_p:NATIVE_ARRAY[CHARACTER];
-    old_p := old_path.to_external;
-    new_p := new_path.to_external;
-    `rename(@old_p, at new_p)`:(INTEGER) = 0
-  );
-  
-Section Private
-  
-  - to_date:DATE <-
-  ( + y:UINTEGER_16;
-    + m,d,wd:UINTEGER_8;
-    
-    y  := `systime.wYear`:UINTEGER_16;
-    m  := `systime.wMonth`:UINTEGER_8;
-    d  := `systime.wDay`:UINTEGER_8;
-    wd := `systime.wDayOfWeek`:UINTEGER_8;
-    DATE.create (y,m,d,wd)
-  );
-  
-  - to_time:TIME <-
-  ( + h,m,s,cs:UINTEGER_8;
-    
-    h  := `systime.wHour`:UINTEGER_8;
-    m  := `systime.wMinute`:UINTEGER_8;
-    s  := `systime.wSecond`:UINTEGER_8;
-    cs := `systime.wMilliseconds/10`:UINTEGER_8;
-    TIME.create (h,m,s,cs) 
-  );
\ No newline at end of file
diff --git a/lib_os/windows/video/event_system.li b/lib_os/windows/video/event_system.li
deleted file mode 100644
index 531ab3d..0000000
--- a/lib_os/windows/video/event_system.li
+++ /dev/null
@@ -1,243 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EVENT_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 - Event System";
-    
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - external :=   
-`  
-/*  
-#include <winuser.h>  
-#include <windowsx.h>  
-*/
-void (*get_event)()=NULL;
-int event_num;
-int event_p1;
-int event_p2;
-int event_p3;
-int event_p4;
-
-unsigned char buf[50];
-
-HDC hdc_glob; 
-LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{ 
-  PAINTSTRUCT ps;
-  HDC hdc_old;
-  RECT rect;
-  int xPos,yPos;
-    switch (uMsg)
-    {
-      // Timer
-      case WM_TIMER:
-      event_num = 13;
-      get_event();
-      return 0;
-      // Create
-      case WM_CREATE:	
-      return 0;
-      
-      // Repaint
-      case WM_PAINT:
-      event_num = 0;
-      hdc_old = hdc_glob;
-      hdc_glob = BeginPaint(hwnd, &ps);
-      event_p1 = ps.rcPaint.left;
-      event_p2 = ps.rcPaint.top;
-      event_p3 = ps.rcPaint.right;
-      event_p4 = ps.rcPaint.bottom;      
-      get_event();	                
-      EndPaint(hwnd, &ps);
-      hdc_glob = hdc_old;
-      return 0;
-      
-      // Destroy
-      case WM_DESTROY:
-      PostQuitMessage(0);
-      exit(0);
-      return 0;
-            
-      // Mouse
-      case WM_MOUSEMOVE:
-      event_num = 1;
-      event_p1 = (short)LOWORD(lParam);
-      event_p2 = (short)HIWORD(lParam);
-      event_p3 = (((wParam & MK_LBUTTON) != 0) << 1) | ((wParam & MK_RBUTTON) != 0);
-      get_event();
-      return 0;
-      case WM_LBUTTONDOWN:
-      event_num = 2;
-      get_event();
-      return 0;
-      case WM_LBUTTONUP: 
-      event_num = 3;
-      get_event();
-      return 0;
-      case WM_RBUTTONDOWN:
-      event_num = 4;
-      get_event();
-      return 0;
-      case WM_RBUTTONUP: 
-      event_num = 5;
-      get_event();
-      return 0;
-      
-      // Keyboard
-      case WM_KEYDOWN: 
-      //sprintf(buf,"KeyDown : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,100,buf,strlen(buf));
-      event_num = 10;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-      
-      case WM_CHAR:
-      //sprintf(buf,"Char : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,120,buf,strlen(buf));
-      event_num = 11;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-      
-      case WM_KEYUP: 
-      //sprintf(buf,"KeyUp : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,140,buf,strlen(buf));
-      event_num = 12;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-
-      default:
-      return DefWindowProc(hwnd, uMsg, wParam, lParam);
-    }
-  }
-`;
-
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Interrupt  
-  
-  - get_physical_event <-
-  ( + p1,p2,p3,p4:INTEGER;
-    
-    p1 := `event_p1`:INTEGER;
-    p2 := `event_p2`:INTEGER;
-    p3 := `event_p3`:INTEGER;
-    p4 := `event_p4`:INTEGER;
-    
-    `event_num`:INTEGER
-    //
-    // Event Window
-    //
-    .when 0 then {
-      // Refresh Linux Window
-      (DESK.physical_screen != NULL).if {
-	DESK.physical_screen.redraw (p1,p2) to (p3,p4);
-      };
-    }
-    //
-    // Event Mouse
-    //
-    .when 1 then {
-      MOUSE.set (p1,p2) with (((p3 & 10b)!=0),((p3 & 01b)!=0));
-    }
-    .when 2 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with (TRUE,(MOUSE.right));
-    }
-    .when 3 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with (FALSE,(MOUSE.right));
-    }
-    .when 4 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with ((MOUSE.left),TRUE);
-    }
-    .when 5 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with ((MOUSE.left),FALSE);
-    }
-    //
-    // Event Keyboard
-    //
-    .when 10 then {
-      // Down
-      KEYBOARD.key (((p2>>16)&0FFh).to_uinteger_8) press TRUE;
-    }
-    .when 11 then {
-      // Char
-      KEYBOARD.key (p1.to_uinteger_8) press FALSE;
-    }
-    //.when 11 then {
-      // Up
-      //KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press FALSE;
-    //}
-    // Timer
-    .when 13 then {      
-      TIMER.timer_interrupt;
-      TIMER.get_event;
-    };
-  );
-  
-Section Public  
-  
-  - sleep n:INTEGER <-
-  // Milisecond
-  (
-    `sleep(@n)`;
-  );
-  
-  - make <-  
-  ( + ptr:POINTER;
-    
-    ptr := get_physical_event;
-    `get_event = @ptr`;
-  );
-    
-  - get_event <-
-  (
-    `
-    GetMessage(&msg_glob, NULL, 0, 0);
-    TranslateMessage(&msg_glob);
-    DispatchMessage(&msg_glob);
-    `;
-  );
-  
-  
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/windows/video/event_system.li~ b/lib_os/windows/video/event_system.li~
deleted file mode 100755
index d7a3d5a..0000000
--- a/lib_os/windows/video/event_system.li~
+++ /dev/null
@@ -1,238 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EVENT_SYSTEM;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 - Event System";
-    
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-  - external :=   
-`  
-void (*get_event)()=NULL;
-int event_num;
-int event_p1;
-int event_p2;
-int event_p3;
-int event_p4;
-
-unsigned char buf[50];
-
-HDC hdc_glob; 
-LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{ 
-  PAINTSTRUCT ps;
-  HDC hdc_old;
-  RECT rect;
-    switch (uMsg)
-    {
-      // Timer
-      case WM_TIMER:
-      event_num = 13;
-      get_event();
-      return 0;
-      // Create
-      case WM_CREATE:	
-      return 0;
-      
-      // Repaint
-      case WM_PAINT:
-      event_num = 0;
-      hdc_old = hdc_glob;
-      hdc_glob = BeginPaint(hwnd, &ps);
-      event_p1 = ps.rcPaint.left;
-      event_p2 = ps.rcPaint.top;
-      event_p3 = ps.rcPaint.right;
-      event_p4 = ps.rcPaint.bottom;      
-      get_event();	                
-      EndPaint(hwnd, &ps);
-      hdc_glob = hdc_old;
-      return 0;
-      
-      // Destroy
-      case WM_DESTROY:
-      PostQuitMessage(0);
-      exit(0);
-      return 0;
-            
-      // Mouse
-      case WM_MOUSEMOVE:
-      event_num = 1;
-      event_p1 = (short)LOWORD(lParam);
-      event_p2 = (short)HIWORD(lParam);
-      event_p3 = (((wParam & MK_LBUTTON) != 0) << 1) | ((wParam & MK_RBUTTON) != 0);
-      get_event();
-      return 0;
-      case WM_LBUTTONDOWN:
-      event_num = 2;
-      get_event();
-      return 0;
-      case WM_LBUTTONUP: 
-      event_num = 3;
-      get_event();
-      return 0;
-      case WM_RBUTTONDOWN:
-      event_num = 4;
-      get_event();
-      return 0;
-      case WM_RBUTTONUP: 
-      event_num = 5;
-      get_event();
-      return 0;
-      
-      // Keyboard
-      case WM_KEYDOWN: 
-      //sprintf(buf,"KeyDown : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,100,buf,strlen(buf));
-      event_num = 10;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-      
-      case WM_CHAR:
-      //sprintf(buf,"Char : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,120,buf,strlen(buf));
-      event_num = 11;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-      
-      case WM_KEYUP: 
-      //sprintf(buf,"KeyUp : %c(%d) ,%lx      ",wParam,wParam,lParam);
-      //TextOutA(hdc_glob,10,140,buf,strlen(buf));
-      event_num = 12;
-      event_p1 = wParam;
-      event_p2 = lParam;
-      get_event();
-      return 0;
-
-      default:
-      return DefWindowProc(hwnd, uMsg, wParam, lParam);
-    }
-  }
-`;
-
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Interrupt  
-  
-  - get_physical_event <-
-  ( + p1,p2,p3,p4:INTEGER;
-    
-    p1 := `event_p1`:INTEGER;
-    p2 := `event_p2`:INTEGER;
-    p3 := `event_p3`:INTEGER;
-    p4 := `event_p4`:INTEGER;
-    
-    `event_num`:INTEGER
-    //
-    // Event Window
-    //
-    .when 0 then {
-      // Refresh Linux Window
-      (DESK.physical_screen != NULL).if {
-	DESK.physical_screen.redraw (p1,p2) to (p3,p4);
-      };
-    }
-    //
-    // Event Mouse
-    //
-    .when 1 then {
-      MOUSE.set (p1,p2) with (((p3 & 10b)!=0),((p3 & 01b)!=0));
-    }
-    .when 2 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with (TRUE,(MOUSE.right));
-    }
-    .when 3 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with (FALSE,(MOUSE.right));
-    }
-    .when 4 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with ((MOUSE.left),TRUE);
-    }
-    .when 5 then {
-      MOUSE.set ((MOUSE.x_current),(MOUSE.y_current)) with ((MOUSE.left),FALSE);
-    }
-    //
-    // Event Keyboard
-    //
-    .when 10 then {
-      // Down
-      KEYBOARD.key (((p2>>16)&0FFh).to_uinteger_8) press TRUE;
-    }
-    .when 11 then {
-      // Char
-      KEYBOARD.key (p1.to_uinteger_8) press FALSE;
-    }
-    //.when 11 then {
-      // Up
-      //KEYBOARD.key `ev.xkey.keycode`:UINTEGER_8 press FALSE;
-    //}
-    // Timer
-    .when 13 then {
-      TIMER.timer_interrupt;
-      TIMER.get_event;
-    };
-  );
-  
-Section Public  
-  
-  - sleep n:INTEGER <-
-  // Milisecond
-  (
-    `sleep(@n)`;
-  );
-  
-  - make <-  
-  ( + ptr:POINTER;
-    
-    ptr := get_physical_event;
-    `get_event = @ptr`;
-  );
-    
-  - get_event <-
-  (
-    `
-    GetMessage(&msg_glob, NULL, 0, 0);
-    TranslateMessage(&msg_glob);
-    DispatchMessage(&msg_glob);
-    `;
-  );
-  
-  
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/windows/video/keyboard.li b/lib_os/windows/video/keyboard.li
deleted file mode 100644
index cc14947..0000000
--- a/lib_os/windows/video/keyboard.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := KEYBOARD;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     :="Windows (Win32) - RSXNT - Keyboard Driver";
-
-  - version := 2;  
-  
-Section Inherit
-
-  + parent_input_keyboard:Expanded INPUT_KEYBOARD;
-
-Section Private
-    
-  - keyup cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-    
-    result := cu;
-    cmd := cmd & 0F7h; // Deactivate the cmd bit    
-    
-    cu
-    .when 8 then  { cmd := cmd | 8; }
-    .when 13 then { cmd := cmd | 8; };
-    
-    
-    result
-  );
-
-  - keydown cu:UINTEGER_8 :UINTEGER_8 <-
-  ( + result:UINTEGER_8;
-
-    cu
-    .when 52h then { result := 'I'.to_uinteger_8; }
-    .when 53h then { result := 'S'.to_uinteger_8; }
-    .when 4Fh then { result := 'E'.to_uinteger_8; }
-    .when 47h then { result := 'B'.to_uinteger_8; }
-    .when 49h then { result := 'A'.to_uinteger_8; }
-    .when 51h then { result := 'Z'.to_uinteger_8; }
-    .when 48h then { result := 'U'.to_uinteger_8; }
-    .when 50h then { result := 'D'.to_uinteger_8; }
-    .when 4Bh then { result := 'L'.to_uinteger_8; }
-    .when 4Dh then { result := 'R'.to_uinteger_8; };
-    cmd := cmd | 8;
-    
-    result
-  );
-    
-
-
-
-
diff --git a/lib_os/windows/video/mouse.li b/lib_os/windows/video/mouse.li
deleted file mode 100644
index 24454fd..0000000
--- a/lib_os/windows/video/mouse.li
+++ /dev/null
@@ -1,185 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := MOUSE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 - Mouse driver";
-    
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  + parent_input:Expanded INPUT;
-  
-Section Public
-  
-  - set (x,y:INTEGER) with (left_new,right_new:BOOLEAN) <-
-  ( + tmp:UINTEGER_8;
-    + x_new, y_new:INTEGER;
-        
-    y_new := y.max y_minimum.min y_maximum;
-    x_new := x.max x_minimum.min x_maximum;
-          
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make (x_new,y_new) button (left_new,right_new);
-
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    
-    get_event;
-    
-    // Update status.
-    x_current:=x_new;
-    y_current:=y_new;
-    right:=right_new;
-    left :=left_new;    
-  );
-  
-Section Public
-  
-  + x_minimum:INTEGER;
-  + x_maximum:INTEGER;
-  
-  + y_minimum:INTEGER;
-  + y_maximum:INTEGER;
-  
-  + x_current:INTEGER;
-  + y_current:INTEGER; 
-  
-  + right:BOOLEAN;
-  + left:BOOLEAN;
-  
-Section Private
-  
-  + buffer_event:FAST_ARRAY[EVENT_MOUSE];
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public
-  
-  //
-  // Creation / Initialisation.
-  //
-  
-  - make <-
-  ( + new_event:EVENT_MOUSE;
-    
-    is_actif := TRUE;
-    //
-    // Mouse hardware configuration.
-    //
-    
-    x_maximum := VIDEO.x_max;
-    y_maximum := VIDEO.y_max;
-    
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_MOUSE].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_MOUSE.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-  );
-  
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_MOUSE;
-    
-    p := p_beg;
-    { p != p_end }.while_do {
-      evt := buffer_event.item p;
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
-    
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  //
-  // Extern robot.
-  //
-  
-  - extern_event_move (x,y:INTEGER) <-
-  (
-    `mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, at x*51, at y*64,0,0)`; 
-    //                                                           *64 // 1024
-    //                                                           *82 // 800
-  );
-
-  - extern_event_left_down <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0)`;
-  );
-
-  - extern_event_left_up <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)`;
-  );
-  
-  - extern_event_right_down <-
-  (
-    `mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0)`;
-  );
-
-  - extern_event_right_up <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)`;
-  );
-  
-  - extern_get_mouse:(INTEGER,INTEGER,BOOLEAN,BOOLEAN) <-
-  ( + x,y,tmp:INTEGER;    
-    + l,r:BOOLEAN;
-    `{ POINT pt; GetCursorPos(&pt)`;
-      x := `pt.x`:INTEGER;
-      y := `pt.y`:INTEGER;
-    `}`; 
-    tmp := `GetKeyState(1)`:INTEGER;
-    l := (tmp != 0) && {tmp !=1};
-    tmp := `GetKeyState(2)`:INTEGER;
-    r := (tmp != 0) && {tmp !=1};
-        
-    x,y,l,r
-  );
-  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/windows/video/mouse.li~ b/lib_os/windows/video/mouse.li~
deleted file mode 100755
index 4746606..0000000
--- a/lib_os/windows/video/mouse.li~
+++ /dev/null
@@ -1,185 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := MOUSE;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "X11 - Mouse driver";
-    
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Benoit Sonntag (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  + parent_input:Expanded INPUT;
-  
-Section Public
-  
-  - set (x,y:INTEGER) with (left_new,right_new:BOOLEAN) <-
-  ( + tmp:UINTEGER_8;
-    + x_new, y_new:INTEGER;
-        
-    y_new := y.max y_minimum.min y_maximum;
-    x_new := x.max x_minimum.min x_maximum;
-          
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make (x_new,y_new) button (left_new,right_new);
-
-    (((tmp+2)&3)!=p_beg).if {
-      p_end:=tmp;
-    };
-    
-    get_event;
-    
-    // Update status.
-    x_current:=x_new;
-    y_current:=y_new;
-    right:=right_new;
-    left :=left_new;    
-  );
-  
-Section Public
-  
-  + x_minimum:INTEGER;
-  + x_maximum:INTEGER;
-  
-  + y_minimum:INTEGER;
-  + y_maximum:INTEGER;
-  
-  + x_current:INTEGER;
-  + y_current:INTEGER; 
-  
-  + right:BOOLEAN;
-  + left:BOOLEAN;
-  
-Section Private
-  
-  + buffer_event:FAST_ARRAY[EVENT_MOUSE];
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public
-  
-  //
-  // Creation / Initialisation.
-  //
-  
-  - make <-
-  ( + new_event:EVENT_MOUSE;
-    
-    is_actif := TRUE;
-    //
-    // Mouse hardware configuration.
-    //
-    
-    x_maximum := VIDEO.x_max;
-    y_maximum := VIDEO.y_max;
-    
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_MOUSE].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_MOUSE.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-  );
-  
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_MOUSE;
-    
-    p := p_beg;
-    { p != p_end }.while_do {
-      evt := buffer_event.item p;
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
-    
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  //
-  // Extern robot.
-  //
-  
-  - extern_event_move (x,y:INTEGER) <-
-  (
-    `mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, at x*51, at y*82,0,0)`; 
-    //                                                           *64 // 1024
-    //                                                           *82 // 800
-  );
-
-  - extern_event_left_down <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0)`;
-  );
-
-  - extern_event_left_up <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)`;
-  );
-  
-  - extern_event_right_down <-
-  (
-    `mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0)`;
-  );
-
-  - extern_event_right_up <-
-  (
-    `mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)`;
-  );
-  
-  - extern_get_mouse:(INTEGER,INTEGER,BOOLEAN,BOOLEAN) <-
-  ( + x,y,tmp:INTEGER;    
-    + l,r:BOOLEAN;
-    `{ POINT pt; GetCursorPos(&pt)`;
-      x := `pt.x`:INTEGER;
-      y := `pt.y`:INTEGER;
-    `}`; 
-    tmp := `GetKeyState(1)`:INTEGER;
-    l := (tmp != 0) && {tmp !=1};
-    tmp := `GetKeyState(2)`:INTEGER;
-    r := (tmp != 0) && {tmp !=1};
-        
-    x,y,l,r
-  );
-  
-
-
-
-
-
-
-
-
-
diff --git a/lib_os/windows/video/timer.li b/lib_os/windows/video/timer.li
deleted file mode 100644
index 377c69f..0000000
--- a/lib_os/windows/video/timer.li
+++ /dev/null
@@ -1,106 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := TIMER;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment :="Windows - Timer management.";
-
-  - version := 1;  
-    
-Section Inherit  
-  
-  + parent_input:Expanded INPUT;
-  
-Section Private
-  
-  - timer_count:UINTEGER_32;
-  
-  + buffer_event:FAST_ARRAY[EVENT_TIMER];
-  
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public  
-  
-  - timer_interrupt <-  
-  ( + tmp:UINTEGER_8;     
-    
-    timer_count := timer_count + 1;
-    
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make timer_count; 
-    (((tmp+2)&3) !=p_beg).if {
-      p_end:=tmp;
-    };    
-  );
-  
-Section Public
-
-  - make <-
-  ( + new_event:EVENT_TIMER;
-    
-    is_actif := TRUE;
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_TIMER].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_TIMER.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-    
-    //hdle := timer_interrupt;    
-        
-    `SetTimer(hwnd_glob, 0, 50, NULL)`;
-  );
-
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-  
-  - clear <-
-  (
-    p_beg := p_end;
-  );
-
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_TIMER;
-    
-    p := p_beg;
-    { p != p_end }.while_do {
-      evt := buffer_event.item p;
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-        buffer_event.item p.set_destination NULL;
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
diff --git a/lib_os/windows/video/timer.li~ b/lib_os/windows/video/timer.li~
deleted file mode 100755
index 1d8bbbc..0000000
--- a/lib_os/windows/video/timer.li~
+++ /dev/null
@@ -1,101 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-
-  + name    := TIMER;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-
-  - comment :="Windows - Timer management.";
-
-  - version := 1;  
-    
-Section Inherit  
-  
-  + parent_input:Expanded INPUT;
-  
-Section Private
-  
-  - timer_count:UINTEGER_32;
-  
-  + buffer_event:FAST_ARRAY[EVENT_TIMER];
-  
-  - p_beg:UINTEGER_8;  // Pointer on the buffer (beginning)
-  
-  - p_end:UINTEGER_8;  // Pointer on the buffer (end)
-    
-Section Public  
-  
-  - timer_interrupt <-  
-  ( + tmp:UINTEGER_8;     
-    
-    timer_count := timer_count + 1;
-    
-    tmp:=(p_end+1)&003h;
-    buffer_event.item p_end.make timer_count; 
-    (((tmp+2)&3) !=p_beg).if {
-      p_end:=tmp;
-    };    
-  );
-  
-Section Public
-
-  - make <-
-  ( + new_event:EVENT_TIMER;
-    
-    is_actif := TRUE;
-    //
-    // Software configuration.
-    //
-    buffer_event := FAST_ARRAY[EVENT_TIMER].create 4;
-    0.to 3 do { j:INTEGER;
-      new_event := EVENT_TIMER.clone;
-      buffer_event.put new_event to j;
-      (j != 0).if {
-	new_event.set_prev (buffer_event.item (j-1));
-      };
-    };
-    buffer_event.first.set_prev new_event;
-    
-    //hdle := timer_interrupt;    
-        
-    `SetTimer(hwnd_glob, 0, 50, NULL)`;
-  );
-
-  - acknowledge <-
-  (
-    p_beg := (p_beg+1) & 03h;
-  );
-
-  - get_event <-
-  ( + p:INTEGER;
-    + evt:EVENT_TIMER;
-    
-    p := p_beg;
-    { p != p_end }.while_do {
-      evt := buffer_event.item p;
-      (list_client.lower).to (list_client.upper) do { j:INTEGER;
-        buffer_event.item p.set_destination NULL;
-	list_client.item j.receive (buffer_event.item p);
-      };      
-      p := (p + 1) & 03h;
-    };    
-  );
diff --git a/lib_os/windows/video/video.li b/lib_os/windows/video/video.li
deleted file mode 100644
index c67e29b..0000000
--- a/lib_os/windows/video/video.li
+++ /dev/null
@@ -1,224 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Video Driver for Windows";
-
-  - external := 
-`
-#include <windows.h>
-#define main main_std
-
-#define __BEGIN_INTERRUPT__ 
-#define __END_INTERRUPT__
-
-#define lstat stat
-
-HDC screen;
-HWND hwnd_glob;
-MSG msg_glob;
-WNDCLASS wc_glob;
-HPEN pen;
-
-HDC hdcbmp;
-HBITMAP Bmp;
-BITMAP bm;
-
-HINSTANCE hInstance_glob;
-int nCmdShow_glob;
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
-LPSTR lpCmdLine, int nCmdShow)
-{
-  hInstance_glob = hInstance;
-  nCmdShow_glob  = nCmdShow;
-  main(0,NULL);
-  return 0;
-}; 
-`;
-
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP[PIXEL_24];
-  
-Section Public
-  // Section VIDEO
-  
-  - line_tmp:ABSTRACT_BMP_LINE;  
-  
-Section Public
-  
-  - screen_width:INTEGER  := 1280; // BSBS: A revoir!!!
-  - screen_height:INTEGER := 1024; // BSBS: A revoir!!!
-  
-  - type:STRING_CONSTANT := "windows";
-  
-  - message str:ABSTRACT_STRING <-
-  ( + msg:NATIVE_ARRAY[CHARACTER];
-    msg := str.to_external;
-    `MessageBox(hwnd_glob, at msg, "Message", MB_OK)`;
-  );
-    
-  - is_active:BOOLEAN;
-  
-  - planes:UINTEGER_32;  
-  
-  - size_pixel:INTEGER;
-  
-  - make (w,h:INTEGER) <-
-  ( 
-    // Init BITMAP:
-    width  := w;
-    height := h;
-    
-    EVENT_SYSTEM.make;
-    `
-    wc_glob.style = 0;
-    wc_glob.lpfnWndProc = MainWndProc;
-    wc_glob.cbClsExtra = 0;
-    wc_glob.cbWndExtra = 0;
-    wc_glob.hInstance = NULL;
-    wc_glob.hIcon = LoadIcon(NULL, IDI_APPLICATION);
-    wc_glob.hCursor = LoadCursor(NULL, IDC_ARROW);
-    wc_glob.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
-    wc_glob.lpszMenuName =  NULL;
-    wc_glob.lpszClassName = "IsaacClass";
-
-    RegisterClass(&wc_glob);
-
-    hwnd_glob = CreateWindow("IsaacClass", "Win-Isaac", WS_OVERLAPPEDWINDOW,
-                                   CW_USEDEFAULT, CW_USEDEFAULT, @w+8, @h+34,
-                                                   NULL, NULL, hInstance_glob, NULL);
-    hdc_glob = GetDC(hwnd_glob);
-    ShowWindow(hwnd_glob, nCmdShow_glob);
-    UpdateWindow(hwnd_glob);
-    
-    //pen = CreatePen(PS_SOLID,1,0x151515);
-    //SelectObject(hdc_glob,pen);
-    
-    
-    hdcbmp = CreateCompatibleDC(hdc_glob);
-    `;
-    
-    planes := `GetDeviceCaps(hdc_glob, BITSPIXEL) * GetDeviceCaps(hdc_glob, PLANES)`:UINTEGER_32;
-
-    planes
-    .when 15 then {
-      size_pixel := 2;
-      line_tmp := BMP_LINE[PIXEL_15].create w;
-      `Bmp = CreateBitmap(@w, 1, 1, 15, NULL)`;
-    }
-    .when 16 then { 
-      size_pixel := 2;
-      line_tmp := BMP_LINE[PIXEL_16].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 16, NULL)`;
-    }
-    .when 24 then { 
-      size_pixel := 3;
-      line_tmp := BMP_LINE[PIXEL_24].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 24, NULL)`;
-    }
-    .when 32 then { 
-      size_pixel := 4;
-      line_tmp := BMP_LINE[PIXEL_32].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 32, NULL)`;
-    };
-    `SelectObject(hdcbmp, Bmp)`;
-    is_active := TRUE;
-  );
-  
-  - auto_make <-
-  (
-    make (800,600);
-  );
-  
-  - close <-
-  (
-    ? {is_active};
-    is_active := FALSE;
-    ? {! is_active};
-  );
-  
-Section Public
-  
-  // 
-  // Redefine Low level Bitmap.
-  //
-  
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    real_col := ((col>>16) & 0000FFh) | ((col<<16) & 0FF0000h) | (col & 00FF00h);
-    `SetPixel(hdc_glob, at x, at y, at real_col)`;    
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + pen:UINTEGER_32;
-    real_col := ((col>>16) & 0000FFh) | ((col<<16) & 0FF0000h) | (col & 00FF00h);
-    pen := `CreatePen(PS_SOLID,1, at real_col)`:UINTEGER_32;
-    `SelectObject(hdc_glob,(HPEN)@pen)`;
-    `MoveToEx(hdc_glob, at x, at y,NULL)`;
-    `LineTo(hdc_glob, at x1+1, at y)`;
-    `DeleteObject((HPEN)@pen)`;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + len:INTEGER;
-    + data:NATIVE_ARRAY[UINTEGER_8];
-    + sz_pix:INTEGER;
-    len := x1 - x;
-    VIDEO.line_tmp.put line offset ofs from 0 to len;
-    
-    sz_pix := VIDEO.size_pixel;
-    data := VIDEO.line_tmp.get_storage;
-    `SetBitmapBits(Bmp,(@len+1)*@sz_pix, at data)`;    
-    `BitBlt(hdc_glob, @x, @y, at len+1,1, hdcbmp, 0, 0, SRCCOPY)`;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    not_yet_implemented;
-  );
-  
-  //
-  // Frame buffer.
-  //
-  
-  - open_frame_buffer <-
-  (
-    `screen = CreateDC("DISPLAY", "", "", NULL)`;
-  );
-  
-  - get_pixel_screen (x,y:INTEGER) :UINTEGER_32 <-
-  ( + result:UINTEGER_32;
-    result := `GetPixel(screen, at x, at y)`:UINTEGER_32;
-    (result >> 16) | (result & 00FF00h) | ((result & 0FFh) << 16)
-  );
-
-  - set_pixel_screen (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + c:UINTEGER_32;
-    c := (col >> 16) | (col & 00FF00h) | ((col & 0FFh) << 16);
-    `SetPixel(screen, at x, at y, at c)`;
-  );
\ No newline at end of file
diff --git a/lib_os/windows/video/video.li~ b/lib_os/windows/video/video.li~
deleted file mode 100755
index a1a4e21..0000000
--- a/lib_os/windows/video/video.li~
+++ /dev/null
@@ -1,224 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac OS Library                              //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := VIDEO;
-
-  - copyright   := "2003-2005 Jérome Boutet, 2003-2007 Benoit Sonntag";
-  
-  - comment     := "Video Driver for Windows";
-
-  - external := 
-`
-#include <windows.h>
-#define main main_std
-
-#define __BEGIN_INTERRUPT__ 
-#define __END_INTERRUPT__
-
-#define lstat stat
-
-HDC screen;
-HWND hwnd_glob;
-MSG msg_glob;
-WNDCLASS wc_glob;
-HPEN pen;
-
-HDC hdcbmp;
-HBITMAP Bmp;
-BITMAP bm;
-
-HINSTANCE hInstance_glob;
-int nCmdShow_glob;
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
-LPSTR lpCmdLine, int nCmdShow)
-{
-  hInstance_glob = hInstance;
-  nCmdShow_glob  = nCmdShow;
-  main(0,NULL);
-  return 0;
-}; 
-`;
-
-Section Inherit
-  
-  + parent_bitmap:Expanded BITMAP[PIXEL_24];
-  
-Section Public
-  // Section VIDEO
-  
-  - line_tmp:ABSTRACT_BMP_LINE;  
-  
-Section Public
-  
-  - screen_width:INTEGER := 1280; // BSBS: A revoir!!!
-  - screen_height:INTEGER := 1024; // BSBS: A revoir!!!
-  
-  - type:STRING_CONSTANT := "windows";
-  
-  - message str:ABSTRACT_STRING <-
-  ( + msg:NATIVE_ARRAY[CHARACTER];
-    msg := str.to_external;
-    `MessageBox(hwnd_glob, at msg, "Message", MB_OK)`;
-  );
-    
-  - is_active:BOOLEAN;
-  
-  - planes:UINTEGER_32;  
-  
-  - size_pixel:INTEGER;
-  
-  - make (w,h:INTEGER) <-
-  ( 
-    // Init BITMAP:
-    width  := w;
-    height := h;
-    
-    EVENT_SYSTEM.make;
-    `
-    wc_glob.style = 0;
-    wc_glob.lpfnWndProc = MainWndProc;
-    wc_glob.cbClsExtra = 0;
-    wc_glob.cbWndExtra = 0;
-    wc_glob.hInstance = NULL;
-    wc_glob.hIcon = LoadIcon(NULL, IDI_APPLICATION);
-    wc_glob.hCursor = LoadCursor(NULL, IDC_ARROW);
-    wc_glob.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
-    wc_glob.lpszMenuName =  NULL;
-    wc_glob.lpszClassName = "IsaacClass";
-
-    RegisterClass(&wc_glob);
-
-    hwnd_glob = CreateWindow("IsaacClass", "Win-Isaac", WS_OVERLAPPEDWINDOW,
-                                   CW_USEDEFAULT, CW_USEDEFAULT, @w+8, @h+34,
-                                                   NULL, NULL, hInstance_glob, NULL);
-    hdc_glob = GetDC(hwnd_glob);
-    ShowWindow(hwnd_glob, nCmdShow_glob);
-    UpdateWindow(hwnd_glob);
-    
-    //pen = CreatePen(PS_SOLID,1,0x151515);
-    //SelectObject(hdc_glob,pen);
-    
-    
-    hdcbmp = CreateCompatibleDC(hdc_glob);
-    `;
-    
-    planes := `GetDeviceCaps(hdc_glob, BITSPIXEL) * GetDeviceCaps(hdc_glob, PLANES)`:UINTEGER_32;
-
-    planes
-    .when 15 then {
-      size_pixel := 2;
-      line_tmp := BMP_LINE[PIXEL_15].create w;
-      `Bmp = CreateBitmap(@w, 1, 1, 15, NULL)`;
-    }
-    .when 16 then { 
-      size_pixel := 2;
-      line_tmp := BMP_LINE[PIXEL_16].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 16, NULL)`;
-    }
-    .when 24 then { 
-      size_pixel := 3;
-      line_tmp := BMP_LINE[PIXEL_24].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 24, NULL)`;
-    }
-    .when 32 then { 
-      size_pixel := 4;
-      line_tmp := BMP_LINE[PIXEL_32].create w; 
-      `Bmp = CreateBitmap(@w, 1, 1, 32, NULL)`;
-    };
-    `SelectObject(hdcbmp, Bmp)`;
-    is_active := TRUE;
-  );
-  
-  - auto_make <-
-  (
-    make (800,600);
-  );
-  
-  - close <-
-  (
-    ? {is_active};
-    is_active := FALSE;
-    ? {! is_active};
-  );
-  
-Section Public
-  
-  // 
-  // Redefine Low level Bitmap.
-  //
-  
-  - pixel_hard (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    real_col := ((col>>16) & 0000FFh) | ((col<<16) & 0FF0000h) | (col & 00FF00h);
-    `SetPixel(hdc_glob, at x, at y, at real_col)`;    
-  );
-  
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER color col:UINTEGER_32 <-
-  ( + real_col:UINTEGER_32;
-    + pen:UINTEGER_32;
-    real_col := ((col>>16) & 0000FFh) | ((col<<16) & 0FF0000h) | (col & 00FF00h);
-    pen := `CreatePen(PS_SOLID,1, at real_col)`:UINTEGER_32;
-    `SelectObject(hdc_glob,(HPEN)@pen)`;
-    `MoveToEx(hdc_glob, at x, at y,NULL)`;
-    `LineTo(hdc_glob, at x1+1, at y)`;
-    `DeleteObject((HPEN)@pen)`;
-  );
-    
-  - line_h_hard (x,y:INTEGER) until x1:INTEGER 
-  image line:ABSTRACT_BMP_LINE offset ofs:INTEGER <-
-  ( + len:INTEGER;
-    + data:NATIVE_ARRAY[UINTEGER_8];
-    + sz_pix:INTEGER;
-    len := x1 - x;
-    VIDEO.line_tmp.put line offset ofs from 0 to len;
-    
-    sz_pix := VIDEO.size_pixel;
-    data := VIDEO.line_tmp.get_storage;
-    `SetBitmapBits(Bmp,(@len+1)*@sz_pix, at data)`;    
-    `BitBlt(hdc_glob, @x, @y, at len+1,1, hdcbmp, 0, 0, SRCCOPY)`;
-  );
-  
-  - get_pixel_hard (x,y:INTEGER) :PIXEL <-
-  (
-    not_yet_implemented;
-  );
-  
-  //
-  // Frame buffer.
-  //
-  
-  - open_frame_buffer <-
-  (
-    `screen = CreateDC("DISPLAY", "", "", NULL)`;
-  );
-  
-  - get_pixel_screen (x,y:INTEGER) :UINTEGER_32 <-
-  ( + result:UINTEGER_32;
-    result := `GetPixel(screen, at x, at y)`:UINTEGER_32;
-    (result >> 16) | (result & 00FF00h) | ((result & 0FFh) << 16)
-  );
-
-  - set_pixel_screen (x,y:INTEGER) color col:UINTEGER_32 <-
-  ( + c:UINTEGER_32;
-    c := (col >> 16) | (col & 00FF00h) | ((col & 0FFh) << 16);
-    `SetPixel(screen, at x, at y, at c)`;
-  );
\ No newline at end of file
diff --git a/path.li b/path.li
deleted file mode 100644
index 11b0fae..0000000
--- a/path.li
+++ /dev/null
@@ -1,251 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                            Lisaac Installer                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-
-  // Lisaac Path Directory System (by Benoit Sonntag).
-  //
-  // Note:
-  // =====
-  //  This file is not a Lisaac prototype. 
-  //  It's define the profile path directory for to compile code, with a target.
-  //  `+' : append new string variable. 
-  //  `-' : append new directory. 
-  //  `*' : execute command after compilation. 
-  //
-  // Warning: 
-  // ========
-  //   - `lisaac' is environment variable value.
-  //   - `input_file' is input file name value.
-  //   - `output_file' is output file name value.
-  //   - `target' is a target value.
-  
-Section DEFAULT  
-
-  + target := UNIX;
-
-Section COMPILER, SHORTER
-  
-  + source  := lisaac + "src/";
-  
-  - source + "tools/";
-  - source + "type/";
-  - source + "item/";
-  - source + "constant/";
-  - source + "variable/";
-  - source + "external/";
-  - source + "external/logic/";
-  - source + "external/arithmetic/";
-  - source + "external/comparison/";
-  - source + "dispatcher/";
-  - source + "context/";
-  - source + "code_life/";
-  - source + "lip/";
-  
-Section COMPILER, SHORTER
-  
-  * "gcc " + input_file + " -o " + output_file;  
-  
-Section COMPILER
-    
-  - source + "compiler_any/";
-  
-Section SHORTER
-
-  - source + "shorter_any/";
-  
-  * "cp shorter ../bin/.";
-  * "cp shorter.c ../bin/.";
-  
-Section Common
-  // Always valid path.
-  
-  + option_gcc := " ";
-  
-  + lib    := lisaac + "lib/";
-  + lib_os := lisaac + "lib_os/";
-  
-  + unix    := lib_os + "unix/";
-  + windows := lib_os + "windows/";
-  + dos     := lib_os + "dos/";
-    
-  // Standard library:
-  - lib + "base/";
-  - lib + "base/low_level/";
-  - lib + "collection/";
-  - lib + "collection/low_level/";
-  - lib + "file_system/";
-  - lib + "format/";
-  - lib + "format/ai/";
-  - lib + "format/bmp/";
-  - lib + "graphics/";
-  - lib + "graphics/low_level/";
-  - lib + "gui/";
-  - lib + "gui/clipping/";
-  - lib + "gui/event/";
-  - lib + "gui/input/";
-  - lib + "gui/low_level/";
-  - lib + "io/";  
-  - lib + "kernel/";
-  - lib + "memory/";
-  - lib + "number/";
-  - lib + "number/low_level/";
-  - lib + "string/";
-  - lib + "system/";
-  - lib + "time/";
-  
-  //- lisaac + "example/gui/desktop";
-  
-  + application := lisaac + "example/";
-
-  - application + "su_doku/";
-  - application + "tetris/";
-  - application + "fouronline/";
-  - application + "shell/";
-  - application + "gui/calculator/";
-  - application + "gui/viewer/";
-  - application + "gui/about/";
-  - application + "gui/clock/";
-  - application + "gui/desktop/";
-  - application + "gui/mpg2/";
-  - application + "demomaker/rotozoom/";
-  - application + "demomaker/glass/";
-  - application + "demomaker/fire/";
-
-
-  - application + "cortex/combina/";
-  - application + "cortex/capnclic/";
-  - application + "cortex/gameduel/";
-  - application + "cortex/bejeweled/";
-  - application + "cortex/kbejeweled/";
-  - application + "cortex/bigmoney/";
-  - application + "cortex/midasminer/";
-  - application + "cortex/chuzzle/";
-  
-  - application + "cortex-3.0/video/";
-  - application + "cortex-3.0/minus/";
-
-  
-
-Section UNIX, DOS, COMPILER, SHORTER
-
-  - unix   + "system/";
-  - unix   + "file_system/";
-  
-Section UNIX
-    
-  + path_lib_x11 := "/usr/lib";
-  
-  - unix   + "video/";
-  
-  //  * "gcc " + input_file + " -O3 -fomit-frame-pointer -lm -lX11 -lXtst -o " + 
-  //  * "gcc " + input_file + " -lm  -o " + 
-  * "gcc " + input_file + " -lm -lX11 -lXtst -o " + 
-    output_file + " -L" + path_lib_x11 + option_gcc;
-
-  //* "gcc -D_ISOC9X_SOURCE -O3 -mfpmath=sse -msse2 -march=pentium4 -ffast-math -funroll-loops -o " +
-  //output_file + " " + input_file + " -lm";
-  
-  //* "gcc -D_ISOC9X_SOURCE -O3 -mfpmath=sse -msse2 -march=pentium4 -ffast-math -funroll-loops -o " +
-  //"mandelbrot_c mandelbrot_c.c -lm";
-  
-Section WINDOWS
-  
-  - unix   + "system/";
-  - windows + "file_system/";
-  - unix   + "file_system/";
-  - windows + "video/";
-  
-  * "gcc " + input_file + " -o " + output_file + ".exe -lgdi32 " + option_gcc;    
-  
-Section DOS  
-  
-  - dos + "file_system/";
-  - dos + "video/";
-  
-  * "gcc " + input_file + " -o " + output_file + ".exe " + option_gcc; 
-  
-// ********************************  
-//            ISAAC  
-// ********************************
-Section X86, IPAQ, ST2XX, LINUX
-  //
-  // Standard.
-  //
-  
-  + isaac := "/home/sonntag/svn/isaacos/trunk/isaacos/";  
-
-  // File System
-  
-  - isaac + "file_system";
-  - isaac + "file_system/physical";
-  - isaac + "file_system/fat";
-  - isaac + "file_system/fat/partition";
-  - isaac + "file_system/ext2";
-  - isaac + "file_system/ext2/partition";
-  
-Section X86  
-  
-  + machine := isaac + "x86/";
-  
-  - machine + "memory/";
-  
-  * "gcc -specs=" + isaac + "tool/gcc/x86/specs " + input_file + " -o " + output_file;
-  * isaac+"tool/elf2eof/elf2eof -p 2048 "+output_file+" -prepend "+isaac+"x86/bootloader/startup.com";
-  
-
-Section IPAQ  
-  
-  + machine := isaac + "ipaq/";
-  
-  * "arm-linux-gcc -specs="+isaac+"tool/gcc/ipaq/specs -nostdlib " + input_file + " -O3 -o " + output_file;
-  * isaac+"tool/elf2eof/elf2eof -f " + output_file + " -append "+isaac+"image/isaac.ai "+isaac+"image/newton.bmp";
-  
-Section ST2XX  
-  
-  + machine := isaac + "st2xx/";
-  
-  
-//  * "/home/sonntagb/lxbe/le/bin/gcc entry_isaac.s -c";
-  * "/home/sonntagb/lxbe/le/bin/gcc " + input_file + " -c";
-  * "/home/sonntagb/lxbe/le/bin/ld -EL "+output_file+".o -o "+output_file+" -T../tool/gcc/st2xx/isaac.x";
-
-Section LINUX  
-  
-  - unix   + "system/";
-  - unix   + "file_system/";
-  + machine := isaac + "linux/";
-  
-  // Specific directory
-  
-  * "gcc -L/usr/X11R6/lib -lX11 -lXext " + input_file + " -o " + output_file;
-  
-Section IPAQ, X86, ST2XX, LINUX
-    
-  //
-  // Specific machine.
-  //
-
-  - machine + "driver/";
-  - machine + "driver/clock";
-  - machine + "driver/keyboard";
-  - machine + "driver/mouse";
-  - machine + "driver/video";
-  
-  - machine + "system/";
diff --git a/src/.gitignore b/src/.gitignore
deleted file mode 100644
index aa32382..0000000
--- a/src/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-lisaac.c
-lisaac
-lisaac.exe
diff --git a/src/any.li b/src/any.li
deleted file mode 100644
index 2ef47be..0000000
--- a/src/any.li
+++ /dev/null
@@ -1,360 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ANY;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Common parent for compiler";
-  
-Section Inherit
-  
-  - parent_any_option:ANY_OPTION := ANY_OPTION;
-  
-Section Public
-  
-  //
-  // Invariant loop system.
-  //
-  - count_invariant:INTEGER;
-  
-  - loop_list:LIST; 
-  - loop_seq_index:INTEGER;
-  - loop_seq_call_local_and_loop:INTEGER;
-  - loop_seq_call_and_loop:INTEGER;
-  - loop_invariant:LOOP;
-  
-  //
-	
-  - late_binding_counter:INTEGER;
-  
-  - null_counter:INTEGER;
-  
-  - polymorphic_counter:INTEGER;
-  
-  //
-  // Display debug tools.
-  //
-    
-  + object_id:INTEGER <- 
-  ( + result:INTEGER;
-    - object_counter:INTEGER; 
-    
-    result := object_counter;
-    object_counter := object_counter + 1;
-    object_id := result
-  );
-
-  //
-  // Compiler Options.
-  //
-  
-  - debug_level_option:INTEGER;  
-  - debug_with_code:BOOLEAN;
-  
-  - is_all_warning:BOOLEAN;
-  
-  - is_optimization:BOOLEAN;    
-  - inline_level:INTEGER := 17;
-  
-  - is_java:BOOLEAN; // Fuck the Java!
-  
-  - is_statistic:BOOLEAN;  
-  - is_quiet:BOOLEAN;
-  
-  //
-  //
-  //
-     
-  - verbose_level:INTEGER;
-  - is_verbose:BOOLEAN <- (verbose_level != 0);
-
-  //
-  // Other flags.
-  //
-  
-  - is_cop:BOOLEAN;
-  
-  - is_copy_local:BOOLEAN;
-  
-  - pass_count:INTEGER;
-  
-  - modify_count:INTEGER;
-  
-  - new_depend_pass <-
-  (    
-    modify_count := modify_count + 1;
-    //(pass_count > 50).if {
-    //  crash;
-    //};
-  );
-  
-  - new_execute_pass <- new_depend_pass;
-  
-  - is_executing_pass:BOOLEAN;
-  
-  //
-  // Sequence counter.
-  //
-  
-  - seq_inline:UINTEGER_32;
-  
-  - seq_index              :UINTEGER_32; // Global index sequence.
-  - seq_or_and             :UINTEGER_32; // || or &&  
-  - seq_call_and_loop      :UINTEGER_32; // Call or loop (or function).
-  - seq_call_local_and_loop:UINTEGER_32; // Call sensitive or loop.
-  - seq_list:FAST_ARRAY[LIST] := FAST_ARRAY[LIST].create_with_capacity 64;
-  
-  - is_seq_list l:LIST :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    
-    j := seq_list.upper;
-    {(j >= seq_list.lower) && {! result}}.while_do {
-      result := seq_list.item j = l;
-      j := j - 1;
-    };
-    result
-  );
-        
-  //
-  // Runtime.
-  //
-  
-  - list_main:LIST;
-  - context_main:LOCAL;
-  
-  - list_current:LIST;
-    
-  - stack_local:FAST_ARRAY[LOCAL]  := FAST_ARRAY[LOCAL].create_with_capacity 64;  
-  
-  - profil_slot:PROFIL_SLOT; // Principal slot.
-  - profil_current:PROFIL;   // Sub-profil or (profil = profil_slot)
-     
-  - display_stack_local <-
-  (
-    string_tmp.clear;
-    (stack_local.lower).to (stack_local.upper) do { j:INTEGER;
-      stack_local.item j.display string_tmp;
-      string_tmp.add_last '\n';
-    };
-    string_tmp.print;
-  );
-  
-  //
-  // Output Buffer and service.
-  //
-  
-  - var_size:FAST_ARRAY[FAST_ARRAY[LOCAL]] :=
-  ( + result:FAST_ARRAY[FAST_ARRAY[LOCAL]];
-    
-    result := FAST_ARRAY[FAST_ARRAY[LOCAL]].create_with_capacity 4;
-    0.to 3 do { j:INTEGER;
-      result.add_last (FAST_ARRAY[LOCAL].create_with_capacity 32);
-    };
-    result
-  );
-  
-  - add_var_size v:LOCAL <-
-  ( + tab:FAST_ARRAY[LOCAL];
-    + j:INTEGER;
-    + t:TYPE_FULL;
-    
-    ? {v.style = '+'};
-    
-    (v.style != '+').if {
-      v.intern_name.print; " style [".print; v.style.print; "] ".print;
-      '\n'.print;
-      warning_error (v.position,"BUG ANY.add_var_size Error");
-    };
-    // BSBS: C'est pas top, avec des HASHED_SET ce serait mieux...
-    t := v.type;
-    tab := var_size.item (v.type.size);
-    j := tab.lower;    
-    {(j <= tab.upper) && {tab.item j.type != t}}.while_do {
-      j := j + 1;
-    };
-    (j > tab.upper).if {
-      tab.add_last v;
-    } else {
-      {(j <= tab.upper) && {tab.item j != v} && {tab.item j.type = t}}.while_do {
-	j := j + 1;
-      };
-      ((j > tab.upper) || {tab.item j != v}).if {
-	tab.add v to j;	
-      };
-    };
-  );
-  
-  - output_decl:STRING := STRING.create 60000;
-  - output_glob:STRING := STRING.create 10000;
-  - output_code:STRING := STRING.create 4000000;
-  
-  - title txt:STRING_CONSTANT in buf:STRING <-
-  (
-    buf.append "\n//";
-    3.to 28 do { j:INTEGER;
-      buf.add_last '=';      
-    };
-    buf.append "//\n// ";
-    buf.append txt;
-    (txt.count+5).to 28 do { j:INTEGER;
-      buf.add_last ' ';
-    };
-    buf.append " //\n//";
-    3.to 28 do { j:INTEGER;
-      buf.add_last '=';      
-    };
-    buf.append "//\n\n";
-  );
-  
-  
-  - indent:STRING := STRING.create 128;
-
-  - operator typ:ABSTRACT_STRING name op:ABSTRACT_STRING :STRING_CONSTANT <-
-  ( + c:CHARACTER;
-    string_tmp.copy typ;
-    (op.lower).to (op.upper) do { j:INTEGER;
-      c:=op.item j;
-      (c = '+').if {
-	string_tmp.append "_add";
-      }.elseif { c = '-' } then {
-	string_tmp.append "_sub";
-      }.elseif { c = '~' } then {
-	string_tmp.append "_logicnot";
-      }.elseif { c = '!' } then {
-	string_tmp.append "_not";
-      }.elseif { c = '/' } then {
-	string_tmp.append "_div";
-      }.elseif { c = '*' } then {
-	string_tmp.append "_mul";
-      }.elseif { c = '^' } then {
-	string_tmp.append "_xor";
-      }.elseif { c = '%' } then { 
-	string_tmp.append "_mod";
-      }.elseif { c = '>' } then {
-	string_tmp.append "_greater";
-      }.elseif { c = '<' } then {
-	string_tmp.append "_less";
-      }.elseif { c = '=' } then {
-	string_tmp.append "_equal";
-      }.elseif { c = '\\' } then {
-	string_tmp.append "_notdiv";
-      }.elseif { c = '|' } then {
-	string_tmp.append "_or";
-      }.elseif { c = '&' } then {
-	string_tmp.append "_and";
-      }.elseif { c = '$' } then {
-	string_tmp.append "_dollar";
-      }.elseif { c = '#' } then {
-	string_tmp.append "_diese";
-      }.elseif { c = '@' } then {
-	string_tmp.append "_at";
-      }.elseif { c = '?' } then {
-	string_tmp.append "_ask";
-      };
-    };
-    ALIAS_STR.get string_tmp
-  );
-
-  //
-  // Error manager.
-  //
-  
-  - syntax  :INTEGER := 0;
-  - semantic:INTEGER := 1;
-  - warning :INTEGER := 2;
-  - message :INTEGER := 3;
-
-  - syntax_error (pos:POSITION,txt:ABSTRACT_STRING) <-
-  (
-    pos.put_error syntax text txt;
-    pos.put_position;
-    POSITION.send_error;
-  );
-
-  - semantic_error (pos:POSITION,txt:ABSTRACT_STRING) <-
-  ( 
-    pos.put_error semantic text txt;
-    pos.put_position;
-    POSITION.send_error;
-  );
-  
-  - warning_error (pos:POSITION,txt:ABSTRACT_STRING) <-
-  (
-    pos.put_error warning text txt;
-    pos.put_position;
-    POSITION.send_error;
-  );
-
-  - message_error (pos:POSITION,txt:ABSTRACT_STRING) <-
-  (
-    is_verbose.if {
-      pos.put_error message text txt;
-      pos.put_position;
-      POSITION.send_error;
-    };
-  );
-
-  //
-  // String temporary.
-  //
-
-  - string_tmp :STRING := STRING.create 256;  
-  - string_tmp2:STRING := STRING.create 256;  
-  - string_tmp3:STRING := STRING.create 256;  
-  - string_tmp4:STRING := STRING.create 256;
-  
-  //
-  // Path directory and command front end.
-  //
-  
-  - path_file:FAST_ARRAY[STRING_CONSTANT] := 
-  FAST_ARRAY[STRING_CONSTANT].create_with_capacity 3000;
-
-  //
-  // Alias type.
-  //
-  
-  - type_input            :TYPE;
-  - type_integer          :TYPE;
-  - type_real             :TYPE;
-  - type_character        :TYPE;
-  - type_block            :TYPE;
-  - type_true             :TYPE;
-  - type_false            :TYPE;
-  - type_boolean          :TYPE;
-  - type_integer_32       :TYPE;
-  - type_pointer          :TYPE;
-  - type_string_constant  :TYPE;
-  - type_n_a_character    :TYPE;
-  - type_n_a_n_a_character:TYPE;
-  
-  //
-  // Usage Variable.
-  //
-  
-  - last_position:POSITION;
-
-
diff --git a/src/clean b/src/clean
deleted file mode 100755
index ba1f3f6..0000000
--- a/src/clean
+++ /dev/null
@@ -1,5 +0,0 @@
-for i in `find -name "*~"` ; do rm $i ; done
-for i in `find -name "*.c"` ; do rm $i ; done
-for i in `find -name "*.li.old"` ; do rm $i ; done
-for i in `find -name "*.exe"` ; do rm $i ; done
-rm -f lisaac shorter
diff --git a/src/code_life/call_slot.li b/src/code_life/call_slot.li
deleted file mode 100644
index 8b4240d..0000000
--- a/src/code_life/call_slot.li
+++ /dev/null
@@ -1,621 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := CALL_SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Call slot method.";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  - count_no_recursive:INTEGER;
-  - count_context_sensitive:INTEGER;
-  
-  - reset_count_no_recursive <-
-  (
-    count_no_recursive := 0;
-  );
-
-  - reset_count_context_sensitive <-
-  (
-    count_context_sensitive := 0;
-  );
-    
-  + profil:PROFIL;
-  
-  - set_profil p:PROFIL <-
-  (
-    profil := p;
-  );
-  
-  - source:LIST <- profil.code;
-  
-  - is_interrupt:BOOLEAN <- profil.is_interrupt;
-  
-  - is_external:BOOLEAN  <- profil.is_external;
-  
-  //
-  // Argument.
-  //
-  
-  + argument_list:FAST_ARRAY[WRITE];
-  
-  + result_list:Expanded SLIM_ARRAY[RESULT];
-  
-  + cop_argument:EXPR;
-  
-  + is_cop_return:BOOLEAN;
-  
-  - set_args args:FAST_ARRAY[WRITE] <-
-  (
-    argument_list := args;
-  );
-  
-  - set_cop_argument arg:EXPR <-
-  (
-    cop_argument := arg;
-  );
-    
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION profil prof:PROFIL with l_arg:FAST_ARRAY[WRITE] cop arg:EXPR :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p profil prof with l_arg cop arg;
-    result
-  );
-  
-  - make p:POSITION profil prof:PROFIL with l_arg:FAST_ARRAY[WRITE] cop arg:EXPR <-
-  ( + n:INTEGER;  
-    position := p;    
-    cop_argument := arg;
-    // Choice profil.
-    profil := prof;    
-    argument_list := l_arg;
-    profil.link Self;
-    //
-    (is_interrupt).if {
-      n := 1;
-    } else {
-      n := profil.result_list.count;
-    };
-    result_list.make_with_capacity n;        
-  );
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    + wrt:WRITE;
-    + new_arg:FAST_ARRAY[WRITE];
-    + res:RESULT;
-    result := clone;
-        
-    new_arg := FAST_ARRAY[WRITE].create_with_capacity (argument_list.count);
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      (argument_list.item j = NULL).if {
-	wrt := NULL;
-      } else {
-        // No Alias := Alias.
-        wrt := argument_list.item j;            
-	wrt := wrt.variable.write_direct (wrt.position) with NULL value (wrt.value.my_copy); 
-	//wrt := argument_list.item j.my_copy;
-      };
-      new_arg.add_last wrt;
-    };
-    result.set_args new_arg;
-    (cop_argument != NULL).if {
-      result.set_cop_argument (cop_argument.my_copy);
-    };
-    //
-    result.result_list.make_with_capacity (result_list.count);
-    (result_list.lower).to (result_list.upper) do { j:INTEGER;      
-      (result_list.item j = NULL).if {
-        res := NULL;
-      } else {
-        // Alias := No Alias.
-        res := result_list.item j.my_copy;
-      };
-      result.result_list.add_last res;
-    };
-    result.profil.link result;
-    result
-  );
-
-  //
-  // Generation.
-  //
-
-  - remove <-
-  ( + e:WRITE;
-    
-    ((profil.link_count = 0) && {profil.cop_link_count = 0}).if { // BSBS: Debug...
-      "CALL_SLOT : ".print;
-      debug_display;
-    };
-    
-    profil.unlink Self;
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      e := argument_list.item j;
-      (e != NULL).if {
-	e.remove;
-      };
-    };    
-    (cop_argument != NULL).if {
-      cop_argument.remove;
-    };
-    (result_list.lower).to (result_list.upper) do { j:INTEGER;
-      result_list.item j.remove;
-    };
-  );
-  
-Section Private  
-  
-  - execute_inline:(BOOLEAN,INSTR) <- 
-  // Simple inlining
-  ( + result:INSTR;
-    + is_good:BOOLEAN;
-    + new_src:LIST;
-    + wrt:WRITE;
-    + old_val:EXPR;
-    //+ rd:READ_LOCAL;
-    + loc:LOCAL;
-    + prof_block:PROFIL_BLOCK;
-        
-    (source = list_current).if {
-      POSITION.put_error semantic text "Recursivity without end (call_slot).";
-      source.position.put_position;
-      position.put_position;
-      POSITION.send_error;
-    };
-        
-    (
-      (! is_interrupt) && {! is_external} && 
-      {(cop_argument = NULL) || {! profil.result_list.is_empty}}
-    ).if {          
-      (profil.link_count = 1).if {      
-	// 
-	// Inlining simple.
-	//	  	  	  	  
-	(list_current.old_seq_or_and = seq_or_and).if {
-	  argument_to_assignment source index 1 alias FALSE;	  
-          (result_list.lower).to (result_list.upper) do { j:INTEGER;                        
-            source.add_last (result_list.item j.write);
-          };
-          result := source.execute;          
-	  profil.remove_inline;	  	  
-          new_execute_pass;
-          is_good := TRUE;
-	};
-      }.elseif {profil.is_inlinable/* && {FALSE}*/} then {
-	//
-	// Inline by copy:	  
-	//
-	(list_current.old_seq_or_and = seq_or_and).if {	    	    	    
-          profil.unlink Self;	  	  	    	    
-          
-          prof_block ?= profil;
-	  (prof_block != NULL).if {	    
-	    (profil.argument_list.lower).to (profil.argument_list.upper) do { j:INTEGER;
-	      loc := profil.argument_list.item j;
-	      (loc != NULL).if {
-		loc.set_my_alias (loc.my_copy);
-	      };
-	    };
-	  } else {
-	    LOCAL.alias_on;
-	  };
-          //LOCAL.alias_on;
-          
-          new_src := source.my_copy;	                     
-          argument_to_assignment new_src index 1 alias TRUE; 
-          (result_list.lower).to (result_list.upper) do { j:INTEGER;
-            wrt := result_list.item j.write;                        
-            old_val := wrt.value;
-            /*
-            rd ?= old_val;
-            loc := rd.local;
-            (loc.my_alias = NULL).if {
-              profil.slot.name.print; '\n'.print;
-              warning_error (position,"CALL_SLOT : Result bizarre!");
-              warning_error (profil.slot.position,"CALL_SLOT : Result bizarre!");              
-              crash_with_message "CALL_SLOT: Result not affect!";              
-            };*/
-            wrt.set_value (old_val.my_copy);	      	      
-            old_val.remove;            
-            new_src.add_last wrt;
-          };		  	                      
-          
-          (prof_block != NULL).if {
-	    (profil.argument_list.lower).to (profil.argument_list.upper) do { j:INTEGER;
-	      loc := profil.argument_list.item j;
-	      (loc != NULL).if {
-		loc.set_my_alias NULL;
-	      };
-	    };
-	  } else {
-	    LOCAL.alias_off;
-	  };
-	  
-          //LOCAL.alias_off;          
-                    
-	  result := new_src.execute;
-          is_good := TRUE;
-	  new_execute_pass;	  	  
-	};
-      };
-    };
-    is_good,
-    result
-  );  
-  
-  - execute_normal <-
-  ( + wrt:WRITE_LOCAL;
-        
-    // Pour l'instant ne change pas le profil
-    // il faut faire une copie de l'ancien !!
-    
-    //profil := profil.update self link FALSE;
-          
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;      
-      wrt ?= argument_list.item j;	            
-      (wrt != NULL).if {			
-	(wrt.execute_argument).if {
-	  new_execute_pass;
-          argument_list.put NULL to j;                    
-	  (wrt.ensure_count = 0).if {
-	    profil.argument_list.put NULL to j;
-	  };
-	};
-      };
-    };            	          
-    (cop_argument != NULL).if {
-      cop_argument := cop_argument.execute_link;
-      (
-        (! is_cop_return) && 
-        {profil_current != NULL} && 
-        {profil_current.cop_link_count != 0} && 
-        {profil_current.link_count = 0} &&
-        {profil_current.result_list.is_empty}
-      ).if {
-        // BSBS: Il faut produire reellement 2 versions (une COP et une non COP)
-        // Ainsi tu pourras generaliser l'optim et l'appliquer que sur la version COP.
-        is_cop_return := profil_current.i_am_the_last Self;                
-      };
-    };    
-    (profil.is_context_sensitive).if {
-      seq_call_local_and_loop := seq_call_local_and_loop + 1;
-    };
-    seq_call_and_loop   := seq_call_and_loop + 1;
-    seq_inline := seq_inline + 1;
-        
-    //
-    // Counter.
-    //    
-    (! profil.is_recursive).if {
-      count_no_recursive := count_no_recursive + 1;
-    };
-    (profil.is_context_sensitive).if {
-      count_context_sensitive := count_context_sensitive + 1;
-    };
-  );
-      
-Section Public
-  
-  - execute:INSTR <-
-  ( + result:INSTR;        
-    + is_good:BOOLEAN;    
-    
-    (profil.search_tail_recursive).if {
-      //
-      // Inline Tail recursive:
-      //	  
-      profil.remove_inline;		
-      result := to_tail_recursive;
-      result.execute;
-      new_execute_pass;
-    } else {      
-      (is_good,result) := execute_inline;
-      (! is_good).if {      
-	execute_normal;
-	(source.is_empty).if {
-	  // Suppression.	
-	  profil.unlink Self;	
-	  new_execute_pass;
-	} else {
-	  result := Self;
-	  profil.set_life;
-	};
-      };
-    };
-    
-    result
-  );
-
-  //
-  // Display.
-  //
-
-  - display_style buffer:STRING <-
-  ( + t:HASHED_SET[TYPE];
-    buffer.append (profil.name);
-    buffer.add_last '(';
-      
-    type_list.lower.to (type_list.upper) do {	 j:INTEGER;
-      t := type_list.item j;
-      t.lower.to (t.upper - 1) do { k:INTEGER;
-	buffer.append (t.item k.name);
-	buffer.add_last 'x';
-      };
-      buffer.append (t.last.name);
-      (j != type_list.upper).if {
-	buffer.add_last ',';
-      };
-    };
-    buffer.add_last ')';
-  );
-
-  - display buffer:STRING <-
-  ( + arg:WRITE;
-
-    buffer.append (profil.name);
-    display_ref buffer;
-    argument_list.is_empty.if {
-      buffer.append "()";
-    } else {
-      buffer.append "(";		
-      argument_list.lower.to (argument_list.upper) do { j:INTEGER;
-	arg := argument_list.item j;
-	(arg = NULL).if {
-	  buffer.append "<>"
-	} else {
-	  arg.value.display buffer;
-	};
-	buffer.add_last ',';
-      };		        
-      buffer.put ')' to (buffer.upper);	
-    };
-  );
-
-  - display_light <-
-  (
-    string_tmp.copy "CALL '";
-    string_tmp.append (profil.name);
-    string_tmp.append "' ";
-    string_tmp.append (position.prototype.intern_name);
-    //position.put_light_position_in(string_tmp);
-    string_tmp.append " --> ";
-    string_tmp.append (source.position.prototype.intern_name);
-    //source.position.put_light_position_in(string_tmp);
-    string_tmp.append " (Version ";
- //   string_tmp.append (proto_self_current.intern_name);
-    string_tmp.append ")\n";
-    string_tmp.print;
-  );
-  
-  //////////////////////////////////////////////////////////////////////////
-  // CODE SLOT
-  //////////////////////////////////////////////////////////////////////////
-
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  ( + val:WRITE;
-    + arg:LOCAL;
-    + wrt:WRITE_LOCAL;
-    + np:INTEGER;
-    + low:INTEGER;
-    + back:INTEGER;
-    
-    (cop_argument != NULL).if {
-      (
-        (argument_list.count >=1) && 
-        {argument_list.first != NULL} && 
-        {argument_list.first.variable.name = ALIAS_STR.variable_self}
-      ).if {
-        low := 1;
-      };
-      (argument_list.count-low > 0).if {        
-        back := buffer.count;
-        buffer.append "pthread_mutex_lock (&(";
-        cop_argument.genere buffer;        
-        buffer.append "->thread.mutex));\n";                
-        (low).to (argument_list.upper) do { j:INTEGER; 
-          val := argument_list.item j;        
-          (val != NULL).if {	           
-            buffer.append indent;
-            cop_argument.genere buffer;
-            buffer.append "->param_";
-            np.append_in buffer;
-            buffer.append "=(int)";
-            val.genere_value buffer;	  
-            buffer.append ";\n";          
-            np := np + 1;
-          } else {
-            "arg null\n".print;
-          };
-        };        
-        buffer.append indent;
-        (np = 0).if {
-          buffer.keep_head back;
-        };
-      };            
-      cop_argument.genere buffer;
-      buffer.append "->thread.procedure = COP_";
-      buffer.append (profil.name);
-      buffer.append ";\n";
-      buffer.append indent;
-      (is_cop_return).if {
-        buffer.append "return";
-      } else {
-        buffer.append "run_procedure";
-      };
-      buffer.append "((lith_object *)";
-      cop_argument.genere buffer;
-      buffer.add_last ')';
-    } else {    
-      (result_list.is_empty).if_false {
-        wrt ?= result_list.first.write;
-        wrt.genere_first_result buffer;      
-      };
-      buffer.append (profil.name);
-      (is_interrupt || {is_external}).if {
-        (argument_list.first != NULL).if {
-          semantic_error (argument_list.first.position,
-          "Impossible `Self' argument for External or Interrupt slot.");
-        };
-      };
-      (! is_interrupt).if {
-        buffer.add_last '(';	
-        (argument_list.lower).to (argument_list.upper) do { j:INTEGER; 
-          val := argument_list.item j;
-          arg := profil.argument_list.item j;
-          (val != NULL).if {	 
-            (buffer.last != '(').if {
-              buffer.add_last ',';
-            };
-            val.genere_value buffer;	  
-          };
-        };
-        (result_list.count > 1).if {
-          (result_list.lower+1).to (result_list.upper) do { j:INTEGER;
-            (buffer.last != '(').if {
-              buffer.add_last ',';
-            };
-            wrt ?= result_list.item j.write;
-            wrt.genere_argument_result buffer;	  
-          };
-        };
-        buffer.add_last ')';
-      };
-    };
-  );
-    
-  //
-  // Intern routine.
-  //
-  
-Section Private  
-      
-  - to_tail_recursive:LOOP <-
-  ( + switch:SWITCH;
-    + msg_slot:CALL_SLOT;    
-    + body:LIST;     
-    + wrt:WRITE;
-    + new_val:EXPR;
-    + new_wrt:INSTR;
-    + result:LOOP;
-    
-    result := LOOP.create position name (profil.name) body source;
-    
-    //
-    // Main List.
-    //
-            
-    // Argument -> Affectation.              
-    wrt := argument_list.first;
-    (wrt != NULL).if {
-      argument_list.put NULL to 0;	
-      (! wrt.value.static_type.is_expanded).if {	
-	new_val := CAST.create (wrt.static_type) value (wrt.value);
-	wrt.set_value new_val;
-      };      
-      wrt.variable.set_style '+';
-      new_wrt := wrt.execute;
-      (new_wrt != NULL).if {	
-	list_current.insert new_wrt to (list_current.index);	
-      };
-    };
-    (argument_list.lower + 1).to (argument_list.upper) do { k:INTEGER;
-      wrt := argument_list.item k;
-      (wrt != NULL).if {	
-	argument_list.put NULL to k;	
-	wrt.variable.set_style '+';
-	new_wrt := wrt.execute;
-	(new_wrt != NULL).if {	  
-	  list_current.insert new_wrt to (list_current.index);
-	};
-      };
-    };
-        
-    (debug_level_option != 0).if {      
-      ? { + push:PUSH;      
-	push ?= source.first;
-	(push != NULL) && {push.is_first}
-      };
-      list_current.insert (source.first) to (list_current.index);      
-      source.put NOP to (source.lower);
-    };
-    
-    // Extract Switch/body:
-    switch ?= source.last;
-    (switch.list.lower).to (switch.list.upper) do { k:INTEGER;
-      body := switch.list.item k.code;
-      (body.is_empty).if_false {	
-	msg_slot ?= body.last;
-	(msg_slot != NULL).if {	  
-	  // DEBUG
-	  (msg_slot = Self).if {
-	    semantic_error (position,"CALL_SLOT : BUG!!!!");
-	  };
-	  (msg_slot.profil != profil).if {
-	    semantic_error (position,"CALL_SLOT : BUG2!!!!");
-	  };
-	  // FIN DEBUG
-	  msg_slot.argument_to_assignment body index (body.upper) alias FALSE;
-	  body.put (LOOP_END.create (msg_slot.position) loop result) to (body.upper);
-	};	
-      };
-    };
-    result
-  );
-  
-  - argument_to_assignment lst:LIST index idx:INTEGER alias is_alias:BOOLEAN <-
-  ( + val,new_wrt:WRITE;        
-    + loc:LOCAL;
-    
-    // Argument -> Affectation.
-    (argument_list.upper).downto (argument_list.lower) do { k:INTEGER;
-      val   := argument_list.item k;
-      (val != NULL).if {	
-	argument_list.put NULL to k;
-	(is_alias).if {
-	  loc ?= val.variable;	  
-	  new_wrt := loc.write (val.position) value (val.value);	  	  
-          loc.unwrite val;	            
-	} else {
-	  new_wrt := val;	  
-	};
-	lst.insert new_wrt to idx;
-	new_wrt.variable.set_style '+';
-      };
-    };    
-  );
diff --git a/src/code_life/case.li b/src/code_life/case.li
deleted file mode 100644
index b91a84e..0000000
--- a/src/code_life/case.li
+++ /dev/null
@@ -1,103 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := CASE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Case for Switch.";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-  
-  + id:TYPE;
-  
-  + code:LIST; 
-  
-  - set_code new_code:LIST <-
-  (
-    code := new_code;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create val:TYPE with c:LIST :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make val with c;
-    result
-  );
-  
-  - make val:TYPE with c:LIST <-
-  ( + tb:PROFIL_BLOCK;
-    id   := val;    
-    code := c;
-    //
-    tb ?= val;
-    (tb != NULL).if {
-      tb.inc_id;
-    };
-  );
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    
-    result := SELF.create id with (code.my_copy);
-    result    
-  );
-  
-  - remove <-
-  ( + tb:PROFIL_BLOCK;
-    code.remove;
-    tb ?= id;
-    (tb != NULL).if {
-      tb.dec_id;
-    };
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute <-
-  (             
-    id.set_late_binding;
-    code.execute_case;
-  );
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  (  
-    code.genere buffer;
-  );
-  
\ No newline at end of file
diff --git a/src/code_life/cast.li b/src/code_life/cast.li
deleted file mode 100644
index 989ffaa..0000000
--- a/src/code_life/cast.li
+++ /dev/null
@@ -1,171 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := CAST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Cast type.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-      
-Section Public
-  
-  - is_invariant:BOOLEAN <- value.is_invariant;
-  
-  + static_type:TYPE_FULL;
-  
-  + value:EXPR;
-  
-  //
-  // Creation.
-  //
-  
-  - create t:TYPE_FULL value v:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make t value v;
-    result    
-  );
-  
-  - make t:TYPE_FULL value v:EXPR <-
-  (
-    position    := v.position;
-    static_type := t;
-    value       := v;
-  );
-  
-  - my_copy:SELF <-
-  (
-    create static_type value (value.my_copy)
-  );
-  
-  //
-  // Searching.
-  //
-  
-  - get_type t:TYPES_TMP <-
-  (         
-    t.add (static_type.raw);
-  );
-  
-  //
-  // Executing pass.
-  //
-  
-  - remove <-
-  (        
-    value.remove;
-  );
-    
-  - execute_unlink:INSTR <-  
-  (
-    value.execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + int:INTEGER_CST;
-    + lst_typ:TYPES_TMP;
-    + other:CAST;
-    
-    value  := value.execute_link;
-    result := Self;
-    //
-    ((static_type.raw = type_integer) && {value.is_constant}).if {
-      result := value;
-      new_execute_pass;
-    }.elseif {
-      (ALIAS_STR.is_integer (static_type.raw.name)) && 
-      {value.is_constant} &&
-      { int ?= value;  // BSBS: Merde avc les prototype_cst de type type_id : INTEGER
-	int != NULL
-      }
-    } then {      
-      int.cast_type static_type;
-      result := value;
-      new_execute_pass;
-    }.elseif {
-      other ?= value;
-      (other != NULL) &&
-      {other.static_type = static_type}
-    } then {
-      result := value;
-      new_execute_pass;
-    } else {
-      lst_typ := TYPES_TMP.new;
-      value.get_type lst_typ;
-      ((lst_typ.count = 1) && {lst_typ.first = static_type.raw}).if {
-	result := value;
-	new_execute_pass;
-      };
-      lst_typ.free;
-    };    
-    //
-    result
-  );
-  
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (    
-    buffer.add_last '(';
-    buffer.add_last '(';
-    static_type.genere_declaration buffer;	
-    buffer.add_last ' ';
-    static_type.genere_star_declaration buffer;	
-    buffer.add_last ')';
-    value.genere buffer;
-    buffer.add_last ')';
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    static_type.append_name_in buffer;
-    (static_type.is_expanded).if_false {
-      buffer.add_last '*';
-    };
-    buffer.add_last ')';
-    value.display buffer;
-  );
-
-
-
-
-
-
-
-
-
-
diff --git a/src/code_life/cop_lock.li b/src/code_life/cop_lock.li
deleted file mode 100644
index 7d3a921..0000000
--- a/src/code_life/cop_lock.li
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COP_LOCK;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "COP in for data or function.";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  + data:EXPR;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with dta:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with dta;
-    result
-  );
-  
-  - make p:POSITION with dta:EXPR <-
-  (
-    position := p;
-    data := dta;
-  );
-  
-  - my_copy:SELF <- 
-  (     
-    create position with (data.my_copy)
-  );
-  
-  - remove <-
-  (
-    data.remove;
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute:INSTR <-
-  (
-    Self
-  );
-  
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.append "// Pre thread.\n";
-    //  buffer.append "print_char('(');\n";
-    //  buffer.append "print_char('\\n');\n";
-    buffer.append indent;
-    buffer.append "{ lith_node node,*n;\n";
-    indent.append "  ";    
-    buffer.append indent;
-    buffer.append "lith_object *obj;\n";
-    buffer.append indent;
-    buffer.append "void *thread_save;\n";    
-    buffer.append indent;
-    buffer.append "obj = &((";
-    data.genere buffer;
-    buffer.append ")->thread);\n";    
-    buffer.append indent;
-    buffer.append "node.next = NULL;\n";
-    buffer.append indent;
-    buffer.append "pthread_mutex_init(&node.mutex,NULL);\n";
-    buffer.append indent;
-    buffer.append "pthread_mutex_lock(&obj->mutex);\n";    
-    buffer.append indent;
-    buffer.append "n = obj->last;\n";
-    buffer.append indent;
-    buffer.append "if (n == NULL) {\n";
-    buffer.append indent;
-    buffer.append "  obj->first = &node;\n";
-    buffer.append indent;
-    buffer.append "} else {\n";
-    buffer.append indent;
-    buffer.append "  n->next = &node;\n";
-    buffer.append indent;
-    buffer.append "  pthread_mutex_lock(&node.mutex);\n";
-    buffer.append indent;
-    buffer.append "};\n";
-    buffer.append indent;
-    buffer.append "obj->last = &node;\n";      
-    buffer.append indent;
-    buffer.append "pthread_mutex_unlock(&obj->mutex);\n";
-    //
-    buffer.append indent;    
-    buffer.append "pthread_mutex_lock (&node.mutex);\n";
-    buffer.append indent;    
-    buffer.append "thread_save=pthread_getspecific(current_thread);\n";
-    buffer.append indent;
-    buffer.append "pthread_setspecific(current_thread,";
-    data.genere buffer;
-    buffer.add_last ')';    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "COP_LOCK(";
-    data.display buffer;
-    buffer.add_last ')';
-  );
-  
diff --git a/src/code_life/cop_unlock.li b/src/code_life/cop_unlock.li
deleted file mode 100644
index ff69c56..0000000
--- a/src/code_life/cop_unlock.li
+++ /dev/null
@@ -1,110 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := COP_UNLOCK;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "COP in for data or function.";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-    
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p;
-    result
-  );
-  
-  - make p:POSITION <-
-  (
-    position := p;    
-  );
-  
-  - my_copy:SELF <- 
-  ( 
-    create position
-  );
-  
-  - remove <-
-  (
-    // Nothing.
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute:INSTR <-
-  (
-    Self
-  );
-  
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.append "pthread_mutex_lock(&(obj->mutex));\n"; 
-    buffer.append indent;
-    buffer.append "n = obj->first->next;\n";
-    buffer.append indent;
-    buffer.append "if (n != NULL) {\n";
-    buffer.append indent;
-    buffer.append "  pthread_mutex_unlock(&n->mutex);\n";
-    buffer.append indent;
-    buffer.append "} else {\n";
-    buffer.append indent;
-    buffer.append "  obj->last = NULL;\n";
-    buffer.append indent;
-    buffer.append "};\n";
-    buffer.append indent;
-    buffer.append "obj->first = n;\n";
-    buffer.append indent;
-    buffer.append "pthread_mutex_unlock(&obj->mutex);\n";     
-    buffer.append indent;
-    buffer.append "pthread_setspecific(current_thread,thread_save);\n";    
-    indent.remove_last 2;
-    buffer.append indent;
-    buffer.add_last '}';
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "COP_UNLOCK()";
-  );
-  
diff --git a/src/code_life/expr.li b/src/code_life/expr.li
deleted file mode 100644
index 5ce8385..0000000
--- a/src/code_life/expr.li
+++ /dev/null
@@ -1,219 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := EXPR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Parent for all expression";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  - cardinality:INTEGER <- 1;
-  
-  //
-  // Comparison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <- FALSE;
-  
-  - '!==' Right 60 other:EXPR :BOOLEAN <- ! (Self == other);
-  
-  //
-  // Type.
-  //
-  
-  - static_type:TYPE_FULL <- 
-  ( 
-    deferred; 
-    NULL
-  ); 
-    
-  - get_type t:TYPES_TMP <- deferred;
-
-  //
-  // Flag.
-  //
-
-  - is_constant:BOOLEAN <- FALSE;
-    
-  //
-  // Check type.
-  //
-  
-  - check_type t:TYPE_FULL with p:POSITION :EXPR <- 
-  ( + result:EXPR;    
-    + local:VARIABLE;
-    + instr:INSTR;    
-    + rec:EXPR;
-    + slot_name:STRING_CONSTANT;
-    + slot_msg:SLOT;    
-    + node:NODE;
-    + args:FAST_ARRAY[EXPR];
-    + ts:ITM_TYPE_SIMPLE;
-    
-    ? {static_type != NULL};
-    ? {t != NULL};
-    
-    (t.affect_with static_type).if {          
-      result := Self;
-    } else {            
-      ? {list_current != NULL};
-      (static_type.is_export_to t).if {	
-	// Auto-export.	
-	local := static_type.get_temporary position;
-	instr := local.write position value Self;		
-	list_current.add_last instr;
-	//
-	slot_name := ALIAS_STR.get (TYPE.last_cast_name);	
-	slot_msg  := static_type.get_slot slot_name; 
-	(slot_msg = NULL).if {	  
-	  string_tmp.clear;
-	  static_type.append_name_in string_tmp; 
-	  string_tmp.append " -> ";
-	  t.append_name_in string_tmp;
-	  string_tmp.append ". Slot `";
-	  string_tmp.append slot_name;
-	  string_tmp.append "' not found in `";
-	  static_type.append_name_in string_tmp;
-	  string_tmp.append "'.";
-	  POSITION.put_error semantic text string_tmp;
-	  p.put_position;
-	  static_type.prototype.position.put_position;
-	  POSITION.send_error;
-	  //semantic_error p,string_tmp;
-	};	
-	(slot_msg.argument_count != 1).if {	  
-	  semantic_error ((slot_msg.position),"No argument for this slot.");
-	};
-        ts ?= slot_msg.result_type;               
-	((ts = NULL) || {ts.to_run_for NULL != t}).if {	  	  
-          string_tmp.copy "Type result `";          
-          slot_msg.result_type.append_in string_tmp;	            
-	  string_tmp.append "' is incorrect (Used for auto-conversion to `";
-	  t.append_name_in string_tmp; 
-	  string_tmp.append "').";
-	  POSITION.put_error semantic text string_tmp;
-	  slot_msg.position.put_position;
-	  position.put_position;
-	  POSITION.send_error;     
-	};
-	//	
-	rec  := local.read position;
-	node := NODE.new_read position slot slot_msg 
-        receiver rec self rec intern FALSE;
-	list_current.add_last node;
-	//	
-	result := node.result_expr;
-      }.elseif {t.is_import_to static_type} then {
-	local := static_type.get_temporary position;
-	instr := local.write position value Self;		
-	list_current.add_last instr;
-	//	
-	slot_name := ALIAS_STR.get (TYPE.last_cast_name);
-	slot_msg  := t.get_slot slot_name; 
-	(slot_msg = NULL).if {	  
-	  string_tmp.clear;
-	  t.append_name_in string_tmp;
-	  string_tmp.append " <- ";
-	  static_type.append_name_in string_tmp; 
-	  string_tmp.append ". Slot `";
-	  string_tmp.append slot_name;
-	  string_tmp.append "' not found in `";
-	  t.append_name_in string_tmp; 
-	  string_tmp.append "'.";
-	  POSITION.put_error semantic text string_tmp;
-	  p.put_position;
-	  t.prototype.position.put_position;
-	  POSITION.send_error;
-	  //semantic_error p,string_tmp;
-	};		
-	(slot_msg.argument_count != 2).if {
-	  semantic_error ((slot_msg.position),"Incorrect argument for this slot.");
-	};
-	ts ?= slot_msg.result_type;
-	((ts = NULL) || {ts.to_run_for NULL != t}).if {	  	  
-	  string_tmp.copy "Type result `";	  
-          slot_msg.result_type.append_in string_tmp;
-	  string_tmp.append "' is incorrect (Used for auto-conversion to `";
-	  t.append_name_in string_tmp;
-	  string_tmp.append "').";
-	  POSITION.put_error semantic text string_tmp;
-	  slot_msg.position.put_position;
-	  position.put_position;
-	  POSITION.send_error;     
-	};
-	//	
-	args := FAST_ARRAY[EXPR].create_with_capacity 2;
-	args.add_last (PROTOTYPE_CST.create position type t);
-	args.add_last (local.read position);
-	node := NODE.new_read position slot slot_msg 
-        receiver (args.first.my_copy) with args intern FALSE;
-	list_current.add_last node;
-	//	
-	result := node.result_expr;	
-      } else {
-	// Type Error				
-	string_tmp.copy "Type `";
-	t.append_name_in string_tmp;	
-	string_tmp.append "' is invalid with `";
-	static_type.append_name_in string_tmp;
-	string_tmp.append "'.";
-	POSITION.put_error semantic text string_tmp;
-	p.put_position;
-	position.put_position;
-	POSITION.send_error;      
-      };
-    };
-    result 
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute:INSTR <-
-  (
-    execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  (
-    deferred;
-    NULL
-  );
-  //[ ? {Result != NULL}; ];
-  
-  - execute_unlink:INSTR <-
-  (
-    deferred;
-    NULL
-  );
-  
- 
-
diff --git a/src/code_life/expr_multiple.li b/src/code_life/expr_multiple.li
deleted file mode 100644
index 1319a74..0000000
--- a/src/code_life/expr_multiple.li
+++ /dev/null
@@ -1,138 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_MULTIPLE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Multiple expression manager";
-  
-  // BSBS: Utiliser ca une seule fois ! cela doit etre possible! 
-  
-Section Inherit
-  
-  - parent_expr:EXPR := EXPR;
-  
-Section Public
-  
-  + expr_list:FAST_ARRAY[EXPR];
-  
-  - cardinality:INTEGER <- expr_list.count;
-  
-  - static_type:TYPE_FULL <-
-  (
-    expr_list.first.static_type
-  );
-  
-  - get_type t:TYPES_TMP <-
-  (
-    crash_with_message "EXPR_MULTIPLE.get_type";
-  );
-  
-  //
-  // Creation
-  //
-  
-  // BSBS: Optim : Il faut que ce soit alouer et free après !!!
-  - create l:FAST_ARRAY[EXPR] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make l;
-    result
-  );
-  
-  - make l:FAST_ARRAY[EXPR] <-
-  (
-    expr_list := l;
-    position  := l.last.position;
-  );
-  
-  - my_copy:SELF <-
-  ( + new_lst:FAST_ARRAY[EXPR];
-    
-    new_lst := FAST_ARRAY[EXPR].create_with_capacity (expr_list.count);
-    (expr_list.lower).to (expr_list.upper) do { j:INTEGER;
-      new_lst.add_last (expr_list.item j.my_copy);
-    };
-    SELF.create new_lst
-  );
-  
-  //
-  // Remove.
-  //
-  
-  - remove <-
-  (
-    (expr_list.lower).to (expr_list.upper) do { j:INTEGER;
-      expr_list.item j.remove;
-    };
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute_unlink:INSTR <- 
-  (
-    (expr_list.lower).to (expr_list.upper) do { j:INTEGER;
-      expr_list.item j.remove;
-    };
-    NULL
-  );
-  
-  - execute_link:EXPR <-
-  (
-    list_current.debug_display;
-    crash_with_message "EXPR_MULTIPLE.execute_link";
-    NULL
-  );
-  
-  //
-  // Access facility.
-  //
-  
-  - lower:INTEGER <- expr_list.lower;
-  - upper:INTEGER <- expr_list.upper;
-  
-  - item i:INTEGER :EXPR <- expr_list.item i;
-  - last:EXPR            <- expr_list.last;
-  - first:EXPR           <- expr_list.first;
-  
-  - count:INTEGER <- expr_list.count;  
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    (expr_list.lower).to (expr_list.upper - 1) do { j:INTEGER;
-      expr_list.item j.display buffer;
-      buffer.add_last ',';
-    };
-    expr_list.last.display buffer;
-    buffer.add_last ')';
-  );
-  
\ No newline at end of file
diff --git a/src/code_life/instr.li b/src/code_life/instr.li
deleted file mode 100644
index a8122c4..0000000
--- a/src/code_life/instr.li
+++ /dev/null
@@ -1,109 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := INSTR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all Instruction.";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-  
-  - is_invariant:BOOLEAN <- FALSE;
-  
-  //
-  //
-  //
-  
-  - hash_code:INTEGER <- INTEGER.force_conversion position;
-
-  - my_copy:SELF <- 
-  ( 
-    debug_display;
-    deferred; 
-    NULL 
-  );  
-  
-  //
-  // Executing pass.
-  //
-
-  - cmp other:INSTR :BOOLEAN := FALSE;
-  
-  - i_am_the_last i:INSTR :BOOLEAN <- (i = Self);
-  
-  - execute:INSTR <- 
-  ( 
-    debug_display;
-    deferred; 
-    NULL
-  );
-  
-  - remove <- 
-  (
-    debug_display;    
-    deferred;
-  );
-
-  - genere buffer:STRING <- 
-  (
-    // BUG.
-    display buffer;
-    buffer.append " /* INSTR.genere :: Not genere ! */";
-    // FIN BUG.
-    //deferred;
-  );
-
-  //
-  // Display.
-  //
-
-  - display_ref buffer:STRING <-
-  (
-    is_verbose.if {
-      buffer.append "<";
-      object_id.append_in buffer;
-      buffer.append ">";
-    };
-  );
-
-  - display buffer:STRING <- 
-  (
-    "INSTR.display\n".print;
-    deferred; 
-  );
-
-  - debug_display <-
-  ( + voir:STRING;
-    
-    voir := STRING.create 250;
-    display voir;
-    voir.print;
-    '\n'.print;
-  );
-  
diff --git a/src/code_life/list.li b/src/code_life/list.li
deleted file mode 100644
index a71461d..0000000
--- a/src/code_life/list.li
+++ /dev/null
@@ -1,366 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LIST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Expression list, immediate evaluation";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Private  
-  
-  + expr_list:FAST_ARRAY[INSTR];
-    
-Section Public  
-  
-  - is_invariant:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    
-    result := TRUE;
-    j := expr_list.lower;
-    {(j <= expr_list.upper) && {result}}.while_do {
-      result := expr_list.item j.is_invariant;
-      j := j + 1;
-    };
-    result
-  );    
-  
-  - old_seq_or_and:UINTEGER_32;
-  
-  //
-  // Linked list INSTR.
-  //
-  
-  - lower:INTEGER <- expr_list.lower + 1;
-  - upper:INTEGER <- expr_list.upper + 1;
-  - count:INTEGER <- expr_list.count;
-  
-  - first:INSTR  <- expr_list.first;  
-  - second:INSTR <- expr_list.second;
-  
-  - item i:INTEGER :INSTR <- expr_list.item (i-1);
-  
-  - current_item:INSTR <- expr_list.item index;
-  
-  - last:INSTR <- expr_list.last;
-  
-  - add_first i:INSTR <-
-  (
-    expr_list.add_first i;
-  );
-  
-  - add_last i:INSTR <- 
-  (
-    expr_list.add_last i;
-  );  
-  
-  - add e:INSTR to idx:INTEGER <-
-  (
-    expr_list.add e to (idx-1);
-  );
-  
-  - put e:INSTR to idx:INTEGER <-
-  (
-    expr_list.put e to (idx-1);
-  );  
-
-  - remove_last <-
-  (
-    expr_list.remove_last;
-  );
-  
-  - remove_index idx:INTEGER <-
-  (
-    expr_list.remove (idx-1);
-  );
-    
-  //
-  // Iterator.
-  //  
-  
-  + index:INTEGER;
-  
-  - inc_index <-
-  (
-    index := index + 1;
-  );
-  
-  - insert_before e:INSTR <-
-  ( 
-    ? {e != NULL};
-    expr_list.add e to (index - 1);
-    index := index + 1;
-  );
-
-  - insert e:INSTR to idx:INTEGER <-
-  ( 
-    ? {e != NULL};
-    expr_list.add e to (idx - 1);
-    (idx <= index).if {
-      index := index + 1;
-    };
-  );
-  
-  //
-  // Flags.
-  //
-  
-  - is_empty:BOOLEAN <- count = 0;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p;
-    result
-  );
-    
-  - make p:POSITION <-
-  (
-    new_depend_pass;
-    position  := p;
-    expr_list := FAST_ARRAY[INSTR].create_with_capacity 2;
-    /*
-    "execute list #".print;
-    object_id.print; '\n'.print;
-    (object_id = 220500).if {
-    //  crash_with_message "BUG!!!";
-    };
-    */
-    
-    
-  );
-
-  - my_copy:SELF <-
-  ( + result:SELF;
-
-    result := SELF.create position;
-    (lower).to (upper) do { j:INTEGER;
-      result.add_last (item j.my_copy);
-    };
-    result
-  );
-
-  //
-  // Remove.
-  //
-
-  - remove <-
-  (     
-    (lower).to (upper) do { j:INTEGER;
-      item j.remove;
-    };    
-  );
-    
-  //
-  // Execute.
-  //
-  
-  - i_am_the_last i:INSTR :BOOLEAN <- 
-  (
-    last.i_am_the_last i
-  );
-  
-  - execute:INSTR <-
-  ( + result:INSTR;    
-        
-    execute_case;    
-
-    (list_current != NULL).if {
-      // Fusion list.      
-      (expr_list.is_empty).if_false {
-        lower.to (upper-1) do { j:INTEGER;
-          list_current.insert_before (item j);
-        };        
-        result := last; 
-        ? {result != NULL};      
-        new_execute_pass;
-      };
-    } else {              
-      result := Self;
-    };    
-    result    
-  );  
-    
-  - execute_case <-  
-  ( + new_expr:INSTR; 
-    + old_list_current:LIST;
-        
-    //
-    seq_list.add_last Self; 
-    seq_inline := seq_inline + 1;
-    
-    // Update Context.    
-    old_list_current := list_current;
-    list_current := Self;    
-       
-    // Execute expression list.
-    ? {index = 0};
-    index := lower;
-    {index <= upper}.while_do {            
-      old_seq_or_and := seq_or_and;                  
-      new_expr := item index.execute;      
-      (new_expr != NULL).if {	
-        put new_expr to index;        
-        index := index + 1;        
-        (new_expr = CALL_NULL).if {
-          // Delete all ...
-          {index <= upper}.while_do {
-            item index.remove;
-            remove_index index;
-          };
-        };
-      } else {
-	remove_index index;
-      };                  
-    };
-      
-    // Last.    
-    old_seq_or_and := seq_or_and;            
-    index := 0; // Debug necessity
-        
-    // Restore Context.
-    list_current := old_list_current;    
-    //
-    seq_list.remove_last;    
-    seq_inline := seq_inline + 1;
-  );
-  
-Section Public
-  
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  (         
-    buffer.append "{\n";
-    indent.append "  ";
-    
-    genere_body buffer;
-    
-    indent.remove_last 2;    
-    buffer.append indent;
-    buffer.add_last '}';
-  );
-    
-  - genere_extern buffer:STRING <-
-  ( + pos_local:INTEGER;   
-              
-    // Local.    
-    pos_local := buffer.count+1;
-    stack_local.clear;
-    
-    genere_body buffer;
-    
-    // Local.    
-    string_tmp.clear;        
-    add_local (var_size.item 3) in string_tmp; // 64 bits
-    add_local (var_size.item 2) in string_tmp; // 32 bits
-    add_local (var_size.item 1) in string_tmp; // 16 bits
-    add_local (var_size.item 0) in string_tmp; //  8 bits
-    buffer.insert_string string_tmp to pos_local;          
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (    
-    // Begin List.    
-    buffer.add_last '(';
-        
-    // Code.
-    buffer.add_last '\n';
-    indent.append "  ";
-    
-    (lower).to (upper) do { j:INTEGER;
-      buffer.append indent;      
-      item j.display buffer;
-      buffer.add_last '\n';
-    };    
-    indent.remove_last 2;
-    buffer.append indent;
-    
-    // End List.
-    buffer.add_last ')';
-    display_ref buffer;
-  );
-  
-Section Private  
-  
-  - genere_body buffer:STRING <-
-  ( + old_count,j:INTEGER;
-    j := lower;
-    {j <= upper}.while_do {
-      buffer.append indent;
-      old_count := buffer.count;
-      {
-        item j.genere buffer;
-        j := j + 1;
-      }.do_while {(j <= upper) && {old_count = buffer.count}};      
-      buffer.append ";\n";
-    };        
-  );
-  
-  - add_local tab:FAST_ARRAY[LOCAL] in buf:STRING <-
-  ( + loc:LOCAL;
-    + t:TYPE_FULL;
-    + cur:INTEGER;
-    
-    (! tab.is_empty).if {
-      (tab.lower).to (tab.upper) do { j:INTEGER;
-	loc := tab.item j;	
-        loc.is_result.if_false {
-          (((buf.count + loc.intern_name.count - cur) > 70) || {t != loc.type}).if {
-            // New line
-            (t != NULL).if {
-              buf.append ";\n";
-            };
-            cur := buf.count;
-            t := loc.type;
-            buf.append indent;
-            t.genere_declaration buf;
-            buf.add_last ' ';
-          } else {
-            buf.add_last ',';
-          };
-          t.genere_star_declaration buf;
-          buf.append (loc.intern_name);
-        };
-      };
-      buf.append ";\n";
-      tab.clear;
-    };
-  );
-
diff --git a/src/code_life/loop.li b/src/code_life/loop.li
deleted file mode 100644
index 9e55bda..0000000
--- a/src/code_life/loop.li
+++ /dev/null
@@ -1,248 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LOOP;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Loop (call tail recursive).";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  + link_count:INTEGER;
-  
-  + body:LIST;
-  
-  + name:STRING_CONSTANT;
-  
-  - set_link <-
-  (
-    link_count := link_count + 1;
-  );
-  
-  - unset_link <-
-  (
-    link_count := link_count - 1;
-    ? {link_count >= 0};
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION name lab:STRING_CONSTANT body lst:LIST :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name lab body lst;
-    result
-  );
-  
-  - make p:POSITION name lab:STRING_CONSTANT body lst:LIST <-
-  (     
-    position := p;    
-    name := lab;
-    body := lst;
-  );
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    + new_body:LIST;
-    + switch:SWITCH;
-    + case:LIST;
-    + loop_end:LOOP_END;
-        
-    new_body := body.my_copy;
-    result := LOOP.create position name (ALIAS_STR.get_intern name) body new_body;
-    //
-    switch ?= new_body.last; 
-    (switch.list.lower).to (switch.list.upper) do { k:INTEGER;
-      case := switch.list.item k.code;
-      (! case.is_empty).if {
-	loop_end ?= case.last;
-	(loop_end != NULL).if {	  
-	  ? {loop_end.loop = Self};
-	  (loop_end.loop != Self).if {
-	    semantic_error (position,"LOOP.my_copy BUG!!!");
-	  };
-	  loop_end := LOOP_END.create (loop_end.position) loop result;
-	  case.put loop_end to (case.upper);
-	};
-      };
-    };
-    
-    (result.link_count != link_count).if {      
-      name.print;
-      " Origin:".print;
-      link_count.print;
-      " copy:".print;
-      result.link_count.print;
-      '\n'.print;
-      
-      body.debug_display;
-      
-      semantic_error (position,"LOOP: Bug in copy.");
-    };
-    
-    ? {result.link_count = link_count};
-    result
-  );
-
-  //
-  // Generation.
-  //
-
-  - remove <-
-  ( 
-    body.remove;    
-    ? {link_count = 0};
-  );
-  
-  - execute:INSTR <-
-  ( + result:INSTR;     
-    + cur_seq_call_local_and_loop:INTEGER;
-    + cur_seq_call_and_loop:INTEGER;
-    
-    (link_count = 0).if {
-      result := body.execute;
-      new_execute_pass;
-    } else {      
-      cur_seq_call_local_and_loop := 
-      seq_call_local_and_loop     := seq_call_local_and_loop + link_count;
-      //
-      cur_seq_call_and_loop :=
-      seq_call_and_loop     := seq_call_and_loop + link_count;
-      //
-      seq_inline := seq_inline + 1;
-      //
-      result := Self;
-      body.execute_case;      
-      (loop_invariant = Self).if {
-	loop_list := list_current;
-	loop_seq_index := Old seq_index;
-	//
-	loop_seq_call_local_and_loop := cur_seq_call_local_and_loop;
-	loop_seq_call_and_loop       := cur_seq_call_and_loop;
-	//
-	seq_call_local_and_loop := seq_call_local_and_loop + link_count;
-	seq_call_and_loop       := seq_call_and_loop + link_count;
-	body.execute_case;      
-	loop_invariant := NULL;
-      };
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (    
-    buffer.append name;
-    display_ref buffer;
-    buffer.append ":\n";
-    buffer.append indent;
-    body.display buffer;
-  );
-
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  (         
-    (! genere_while buffer).if {
-      buffer.append name;
-      buffer.append ":\n";
-      buffer.append indent;
-      body.genere buffer;
-    };
-  );
-  
-  - genere_while buffer:STRING :BOOLEAN <-
-  ( + switch:SWITCH;
-    + lst_true,lst_false,lst:LIST;
-    + inverse:BOOLEAN;
-    + result:BOOLEAN;
-    
-    (body.is_empty).if {        
-      semantic_error (position,"LOOP BUG: Body loop empty !");
-    };
-    switch ?= body.last;
-    (
-      (switch != NULL) && 
-      {switch.list.count = 2} &&
-      {switch.list.first.id = type_true } && 
-      {switch.list.second.id = type_false}
-    ).if {
-      lst_true  := switch.list.first.code;
-      lst_false := switch.list.second.code;
-      ((lst_true.is_empty) || {lst_false.is_empty}).if {
-	(! lst_false.is_empty).if {
-	  inverse := TRUE;
-	  lst := lst_true;
-	  lst_true := lst_false;
-	  lst_false := lst;
-	};
-	(body.count = 1).if {
-	  //
-	  // While (...) do {...}.
-	  //
-	  result := TRUE;
-	  inverse.if {
-	    buffer.append "while (!";	    
-	  } else {
-	    buffer.append "while (";	    
-	  };
-	  switch.expr.genere buffer;
-	  //
-	  buffer.append ") ";
-	  lst_true.remove_last; 
-	  lst_true.genere buffer;
-	}.elseif {lst_true.count = 1} then {
-	  //
-	  // Do {...} while (...).
-	  //
-	  result := TRUE;
-	  buffer.append "do ";
-	  body.remove_last;
-	  body.genere buffer;
-	  inverse.if {
-	    buffer.append " while (!";	    
-	  } else {
-	    buffer.append " while (";	    
-	  };	  
-	  //
-	  switch.expr.genere buffer;
-	  buffer.add_last ')';
-	};	
-      };
-    };
-    result
-  );
-  
diff --git a/src/code_life/loop_end.li b/src/code_life/loop_end.li
deleted file mode 100644
index 44ad2ce..0000000
--- a/src/code_life/loop_end.li
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := LOOP_END;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Loop end (call tail recursive).";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  + loop:LOOP;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION loop l:LOOP :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p loop l;
-    result
-  );
-  
-  - make p:POSITION loop l:LOOP <-
-  (     
-    position := p;    
-    loop := l;
-    loop.set_link;
-  );
-  
-  - my_copy:SELF <-
-  ( 
-    // Warning: See LOOP.my_copy
-    Self
-  );
-
-  //
-  // Generation.
-  //
-
-  - remove <-
-  ( 
-    loop.unset_link;    
-  );
-  
-  - execute:INSTR <-
-  (        
-    (list_current = loop.body).if {
-      POSITION.put_error semantic text "Recursivity without end (LOOP_END).";
-      loop.position.put_position;
-      position.put_position;
-      POSITION.send_error;
-    };
-    
-    ((is_optimization) && {loop_invariant = NULL} && {loop.link_count = 1}).if {
-      loop_invariant := loop;
-    };
-    
-    seq_call_local_and_loop := seq_call_local_and_loop - 1;
-    seq_call_and_loop       := seq_call_and_loop - 1;        
-    seq_inline := seq_inline + 1;
-    Self
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (    
-    buffer.append "goto ";
-    buffer.append (loop.name);
-    display_ref buffer;
-  );
-
-  //
-  // Generation.
-  //
-  
-  - genere buffer:STRING <-
-  (             
-    buffer.append "goto ";
-    buffer.append (loop.name);
-  );
-  
diff --git a/src/code_life/nop.li b/src/code_life/nop.li
deleted file mode 100644
index 4c2e22e..0000000
--- a/src/code_life/nop.li
+++ /dev/null
@@ -1,65 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := NOP;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "The nop instruction";
-  
-  // BSBS: il faurai voir si c'est encore utile... (attention à la phase recursive)
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public
-  
-  - my_copy:SELF <- Self;
-  
-  //
-  // Execute.
-  //
-
-  - remove <-
-  (
-    // Nothing.
-  );
-  
-  - execute:INSTR <- NULL;
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.append "nop";
-  );
-
-
-
-
-
-
diff --git a/src/code_life/push.li b/src/code_life/push.li
deleted file mode 100644
index fb46758..0000000
--- a/src/code_life/push.li
+++ /dev/null
@@ -1,165 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PUSH;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Push context for debug mode";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section PUSH,LISAAC
-  
-  - source_line:HASHED_DICTIONARY[STRING,UINTEGER_32] := 
-  HASHED_DICTIONARY[STRING,UINTEGER_32].create;
-  
-Section Public
-  
-  + context:LOCAL;
-  
-  + is_first:BOOLEAN;
-  
-  - set_first f:BOOLEAN <-
-  (
-    is_first := f;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create pos:POSITION context v:LOCAL first f:BOOLEAN :SELF <-
-  ( + result:SELF;
-    ? {v != NULL};
-    
-    result := clone;
-    result.make pos context v first f;
-    result
-  );
-  
-  - make pos:POSITION context v:LOCAL first f:BOOLEAN <-
-  ( ? {pos.code != 0};            
-    ? {v != NULL};
-    (v = NULL).if {
-      crash_with_message "PUSH";
-    };
-    position := pos;
-    context := v;
-    is_first := f;    
-  );
-    
-  - my_copy:SELF <- 
-  ( + result:SELF;
-    + new_context:LOCAL;
-    
-    (LOCAL.is_alias).if {
-      new_context := context.get_alias;
-      new_context.set_ensure_count 1;
-      result := create position context new_context first is_first;
-    } else {    
-      result := create position context context first is_first;
-    };
-    result      
-  );
-      
-  //
-  // Execute.
-  //
-
-  - remove <-
-  (
-    // Nothing.
-  );
-  
-  - execute:INSTR <- 
-  ( + result:INSTR;
-    + other:SELF;
-    
-    result := Self;
-    (list_current.index < list_current.upper).if {
-      other ?= list_current.item (list_current.index + 1);
-      (other != NULL).if {
-	(other.context = context).if {
-	  result := NULL;
-	  (is_first).if {
-	    other.set_first TRUE;
-	  };
-	}.elseif {(is_first) && {! other.is_first}} then {
-	  result := NULL;
-	};
-      };      
-    };
-    result
-  );
-
-  //
-  // Genere
-  //
-    
-  - genere buffer:STRING <-
-  ( + id:UINTEGER_32;
-    add_var_size context;
-    (is_first).if {      
-      buffer.append "push_first(&";
-    } else {
-      buffer.append "push(&";
-    };
-    buffer.append (context.intern_name);
-    buffer.add_last ',';
-    id := position.code;
-    (debug_with_code).if {
-      (! source_line.fast_has id).if {
-	source_line.fast_put (position.extract_line) to id;
-      };
-      buffer.add_last 'L';
-    };
-    id.append_in buffer;
-    buffer.add_last ')';    
-    
-    buffer.append "; // L";
-    position.line.append_in buffer;
-    buffer.add_last ' ';
-    buffer.append (position.prototype.name);    
-    
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.append "push(";
-    buffer.append (context.intern_name);
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
diff --git a/src/code_life/read.li b/src/code_life/read.li
deleted file mode 100644
index db930ab..0000000
--- a/src/code_life/read.li
+++ /dev/null
@@ -1,256 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := READ;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Read for local, global or slot";
-  
-Section Inherit
-
-  + parent_expr:Expanded EXPR;
-    
-Section Public
-  
-  - is_slot:BOOLEAN <- FALSE;
-  
-  - variable:VARIABLE <- 
-  (
-    deferred;
-    NULL
-  );
-
-  - static_type:TYPE_FULL <- 
-  ( 
-    variable.type
-  );
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    result ?= variable.read position;
-    result
-  );
-  
-  //
-  // Searching.
-  //
-  
-  - get_type t:TYPES_TMP <-
-  (     
-    variable.get_type t;
-  );
-  
-  - get_last_value:EXPR <- variable.get_last_value NULL;
-  
-  //
-  // Executing pass.
-  //
-
-  - remove <-
-  (
-    variable.unread Self;      
-  );
-    
-  - is_require_constant:CONSTANT <-
-  ( + result:CONSTANT;
-    + j:INTEGER;
-    + val:EXPR;   
-    + req_list:FAST_ARRAY[WRITE];
-    //? { variable.require_first != NULL };
-    
-    ((variable.require_first = NULL) && {!variable.type.is_expanded}).if {
-      variable.intern_name.print; '\n'.print;
-      "style [".print; variable.style.print; "]\n".print;
-      warning_error (position,"READ : Compiler BUG! (require_first = NULL) ");
-      //list_current.debug_display;
-      die_with_code 0;
-      //crash_with_message "BUG READ : require_first = NULL";
-    };
-    
-    (variable.require_first != NULL).if {
-      val := variable.require_first.value;
-      (val.is_constant).if {
-	result   ?= val;
-	req_list := variable.require_list;
-	(req_list != NULL).if {
-	  j := req_list.lower;
-	  {(j > req_list.upper) || {result = NULL}}.until_do {
-	    val := req_list.item j.value;
-	    ((! val.is_constant) || {result !== val}).if {
-	      result := NULL;
-	    };
-	    j := j + 1;
-	  };
-	};
-      };
-    };
-    result
-  );
-
-  - execute_access_unlink:INSTR <- 
-  (
-    deferred;
-    NULL
-  );
-  
-  - execute_access_link <- deferred;
-  
-  - execute_unlink:INSTR <-
-  // Delete read
-  (
-    variable.unread Self;
-    new_execute_pass;
-    execute_access_unlink    
-  );
-  
-  - execute_link:EXPR <-
-  ( + cst:CONSTANT;
-    + rec:INSTR;
-    + result:EXPR;
-    + val:EXPR;
-    + s:SLOT_DATA;
-    + l:LOCAL;
-    + wrt:WRITE;
-    + tmp_type:TYPES_TMP;
-    //+ old_loop_invariant:LOOP;
-    
-    // Simplify type.
-    ((! variable.is_static) && {! variable.type.is_strict}).if {
-      tmp_type := TYPES_TMP.new;
-      variable.get_type tmp_type;
-      (tmp_type.first = TYPE_NULL).if {
-        tmp_type.remove_first;
-      };      
-      (tmp_type.count = 1).if {        
-        variable.set_type (tmp_type.first.default.to_strict);        
-      };
-      tmp_type.free;
-    };
-    
-    //
-    s ?= variable;
-    ( 
-      (s = NULL) || {
-	((s.style != '+') || {! s.id_section.is_mapping}) &&
-	{(! variable.type.is_expanded) || {variable.type.is_default_expanded}}
-      }
-    ).if {      
-      cst := is_require_constant;  // BSBS: Ce cas devrait rentrer dans get_last_value
-      (cst != NULL).if {
-	//
-	// CONSTANT propagation.
-	//
-	variable.unread Self;
-	rec := execute_access_unlink;
-	(rec != NULL).if {
-	  list_current.insert_before rec;
-	};
-	result := cst.my_copy;
-	new_execute_pass;
-      }.elseif {      
-	(val := get_last_value) != NULL
-      } then {
-	//
-	// VALUE_EXPR propagation, step by step.
-	//      	
-	result := val;
-	variable.unread Self;	
-	new_execute_pass;
-      };
-    };
-    
-    (result = NULL).if {
-      //
-      // Normal.
-      //      
-      ((is_slot) && {loop_invariant != NULL} && {is_invariant}).if {	
-	//old_loop_invariant := loop_invariant;
-	//loop_invariant := NULL;
-	//
-	l := static_type.get_temporary position;
-	wrt := l.write position value Self;
-	loop_list.insert_before wrt;
-	result := l.read position;	
-	//
-	//wrt.execute;
-	//result := result.execute_link;
-	//
-	//loop_invariant := old_loop_invariant;
-	count_invariant := count_invariant + 1;
-      } else {
-	variable.set_read;
-	execute_access_link;
-	result := Self;  
-      };
-    };
-    result
-  );
-
-  //
-  // Display.
-  //
-
-  - display_ref buffer:STRING <-
-  ( + req_list:FAST_ARRAY[WRITE];
-    //is_verbose.if {
-      buffer.add_last '<';
-      buffer.append (object_id.to_string);
-      buffer.append "/R";
-      (variable.require_first != NULL).if {
-	variable.require_first.object_id.append_in buffer;
-	req_list := variable.require_list;
-	(req_list != NULL).if {
-	  (req_list.lower).to (req_list.upper) do { j:INTEGER;
-	    buffer.add_last ',';
-	    req_list.item j.object_id.append_in buffer;
-	  };
-	};
-      } else {
-	buffer.add_last '*';
-      };
-      buffer.append "/E";
-      variable.ensure_count.append_in buffer;
-      buffer.add_last '>';
-    //};
-  );
-  
-  - display buffer:STRING <-
-  (
-    buffer.append (variable.intern_name);
-    buffer.add_last '[';
-    variable.type.append_name_in buffer;
-    buffer.add_last ']';
-    display_ref buffer;
-  );
-
-
-
-
-
-
-
-
-
-
diff --git a/src/code_life/read_global.li b/src/code_life/read_global.li
deleted file mode 100644
index 9be3baf..0000000
--- a/src/code_life/read_global.li
+++ /dev/null
@@ -1,106 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := READ_GLOBAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Read for global";
-  
-Section Inherit
-  
-  + parent_read:Expanded READ;
-    
-Section Public
-  
-  - is_invariant:BOOLEAN <- global.is_invariant NULL;  
-  
-  + global:SLOT_DATA;
-  
-  - variable:VARIABLE <- global;
-  
-  //
-  // Comparison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <- 
-  ( + rd:READ_GLOBAL;
-    
-    rd ?= other;
-    ((rd != NULL) && {global = rd.global})    
-  );
-    
-  //
-  // Creation.
-  //
-    
-  - create p:POSITION with g:SLOT_DATA :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with g;
-    result    
-  );
-  
-  - make p:POSITION with g:SLOT_DATA <-
-  (
-    position := p;
-    global   := g;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_access_unlink:INSTR <- 
-  (
-    global.execute;
-    NULL
-  );
-
-  - execute_access_link <- 
-  (
-    global.execute;
-  );
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  (     
-    buffer.append (variable.intern_name);
-  );
-  
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/code_life/read_local.li b/src/code_life/read_local.li
deleted file mode 100644
index dfce2d9..0000000
--- a/src/code_life/read_local.li
+++ /dev/null
@@ -1,105 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := READ_LOCAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Read for local.";
-  
-Section Inherit
-  
-  + parent_read:Expanded READ;
-    
-Section Public
-  
-  - is_invariant:BOOLEAN <- local.is_invariant;  
-  
-  + local:LOCAL;
-  
-  - variable:VARIABLE <- local;
-  
-  //
-  // Comparison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <- 
-  ( + rd:READ_LOCAL;
-    
-    rd ?= other;
-    ((rd != NULL) && {local = rd.local})    
-  );
-    
-  //
-  // Creation.
-  //
-    
-  - create p:POSITION with l:LOCAL :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with l;
-    result    
-  );
-  
-  - make p:POSITION with l:LOCAL <-
-  (
-    position := p;
-    local    := l;       
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_access_unlink:INSTR <- NULL;
-  
-  - execute_access_link;
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( + tb:PROFIL_BLOCK;
-    (variable.ensure_count = -1).if {
-      buffer.add_last '*';
-    };
-    buffer.append (variable.intern_name);     
-    //
-    tb ?= local.type.raw;    
-    (tb != NULL).if {
-      add_var_size local;
-    };
-  );
-  
-
-
-
-
-
-
-
-
-
diff --git a/src/code_life/read_slot.li b/src/code_life/read_slot.li
deleted file mode 100644
index e67deb9..0000000
--- a/src/code_life/read_slot.li
+++ /dev/null
@@ -1,172 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := READ_SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Read for slot";
-  
-Section Inherit
-  
-  + parent_read:Expanded READ;
-    
-Section Public
-  
-  - is_slot:BOOLEAN <- TRUE;
-  
-  - is_invariant:BOOLEAN <- slot.is_invariant receiver;  
-  
-  + slot:SLOT_DATA;
-  
-  + receiver:EXPR;
-  
-  - variable:VARIABLE <- slot;
-  
-  - get_last_value:EXPR <- variable.get_last_value receiver;  
-  
-  //
-  // Comparison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <- 
-  ( + rd:READ_SLOT;
-    
-    rd ?= other;
-    ((rd != NULL) && {slot = rd.slot} && {receiver == rd.receiver})    
-  );
-    
-  //
-  // Creation.
-  //
-    
-  - create p:POSITION with (r:EXPR,s:SLOT_DATA) :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with (r,s);
-    result    
-  );
-  
-  - make p:POSITION with (r:EXPR,s:SLOT_DATA) <-
-  (
-    position := p;
-    receiver := r;
-    slot     := s;
-  );
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    
-    result ?= slot.read position with (receiver.my_copy);
-    result
-  );
-      
-  //
-  // Executing pass.
-  //
-    
-  - remove <-
-  (
-    receiver.remove;
-    parent_read.remove;
-  );
-  
-  - execute_access_unlink:INSTR <- 
-  (
-    slot.execute;
-    receiver.execute_unlink
-  );
-    
-  - execute_access_link <- 
-  ( 
-    slot.execute;
-    receiver := receiver.execute_link;        
-  );
-
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( + tf:TYPE_FULL;
-    + t:TYPE;
-    
-    (is_java).if {
-      receiver.genere buffer;
-      buffer.add_last '.';
-      buffer.append (variable.intern_name);
-    } else {    
-      (slot.intern_name = ALIAS_STR.slot_self).if {
-        buffer.append "((";
-        tf := slot.type;
-        tf.genere_declaration buffer;	
-        buffer.add_last ' ';
-        tf.genere_star_declaration buffer;	
-        buffer.add_last ')';
-        receiver.genere buffer;
-        buffer.append ".self)";
-      } else {
-        tf := receiver.static_type;    
-        ((tf.is_strict) || {tf.is_expanded_ref}).if {
-          receiver.genere buffer;
-          buffer.append "->";
-        }.elseif {tf.is_expanded} then {      
-          receiver.genere buffer;
-          buffer.add_last '.';          
-        } else {          
-          buffer.append "((";
-          t := slot.receiver_type;
-          t.put_reference_declaration buffer;	
-          buffer.add_last ' ';
-          t.put_reference_star_declaration buffer;	
-          buffer.add_last ')';
-          receiver.genere buffer;
-          buffer.append ")->";
-        };
-        buffer.append (variable.intern_name);
-      };    
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    receiver.display buffer;
-    buffer.append "->";
-    parent_read.display buffer;    
-  );
-
-
-
-
-
-
-
-
-
-
diff --git a/src/code_life/result.li b/src/code_life/result.li
deleted file mode 100644
index 00beca4..0000000
--- a/src/code_life/result.li
+++ /dev/null
@@ -1,91 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := RESULT;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  - parent_expr:EXPR := EXPR;
-
-Section Public
-  
-  - position:POSITION <- value.position;
-  
-  + write:WRITE;  
-  
-  - set_write v:WRITE <-
-  (
-    write := v;
-  );
-  
-  //
-  // Creation.
-  //
-
-  - create v:WRITE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make v;
-    result
-  );
-
-  - make v:WRITE <-
-  ( 
-    write := v;
-  );
-  
-  - my_copy:SELF <-
-  ( + wrt:WRITE;
-    + rd:READ;
-    rd  ?= write.value;
-    rd  := rd.variable.read_direct (rd.position) with NULL;   
-    wrt := write.variable.write (write.position) with NULL value rd;    
-    create wrt
-  );
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    write.remove;
-  );
-    
-  //
-  // Expr definition.
-  // 
-  
-  - static_type:TYPE_FULL <- write.value.static_type;
-  
-  - get_type t:TYPES_TMP  <- write.value.get_type t;
-  
-  - execute_link:EXPR     <- write.execute_link;
-  
-  - execute_unlink:INSTR  <- write.execute_unlink;
-  
-  
\ No newline at end of file
diff --git a/src/code_life/switch.li b/src/code_life/switch.li
deleted file mode 100644
index 3a78eb4..0000000
--- a/src/code_life/switch.li
+++ /dev/null
@@ -1,528 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SWITCH;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Switch for late binding resolution";
-  
-  // BSBS: Optim. : Détecter les switch identique l'un après l'autre
-  // pour les fusionner...
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section Public  
-  
-  - is_invariant:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    
-    (expr.is_invariant).if {
-      result := TRUE;
-      j := list.lower;
-      {(j <= list.upper) && {result}}.while_do {
-	result := list.item j.code.is_invariant;
-	j := j + 1;
-      };
-    };
-    result
-  );
-  
-  + expr:EXPR;
-  
-  + list:FAST_ARRAY[CASE];
-  
-  - count:INTEGER <- list.count;
-  
-  //
-  // Creation.
-  //
-  
-  - create n:NODE with e:EXPR size s:INTEGER :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make n with e size s;
-    result
-  );  
-  
-  
-  - make n:NODE with e:EXPR size s:INTEGER <-
-  ( + first:CASE;
-    position := n.position;
-    expr     := e;
-    list     := FAST_ARRAY[CASE].create_with_capacity s;
-    (n.first_code != NULL).if {
-      first := CASE.create (n.first_type) with (n.first_code);
-      list.add_last first;
-    };
-  );
-  
-  //
-  // Copy.
-  //
-  
-  - set_expr e:EXPR list l:FAST_ARRAY[CASE] <-
-  (
-    expr := e;
-    list := l;
-  );
-
-  - my_copy:SELF <-
-  ( + result:SELF;
-    + new_list:FAST_ARRAY[CASE];
-    
-    new_list := FAST_ARRAY[CASE].create_with_capacity (list.count);
-    (list.lower).to (list.upper) do { j:INTEGER;
-      new_list.add_last (list.item j.my_copy);
-    };
-    
-    result := clone;
-    result.set_expr (expr.my_copy) list new_list;
-    result
-  );
-  
-  //
-  // Remove.
-  //
-    
-  - remove <-
-  (
-    (expr != NULL).if {
-      expr.remove;
-    };
-    (list.lower).to (list.upper) do { j:INTEGER;
-      list.item j.code.remove;
-    };    
-  );
-  
-  //
-  // Execute
-  //
-  
-  - i_am_the_last i:INSTR :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    
-    j := list.lower;
-    {(j <= list.upper) && {!result}}.while_do {
-      result := list.item j.code.i_am_the_last i;
-      j := j + 1;
-    };
-    result
-  );
-
-  - execute:INSTR <-
-  ( + lst_typ:TYPES_TMP;        
-    + result:INSTR;
-    + typ:TYPE;
-    + wrt:WRITE;
-    + lst:LIST;
-    + tb:PROFIL_BLOCK;    
-    + is_end:BOOLEAN;
-    + count_empty:INTEGER;
-    
-    // Update.
-    lst_typ := TYPES_TMP.new;        
-    expr.get_type lst_typ;       
-    ? {lst_typ.count <= list.count};        
-        
-    (lst_typ.count > list.count).if {      
-      "New type: ".print;
-      lst_typ.print;
-      "\nOld type: ".print;
-      string_tmp.clear;
-      list.lower.to (list.upper) do { j:INTEGER;
-	list.item j.id.append_name_in string_tmp;
-	string_tmp.add_last ',';
-      };
-      string_tmp.print;
-      '\n'.print;
-      syntax_error (position,"*****SWITCH BUG********");
-    };
-    
-    //    
-    // BSBS: Ajoute un pattern pour les elseif ...
-    //    
-    (lst_typ.lower).to (lst_typ.upper) do { j:INTEGER;	
-      typ := lst_typ.item j;      
-      {typ = list.item j.id}.until_do {
-	list.item j.remove;
-	list.remove j;
-      };
-      (list.item j.code.is_empty).if {
-        count_empty := count_empty + 1;
-      };
-    };    
-    {lst_typ.count = list.count}.until_do {
-      list.last.remove;
-      list.remove_last;
-    };
-    lst_typ.free;
-            
-    // Execute.
-    (
-      (list.count = 1) || {
-	(list.count = 2) && 
-	{debug_level_option = 0} && 
-        {list.first.id = TYPE_NULL} && 
-        {! list.first.code.is_empty} &&
-        {
-	  wrt ?= list.first.code.first; // For ?= with NULL type.
-	  wrt = NULL
-	}
-      }
-    ).if {
-      result := expr.execute_unlink;
-      (result != NULL).if {
-	list_current.insert_before result;
-      };
-      tb ?= list.last.id;
-      (tb != NULL).if {
-	tb.dec_id;
-      };
-      result := list.last.code.execute;
-      is_end := TRUE;
-    }.elseif {count_empty = list.count} then { 
-      result := expr.execute_unlink;
-      is_end := TRUE;
-    };
-    //
-    (! is_end).if {
-      // Normal execution.      
-      (
-	(expr.static_type.raw = type_boolean) && 
-	{list.count = 2} && 
-	{list.first.code.is_empty}
-      ).if {
-	? {! list.second.code.is_empty};
-	expr := EXPR_NOT_LOGIC.create (expr.position) with expr;
-	lst := list.first.code;
-	list.first .set_code (list.second.code);
-	list.second.set_code lst;
-      };
-      expr := expr.execute_link;      
-      
-      CALL_SLOT.reset_count_no_recursive;
-      ((list.first.id = TYPE_NULL) && {list.count = 2}).if { 	
-	list.first .code.execute_case;
-	list.second.code.execute_case;		
-      } else {		
-	(list.lower).to (list.upper) do { j:INTEGER;
-          list.item j.execute;	          
-	};
-      };      
-      result := detect_logic_expr;
-      (result = NULL).if {      	
-	result := Self;
-      };
-    };    
-    result
-  );
-  
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  ( + lst:LIST;
-    + first_case:INTEGER;
-    + typ_first:TYPE;
-    + typ_id:TYPE_ID;
-    + wrt:WRITE;
-        
-    (
-      (list.first.id = TYPE_NULL) && 
-      {debug_level_option = 0} && 
-      {! list.first.code.is_empty} && 
-      {
-	wrt ?= list.first.code.first; // For ?= with NULL type.
-	wrt = NULL
-      }
-    ).if {
-      list.remove_first;
-    };
-    /*
-    i := list.upper;
-    {i >= list.lower}.while_do {
-      (list.item i.code.is_empty).if {
-        list.remove i;
-      };
-      i := i - 1;
-    };      
-    */
-    //
-    //(list.is_empty).if_false {
-      typ_first := list.first.id;
-      typ_id ?= typ_first;    
-      ((list.count <= 2) || {typ_first = TYPE_NULL}).if {
-        buffer.append "if (";
-        //                        
-        ((expr.static_type.raw.is_block) && {typ_first = TYPE_NULL}).if {
-          expr.genere buffer;	
-          buffer.append ".__id==0";
-        } else {
-          typ_first.put_access_id expr in buffer;      
-          (expr.static_type.raw != type_boolean).if {
-            buffer.append "==";
-            typ_first.put_id buffer;	
-          } else {
-            ? {typ_first.name = ALIAS_STR.prototype_true};
-          };
-        };
-        buffer.append ") ";
-        //
-        list.first.genere buffer;             
-        first_case := 1;
-        //
-        (list.count = 2).if {
-          lst := list.second.code;                    
-          (! list.second.code.is_empty).if {
-            buffer.append " else ";
-            
-            buffer.append "/* ";
-            buffer.append (list.second.id.name);
-            buffer.append " */ ";
-            
-            list.second.genere buffer;          
-          };
-          first_case := 2;
-        }.elseif {list.count > 2} then {
-          buffer.append " else {\n";
-          indent.append "  ";
-          buffer.append indent;          
-        };
-      };
-      (first_case <= list.upper).if {
-        polymorphic_counter := polymorphic_counter + 1;            
-        buffer.append "switch (";      
-        list.item first_case.id.put_access_id expr in buffer;
-        buffer.append ") {\n";
-        (first_case).to (list.upper) do { j:INTEGER;
-          (! list.item j.code.is_empty).if {
-            buffer.append indent; 
-            buffer.append "case ";
-            list.item j.id.put_id buffer;
-            buffer.append ": ";          
-            list.item j.genere buffer;        
-            buffer.add_last ' ';	
-            buffer.append "break;\n";
-          };
-        };	      
-        buffer.append indent;
-        buffer.add_last '}';
-        (first_case != 0).if {
-          buffer.add_last '\n';
-          indent.remove_last 2;    
-          buffer.append indent;
-          buffer.add_last '}';
-        };
-      };
-    //};
-  );
-      
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  ( + line:BLOCK;
-    
-    line := 
-    { j:INTEGER;
-      + i:LIST;
-      buffer.append indent;
-      buffer.put '+' to (buffer.upper-1);
-      buffer.put '-' to (buffer.upper);
-      buffer.append (list.item j.id.intern_name);
-      buffer.append ":\n";
-      buffer.append indent;
-      i := list.item j.code;
-      (i = NULL).if {
-	buffer.append "<Empty>";
-      } else {
-	i.display buffer;
-      };
-    };
-    
-    buffer.append "Switch ";
-    expr.display buffer;
-    buffer.add_last '\n';
-    (list.count > 0).if {
-      indent.append "| ";    
-      0.to (list.upper - 1) do { j:INTEGER;
-	line.value j;
-	buffer.add_last '\n';
-      };    
-      indent.put ' ' to (indent.upper-1);
-      line.value (list.upper);
-      indent.remove_last 2;
-    };
-  );
-  
-  - switch_new_pass:BOOLEAN;
-  - reset_switch_new_pass <-
-  (
-    switch_new_pass := FALSE;
-  );
-  
-Section Private
-  
-  - detect_logic_expr:INSTR <-
-  // Detection !, |, &, ||, && :
-  ( + result:INSTR;
-    + wr_true,wr_false:WRITE;
-    + rd:READ;
-    + val_true,val_false:EXPR;
-    + a,b,c,d:BOOLEAN;
-
-    (
-      (expr.static_type.raw = type_boolean) && 
-      {list.count = 2} && 
-      {list.first.code.count  = 1} && 
-      {list.second.code.count = 1}
-    ).if {
-      ? {list.first.id  = type_true };
-      ? {list.second.id = type_false};
-      
-      ((list.first.id != type_true) || {list.second.id != type_false}).if {
-	syntax_error (position,"PB dans SWITCH.");
-      };
-      
-      wr_true  ?= list.first .code.first;
-      wr_false ?= list.second.code.first;
-      (
-	(wr_true  != NULL) && 
-	{wr_false != NULL} &&
-	{wr_true.static_type.raw = type_boolean} &&
-	{wr_true.variable = wr_false.variable}
-      ).if {
-	val_true  := wr_true .value;
-	val_false := wr_false.value;	
-	// BSBS: val_true.static_type = type_true ???
-	(
-	  (a := val_true.is_constant) && 
-	  {b := (val_true.static_type.raw = type_true)}
-	).if {
-	  // | or ||
-	  rd ?= val_false;	  
-	  (rd != NULL).if {
-	    // | 
-	    wr_true.remove;
-	    val_false := EXPR_OR_LOGIC.create position with expr and val_false;
-	    wr_false.set_value val_false;
-	    result := wr_false;
-	    new_execute_pass;
-	  }.elseif {(CALL_SLOT.count_no_recursive = 0) || {modify_count = 0}} then {
-	    // ||
-	    wr_true.remove;
-	    val_false := EXPR_OR_OR_LOGIC.create position with expr and val_false;
-	    wr_false.set_value val_false;
-	    result := wr_false;
-	    switch_new_pass := TRUE;
-	  };	  	  
-	}.elseif {
-	  (c := val_false.is_constant) && 
-	  {d := (val_false.static_type.raw = type_false)}
-	} then {
-	  // & or &&	  
-	  rd ?= val_true;	  
-	  (rd != NULL).if {
-	    // & 
-	    wr_false.remove;	  
-	    val_true := EXPR_AND_LOGIC.create position with expr and val_true;
-	    wr_true.set_value val_true;
-	    result := wr_true;	    
-	    new_execute_pass;
-	  }.elseif {(CALL_SLOT.count_no_recursive = 0) || {modify_count = 0}} then {
-	    // &&	    
-	    wr_false.remove;
-	    val_true := EXPR_AND_AND_LOGIC.create position with expr and val_true;
-	    wr_true.set_value val_true;
-	    result := wr_true;
-	    switch_new_pass := TRUE;
-	  };	  
-	}.elseif {
-	  (a) && {!b} && {c} && {!d}
-	} then {
-	  // !
-	  wr_false.remove;
-	  wr_true.set_value (EXPR_NOT_LOGIC.create position with expr);
-	  result := wr_true;	  
-	  new_execute_pass;
-	};
-      };
-    };
-    result
-  );
-  
-  - switch_fusion <-
-  ( + other:SWITCH;
-    + index:INTEGER;
-    + wrt:WRITE;
-    + rd,rd2:READ;
-    
-    index := list_current.index + 1;
-    other ?= list_current.item index;
-    ((other != NULL) && {other.expr == expr} && {other.list.count = list.count}).if {
-      concat_switch other;
-      list_current.put NOP to index;
-    };
-    (index < list_current.upper).if {
-      // BSBS: Dans ce cas la, tu devrai en avoir 250 !!!!
-      // Regarde pourquoi tu n'as que 14 cas !
-      wrt ?= list_current.item index;
-      rd  ?= expr; 
-      ((wrt != NULL) && {rd != NULL} && {wrt.variable != rd.variable}).if {
-	rd2   ?= wrt.value;	
-	other ?= list_current.item (index + 1);
-	((rd2 != NULL) && {other != NULL} && 
-	{other.expr == expr} && {other.list.count = list.count}).if {
-	  (list.lower).to (list.upper-1) do { j:INTEGER;
-	    list.item j.code.add_last (wrt.my_copy);
-	  };
-	  list.last.code.add_last wrt;
-	  list_current.put NOP to index;
-	  concat_switch other;
-	  list_current.put NOP to (index + 1);	  
-	};
-      };
-    };
-  );
-    
-  - concat_switch other:SWITCH <-
-  ( + other_list:FAST_ARRAY[CASE];
-    + code:LIST;
-    
-    other.expr.remove;
-    other_list := other.list;
-    (list.lower).to (list.upper) do { j:INTEGER;
-      code := list.item j.code;
-      code.add_last (other_list.item j.code);
-    };
-    new_execute_pass;
-  );
\ No newline at end of file
diff --git a/src/code_life/write.li b/src/code_life/write.li
deleted file mode 100644
index 091473a..0000000
--- a/src/code_life/write.li
+++ /dev/null
@@ -1,279 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := WRITE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Write local, global or slot";
-  
-Section Inherit
-
-  + parent_instr:Expanded INSTR;
-    
-Section Public
-  
-  //
-  // Debug !!!!
-  //
-  
-  + is_delete:BOOLEAN;
-  
-  + is_create:BOOLEAN;
-  
-  - set_delete <-
-  (
-    is_delete := TRUE;
-  );
-  
-  - set_create <-
-  (
-    is_create := TRUE;
-  );
-  
-  //
-  // Fin debug !!!!
-  //
-  
-  + quiet_generation:BOOLEAN;
-  
-  - set_quiet_generation <-
-  (
-    quiet_generation := TRUE;
-  );
-  
-  - is_invariant:BOOLEAN <- value.is_invariant;
-  
-  - variable:VARIABLE <-
-  (
-    deferred;
-    NULL
-  );
-  
-  - static_type:TYPE_FULL <- 
-  ( 
-    variable.type
-  );
-  
-  + value : EXPR;
-
-  - set_value new:EXPR <-
-  (
-    value := new;
-  );
-
-  - ensure_count:INTEGER <- variable.ensure_count;
-  
-  - get_type t:TYPES_TMP <-
-  (
-    (value != NULL).if {
-      value.get_type t;
-    };
-  );
-    
-  - my_copy:SELF <-
-  ( + new_val:EXPR;    
-    + result:SELF;
-    
-    new_val := value.my_copy;
-    result ?= variable.write position value new_val;
-    result
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute_access_unlink:INSTR <- 
-  (
-    deferred;
-    NULL
-  );
-  
-  - execute_access_link <- deferred;
-  
-  - execute:INSTR <-
-  ( + result:INSTR;
-    + read:READ;
-    + val:INSTR;
-    + slot:SLOT_DATA;
-    //+ old_loop_invariant:LOOP;
-    
-    ? { variable != NULL };
-    ? { value    != NULL };
-    
-    //debug_display;
-    
-    slot ?= variable;
-    (      
-      ( // First case : No link.
-        (ensure_count = 0) && {(slot = NULL) || {! slot.id_section.is_mapping}}
-      ) || 
-      { // Second case : a := a;
-	read ?= value;
-	(read != NULL) && 
-	{variable = read.variable} &&
-	{(variable.is_local) || {variable.style = '-'}}	// BSBS: Ce cas dans rentrer dans set_write
-      }
-    ).if {
-      //
-      // Supprime affectation.
-      //  
-                  
-      val := execute_access_unlink;
-      (val != NULL).if {
-	list_current.insert_before val;
-      };
-      variable.unwrite Self;
-      result := value.execute_unlink;
-      new_execute_pass;
-    } else {
-      //
-      // Execution normal.
-      //            
-      /*( // BSBS: Bug, mais de toute facon le gain n'est pas la... (entre +5 a +20)
-	(loop_invariant != NULL) && {list_current = loop_invariant.body} && 
-	{is_invariant} && {variable.get_last_index != -1}
-      ).if {	
-	//old_loop_invariant := loop_invariant;
-	//loop_invariant := NULL;
-	//
-	variable.reset_last_write Self;
-	loop_list.insert_before Self;
-	//
-	//execute_access_link;      
-	//value := value.execute_link;      
-	//seq_index := seq_index + 1;
-	//
-	//loop_invariant := old_loop_invariant;
-	result := NOP;
-	count_invariant := count_invariant + 1;
-      } else { */
-        
-        execute_access_link;              
-	value := value.execute_link;      
-	seq_index := seq_index + 1;
-	variable.set_write Self;
-	result := Self;      
-      //};
-    };
-    result
-  );
-    
-  - remove <-
-  (
-    variable.unwrite Self;
-    value.remove;
-    //free_allocation_memory;    
-  );
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( + loc:LOCAL;
-    + slo:SLOT;
-    
-    (is_local).if { // BSBS: Pour finir, il faut spécialiser les READ, WRITE avec multiheritage
-      loc ?= variable;
-      add_var_size loc;
-    } else {
-      slo ?= variable;
-      slo.receiver_type.add_genere_list;
-    };
-    (quiet_generation).if_false {
-      genere_access buffer;
-      buffer.add_last '=';    
-      genere_value buffer;
-    };
-  );
-  
-  - genere_value buffer:STRING <-
-  (            
-    (is_java).if {
-      value.genere buffer;    
-    } else {    
-      (
-        (static_type.is_expanded_ref) && 
-        {! value.static_type.is_expanded_ref}
-      ).if {
-        ? {value.static_type.is_expanded};
-        buffer.append "&(";
-        value.genere buffer;    
-        buffer.add_last ')';
-      }.elseif {
-        (static_type.is_expanded) && {! static_type.is_expanded_ref} &&
-        {(! value.static_type.is_expanded) || {value.static_type.is_expanded_ref}} &&
-        {value.static_type.raw != TYPE_NULL} // For Pointer := NULL
-      } then {
-        buffer.append "*(";
-        value.genere buffer;    
-        buffer.add_last ')';
-      } else {
-        value.genere buffer;
-      };
-    };
-  );
-    
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (    
-    //crash;
-    buffer.append (variable.intern_name);
-    
-    buffer.add_last '[';
-    variable.type.append_name_in buffer;
-    buffer.add_last ']';
-        
-    buffer.append " :=";
-    //to_pointer.append_in buffer;
-    display_ref buffer;
-    buffer.add_last ' ';
-        
-    (value = NULL).if {
-      buffer.append "<NULL>";
-    } else {
-      value.display buffer;
-    };
-  );
-
-  - display_ref buffer:STRING <-
-  (
-    is_verbose.if {
-      buffer.add_last '<';
-      buffer.append (object_id.to_string);
-      buffer.add_last '/';      
-      ensure_count.append_in buffer;     
-      buffer.add_last '>';
-    };
-  );
-  
-
-
-
-
diff --git a/src/code_life/write_global.li b/src/code_life/write_global.li
deleted file mode 100644
index 8a48aa0..0000000
--- a/src/code_life/write_global.li
+++ /dev/null
@@ -1,96 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := WRITE_GLOBAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Write global";
-  
-Section Inherit
-
-  + parent_write:Expanded WRITE;
-    
-Section Public
-  
-  + global:SLOT_DATA;
-  
-  - variable:VARIABLE <- global;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with val:EXPR in g:SLOT_DATA :SELF <-
-  ( + result:SELF;
-    ? {p.code != 0};
-    result := clone;
-    result.make p with val in g;
-    result
-  );
-  
-  - make p:POSITION with val:EXPR in g:SLOT_DATA <-
-  (     
-    position := p;
-    value    := val;
-    global   := g;
-  );
-      
-  //
-  // Execute.
-  //
-
-  - execute_access_unlink:INSTR <- 
-  (
-    global.execute;
-    NULL
-  );
-
-  - execute_access_link <- 
-  (    
-    global.execute;
-  );
-
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( 
-    global.receiver_type.add_genere_list;
-    (quiet_generation).if_false {
-      buffer.append (global.intern_name);
-      //
-      ((value.static_type.raw = TYPE_NULL) && {variable.type.raw.is_block}).if {
-        buffer.append ".__id=0";
-      } else {
-        buffer.add_last '=';    
-        genere_value buffer;
-      };
-    };
-  );
-  
-
-
-
diff --git a/src/code_life/write_local.li b/src/code_life/write_local.li
deleted file mode 100644
index 881b994..0000000
--- a/src/code_life/write_local.li
+++ /dev/null
@@ -1,147 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := WRITE_LOCAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Write local";
-  
-Section Inherit
-
-  + parent_write:Expanded WRITE;
-    
-Section Public
-    
-  + local:LOCAL;
-  
-  - variable:VARIABLE <- local;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with val:EXPR in l:LOCAL :SELF <-
-  ( + result:SELF;
-    ? {p.code != 0};
-    result := clone;
-    result.make p with val in l;
-    result
-  );
-  
-  - make p:POSITION with val:EXPR in l:LOCAL <-
-  (     
-    position := p;
-    local    := l;
-    value    := val;    
-  );
-    
-  //
-  // Execute.
-  //
-  
-  - execute_access_unlink:INSTR <- NULL;
-  
-  - execute_access_link;
-
-  - execute_argument:BOOLEAN <- 
-  // BSBS: Cette methode foireuse ne doit plus etre necessaire (utilise execute normal)
-  ( + new_val:INSTR;
-    + read:READ;    
-    + result:BOOLEAN;
-    
-    ? { variable != NULL };
-    ? { value    != NULL };
-    
-    read ?= value;
-    (ensure_count = 0).if {
-      //
-      // Supprime affectation.
-      //      
-      new_val := value.execute_unlink;
-      (new_val = NULL).if {
-	result := TRUE;
-      }.elseif {list_current.old_seq_or_and = seq_or_and} then {
-	list_current.insert_before new_val;
-	result := TRUE;
-      } else {
-	value ?= new_val;
-      };
-    } else {
-      //
-      // Execution normal.
-      //            
-      execute_access_link;
-      value := value.execute_link;      
-    };
-    result
-  );  
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( 
-    add_var_size local;        
-    (quiet_generation).if_false {
-      (variable.ensure_count = -1).if { // BSBS : Bidouille !!!
-        buffer.add_last '*';
-      };    
-      buffer.append (variable.intern_name);     
-      //
-      ((value.static_type.raw = TYPE_NULL) && {variable.type.raw.is_block}).if {
-        buffer.append ".__id=0";
-      } else {
-        buffer.add_last '=';    
-        genere_value buffer;
-      };
-    };
-  );
-  
-  - genere_first_result buffer:STRING <-
-  (
-    add_var_size local;        
-    (variable.ensure_count = -1).if { // BSBS : Bidouille !!!
-      buffer.add_last '*';
-    };
-    buffer.append (variable.intern_name);     
-    //    
-    buffer.add_last '=';    
-  );
-  
-  - genere_argument_result buffer:STRING <-
-  ( 
-    buffer.add_last '&';
-    buffer.append (variable.intern_name);    
-    local.set_ensure_count 1; // BSBS: Bidouille !
-    add_var_size local;
-  );
-  
-
-
-
-
-
-
diff --git a/src/code_life/write_slot.li b/src/code_life/write_slot.li
deleted file mode 100644
index f77f6d9..0000000
--- a/src/code_life/write_slot.li
+++ /dev/null
@@ -1,157 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := WRITE_SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Write slot";
-  
-Section Inherit
-
-  + parent_write:Expanded WRITE;
-    
-Section Public
-  
-  - is_invariant:BOOLEAN <- receiver.is_invariant && {value.is_invariant};
-  
-  + slot:SLOT_DATA;
-  
-  - variable:VARIABLE <- slot;
-  
-  + receiver:EXPR;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with val:EXPR in (r:EXPR,s:SLOT_DATA) :SELF <-
-  ( + result:SELF;
-    ? {p.code != 0};
-    result := clone;
-    result.make p with val in (r,s);
-    result
-  );
-  
-  - make p:POSITION with val:EXPR in (r:EXPR,s:SLOT_DATA) <-
-  (     
-    position := p;    
-    value    := val;
-    receiver := r;
-    slot     := s;
-  );
-    
-  - my_copy:SELF <-
-  ( + new_val:EXPR;    
-    + result:SELF;
-    
-    new_val := value.my_copy;
-    result ?= variable.write position with (receiver.my_copy) value new_val;
-    result
-  );
-  
-  //
-  // Execute.
-  //
-
-  - execute_access_unlink:INSTR <- 
-  (    
-    slot.execute;
-    receiver.execute_unlink
-  );
-    
-  - execute_access_link <- 
-  ( 
-    slot.execute;
-    receiver := receiver.execute_link;        
-  );
-  
-  - remove <-
-  (
-    receiver.remove;
-    parent_write.remove;
-  );
-  
-  //
-  // Genere
-  //
-  
-  - genere buffer:STRING <-
-  ( + tf:TYPE_FULL;
-    + t:TYPE;
-                   
-    slot.receiver_type.add_genere_list;    
-    (quiet_generation).if_false {
-      // Receiver.
-      (is_java).if {
-        receiver.genere buffer;
-        buffer.add_last '.';          
-      } else {
-        tf := receiver.static_type;    
-        ((tf.is_strict) || {tf.is_expanded_ref}).if {
-          receiver.genere buffer;
-          buffer.append "->";
-        }.elseif {tf.is_expanded} then {      
-          receiver.genere buffer;
-          buffer.add_last '.';          
-        } else {
-          buffer.append "((";
-          t := slot.receiver_type;
-          t.put_reference_declaration buffer;	
-          buffer.add_last ' ';
-          t.put_reference_star_declaration buffer;	
-          buffer.add_last ')';
-          receiver.genere buffer;
-          buffer.append ")->";          
-        };
-      };
-      //
-      buffer.append (variable.intern_name);
-      //
-      ((value.static_type.raw = TYPE_NULL) && {variable.type.raw.is_block}).if {
-        buffer.append ".__id=0";
-      } else {
-        buffer.add_last '=';    
-        genere_value buffer;
-      };
-    };
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    receiver.display buffer;
-    buffer.append "->";
-    parent_write.display buffer;    
-  );
-
-  
-  
-
-
-
-
diff --git a/src/compiler_any/any_option.li b/src/compiler_any/any_option.li
deleted file mode 100644
index 9e48f18..0000000
--- a/src/compiler_any/any_option.li
+++ /dev/null
@@ -1,47 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ANY_OPTION;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Option for compiler (see shorter)";
-  
-Section Inherit
- 
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-    
-  - is_shorter :BOOLEAN := FALSE;
-  
-  - is_shorter2:BOOLEAN := FALSE;
-  
-  //
-  // Option du Shorter.
-  // 
-  
-  - is_short_private:BOOLEAN;
-  - is_short_code:BOOLEAN;
-  
diff --git a/src/constant/character_cst.li b/src/constant/character_cst.li
deleted file mode 100644
index aff65aa..0000000
--- a/src/constant/character_cst.li
+++ /dev/null
@@ -1,99 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := CHARACTER_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Character constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-
-  //
-  // Value.
-  //
-
-  + text:STRING_CONSTANT;
-
-  //
-  // Creation.
-  //
-
-  - create p:POSITION char car:STRING_CONSTANT :SELF<-
-  ( + result:SELF;
-    result := clone;
-    result.make p char car;
-    result
-  );
-  
-  - make p:POSITION char car:STRING_CONSTANT <-
-  (
-    position := p;
-    text := car;
-    static_type := type_character.default;
-  );
-
-  - my_copy:SELF <- SELF.create position char text;
-
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-    
-  ( + s:SELF;
-    s ?= other;
-    (s != NULL) && {text = s.text}
-  );
-
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  (
-    buffer.add_last '\'';
-    buffer.append text;
-    buffer.add_last '\'';
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '\'';
-    buffer.append text;
-    buffer.add_last '\'';
-    display_ref buffer;
-  );
-
-
-
-
-
diff --git a/src/constant/constant.li b/src/constant/constant.li
deleted file mode 100644
index 77da3dd..0000000
--- a/src/constant/constant.li
+++ /dev/null
@@ -1,75 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := CONSTANT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Parent for all constants";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR; 
-  
-Section Public
-
-  //
-  // Comparison.
-  //
-  
-  - is_constant:BOOLEAN <- TRUE;
-  
-  - is_invariant:BOOLEAN <- TRUE;
-  
-  //
-  // Typing.
-  //
-    
-  + static_type:TYPE_FULL;
-  
-  - get_type t:TYPES_TMP <-
-  (                 
-    t.add (static_type.raw);
-  );
-
-  //
-  // Generation.
-  //
-
-  - remove <-
-  (
-    // Nothing. 
-  );
-  
-  - execute_unlink:INSTR <-
-  (
-    new_execute_pass;
-    NULL
-  );
-    
-  - execute_link:EXPR <- Self;
-
-  
-
-
diff --git a/src/constant/integer_cst.li b/src/constant/integer_cst.li
deleted file mode 100644
index d3caf9c..0000000
--- a/src/constant/integer_cst.li
+++ /dev/null
@@ -1,253 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := INTEGER_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Integer constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-
-  //
-  // Value.
-  //
-
-  + value:INTEGER_64;
-  
-  - set_value new_value:INTEGER_64 <-
-  (
-    value := new_value;
-    check_type;
-  );
-  
-  - to_power:INTEGER_64 <-
-  // 2^Result = self or else -1
-  ( + result,val:INTEGER_64;
-    
-    val := value;
-    (val = 0).if {
-      result := -1;
-    } else {      
-      {(val & 1) = 0}.while_do {		
-	val := val >> 1;
-	result := result + 1;
-      };
-      (val != 1).if {
-	result := -1;
-      };
-    };
-    result
-  );
-  
-  - is_signed:BOOLEAN <-
-  ( + typ:STRING_CONSTANT;
-    
-    typ := static_type.raw.name;   
-    (typ = ALIAS_STR.prototype_integer_64) ||
-    {typ = ALIAS_STR.prototype_integer_32} ||
-    {typ = ALIAS_STR.prototype_integer_16} ||
-    {typ = ALIAS_STR.prototype_integer_8 }
-  );
-  
-  - is_saturated:BOOLEAN <-
-  ( + result:BOOLEAN;
-
-    (is_signed).if {
-      result := value = -1;
-    } else {
-      (static_type.raw.name)
-      .when (ALIAS_STR.prototype_uinteger_64) then {
-	result := FALSE; // value = 0FFFFFFFFFFFFFFFFh;
-      }
-      .when (ALIAS_STR.prototype_uinteger_32) then {
-	result := value = 0FFFF_FFFFh;
-      }
-      .when (ALIAS_STR.prototype_uinteger_16) then {
-	result := value = 0FFFFh;
-      }
-      .when (ALIAS_STR.prototype_uinteger_8 ) then {
-	result := value = 0FFh;
-      };
-    };
-    result    
-  );
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION value v:INTEGER_64 type t:TYPE_FULL :SELF<-
-  ( + result:SELF;
-    result := clone;
-    result.make p value v type t;
-    result
-  );
-  
-  - make p:POSITION value v:INTEGER_64 type t:TYPE_FULL <-
-  (
-    position := p;
-    value := v;
-    static_type := t;    
-    check_type;
-  );
-
-  - my_copy:SELF <- SELF.create position value value type static_type;
-
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + p:INTEGER_CST;
-    p ?= other;
-    (p != NULL) && {value = p.value} && {static_type = p.static_type}
-  );
-
-  //
-  // Depend.
-  //
-
-  - cast_type p:TYPE_FULL <-
-  (
-//    ? { p.raw != type_integer };
-    static_type := p;
-    check_type;
-  );
-
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  (    
-    buffer.add_last ' ';    
-    value.append_in buffer;    
-    (value > UINTEGER_32.maximum.to_integer_64).if {
-      buffer.append "LLU";
-    }.elseif {value > INTEGER.maximum.to_integer_64} then {
-      buffer.append "LU";
-    };    
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    static_type.append_name_in buffer;
-    buffer.add_last ')';
-    value.append_in buffer;
-    display_ref buffer;
-  );
-  
-Section Private
-  
-  - check_type <-
-  ( + error:BOOLEAN;
-    + min,max:INTEGER_64;
-    
-    // Check Range.
-    (static_type.raw.name)
-    .when (ALIAS_STR.prototype_uinteger_64) then {
-      (value < 0).if {
-	error := TRUE;
-	max   := 0; // BSBS: A revoir...
-      };
-    }
-    .when (ALIAS_STR.prototype_uinteger_32) then {
-      ((value < 0) || {value > UINTEGER_32.maximum.to_integer_64}).if {
-	error := TRUE;
-	max   := UINTEGER_32.maximum.to_integer_64;
-      };
-    }
-    .when (ALIAS_STR.prototype_uinteger_16) then {
-      ((value < 0) || {value > UINTEGER_16.maximum.to_integer_64}).if {
-	error := TRUE;
-	max   := UINTEGER_16.maximum.to_integer_64;
-      };
-    }
-    .when (ALIAS_STR.prototype_uinteger_8) then {
-      ((value < 0) || {value > UINTEGER_8.maximum.to_integer_64}).if {
-	error := TRUE;
-	max   := UINTEGER_8.maximum.to_integer_64;
-      };
-    }
-    .when (ALIAS_STR.prototype_integer_64) then {
-      // Nothing. (Pb: BSBS : Can't range test.)
-    }
-    .when (ALIAS_STR.prototype_integer_32) then {
-      ((value < INTEGER.minimum) || {value > INTEGER.maximum.to_integer_64}).if { 
-	error := TRUE;
-	min   := INTEGER.minimum;
-	max   := INTEGER.maximum.to_integer_64;
-      };
-    }
-    .when (ALIAS_STR.prototype_integer_16) then {
-      ((value < INTEGER_16.minimum) || {value > INTEGER_16.maximum.to_integer_64}).if {
-	error := TRUE;
-	min   := INTEGER_16.minimum;
-	max   := INTEGER_16.maximum.to_integer_64;
-      };
-    }
-    .when (ALIAS_STR.prototype_integer_8) then {
-      ((value < INTEGER_8.minimum) || {value > INTEGER_8.maximum.to_integer_64}).if {
-	error := TRUE;
-	min   := INTEGER_8.minimum;
-	max   := INTEGER_8.maximum.to_integer_64;
-      };
-    };
-    
-    (error).if {
-      string_tmp.copy "Invalid constant integer (";
-      value.append_in string_tmp;
-      string_tmp.append ") cast into ";
-      static_type.append_name_in string_tmp;      
-      string_tmp.append " [";
-      min.append_in string_tmp;
-      string_tmp.append "..";
-      max.append_in string_tmp;
-      string_tmp.append "] => new value=0.";
-      POSITION.put_error warning text string_tmp;
-      position.put_position;
-      list_current.position.put_position;
-      POSITION.send_error;
-      value := 0;
-    };
-  );
-  
-
-
-
-
-
-
-
-
diff --git a/src/constant/native_array_character_cst.li b/src/constant/native_array_character_cst.li
deleted file mode 100644
index a459563..0000000
--- a/src/constant/native_array_character_cst.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := NATIVE_ARRAY_CHARACTER_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "String constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-     
-  //
-  // Value.
-  //
-
-  + string:STRING_CONSTANT;
-
-  //
-  // Creation.
-  //
-
-  - create p:POSITION text n:STRING_CONSTANT :SELF<-
-  ( + result:SELF;
-    result := clone;
-    result.make p text n;
-    result
-  );
-  
-  - make p:POSITION text n:STRING_CONSTANT <-
-  (
-    position := p;
-    string   := n;
-    static_type := type_n_a_character.default;
-  );
-
-  - my_copy:SELF <- SELF.create position text string;
-
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-  
-  ( + p:NATIVE_ARRAY_CHARACTER_CST;
-    p ?= other;
-    (p != NULL) && {string = p.string}
-  );
-
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  ( 
-    buffer.add_last '\"';
-    buffer.append string;
-    buffer.add_last '\"';
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '\"';
-    buffer.append string;
-    buffer.add_last '\"';
-    display_ref buffer;
-  );
-  
-  
-
-
-
-
diff --git a/src/constant/prototype_cst.li b/src/constant/prototype_cst.li
deleted file mode 100644
index def9dee..0000000
--- a/src/constant/prototype_cst.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PROTOTYPE_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Prototype constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION type t:TYPE_FULL :SELF<-
-  ( + result:SELF;
-    ? {p.code != 0};
-    ? {t != NULL};
-    
-    result := clone;
-    result.make p type t;
-    result
-  );
-  
-  - make p:POSITION type t:TYPE_FULL <-
-  (
-    position    := p;           
-    static_type := t.to_strict;    
-  );
-
-  - my_copy:SELF <- 
-  ( 
-    SELF.create position type static_type
-  );
-
-  //
-  // Comparaison.
-  //
-
-  - '==' Right 60 other:EXPR :BOOLEAN <-    
-  ( + p:PROTOTYPE_CST;
-    p ?= other;
-    (p != NULL) && {static_type = p.static_type}
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_link:EXPR <-
-  (     
-    Self
-  );  
-  
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  (
-    static_type.genere_value buffer;
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    static_type.display buffer;
-    display_ref buffer;    
-  );
-  
-
diff --git a/src/constant/real_cst.li b/src/constant/real_cst.li
deleted file mode 100644
index 1c07ef8..0000000
--- a/src/constant/real_cst.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := REAL_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Real float constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-
-  //
-  // Value.
-  //
-
-  + value:STRING_CONSTANT;
-    
-  //
-  // Creation.
-  //
-
-  - create p:POSITION value v:STRING_CONSTANT type t:TYPE_FULL :SELF<-
-  ( + result:SELF;
-    result := clone;
-    result.make p value v type t;
-    result
-  );
-  
-  - make p:POSITION value v:STRING_CONSTANT type t:TYPE_FULL <-
-  (
-    position := p;
-    value    := v;
-    static_type := t;    
-  );
-
-  - my_copy:SELF <- SELF.create position value value type static_type;
-
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + p:REAL_CST;
-    p ?= other;
-    (p != NULL) && {value = p.value} && {static_type = p.static_type}
-  );
-
-  //
-  // Depend.
-  //
-
-  - cast_type p:TYPE_FULL <-
-  (
-    ? { p != type_real };
-    static_type := p;    
-  );
-
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  (
-    buffer.append value;
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    static_type.append_name_in buffer;
-    buffer.add_last ')';
-    buffer.append value;
-    display_ref buffer;
-  );
-  
-  
-
-
-
-
-
-
-
-
diff --git a/src/constant/string_cst.li b/src/constant/string_cst.li
deleted file mode 100644
index 115509c..0000000
--- a/src/constant/string_cst.li
+++ /dev/null
@@ -1,180 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := STRING_CST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "String constant";
-  
-Section Inherit
-  
-  + parent_constant:Expanded CONSTANT;
-  
-Section Public
-   
-  - output:STRING := 
-  ( + result:STRING;
-    
-    result := STRING.create 256;
-    title "STRING CONSTANT" in result;
-    result
-  );
-  
-  - output_count:INTEGER;
-  
-  //
-  // Value.
-  //
-
-  + string:STRING_CONSTANT;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION text n:STRING_CONSTANT length len:INTEGER :SELF<-
-  ( + result:SELF;
-    result := clone;
-    result.make p text n length len;
-    result
-  );
-  
-  - make p:POSITION text n:STRING_CONSTANT length len:INTEGER <-
-  (
-    position := p;
-    string   := n;
-    dico_string.put len to n;
-    static_type := type_string_constant.default;
-  );
-
-  - my_copy:SELF <- clone;
-
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-  
-  ( + p:STRING_CST;
-    p ?= other;
-    (p != NULL) && {string = p.string}
-  );
-
-  //
-  // Generation.
-  //
-
-  - genere buffer:STRING <-
-  ( + idx,count,cur:INTEGER;    
-    - is_init:BOOLEAN;
-    - is_storage:BOOLEAN;
-    - is_count:BOOLEAN;
-    
-    (is_init).if_false {
-      is_storage := type_string_constant.get_local_slot (ALIAS_STR.slot_storage)
-      .slot_data_intern.ensure_count != 0;
-      is_count   := type_string_constant.get_local_slot (ALIAS_STR.slot_count)
-      .slot_data_intern.ensure_count != 0;      
-      is_init := TRUE;
-    };
-    
-    count := dico_string.fast_at string;
-    (count >= 0).if {
-      output_count := output_count + 1;
-      idx := output_count;
-      
-      cur := output.count - 1;
-      (is_java).if {
-        output.append "private static ";
-      };
-      output.append "__";
-      output.append (type_string_constant.intern_name);
-      output.append " __string_";
-      idx.append_in output;
-      output.add_last '=';
-      (is_java).if {
-        output.append "new __STRING_CONSTANT(";
-      } else {
-        output.add_last '{';
-        (static_type.is_late_binding).if {
-          output.append "__";
-          output.append (static_type.raw.intern_name);
-          output.append "__,";	
-        };
-      };
-      (is_count).if {
-        count.append_in output;
-        output.add_last ',';
-      };
-      (is_storage).if {
-	output.add_last '\"';
-	output.append string;
-	{(output.count - cur) > 78}.while_do {
-	  output.insert_string "\\\n" to (cur+78);
-	  cur := cur + 78;
-	};            
-	output.add_last '\"';
-      } else {
-        output.remove_last 1;
-      };
-      (is_java).if {
-        output.append ");\n";
-      } else {
-        output.append "};\n";
-      };
-      dico_string.fast_put (-idx) to string;
-    } else {
-      idx := -count;
-    };
-    //
-    (is_java).if {
-      buffer.append "__string_";
-      idx.append_in buffer;      
-    } else {
-      buffer.append "(&__string_";
-      idx.append_in buffer;
-      buffer.add_last ')';
-    };
-  );
-  
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (
-    buffer.add_last '\"';
-    buffer.append string;
-    buffer.add_last '\"';
-    display_ref buffer;
-  );
-  
-Section Private  
-  
-  - dico_string:HASHED_DICTIONARY[INTEGER,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[INTEGER,STRING_CONSTANT].create;
-
-
-
-
diff --git a/src/context/context.li b/src/context/context.li
deleted file mode 100644
index d190dcc..0000000
--- a/src/context/context.li
+++ /dev/null
@@ -1,222 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := CONTEXT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Create a new context for analyser";
-  
-  // BSBS: A revoir, car globalement, maintenant on compile
-  // que un slot à la fois, donc, tu n'as plus besoin de ca...
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-  
-  - stack:FAST_ARRAY[CONTEXT] := FAST_ARRAY[CONTEXT].create_with_capacity 16;
-  
-  - top:INTEGER := -1;
-  
-Section Public
-
-  //
-  // Extern
-  //  
-  
-  - push_extern pos:POSITION profil prof:PROFIL_SLOT :LOCAL <-
-  ( 
-    top := top + 1;
-    (top > stack.upper).if {
-      stack.add_last clone;
-    };
-    stack.item top.elt_push_extern pos profil prof
-  );
-  
-  - pop_extern <-
-  (
-    stack.item top.elt_pop_extern;
-    top := top - 1;
-  );
-  
-  //
-  // Block.
-  //
-  
-  - push_block p:POSITION profil prof:PROFIL_BLOCK :LOCAL <-
-  (
-    top := top + 1;
-    (top > stack.upper).if {
-      stack.add_last clone;
-    };
-    stack.item top.elt_push_block p profil prof
-  );
-   
-  - pop_block <-
-  (
-    stack.item top.elt_pop_block;
-    top := top - 1;
-  );
-
-  //
-  // Intern
-  //
-  
-  - push_intern p:POSITION <-
-  (
-    top := top + 1;
-    (top > stack.upper).if {
-      stack.add_last clone;
-    };
-    stack.item top.elt_push_intern p;
-  );
-      
-  - limit_context:INTEGER <- stack.item top.local;
-  
-  - pop_intern <-
-  (
-    stack.item top.elt_pop_intern;
-    top := top - 1;
-  );
-  
-Section Private  
-  
-  + local:INTEGER;
-  
-  + result:INTEGER;
-  
-  + list:LIST;
-  
-  + profil:PROFIL;
-  
-  + old_profil_first:PROFIL_SLOT; // BSBS: NE DOIT PAS ETRE UTILE !
-  
-  + context_extern:LOCAL;
-  
-  //
-  // Extern
-  //  
-  
-  - elt_push_extern pos:POSITION profil prof:PROFIL_SLOT :LOCAL <-
-  ( + res:LOCAL;
-    
-    local  := stack_local_lower;
-    result := stack_result_lower;    
-    list   := list_current;
-    old_profil_first := profil_first;
-    profil := profil_second;
-    //    
-    stack_local_lower  := stack_local.upper + 1;
-    stack_result_lower := stack_result.upper + 1;    
-    list_current       := LIST.create pos;
-    profil_second := profil_first := prof;    
-    //
-    (debug_level_option != 0).if {
-      // Debug mode : Add context local.
-      res := TYPE_CONTEXT.default.new_local pos name (ALIAS_STR.variable_context) style '+';
-      res.set_ensure_count 1;      
-      list_current.add_last (PUSH.create pos context res first TRUE);
-    };
-    res
-  );
-  
-  - elt_pop_extern <-
-  (        
-    ITM_OBJECT.pop_stack_until stack_local_lower;
-    stack_local_lower  := local;
-    stack_result.remove_since stack_result_lower;
-    stack_result_lower := result;    
-    list_current       := list;
-    profil_second := profil;
-    profil_first := old_profil_first;
-  );
-
-  //
-  // Block
-  //
-  
-  - elt_push_block p:POSITION profil prof:PROFIL_BLOCK :LOCAL <-
-  ( + res:LOCAL;
-    local  := stack_local.upper + 1;
-    result := stack_result_lower;
-    list   := list_current;
-    profil := profil_second;
-    profil_second := prof;
-    //
-    stack_result_lower := stack_result.upper + 1;
-    list_current       := LIST.create p;    
-    context_extern := ITM_OBJECT.context_extern;
-    ITM_OBJECT.set_context_extern NULL;
-    //
-    (debug_level_option != 0).if {
-      // Debug mode : Add context local.
-      res := TYPE_CONTEXT.default.new_local p name (ALIAS_STR.variable_context) style '+';
-      res.set_ensure_count 1;      
-      list_current.add_last (PUSH.create p context res first TRUE);
-    };
-    res
-  );
-  
-  - elt_pop_block <-
-  (
-    list_current := list;
-    ITM_OBJECT.pop_stack_until local;
-    stack_result.remove_since stack_result_lower;
-    stack_result_lower := result;
-    (ITM_OBJECT.context_extern = NULL).if {
-      ITM_OBJECT.set_context_extern context_extern;
-    };
-    profil_second := profil;
-  );
-  
-  //
-  // Intern
-  //
-  
-  - elt_push_intern p:POSITION <-
-  (     
-    local  := stack_local.upper + 1;
-    result := stack_result_lower;
-    list   := list_current;
-    //profil := NULL;
-    //
-    stack_result_lower := stack_result.upper + 1;
-    list_current       := LIST.create p;    
-    context_extern := ITM_OBJECT.context_extern;
-    ITM_OBJECT.set_context_extern NULL;
-  );
-  
-  - elt_pop_intern <-
-  (
-    list_current := list;
-    ITM_OBJECT.pop_stack_until local;
-    stack_result.remove_since stack_result_lower;
-    stack_result_lower := result;
-    (ITM_OBJECT.context_extern = NULL).if {
-      ITM_OBJECT.set_context_extern context_extern;
-    };
-  );
-  
diff --git a/src/dispatcher/dta.li b/src/dispatcher/dta.li
deleted file mode 100644
index d78c362..0000000
--- a/src/dispatcher/dta.li
+++ /dev/null
@@ -1,147 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all late binding";
-    
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-    
-Section Public
-        
-  + result_expr:EXPR;
-  
-  + slot:SLOT;
-  
-  + self_arg:EXPR;
-  
-  + context:LOCAL;
-  
-  //
-  // Service
-  //
-  
-  - remove <-
-  (
-    // Nothing.
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA";
-    deferred;
-  );
-  
-Section NODE_TYPE, DTA  
-  
-  - product t:TYPE with e:EXPR self type_self:TYPE_FULL :LIST <-
-  ( + result:LIST;
-        
-    result := LIST.create (e.position);
-    (t = TYPE_NULL).if {                  
-      TYPE_NULL.product_error position in result;            
-      ? {result.count != 0};
-    } else {
-      lookup t with e in result;
-    };
-    result    
-  );  
-
-  - update_branch l:LIST self type_self:TYPE_FULL :BOOLEAN <-
-  [
-    -? {type_self != NULL};
-  ]
-  ( + node:NODE;
-    + result:BOOLEAN;
-     
-    node ?= l.first;
-    (node = NULL).if {
-      result := TRUE;
-    } else {
-            
-      /*
-      "DTA: ".print;
-      type_self.print;
-      '\n'.print;
-      */
-      node.update_link type_self;
-      node ?= l.second;
-      (node != NULL).if {
-	node.update_link type_self;
-      };
-    };
-    result
-  );
-  
-Section NODE_STYLE, SELF  
-  
-  - get_argument:FAST_ARRAY[EXPR] <-  
-  ( + result:FAST_ARRAY[EXPR];
-    
-    result := FAST_ARRAY[EXPR].create_with_capacity 1;
-    result.add_last (self_arg.my_copy);
-    result
-  );
-  
-Section DTA
-  
-  - finalise typ:TYPE with (expr:EXPR,s:SLOT) in lst:LIST <- 
-  ( + node:NODE_STYLE;
-    
-    node := NODE_STYLE.create (expr.my_copy,s) with Self result result_expr;
-    lst.add_last node;    
-  );
-  
-Section Private
-  
-  - lookup typ:TYPE with expr:EXPR in lst:LIST <-
-  ( + s:SLOT;
-    + name:STRING_CONSTANT;
-    + node_style:NODE_STYLE;
-    + r:EXPR;
-    
-    name := slot.name;
-    s := typ.get_local_slot name;    
-    (s = NULL).if {
-      // Lookup parent.      
-      s := typ.get_path_slot name;                  
-      r := s.result_type.get_expr_for typ;
-      node_style := NODE_STYLE.create (expr.my_copy,s) with Self result r;
-      lst.add_last node_style;
-      lst.add_last (NODE_TYPE.create r with Self);      
-    } else {
-      // Direct call.
-      s.is_equal_profil slot;
-      finalise typ with (expr,s) in lst;
-    };
-    lst.add_last (PROTOTYPE_CST.create (expr.position) type (TYPE_VOID.default)); // BSBS: Alias.
-  );
diff --git a/src/dispatcher/dta_block.li b/src/dispatcher/dta_block.li
deleted file mode 100644
index f7f29d0..0000000
--- a/src/dispatcher/dta_block.li
+++ /dev/null
@@ -1,152 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA_BLOCK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Lisaac IS A Advanced Compiler";
-    
-Section Inherit
-  
-  + parent_dta_rd_args:Expanded DTA_RD_ARGS;
-  
-Section Public
-  
-  + result_expr:EXPR;
-    
-  // Add.
-  
-  + model:TYPE_BLOCK;
-  
-  //
-  // Creation.
-  //
-  
-  - create mod:TYPE_BLOCK with larg:FAST_ARRAY[EXPR] :SELF <-
-  ( + result:SELF;
-    result := clone;    
-    result.make mod with larg;
-    result    
-  );
-  
-  - make mod:TYPE_BLOCK with larg:FAST_ARRAY[EXPR] <-
-  (    
-    (profil_current = NULL).if {
-      context := context_main;
-    } else {
-      context := profil_current.context;
-    };    
-    model         := mod;
-    argument_list := larg;
-    result_expr   := mod.get_expr_for (mod.position);    
-  );
-    
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA_BLOCK";
-  );
-
-Section NODE_STYLE, SELF  
-  
-  - get_argument:FAST_ARRAY[EXPR] <-  
-  ( + result:FAST_ARRAY[EXPR];
-    + rd:READ_SLOT;
-    (copy_argument).if {
-      result := FAST_ARRAY[EXPR].create_with_capacity (argument_list.count);            
-      rd ?= argument_list.first;
-      result.add_last (rd.receiver.my_copy);
-      (argument_list.lower+1).to (argument_list.upper) do { j:INTEGER;		
-	result.add_last (argument_list.item j.my_copy);
-      };            
-    } else {
-      result := argument_list;
-      copy_argument := TRUE;
-    };
-    result
-  );
-
-Section NODE_TYPE, DTA  
-  
-  - product t:TYPE with e:EXPR self type_self:TYPE_FULL :LIST <-
-  ( + result:LIST;
-    + t_block:PROFIL_BLOCK;
-    + wrt:WRITE;  
-    + wrt_larg:FAST_ARRAY[WRITE];
-    + call:CALL_SLOT;
-    + em:EXPR_MULTIPLE;
-    + rd:READ;
-    + result_var:VARIABLE;
-    
-    result := LIST.create (e.position);
-    (t = TYPE_NULL).if {                 
-      TYPE_NULL.product_error (e.position) in result;
-    } else {            
-      t_block ?= t;                  
-      
-      
-      (t_block = NULL).if { // BSBS: debug        
-        "<<<".print;
-        t.print;
-        ">>>".print; '\n'.print;
-        list_current.debug_display;
-        syntax_error (argument_list.first.position,"Block not found");        
-      };
-      
-      wrt_larg := t_block.write_argument get_argument;
-      call := CALL_SLOT.create (e.position) profil t_block with wrt_larg cop NULL;      
-      (result_expr.static_type.raw != TYPE_VOID).if {	
-	em ?= result_expr;
-	(em != NULL).if {
-	  (em.lower).to (em.upper) do { j:INTEGER;
-	    rd ?= em.item j;
-	    ? {rd != NULL};
-	    result_var := rd.variable;	    
-	    rd  := call.profil.result_list.item j.read (e.position);
-	    wrt := result_var.write (e.position) value rd;
-	    call.result_list.add_last (RESULT.create wrt);	    
-	  };	  
-	} else {
-          rd ?= result_expr;
-          result_var := rd.variable;	    
-          rd  := call.profil.result_list.first.read (e.position);
-          wrt := result_var.write (e.position) value rd;
-          call.result_list.add_last (RESULT.create wrt);	    
-	};	
-      };
-      result.add_last call;
-    };
-    result    
-  );  
-  
-  - update_branch l:LIST self type_self:TYPE_FULL :BOOLEAN <-
-  (
-    TRUE
-  );
-  
-
diff --git a/src/dispatcher/dta_cast.li b/src/dispatcher/dta_cast.li
deleted file mode 100644
index d07ce0b..0000000
--- a/src/dispatcher/dta_cast.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA_CAST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Cast base";
-    
-Section Inherit
-  
-  - parent_dta:DTA := DTA;
-  
-Section Public
-
-  + result_expr:EXPR;
-      
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION type t:TYPE_FULL :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p type t;
-    result
-  );
-  
-  - make p:POSITION type t:TYPE_FULL <-
-  (
-    result_expr := t.get_temporary_expr p;
-  );
-
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA_CAST";
-  );
-  
-  //
-  // Service
-  //
-  
-Section NODE_TYPE, DTA  
-  
-  - product t:TYPE with e:EXPR self type_self:TYPE_FULL :LIST <-
-  ( + cast:LOCAL;
-    + rd:READ;
-    + new_value:EXPR;
-    + result:LIST;
-    
-    result := LIST.create (e.position);
-    rd   ?= result_expr;
-    cast ?= rd.variable;
-    (t != TYPE_NULL).if {
-      (cast.type.is_strict).if {
-	(cast.type.raw = t).if {
-	  new_value := CAST.create (cast.type) value (e.my_copy);
-	};
-      }.elseif {t.is_sub_type (cast.type.raw)} then {	
-	new_value := CAST.create (t.default) value (e.my_copy);
-      };
-    };
-    (new_value = NULL).if {
-      new_value := PROTOTYPE_CST.create (e.position) type (TYPE_NULL.default);
-    };
-    result.add_last (cast.write (e.position) value new_value);
-    result.add_last (PROTOTYPE_CST.create (e.position) type (TYPE_VOID.default)); // BSBS : Alias.
-    result
-  );
-  
-  - update_branch l:LIST self type_self:TYPE_FULL :BOOLEAN <-
-  (
-    TRUE
-  );
\ No newline at end of file
diff --git a/src/dispatcher/dta_rd.li b/src/dispatcher/dta_rd.li
deleted file mode 100644
index 1673176..0000000
--- a/src/dispatcher/dta_rd.li
+++ /dev/null
@@ -1,100 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := DTA_RD;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Read site";
-    
-Section Inherit
-  
-  + parent_dta:Expanded DTA;
-  
-  - parent_parameter_to_type:Expanded PARAMETER_TO_TYPE;  
-  
-Section Public
-  
-  + is_intern:BOOLEAN;
-  
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  ( + result:TYPE_FULL;
-        
-    (p.name = ALIAS_STR.prototype_self).if {
-      // For Self.
-      result := self_arg.static_type;            
-    } else {
-      // For genericity.
-      result := self_arg.static_type.raw.parameter_to_type p;
-    };
-    result
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION call sl:SLOT self arg:EXPR intern flag:BOOLEAN :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p call sl self arg intern flag;        
-    result
-  );
-  
-  - make p:POSITION call sl:SLOT self arg:EXPR intern flag:BOOLEAN <-
-  ( ? {sl != NULL};    
-    position    := p;              
-    slot        := sl;
-    self_arg    := arg;    
-    result_expr := get_expr_result;  
-    is_intern   := flag;
-    (profil_current = NULL).if {
-      context := context_main;
-    } else {
-      context := profil_current.context;
-    };
-  );
-  
-  //
-  //
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "DTA_READ";
-  );
-  
-Section DTA_RD
-  
-  - get_expr_result:EXPR <-
-  ( + result:EXPR;
-        
-    (slot.id_section.is_interrupt).if {
-      result := type_pointer.default.get_temporary_expr position;
-    } else {      
-      result := slot.result_type.get_expr_for Self;
-    };
-    result
-  );
diff --git a/src/dispatcher/dta_rd_args.li b/src/dispatcher/dta_rd_args.li
deleted file mode 100644
index 5319a2c..0000000
--- a/src/dispatcher/dta_rd_args.li
+++ /dev/null
@@ -1,145 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA_RD_ARGS;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Read site with arguments";
-    
-Section Inherit
-  
-  + parent_dta:Expanded DTA_RD;
-  
-Section Public
-  
-  - self_arg:EXPR <- argument_list.first;
-  
-  // Add.
-  
-  + argument_list:FAST_ARRAY[EXPR];
-  
-  + copy_argument:BOOLEAN;
-  
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  ( + result:TYPE_FULL;
-    + idx:INTEGER;
-        
-    // For Genericity.
-    result := self_arg.static_type.raw.parameter_to_type p;
-    (result = NULL).if {
-      // For Self + type parametric.
-      idx := slot.get_index_argument_type p;
-      (idx != - 1).if {      
-        result := argument_list.item idx.static_type;
-      };
-    };
-    result
-  );
-
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION call sl:SLOT with args:FAST_ARRAY[EXPR] intern flag:BOOLEAN :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p call sl with args intern flag;
-    result
-  );
-  
-  - make p:POSITION call sl:SLOT with args:FAST_ARRAY[EXPR] intern flag:BOOLEAN <-
-  (
-    position      := p;    
-    slot          := sl;
-    argument_list := args;
-    result_expr   := get_expr_result;
-    is_intern     := flag;    
-    (profil_current = NULL).if {
-      context := context_main;
-    } else {
-      context := profil_current.context;
-    };
-  );
-  
-  //
-  // Just for ITM_EXPRESSION
-  //
-  
-  - create_partial p:POSITION call sl:SLOT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make_partial p call sl;
-    result
-  );
-  
-  - make_partial p:POSITION call sl:SLOT <-
-  (
-    position := p;
-    slot := sl;
-  );
-
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA_RD_ARGS:";
-    buffer.append (slot.name);
-  );
-  
-  //
-  // Service
-  //
-
-  - remove <-
-  (
-    (! copy_argument).if {
-      (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-	argument_list.item j.remove;
-      };
-      copy_argument := TRUE;
-    };
-  );
-    
-Section NODE_STYLE, SELF  
-  
-  - get_argument:FAST_ARRAY[EXPR] <-  
-  ( + result:FAST_ARRAY[EXPR];
-    
-    (copy_argument).if {
-      result := FAST_ARRAY[EXPR].create_with_capacity (argument_list.count);            
-      (argument_list.lower).to (argument_list.upper) do { j:INTEGER;		
-	result.add_last (argument_list.item j.my_copy);
-      };            
-    } else {
-      result := argument_list;
-      copy_argument := TRUE;
-    };
-    result
-  );
-  
diff --git a/src/dispatcher/dta_wr_code.li b/src/dispatcher/dta_wr_code.li
deleted file mode 100644
index ef80ef9..0000000
--- a/src/dispatcher/dta_wr_code.li
+++ /dev/null
@@ -1,90 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA_WR_CODE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Write site with code";
-    
-Section Inherit
-  
-  + parent_dta:Expanded DTA;
-    
-Section Public
-
-  // Add.
-    
-  + code:ITM_CODE;
-    
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION slot sl:SLOT self arg:EXPR code v:ITM_CODE :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p slot sl self arg code v;
-    result
-  );
-  
-  - make p:POSITION slot sl:SLOT self arg:EXPR code v:ITM_CODE <-
-  (
-    position    := p;
-    slot        := sl;
-    self_arg    := arg;
-    result_expr := PROTOTYPE_CST.create (v.position) type (TYPE_VOID.default);
-    code        := v;
-  );
-
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA_WR_CODE:";
-    buffer.append (slot.name);    
-  );
-  
-  //
-  // Service
-  //
-    
-Section DTA_RD  
-  
-  - finalise typ:TYPE with (expr:EXPR,s:SLOT) in lst:LIST <- 
-  ( + id:PROTOTYPE_CST;
-    + pos:POSITION;
-    
-    pos := expr.position;
-    id := PROTOTYPE_CST.create pos type (TYPE_ID.get_index (s.add_style code).default);
-    (s.style = '+').if {
-      lst.add_last (s.slot_id.write pos with (expr.my_copy) value id);
-    } else {
-      lst.add_last (s.slot_id.write pos value id);
-    };
-  );
-  
diff --git a/src/dispatcher/dta_wr_value.li b/src/dispatcher/dta_wr_value.li
deleted file mode 100644
index 106916a..0000000
--- a/src/dispatcher/dta_wr_value.li
+++ /dev/null
@@ -1,173 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := DTA_WR_VALUE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Write site with value";
-    
-Section Inherit
-  
-  + parent_dta:Expanded DTA;
-  
-Section Public
-
-  // Add.
-  
-  + value:EXPR;
-  
-  + copy_value:BOOLEAN;
-
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION slot sl:SLOT self arg:EXPR value v:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p slot sl self arg value v;
-    result
-  );
-  
-  - make p:POSITION slot sl:SLOT self arg:EXPR value v:EXPR <-
-  (
-    position    := p;    
-    slot        := sl;
-    self_arg    := arg;
-    result_expr := v.my_copy; 
-    value       := v;
-  );
-
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <- 
-  (
-    buffer.append "DTA_WR_VALUE:";
-    buffer.append (slot.name);    
-  );
-  
-  //
-  // Service
-  //
-
-  - remove <-
-  (
-    (! copy_value).if {
-      value.remove;
-      copy_value := TRUE;
-    };
-  );
-  
-Section NODE_TYPE, DTA 
-
-  - product t:TYPE with e:EXPR self type_self:TYPE_FULL :LIST <-
-  ( + result:LIST;
-    
-    result := LIST.create (e.position);
-    (t = TYPE_NULL).if {
-      TYPE_NULL.product_error position in result;
-    } else {
-      lookup t with e in result;
-    };
-    result    
-  );  
-
-  - update_branch l:LIST self type_self:TYPE_FULL :BOOLEAN <-
-  ( + result:BOOLEAN;   
-    + wrt_slot:WRITE_SLOT;
-    + wrt_glob:WRITE_GLOBAL;
-    
-    result := parent_dta.update_branch l self type_self;
-    (l.count < 3).if {
-      wrt_slot ?= l.first;	
-      wrt_glob ?= l.first;	
-      (wrt_slot != NULL).if { 
-	(wrt_slot.slot.slot_id != NULL).if {
-	  add_write_id (wrt_slot.receiver,wrt_slot.slot) in l;
-	} else {
-	  result := FALSE;
-	};
-      }.elseif {wrt_glob != NULL} then {
-	(wrt_glob.global.slot_id != NULL).if {
-	  add_write_id (NULL,wrt_glob.global) in l;
-	} else {
-	  result := FALSE;
-	};
-      };
-    };
-    result
-  );    
-  
-Section DTA_RD  
-  
-  - finalise typ:TYPE with (expr:EXPR,s:SLOT) in lst:LIST <- 
-  ( + new_value:EXPR;
-    + sd:SLOT_DATA;
-    + em:EXPR_MULTIPLE;
-    
-    (copy_value).if {
-      new_value := value.my_copy;
-    } else {
-      new_value  := value;
-      copy_value := TRUE;
-    };
-    sd := s.slot_data;
-    em ?= new_value;
-    (em != NULL).if {      
-      (em.lower).to (em.upper - 1) do { j:INTEGER;
-	lst.add_last (new_write (s.slot_data_list.item j) rec expr value (em.item j));
-      };      
-      new_value := em.last;
-    };
-    lst.add_last (new_write sd rec expr value new_value);
-    (s.slot_id != NULL).if {
-      add_write_id (expr,s) in lst;
-    };
-  );
-  
-Section Private
-  
-  - add_write_id (e:EXPR,s:SLOT) in lst:LIST <-
-  ( + new_value:EXPR;
-    + sd:SLOT_DATA;
-            
-    new_value := PROTOTYPE_CST.create (lst.position) type (TYPE_ID.get_index 0.default);
-    sd := s.slot_id;
-    lst.add (new_write sd rec e value new_value) to 2;    
-  );
-  
-  - new_write sd:SLOT_DATA rec e:EXPR value val:EXPR :WRITE <-
-  ( + result:WRITE;
-    
-    (sd.style = '+').if {      
-      result := sd.write (e.position) with (e.my_copy) value val;
-    } else {
-      result := sd.write (e.position) value val;
-    };
-    result
-  );
diff --git a/src/dispatcher/node.li b/src/dispatcher/node.li
deleted file mode 100644
index 825ecc9..0000000
--- a/src/dispatcher/node.li
+++ /dev/null
@@ -1,317 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := NODE;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Parent for all switch node";
-    
-Section Inherit
-  
-  + parent_instr:Expanded INSTR;
-  
-Section NODE, PROFIL_BLOCK, ITM_OLD
-  
-  - node_list_base:LINKED_LIST[NODE_TYPE] := node_list;
-  
-  - node_list:LINKED_LIST[NODE_TYPE] := LINKED_LIST[NODE_TYPE].create;
-  
-  - set_node_list l:LINKED_LIST[NODE_TYPE] <-
-  (
-    node_list := l;
-  );
-  
-Section PROTOTYPE  
-  
-  - extend_pass <-
-  ( + j:INTEGER;
-    + is_ok:BOOLEAN;
-    
-    //NODE_TYPE.reset_count_flat;
-    
-    VARIABLE.update;
-    j := node_list.lower;    
-    {j <= node_list.upper}.while_do {
-      is_ok := node_list.item j.update;      
-      (is_ok).if {
-	node_list.remove j;
-      } else {	
-	j := j + 1;
-      };	            
-    };   
-    /*
-    NODE_TYPE.count_flat.print;
-    '/'.print;
-    (NODE_TYPE.count_flat + NODE_TYPE.count_not_flat).print;
-    '\n'.print;
-    */
-  );
-  
-Section Public
-  
-  //
-  // Extern Creation read.
-  //
-  
-  - new_read p:POSITION slot s:SLOT receiver rec:EXPR 
-  self my_self:EXPR intern is_intern:BOOLEAN :NODE <-
-  ( + result:NODE_TYPE;
-    + dta:DTA_RD;
-    //    
-    dta := DTA_RD.create p call s self my_self intern is_intern;
-    result := NODE_TYPE.create rec with dta;
-    //    
-    node_list.add_last result;
-    result
-  );
-
-  - new_read p:POSITION slot s:SLOT receiver rec:EXPR 
-  with larg:FAST_ARRAY[EXPR] intern is_intern:BOOLEAN :NODE <-
-  ( + dta:DTA_RD_ARGS;        
-    + result:NODE_TYPE;
-    
-    // Control argument type.            
-    dta := DTA_RD_ARGS.create p call s with larg intern is_intern;
-    s.check_argument_type larg for dta;    
-    result := NODE_TYPE.create rec with dta;
-    //    
-    node_list.add_last result;
-    result
-  );
-  
-  //
-  // Just for ITM_EXPRESSION.
-  //
-  
-  - new_read_partial p:POSITION slot s:SLOT :NODE_TYPE <-
-  ( + dta:DTA_RD_ARGS;    
-        
-    dta := DTA_RD_ARGS.create_partial p call s;
-    NODE_TYPE.create_partial dta
-  );
-  
-  - new_read_finalize (rec:EXPR,s:SLOT) with larg:FAST_ARRAY[EXPR] <-
-  ( + dta:DTA_RD_ARGS;    
-    // Control argument type.            
-    dta ?= data;
-    
-    dta.make (data.position) call s with larg intern FALSE;
-    data.slot.check_argument_type larg for dta;            
-    make rec with data;
-    //        
-    node_list.add_last Self;
-  );
-  
-  //
-  // Extern creation writes.
-  //
-  
-  - new_write p:POSITION slot s:SLOT receiver rec:EXPR value val:EXPR :NODE <-
-  ( + dta:DTA_WR_VALUE;    
-    + result:NODE_TYPE;
-        
-    dta := DTA_WR_VALUE.create p slot s self rec value val;
-    result := NODE_TYPE.create rec with dta;
-    //    
-    node_list.add_last result;
-    result
-  );
-
-  - new_write p:POSITION slot s:SLOT receiver rec:EXPR code val:ITM_CODE :NODE <-
-  ( + dta:DTA_WR_CODE;
-    + result:NODE_TYPE;
-    
-    dta := DTA_WR_CODE.create p slot s self rec code val;
-    result := NODE_TYPE.create rec with dta;
-    //
-    node_list.add_last result;
-    result
-  );
-  
-  //
-  // Extern creation cast.
-  //
-  
-  - new_cast p:POSITION type typ:TYPE_FULL with val:EXPR :NODE <-
-  ( + dta:DTA_CAST;
-    + result:NODE_TYPE;
-    
-    dta := DTA_CAST.create p type typ;
-    result := NODE_TYPE.create val with dta;
-    //
-    node_list.add_last result;
-    result
-  );
-  
-  //
-  // Extern creation value block.
-  //
-  
-  - new_block p:POSITION receiver e:EXPR with larg:FAST_ARRAY[EXPR] :NODE <-
-  ( + dta:DTA_BLOCK;
-    + result:NODE_TYPE;    
-    + lst_typ_f:FAST_ARRAY[TYPE_FULL];
-    + new_expr:EXPR;
-    + block_model:TYPE_BLOCK;
-    + pb:PROFIL_BLOCK;
-    + pos:POSITION;
-    
-    pb ?= e.static_type.raw;
-    (pb = NULL).if {
-      block_model ?= e.static_type.raw;
-    } else {
-      block_model := pb.to_type_block;      
-    };
-    // Control argument type.            
-    lst_typ_f := block_model.argument_list;
-    pos       := block_model.position;
-    
-    (lst_typ_f.count+1 != larg.count).if {      
-      string_tmp.copy "Incorrect size of vector argument for this block. (Value:";
-      larg.count.append_in string_tmp;
-      string_tmp.append ", Type:";
-      (lst_typ_f.count+1).append_in string_tmp;
-      string_tmp.add_last ')';
-      POSITION.put_error semantic text string_tmp;
-      pos.put_position;
-      p  .put_position;
-      POSITION.send_error;
-    };  
-    (larg.lower + 1).to (larg.upper) do { j:INTEGER;            
-      new_expr := larg.item j.check_type (lst_typ_f.item (j-1)) with pos;
-      larg.put new_expr to j;
-    };
-    //    
-    (debug_level_option != 0).if {
-      (profil_current = NULL).if {
-	crash_with_message "NODE";
-      };
-      list_current.add_last (
-	PUSH.create p context (profil_current.context) first FALSE
-      );
-    };
-    //
-    dta    := DTA_BLOCK.create block_model with larg;
-    result := NODE_TYPE.create e with dta;    
-    //
-    node_list.add_last result;
-    result
-  );
-  
-Section Public  
-  
-  - position:POSITION <- data.position;
-  
-  + data:DTA;
-  
-  + expr:EXPR;  
-    
-  + first_code:LIST;
-  + first_type:TYPE;  
-  + switch:SWITCH;
-  
-  - count:INTEGER <- 
-  ( + result:INTEGER;
-    
-    (switch != NULL).if {
-      result := switch.count;
-    }.elseif {first_type != NULL} then {
-      result := 1;
-    };
-    result
-  );
-  
-  - result_expr:EXPR <- deferred;
-  
-  //
-  // Execute.
-  //
-  
-  - remove <-
-  (
-    data.remove;
-    (switch = NULL).if {      
-      expr.remove;
-      (first_code != NULL).if {
-	first_code.remove;
-      };
-    } else {      
-      switch.remove;
-    };
-  );
-  
-  - execute:INSTR <-
-  ( + result:INSTR;
-
-    data.remove;
-    (switch != NULL).if {
-      result := switch.execute;      
-    } else {            
-      expr.remove;      
-      (first_code != NULL).if { // Warning: Dead Code!
-	result := first_code.execute;
-      };
-    };
-    result
-  );
-    
-  
-Section NODE, DTA  
-
-  //
-  // Update.
-  //
-  
-  - update_link self_type:TYPE_FULL :BOOLEAN <-
-  (
-    deferred;
-  );
-  
-Section Public
-    
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    (switch = NULL).if {
-      (first_code = NULL).if {	
-	to_pointer.append_in buffer;
-	buffer.append "<NODE VIDE=";
-	expr.display buffer;
-	buffer.append ", Data: ";
-	data.display buffer;
-	buffer.append ", Result: ";
-	result_expr.display buffer;
-	buffer.add_last '>';
-      } else {
-	expr.display buffer;
-	first_code.display buffer;
-      };
-    } else {
-      switch.display buffer;
-    };
-  );
-  
diff --git a/src/dispatcher/node_style.li b/src/dispatcher/node_style.li
deleted file mode 100644
index ec47135..0000000
--- a/src/dispatcher/node_style.li
+++ /dev/null
@@ -1,316 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := NODE_STYLE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Switch node for style";
-    
-Section Inherit
-  
-  + parent_node:Expanded NODE;
-  
-Section Public
-  
-  + result_expr:EXPR;
-  
-  + slot:SLOT;
-
-Section NODE, DTA
-    
-  //
-  // Creation.
-  //
-  
-  - create (e:EXPR,sl:SLOT) with dta:DTA result r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make (e,sl) with dta result r;
-    result
-  );
-  
-  - make (e:EXPR,sl:SLOT) with dta:DTA result r:EXPR <-
-  (   
-    expr        := e;
-    slot        := sl;
-    data        := dta;
-    result_expr := r;
-  );
-  
-Section Public
-  
-  - my_copy:SELF <- 
-  ( 
-    crash_with_message "NODE_STYLE.my_copy";
-    NULL 
-  );
-  
-Section NODE, DTA  
-  
-  //
-  // Update.
-  //
-  
-  - update_link self_type:TYPE_FULL :BOOLEAN <-
-  [
-    -? {self_type != NULL};
-  ]
-  ( + typ:TYPE;
-    + list:FAST_ARRAY[CASE];
-    + case:CASE;
-    + e:EXPR;
-    + low,up,count:INTEGER;
-    
-    (slot.slot_id = NULL).if {
-      (first_code = NULL).if {
-	first_type := TYPE_ID.get_index (slot.lower_style);
-	first_code := call_for first_type self self_type;      
-      };
-    } else {            
-      low := slot.lower_style;
-      up  := slot.upper_style;      
-      count := up-low + 1;
-      (switch = NULL).if {
-	(slot.style = '-').if {
-	  e := slot.slot_id.read position;
-	  expr.remove;
-	} else {
-	  e := slot.slot_id.read position with expr;
-	};
-	switch := SWITCH.create Self with e size count;
-      };
-      list := switch.list;
-      (list.count != count).if {
-	0.to (count-1) do { j:INTEGER;	    
-	  typ := TYPE_ID.get_index (j+low);
-	  
-	  ((j > list.upper) || {typ != list.item j.id}).if {
-	    case := CASE.create typ with (call_for typ self self_type);
-	    list.add case to j;
-	  };	    
-	};  
-      };
-    };
-    FALSE
-  );
-  
-Section Private  
-  
-  - call_for t:TYPE self type_self:TYPE_FULL :LIST <-
-  [
-    -? {type_self != NULL};
-  ]
-  ( + result:LIST;
-    + typ:TYPE_ID;
-    + call:CALL_SLOT;
-    + em:EXPR_MULTIPLE;
-    + rd:READ;
-    + wrt:WRITE;    
-    + result_var:VARIABLE;
-    + new_larg:FAST_ARRAY[EXPR];    
-    + slot_dta:SLOT_DATA;
-    + slot_cod:SLOT_CODE;
-    + idx:INTEGER;    
-    + type:TYPE_FULL;
-    + my_profil:PROFIL;
-    + wrt_lst:FAST_ARRAY[WRITE];
-    + ctext:LOCAL;
-    + new_type_self:TYPE_FULL;
-    + data_rd:DTA_RD;
-    + cop_arg:EXPR;
-    + new_val:EXPR;
-    
-    result := LIST.create position;
-    
-    data_rd ?= data;      
-    ((type_self.prototype.style = '-') && {data_rd != NULL} && {! data_rd.is_intern}).if {
-      cop_arg := data.self_arg.my_copy;
-    };
-    
-    typ ?= t;
-    idx := typ.index;    
-    (idx = 0).if {
-      // Data.      
-      (cop_arg != NULL).if {
-        result.add_last (COP_LOCK.create position with cop_arg);
-      };
-      //
-      slot_dta := slot.slot_data;      
-      slot_dta.init;
-      (slot.slot_data_list != NULL).if {
-	(slot.slot_data_list.lower).to (slot.slot_data_list.upper) do { j:INTEGER;
-	  slot.slot_data_list.item j.init;
-	};
-      };
-      //
-      (result_expr.static_type.raw = TYPE_VOID).if {
-        // BSBS: Pourquoi tu produit quelque chose qui serre à rien ???
-	(slot_dta.style = '-').if {
-	  result.add_last (slot_dta.read position);
-	} else {		
-	  result.add_last (slot_dta.read position with (expr.my_copy));
-	};	
-      } else {	        
-	em ?= result_expr;
-	(em != NULL).if {
-	  (em.lower).to (em.upper - 1) do { j:INTEGER;
-	    rd ?= em.item j;
-	    ? {rd != NULL};
-	    result_var := rd.variable;	    
-	    result.add_last (new_write result_var with (expr,slot.slot_data_list.item j));	    
-	  };
-	  rd ?= em.last;
-	} else {
-	  rd ?= result_expr;
-        };	
-        
-        //(slot_dta.name == "storage").if {
-        /*
-        string_tmp.clear;
-        string_tmp.copy (type_self.raw.name);
-        string_tmp.add_last ' ';
-        string_tmp.append (t.name);        
-        (data.slot != NULL).if {
-          string_tmp.add_last ' ';
-          string_tmp.append (data.slot.name);        
-        };
-        result.add_last (
-          EXTERNAL_C.create position text (ALIAS_STR.get string_tmp) access NULL persistant TRUE type (TYPE_NULL.default)
-        );
-         */ 
-          /*
-          "Data : ".print; slot_dta.intern_name.print; 
-          " dans ".print; type_self.raw.name.print; 
-          (profil_current != NULL).if {
-            profil_current.name.print;
-          };
-          '\n'.print;
-          */
-        //};
-	result_var := rd.variable;
-	result.add_last (new_write result_var with (expr,slot_dta));
-      };
-      (cop_arg != NULL).if {
-        result.add_last (COP_UNLOCK.create position);        
-      };
-    } else {
-      // Function.
-      slot_cod := slot.slot_code idx;      
-      (slot_cod.id_section.is_inherit_or_insert).if {
-	new_larg := FAST_ARRAY[EXPR].create_with_capacity 1;
-	new_larg.add_last (data.self_arg.my_copy);
-      } else {
-	new_larg := data.get_argument;
-      };
-      type := new_larg.first.static_type;            
-      ? {type != NULL};
-      //      
-      (debug_level_option != 0).if {	        
-        // BSBS: Poser le PUSH avant le NODE
-	(data.context = NULL).if {
-	  ctext := context_main;
-	} else {
-	  ctext := data.context;
-	};
-	result.add_last (
-	  PUSH.create position context ctext first FALSE
-        );     
-      };
-      //
-      rd ?= new_larg.first;      
-      ((rd != NULL) && {rd.variable.name = ALIAS_STR.variable_self}).if {
-        // Fix Self type for resend call (else it's fixed by NODE_TYPE)        
-        new_type_self := type;               
-      } else {
-	new_type_self := type_self;
-      };
-      /*
-      string_tmp.copy "// ";
-      new_type_self.display string_tmp;
-      string_tmp.append "  /  ";
-      type_self.display string_tmp;
-      result.add_last (
-        EXTERNAL_C.create (data.position) 
-        text (ALIAS_STR.get string_tmp) access NULL persistant TRUE type (TYPE_VOID.default)
-      );
-      */
-      new_val := CAST.create new_type_self value (new_larg.first);
-      new_larg.put new_val to 0;
-      (my_profil, wrt_lst) := slot_cod.get_profil new_larg self new_type_self;
-      //      
-      (result_expr.static_type.raw = TYPE_VOID).if {	
-        result.add_last (
-          CALL_SLOT.create position profil my_profil with wrt_lst cop cop_arg
-        );
-      } else {        
-        call := CALL_SLOT.create position profil my_profil with wrt_lst cop NULL;            
-        (cop_arg != NULL).if {
-          result.add_last (COP_LOCK.create position with cop_arg);
-          result.add_last call;
-          result.add_last (COP_UNLOCK.create position);
-        } else {
-          result.add_last call;
-        };
-	em ?= result_expr;
-	(em != NULL).if {
-	  (em.lower).to (em.upper) do { j:INTEGER;
-	    rd ?= em.item j;
-	    ? {rd != NULL};
-	    result_var := rd.variable;	    
-	    rd  := call.profil.result_list.item j.read position;
-	    wrt := result_var.write position value rd;
-            call.result_list.add_last (RESULT.create wrt);
-	  };	  
-	}.elseif {
-          (call.profil.result_list.count != 0) || 
-          {call.is_interrupt}
-        } then {
-          rd ?= result_expr;
-          result_var := rd.variable;	    
-          (call.is_interrupt).if_false {
-            rd  := call.profil.result_list.first.read position;
-          };
-          wrt := result_var.write position value rd;
-          call.result_list.add_last (RESULT.create wrt); 
-	};	
-      };      
-    };    
-    result
-  );
-    
-Section Private 
-  
-  - new_write var:VARIABLE with (e:EXPR,slot:SLOT_DATA) :WRITE <-
-  ( + rd:READ;
-    
-    (slot.style = '-').if {
-      rd  := slot.read position;
-    } else {		
-      rd  := slot.read position with (e.my_copy);
-    };
-    var.write position value rd
-  );
-  
\ No newline at end of file
diff --git a/src/dispatcher/node_type.li b/src/dispatcher/node_type.li
deleted file mode 100644
index ad8e475..0000000
--- a/src/dispatcher/node_type.li
+++ /dev/null
@@ -1,222 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := NODE_TYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Switch node for type";
-    
-Section Inherit
-  
-  + parent_node:Expanded NODE;
-  
-Section Public
-        
-  - result_expr:EXPR <- data.result_expr;
-  
-  + is_self:BOOLEAN;
-  
-  //
-  // Creation.
-  //
-    
-  - create e:EXPR with d:DTA :SELF <-
-  // Create with back-link.
-  ( + result:SELF;
-    
-    result := clone;
-    result.make e with d;
-    result
-  );
-      
-  - make e:EXPR with d:DTA <-
-  (
-    expr := e;
-    data := d;
-    late_binding_counter := late_binding_counter + 1;
-  );
-  
-  //
-  // Just for ITM_EXPRESSION
-  //
-  
-  - create_partial d:DTA :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make_partial d;    
-    result
-  );
-  
-  - make_partial d:DTA <-
-  (
-    data := d;
-  );
-    
-Section Public
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-    
-    result := SELF.create (expr.my_copy) with data;    
-    node_list.add_last result; 
-    result
-  );
-    
-  //
-  // Update.
-  //
-  
-  - update:BOOLEAN <-
-  (
-    update_case NULL & update_depth NULL
-  );
-  
-Section NODE, DTA
-  
-  - update_link self_type:TYPE_FULL :BOOLEAN <-
-  (     
-    update_case self_type & update_depth self_type    
-  );
-  
-Section Private  
-    
-  - update_case type_self:TYPE_FULL :BOOLEAN <-
-  ( + typ_f:TYPE_FULL;
-    + typ:TYPE;
-    + lst_typ:TYPES_TMP;
-    + list:FAST_ARRAY[CASE];
-    + case:CASE;
-    + result:BOOLEAN;
-                
-    typ_f := expr.static_type;
-    
-    (typ_f.is_expanded && {typ_f.raw != type_boolean}).if {
-      (first_code = NULL).if {
-	first_type := typ_f.raw;
-	first_code := data.product first_type with expr self type_self;
-      };
-      result := TRUE;
-    }.elseif {(typ_f.raw = type_boolean) && {count = 2}} then {
-      result := TRUE;
-    } else {	
-      ((typ_f.raw.is_block) || {typ_f.raw.subtype_list.count != count}).if {
-	lst_typ := TYPES_TMP.new;      
-        expr.get_type lst_typ;      
-        /*
-        ((data.slot != NULL) && {data.slot.name == "storage"}).if {
-          lst_typ.print; '\n'.print;
-        };
-        */
-        
-	(! lst_typ.is_empty).if {
-	  (lst_typ.count = 1).if {
-	    (first_code = NULL).if {
-	      first_type := lst_typ.first;
-	      first_code := data.product first_type with expr self type_self;
-	    };
-	  } else {
-	    (switch = NULL).if {
-	      switch := SWITCH.create Self with expr size (lst_typ.count);
-	    };
-	    list := switch.list;
-	    (list.count != lst_typ.count).if {
-	      (lst_typ.lower).to (lst_typ.upper) do { j:INTEGER;	    
-		typ := lst_typ.item j;	    
-		((j > list.upper) || {typ != list.item j.id}).if {
-		  add_stack_type typ;
-		  //
-		  case := CASE.create typ with (data.product typ with expr self type_self);
-		  list.add case to j;
-		  //
-		  stack_type.remove_last;
-		};	    
-	      };
-	    };
-	  };
-	};
-	lst_typ.free;
-      } else {
-	//count_flat := count_flat + 1;
-	//"Yes\n".print;
-      };      
-    };    
-    result
-  );
-  
-  - update_depth self_type:TYPE_FULL :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    + list:FAST_ARRAY[CASE];
-    + new_type_self:TYPE_FULL;
-        
-    (switch = NULL).if {
-      (first_code != NULL).if {
-	(self_type = NULL).if {	  
-	  new_type_self := expr.static_type;
-	  (! new_type_self.is_expanded).if {
-	    new_type_self := first_type.default.to_strict;
-	  };	  
-	} else {
-	  new_type_self := self_type;
-        };
-        
-	add_stack_type first_type;
-	result := data.update_branch first_code self new_type_self;
-	stack_type.remove_last;
-      };
-    } else {
-      list := switch.list;
-      
-      (list.lower).to (list.upper) do { j:INTEGER;
-	(self_type = NULL).if {
-          new_type_self := list.item j.id.default.to_strict;                    
-	} else {
-	  new_type_self := self_type;
-	};
-	add_stack_type (list.item j.id);
-	data.update_branch (list.item j.code) self new_type_self;
-	stack_type.remove_last;
-      };
-    };
-    result
-  );
-  
-Section Private 
-  
-  - stack_type:FAST_ARRAY[TYPE] := FAST_ARRAY[TYPE].create_with_capacity 16;
-  
-  - add_stack_type t:TYPE <-
-  (
-    stack_type.add_last t;
-    ((stack_type.count > 1) && {stack_type.first = t}).if {      
-      string_tmp.copy "Cyclic inheritance : ";
-      (stack_type.lower).to (stack_type.upper) do { j:INTEGER;
-	stack_type.item j.append_name_in string_tmp;
-	string_tmp.append ", ";
-      };
-      string_tmp.append "...";
-      semantic_error (data.position, string_tmp);
-    };
-  );
\ No newline at end of file
diff --git a/src/external/arithmetic/avoir.txt b/src/external/arithmetic/avoir.txt
deleted file mode 100644
index 723b123..0000000
--- a/src/external/arithmetic/avoir.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-expr_add.li:  //-- 0 + E -> E
-expr_add.li:  //-- E + 0 -> E
-expr_add.li:  //-- C1 + C2 -> C3
-expr_and.li:  //-- -1 & E -> E  
-expr_and.li:  //-- E & -1 -> E
-expr_and.li:  //-- C1 & C2 -> C3
-expr_and.li:  //-- E & E -> E
-expr_and.li:  //-- 0  & E -> 0
-expr_and.li:  //-- E & 0  -> 0
-expr_div.li:  //-- E / 0   -> Error.
-expr_div.li:  //-- E /   1 -> E
-expr_div.li:  //-- E /  -1 -> - E
-expr_div.li:  //-- E / 2^n -> E >> n
-expr_div.li:  //-- C1 / C2 -> C3
-expr_div.li:  //--  E /  E ->  1
-expr_div.li:  //-- -E /  E -> -1
-expr_div.li:  //--  E / -E -> -1
-expr_div.li:  //-- 0 / E -> 0
-expr_mod.li:  //-- E %   0 -> Error
-expr_mod.li:  //-- E % 2^n -> E & (2^n -1)
-expr_mod.li:  //-- C1 % C2 -> C3
-expr_mod.li:  //-- E % E -> 0
-expr_mod.li:  //-- 0 % E -> 0
-expr_mod.li:  //-- E %   1 -> 0
-expr_mod.li:  //-- E %  -1 -> 0
-expr_mul.li:  //-- 1   * E -> E
-expr_mul.li:  //-- -1  * E -> - E
-expr_mul.li:  //-- 2^n * E -> E << n
-expr_mul.li:  //-- E *   1 -> E
-expr_mul.li:  //-- E *  -1 -> - E
-expr_mul.li:  //-- E * 2^n -> E << n
-expr_mul.li:  //-- C1 * C2 -> C3
-expr_mul.li:  //-- 0   * E -> 0
-expr_mul.li:  //-- E *   0 -> 0
-expr_neg.li:  //-- - - E -> E 
-expr_neg.li:  //-- - C1 -> C2
-expr_not.li:  //-- ~ (~ E1 & ~ E2) -> E1 | E2
-expr_not.li:  //-- ~ (~ E1 | ~ E2) -> E1 & E2
-expr_not.li:  //-- ~ ~ E -> E
-expr_not.li:  //-- ~ C1 -> C2
-expr_or.li:  //-- 0  | E -> E
-expr_or.li:  //-- E | 0  -> E
-expr_or.li:  //-- C1 | C2 -> C3
-expr_or.li:  //-- (! E1 & E2) | (E1 & ! E2) -> E1 ^ E2 (A lot of possibilities, but see '^' in NUMERIC)
-expr_or.li:  //-- E | E                     -> E
-expr_or.li:  //-- -1 | E -> -1  
-expr_or.li:  //-- E | -1 -> -1
-expr_shift_l.li:  //-- E <<  0 -> E  
-expr_shift_l.li:  //-- C1 << C2  -> C3
-expr_shift_l.li:  //-- C1 << -C2 -> Error.
-expr_shift_l.li:  //-- 0 << E   -> 0
-expr_shift_l.li:  //-- E << -C2 -> Error.
-expr_shift_r.li:  //-- E >>  0 -> E  
-expr_shift_r.li:  //-- C1 >> C2  -> C3
-expr_shift_r.li:  //-- C1 >> -C2 -> Error.
-expr_shift_r.li:  //-- E(unsigned) >> E(unsigned) -> 0
-expr_shift_r.li:  //-- 0 >> E            -> 0
-expr_shift_r.li:  //-- -1(signed) >> E   -> -1(signed)
-expr_shift_r.li:  //-- E >> -C2 -> Error.
-expr_sub.li:  //-- E1 - - E2 -> E1 + E2
-expr_sub.li:  //-- 0  - E   -> - E
-expr_sub.li:  //-- -1 - E   -> ~ E  
-expr_sub.li:  //-- E  - 0   -> E
-expr_sub.li:  //-- -E - 1   -> ~ E
-expr_sub.li:  //-- E - -C   -> E + C
-expr_sub.li:  //-- C1 - C2 -> C3
-expr_sub.li:  //-- E  -  E  -> 0
-expr_sub.li:  //-- E1 - ((E1 / E2) * E2) -> E1 % E2 
-expr_xor.li:  //-- 0  ^ E -> E
-expr_xor.li:  //-- -1 ^ E -> ~ E  
-expr_xor.li:  //-- E ^ 0  -> E
-expr_xor.li:  //-- E ^ -1 -> ~ E
-expr_xor.li:  //-- C1 ^ C2 -> C3
-expr_xor.li:  //-- E ^ E -> 0
diff --git a/src/external/arithmetic/expr_add.li b/src/external/arithmetic/expr_add.li
deleted file mode 100644
index 05b5658..0000000
--- a/src/external/arithmetic/expr_add.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_ADD;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  + symbol:STRING_CONSTANT := "+";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 0 + E -> E
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := right;
-      left_cst.remove;
-    };
-    result
-  );
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E + 0 -> E
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-
-  //-- C1 + C2 -> C3
-  (
-    left_cst.set_value (left_cst.value + right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-
-  
-  
-  
-
-
-
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_and.li b/src/external/arithmetic/expr_and.li
deleted file mode 100644
index 791e9b0..0000000
--- a/src/external/arithmetic/expr_and.li
+++ /dev/null
@@ -1,109 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_AND;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  - symbol:STRING_CONSTANT := "&";
-  
-  //
-  // Execute.
-  //
-    
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <-
-  //-- -1 & E -> E  
-  ( + result:EXPR;
-    
-    (left_cst.is_saturated).if {
-      result := right;
-      left_cst.remove;
-    };
-    result
-  );
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E & -1 -> E
-  ( + result:EXPR;
-    
-    (right_cst.is_saturated).if {
-      result := left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-
-  //-- C1 & C2 -> C3
-  ( 
-    left_cst.set_value (left_cst.value & right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- E & E -> E
-  ( + result:EXPR;
-    
-    (left == right).if {
-      right.remove;
-      result := left;
-    };
-    result    
-  );
-  
-  - exec_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- 0  & E -> 0
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-    
-  - exec_right right_cst:INTEGER_CST :EXPR <-
-  //-- E & 0  -> 0
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := right_cst;
-      left.remove;
-    };
-    result
-  );
-
-  
-
-
-
diff --git a/src/external/arithmetic/expr_binary.li b/src/external/arithmetic/expr_binary.li
deleted file mode 100644
index 6bad4f6..0000000
--- a/src/external/arithmetic/expr_binary.li
+++ /dev/null
@@ -1,220 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_BINARY;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- left.is_invariant && {right.is_invariant};
-  
-  + left:EXPR;
-  
-  + right:EXPR;
-  
-  - symbol:STRING_CONSTANT <- 
-  (
-    deferred;
-    NULL
-  );
-  
-  - static_type:TYPE_FULL <- left.static_type;
-  
-  - get_type t:TYPES_TMP <-
-  (    
-    left .get_type t;
-    //right.get_type t;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with l:EXPR and r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with l and r;
-    result
-  );
-  
-  - make p:POSITION with l:EXPR and r:EXPR <-
-  (
-    position := p;
-    left     := l;
-    right    := r;
-  );
-  
-  - my_copy:SELF <- SELF.create position with (left.my_copy) and (right.my_copy);
-  
-  //
-  // Comparaison.
-  //
-    
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + same:SELF;
-    
-    same ?= other;
-    (same != NULL) && {left == same.left} && {right == same.right}
-  );
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    left .remove;
-    right.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  ( + instr:INSTR;    
-    instr  := left.execute_unlink;
-    (instr != NULL).if {
-      list_current.insert_before instr;
-    };
-    right.execute_unlink    
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + left_cst,right_cst:INTEGER_CST;
-    
-    old_seq := seq_call_and_loop;    
-    left  := left.execute_link;
-    right := right.execute_link;     
-    //
-    left_cst  ?= left;
-    right_cst ?= right;
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {left_cst != NULL}).if {      
-      result := exec_conservator_left left_cst;
-    };
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_conservator_right right_cst;
-    };
-    (
-      (result = NULL)     && 
-      {right_cst != NULL} && 
-      {left_cst != NULL}
-    ).if {
-      result := exec left_cst and right_cst;
-    };    
-    ((result = NULL) && {old_seq = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;
-      ((result = NULL) && {left_cst != NULL}).if {
-	result := exec_left left_cst;
-      };
-      ((result = NULL) && {right_cst != NULL}).if {
-	result := exec_right right_cst;
-      };
-    };
-    (result = NULL).if {
-      result := Self;
-    } else {
-      result.set_position position;
-      new_execute_pass;
-    };
-    
-    result
-  );
-  
-  - exec_conservator:EXPR <- NULL;  
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <- NULL;
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- NULL;
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- NULL;
-  
-  - exec:EXPR <- NULL;
-  - exec_left  left_cst :INTEGER_CST :EXPR <- NULL;
-  - exec_right right_cst:INTEGER_CST :EXPR <- NULL;
- 
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    (static_type.raw = type_pointer).if { 
-      buffer.append "(void *)";
-    } else {
-      buffer.add_last '(';
-      static_type.genere_declaration buffer;
-      buffer.add_last ')';
-    };
-    buffer.add_last '(';
-    (static_type.raw = type_pointer).if {
-      buffer.append "(unsigned long)";
-    }.elseif {! left.static_type.is_expanded} then {
-      buffer.append "(void *)"; // BSBS: A virer quand tu auras optim '=='
-    };
-    left.genere buffer;
-    buffer.add_last ' ';
-    buffer.append symbol;
-    buffer.add_last ' ';
-    (static_type.raw = type_pointer).if {      
-      buffer.append "(unsigned long)";
-    }.elseif {! right.static_type.is_expanded} then {
-      buffer.append "(void *)"; // BSBS: A virer quand tu auras optim '=='
-    };
-    right.genere buffer;
-    buffer.add_last ')';
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    left.display buffer;
-    buffer.append symbol;
-    right.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_div.li b/src/external/arithmetic/expr_div.li
deleted file mode 100644
index 2bf4d7d..0000000
--- a/src/external/arithmetic/expr_div.li
+++ /dev/null
@@ -1,131 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_DIV;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Div Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  - symbol:STRING_CONSTANT := "/";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E / 0   -> Error.
-  //-- E /   1 -> E
-  //-- E /  -1 -> - E
-  //-- E / 2^n -> E >> n
-  ( + result:EXPR;
-    + v:INTEGER_64;
-        
-    (right_cst.value = 0).if {
-      warning_error (position,"Division by zero.");
-    }.elseif {right_cst.value = 1} then {
-      result := left;
-      right_cst.remove;
-    }.elseif {right_cst.value = -1} then {
-      result := EXPR_NEG.create position with left;
-      right_cst.remove;
-    }.elseif {(v := right_cst.to_power) != -1} then {            
-      right_cst.set_value v;
-      result := EXPR_SHIFT_R.create position with left and right_cst;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-   
-  //-- C1 / C2 -> C3
-  ( + result:EXPR;
-    
-    (right_cst.value != 0).if {
-      left_cst.set_value (left_cst.value / right_cst.value); 
-      right_cst.remove;
-      result := left_cst;
-    };
-    result
-  );
-  
-  - exec:EXPR <-
-  //--  E /  E ->  1
-  //-- -E /  E -> -1
-  //--  E / -E -> -1
-  ( + result:EXPR;
-    + neg:EXPR_NEG;
-    
-    (right == left).if {
-      result := INTEGER_CST.create position value 1 type static_type;
-      right.remove;
-      left .remove;
-    } else {      
-      neg ?= left;
-      ((neg != NULL) && {neg.right == right}).if {
-	result := INTEGER_CST.create position value (-1) type static_type;
-	left.remove;
-	right.remove;
-      } else {
-	neg ?= right;
-	((neg != NULL) && {neg.right == left}).if {
-	  result := INTEGER_CST.create position value (-1) type static_type;
-	  left.remove;
-	  right.remove;
-	};
-      };      
-    };
-    result
-  );
-  
-  - exec_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 0 / E -> 0
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-
-
-
-  
-  
-  
-  
-  
-  
-  
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_mod.li b/src/external/arithmetic/expr_mod.li
deleted file mode 100644
index f892f65..0000000
--- a/src/external/arithmetic/expr_mod.li
+++ /dev/null
@@ -1,115 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_MOD;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  + symbol:STRING_CONSTANT := "%";
-  
-  //
-  // Execute.
-  //
-    
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <-
-  //-- E %   0 -> Error
-  //-- E % 2^n -> E & (2^n -1)
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      warning_error (position,"Division by zero.");
-    }.elseif {right_cst.to_power != -1} then {
-      right_cst.set_value (right_cst.value - 1);
-      result := EXPR_AND.create position with left and right_cst;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 % C2 -> C3
-  (
-    left_cst.set_value (left_cst.value % right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- E % E -> 0
-  ( + result:EXPR;
-    
-    (left == right).if {
-      result := INTEGER_CST.create position value 0 type static_type;
-      left.remove;
-      right.remove;
-    };
-    result    
-  );
-
-  - exec_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 0 % E -> 0
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-
-  - exec_right right_cst:INTEGER_CST :EXPR <-   
-  //-- E %   1 -> 0
-  //-- E %  -1 -> 0
-  ( + result:EXPR;
-    
-    (right_cst.value = 1).if {
-      right_cst.set_value 0;
-      left.remove;
-      result := right_cst;
-    }.elseif {right_cst.value = -1} then {      
-      right_cst.set_value 0;
-      result := right_cst;
-      left.remove;
-    };
-    result    
-  );
-  
-  
-  
-
-
-
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_mul.li b/src/external/arithmetic/expr_mul.li
deleted file mode 100644
index ef87374..0000000
--- a/src/external/arithmetic/expr_mul.li
+++ /dev/null
@@ -1,121 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_MUL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Mul Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := "*";
-  
-  //
-  // Execute.
-  //
-    
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 1   * E -> E
-  //-- -1  * E -> - E
-  //-- 2^n * E -> E << n
-  ( + v:INTEGER_64;
-    + result:EXPR;
-    
-    (left_cst.value = 1).if {
-      left_cst.remove;
-      result := right;
-    }.elseif {left_cst.value = -1} then {
-      left_cst.remove;
-      result := EXPR_NEG.create position with right;
-    }.elseif {(v := left_cst.to_power) != -1} then {
-      left_cst.set_value v;
-      result := EXPR_SHIFT_L.create position with right and left_cst;
-    };
-    result    
-  );
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <-
-  //-- E *   1 -> E
-  //-- E *  -1 -> - E
-  //-- E * 2^n -> E << n
-  ( + result:EXPR;
-    + v:INTEGER_64;
-    
-    (right_cst.value = 1).if {
-      right_cst.remove;
-      result := left;
-    }.elseif {right_cst.value = -1} then {
-      right_cst.remove;
-      result := EXPR_NEG.create position with left;
-    }.elseif {(v := right_cst.to_power) != -1} then {
-      right_cst.set_value v;
-      result := EXPR_SHIFT_L.create position with left and right_cst;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-
-  //-- C1 * C2 -> C3
-  (
-    left_cst.set_value (left_cst.value * right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-    
-  - exec_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 0   * E -> 0
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <-
-  //-- E *   0 -> 0
-  ( + result:EXPR;
-        
-    (right_cst.value = 0).if {
-      result := right_cst;
-      left.remove;
-    };  
-    result
-  );
-  
-  
-
-
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_neg.li b/src/external/arithmetic/expr_neg.li
deleted file mode 100644
index 1b8c1e6..0000000
--- a/src/external/arithmetic/expr_neg.li
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_NEG;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Negatif unary arithmetic expression.";
-  
-Section Inherit
-  
-  + parent_expr_unary:Expanded EXPR_UNARY;
-  
-Section Private  
-  
-  - symbol:CHARACTER <- '-';
-    
-  //
-  // Execute.
-  //
-  
-  - exec_conservator:EXPR <-
-  //-- - - E -> E 
-  ( + sub:EXPR_NEG;
-    + result:EXPR;
-    
-    sub ?= right;
-    (sub != NULL).if {
-      result := sub.right;
-    };
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <-
-  //-- - C1 -> C2
-  ( + result:EXPR;
-    (right_cst.is_signed).if {
-      right_cst.set_value (- right_cst.value);    
-      result := right_cst;
-    };
-    result
-  );
-    
-
-
-
diff --git a/src/external/arithmetic/expr_not.li b/src/external/arithmetic/expr_not.li
deleted file mode 100644
index f94579d..0000000
--- a/src/external/arithmetic/expr_not.li
+++ /dev/null
@@ -1,93 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_NOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Not unary arithmetic expression.";
-  
-Section Inherit
-  
-  + parent_expr_unary:Expanded EXPR_UNARY;
-  
-Section Private  
-  
-  - symbol:CHARACTER <- '~';
-    
-  //
-  // Execute.
-  //
-  
-  - exec_conservator:EXPR <-
-  //-- ~ (~ E1 & ~ E2) -> E1 | E2
-  //-- ~ (~ E1 | ~ E2) -> E1 & E2
-  //-- ~ ~ E -> E
-  ( + or:EXPR_OR;
-    + and:EXPR_AND;
-    + neg1,neg2:EXPR_NOT;
-    + result:EXPR;
-    
-    and ?= right;
-    (and != NULL).if {
-      neg1 ?= and.left;
-      neg2 ?= and.right;
-      ((neg1 != NULL) && {neg2 != NULL}).if {
-	result := EXPR_OR.create position with (neg1.right) and (neg2.right);
-      };
-    } else {
-      or ?= right;
-      (or != NULL).if {
-	neg1 ?= or.left;
-	neg2 ?= or.right;
-	((neg1 != NULL) && {neg2 != NULL}).if {
-	  result := EXPR_AND.create position with (neg1.right) and (neg2.right);
-	};
-      } else {
-	neg1 ?= right;
-	(neg1 != NULL).if {
-	  result := neg1.right;
-	};
-      };
-    };
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- 
-  //-- ~ C1 -> C2
-  ( + result:EXPR;
-    (right_cst.is_signed).if {
-      right_cst.set_value (~ right_cst.value);
-      result := right_cst;
-    };
-    result
-  );  
-  
-  
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_or.li b/src/external/arithmetic/expr_or.li
deleted file mode 100644
index 1441666..0000000
--- a/src/external/arithmetic/expr_or.li
+++ /dev/null
@@ -1,125 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_OR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Or binary arithmetic expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  - symbol:STRING_CONSTANT := "|";
-  
-  //
-  // Execute.
-  //
-    
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <-
-  //-- 0  | E -> E
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := right;
-      left_cst.remove;
-    };
-    result
-  );
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E | 0  -> E
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-
-  //-- C1 | C2 -> C3
-  ( 
-    left_cst.set_value (left_cst.value | right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- (! E1 & E2) | (E1 & ! E2) -> E1 ^ E2 (A lot of possibilities, but see '^' in INTEGER)
-  //-- E | E                     -> E
-  ( + result:EXPR;
-    + and_l,and_r:EXPR_AND;
-    + not_l,not_r:EXPR_NOT;
-    
-    (left == right).if {
-      right.remove;
-      result := left;
-    } else {
-      and_l ?= left;
-      and_r ?= right;
-      ((and_l != NULL) && {and_r != NULL}).if {
-	not_l ?= and_l.left;
-	not_r ?= and_r.right;
-	((not_l != NULL) && {not_r != NULL}).if {
-	  ((not_l.right == and_r.left) && {and_l.right == not_r.right}).if {
-	    result := EXPR_XOR.create position with (not_l.right) and (and_l.right);
-	    right.remove;
-	  };
-	};
-      };
-    };
-    result    
-  );
-  
-  - exec_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- -1 | E -> -1  
-  ( + result:EXPR;
-    
-    (left_cst.is_saturated).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-    
-  - exec_right right_cst:INTEGER_CST :EXPR <-
-  //-- E | -1 -> -1
-  ( + result:EXPR;
-    
-    (right_cst.is_saturated).if {
-      result := right_cst;
-      left.remove;
-    };
-    result
-  );
-
-  
-
-
-
diff --git a/src/external/arithmetic/expr_shift_l.li b/src/external/arithmetic/expr_shift_l.li
deleted file mode 100644
index e426846..0000000
--- a/src/external/arithmetic/expr_shift_l.li
+++ /dev/null
@@ -1,93 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_SHIFT_L;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  + symbol:STRING_CONSTANT := "<<";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E <<  0 -> E  
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 << C2  -> C3
-  //-- C1 << -C2 -> Error.
-  (
-    (right_cst.value < 0).if {
-      warning_error (position,"Left shift count is negative.");
-      left_cst.set_value 0;
-    } else {
-      left_cst.set_value (left_cst.value << right_cst.value); 
-    };
-    right_cst.remove;
-    left_cst
-  );
-
-  - exec_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- 0 << E   -> 0
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E << -C2 -> Error.
-  ( + result:EXPR;
-    
-    (right_cst.value < 0).if {
-      warning_error (position,"Left shift count is negative.");
-      right_cst.set_value 0;
-      right_cst.cast_type static_type;
-      result := right_cst;
-      left.remove;
-    };
-    result
-  );
-  
-  
diff --git a/src/external/arithmetic/expr_shift_r.li b/src/external/arithmetic/expr_shift_r.li
deleted file mode 100644
index d40614c..0000000
--- a/src/external/arithmetic/expr_shift_r.li
+++ /dev/null
@@ -1,112 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_SHIFT_R;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  + symbol:STRING_CONSTANT := ">>";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E >>  0 -> E  
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 >> C2  -> C3
-  //-- C1 >> -C2 -> Error.
-  (
-    (right_cst.value < 0).if {
-      warning_error (position,"Right shift count is negative.");
-      left_cst.set_value 0;
-    } else {
-      left_cst.set_value (left_cst.value >> right_cst.value); 
-    };
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- E(unsigned) >> E(unsigned) -> 0
-  ( + result:EXPR;
-    /*
-    (left == right) && {left.is_unsigned_type}.if {
-      result := INTEGER_CST.create position value 0 type static_type;
-      left .remove;
-      right.remove;
-    };
-    */
-    result
-  );
-  
-  - exec_left  left_cst:INTEGER_CST :EXPR <- 
-  //-- 0 >> E            -> 0
-  //-- -1(signed) >> E   -> -1(signed)
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := left_cst;
-      right.remove;
-    }.elseif {left_cst.value = -1} then {
-      result := left_cst;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E >> -C2 -> Error.
-  ( + result:EXPR;
-    
-    (right_cst.value < 0).if {
-      warning_error (position,"Right shift count is negative.");
-      right_cst.set_value 0;
-      right_cst.cast_type static_type;
-      result := right_cst;
-      left.remove;
-    };
-    result
-  );
-  
-  
-  
-  
diff --git a/src/external/arithmetic/expr_sub.li b/src/external/arithmetic/expr_sub.li
deleted file mode 100644
index fc73edf..0000000
--- a/src/external/arithmetic/expr_sub.li
+++ /dev/null
@@ -1,128 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_SUB;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Add Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := "-";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator:EXPR <-  
-  //-- E1 - - E2 -> E1 + E2
-  ( + neg:EXPR_NEG;
-    + result:EXPR;
-    
-    neg ?= right;    
-    (neg != NULL).if {
-      result := EXPR_ADD.create position with left and (neg.right);
-    };
-    result
-  );
-  
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- 0  - E   -> - E
-  //-- -1 - E   -> ~ E  
-  ( + result:EXPR;
-        
-    (left_cst.value = 0).if {
-      left_cst.remove;
-      result := EXPR_NEG.create position with right;
-    }.elseif {left_cst.is_saturated} then {
-      left_cst.remove;
-      result := EXPR_NOT.create position with right;
-    };
-    result    
-  );
-  
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <-
-  //-- E  - 0   -> E
-  //-- -E - 1   -> ~ E
-  //-- E - -C   -> E + C
-  ( + result:EXPR;
-    + neg:EXPR_NEG;
-    
-    (right_cst.value = 0).if {
-      right_cst.remove;
-      result := left;
-    }.elseif {right_cst.value = 1} then {
-      neg ?= left;
-      (neg != NULL).if {
-	right_cst.remove;
-	result := EXPR_NOT.create position with (neg.right);
-      };
-    }.elseif {right_cst.value < 0} then {
-      right_cst.set_value (- right_cst.value);
-      result := EXPR_ADD.create position with left and right_cst;
-    };
-    result
-  );  
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <-
-  //-- C1 - C2 -> C3
-  (
-    left_cst.set_value (left_cst.value - right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- E  -  E  -> 0
-  //-- E1 - ((E1 / E2) * E2) -> E1 % E2 
-  ( + result:EXPR;
-    + mul:EXPR_MUL;
-    + div:EXPR_DIV;
-    
-    (left == right).if {
-      left.remove;
-      right.remove;
-      result := INTEGER_CST.create position value 0 type static_type;
-    } else {
-      mul ?= right;
-      (mul != NULL).if {
-	div ?= mul.left;
-	(div != NULL).if {
-	  ((left == div.left) && {div.right == mul.right}).if {
-	    div.remove;
-	    result := EXPR_MOD.create position with left and (mul.right);
-	  };
-	};
-      };
-    };
-
-    result
-  );
- 
-    
\ No newline at end of file
diff --git a/src/external/arithmetic/expr_unary.li b/src/external/arithmetic/expr_unary.li
deleted file mode 100644
index f89d273..0000000
--- a/src/external/arithmetic/expr_unary.li
+++ /dev/null
@@ -1,171 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_UNARY;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Unary Expression.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public  
-  
-  - is_invariant:BOOLEAN <- right.is_invariant;
-  
-  + right:EXPR;
-  
-  - symbol:CHARACTER <- 
-  (
-    deferred;
-    ' '
-  );
-  
-  - static_type:TYPE_FULL <- right.static_type;
-  
-  - get_type t:TYPES_TMP <-
-  (        
-    t.add (static_type.raw);
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with r;
-    result
-  );
-  
-  - make p:POSITION with r:EXPR <-
-  (
-    position := p;
-    right := r;
-  );
-  
-  - my_copy:SELF <- SELF.create position with (right.my_copy);
-  
-  //
-  // Comparaison.
-  //
-    
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + same:SELF;
-    
-    same ?= other;
-    (same != NULL) && {right == same.right}
-  );
-  
-  - remove <-
-  (    
-    right.remove;
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute_unlink:INSTR <-
-  (
-    right.execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + right_cst:INTEGER_CST;
-    
-    old_seq := seq_call_and_loop;    
-    right := right.execute_link;     
-    //    
-    right_cst ?= right;
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_right right_cst;
-    };
-    ((result = NULL) && {old_seq = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;      
-    };
-    (result = NULL).if {
-      result := Self;
-    } else {
-      result.set_position position;
-      new_execute_pass;
-    };
-        
-    result
-  );
-  
-  - exec_conservator:EXPR <- NULL;  
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- NULL;
-    
-  - exec:EXPR <- NULL;
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.add_last '(';
-    static_type.genere_declaration buffer;
-    buffer.add_last ')';
-    //
-    buffer.add_last '(';
-    buffer.add_last symbol;
-    buffer.add_last ' ';
-    right.genere buffer;
-    buffer.add_last ')';
-  );  
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    buffer.add_last symbol;
-    buffer.add_last ' ';
-    right.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
-
diff --git a/src/external/arithmetic/expr_xor.li b/src/external/arithmetic/expr_xor.li
deleted file mode 100644
index 74e4995..0000000
--- a/src/external/arithmetic/expr_xor.li
+++ /dev/null
@@ -1,91 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_XOR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Xor Binary arithmetic expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary:Expanded EXPR_BINARY;
-  
-Section Private  
-  
-  + symbol:STRING_CONSTANT := "^";
-  
-  //
-  // Execute.
-  //
-  
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- 0  ^ E -> E
-  //-- -1 ^ E -> ~ E  
-  ( + result:EXPR;
-    
-    (left_cst.value = 0).if {
-      result := right;
-      left_cst.remove;
-    }.elseif {left_cst.is_saturated} then {
-      result := EXPR_NOT.create position with right;
-      left_cst.remove;
-    };
-    result
-  );
-
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <-
-  //-- E ^ 0  -> E
-  //-- E ^ -1 -> ~ E
-  ( + result:EXPR;
-    
-    (right_cst.value = 0).if {
-      result := left;
-      right_cst.remove;
-    }.elseif {right_cst.is_saturated} then {
-      result := EXPR_NOT.create position with left;
-      right_cst.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 ^ C2 -> C3
-  (
-    left_cst.set_value (left_cst.value ^ right_cst.value); 
-    right_cst.remove;
-    left_cst
-  );
-  
-  - exec:EXPR <-
-  //-- E ^ E -> 0
-  ( + result:EXPR;
-    
-    (left == right).if {
-      result := INTEGER_CST.create position value 0 type static_type;
-      left .remove;
-      right.remove;
-    };
-    result    
-  );
diff --git a/src/external/call_null.li b/src/external/call_null.li
deleted file mode 100644
index 4324ea8..0000000
--- a/src/external/call_null.li
+++ /dev/null
@@ -1,90 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := CALL_NULL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Call on NULL";
-  
-Section Inherit
-  
-  + parent_instr:Expanded INSTR; 
-  
-Section Public 
-  
-  - my_copy:SELF <- Self;
-  
-  - is_necessary:BOOLEAN;
-  
-  //
-  // Remove
-  //
-  
-  - remove; // Nothing.
-  
-  //
-  // Execute
-  //
-  
-  - execute:INSTR <- Self;
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  ( + code:STRING_CONSTANT;
-    (debug_level_option != 0).if {
-      code := 
-      "stack_print(top_context); \
-      \print_string(\"Call on NULL\\n\"); \
-      \die_with_code(1)";
-    } else {
-      code := 
-      "print_string(\"Call on NULL\\n\
-      \(Use `debug' option)\\n\"); \ 
-      \die_with_code(1)";
-    };
-    buffer.append code;
-    is_necessary := TRUE;
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "Call on NULL";
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/comparison/expr_binary_cmp.li b/src/external/comparison/expr_binary_cmp.li
deleted file mode 100644
index c4dd322..0000000
--- a/src/external/comparison/expr_binary_cmp.li
+++ /dev/null
@@ -1,243 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_BINARY_CMP;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- left.is_invariant && {right.is_invariant};
-  
-  + left:EXPR;
-  
-  + right:EXPR;
-  
-  - set_left l:EXPR and_right r:EXPR <-
-  (
-    left  := l;
-    right := r;
-  );
-  
-  - symbol:STRING_CONSTANT <- 
-  (
-    deferred;
-    NULL
-  );
-  
-  - static_type:TYPE_FULL <- type_boolean.default;
-  
-  - get_type t:TYPES_TMP <-
-  (    
-    t.add type_true;
-    t.add type_false;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with l:EXPR and r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with l and r;
-    result
-  );
-  
-  - make p:POSITION with l:EXPR and r:EXPR <-
-  (
-    position := p;
-    left     := l;
-    right    := r;
-  );
-  
-  - my_copy:SELF <- SELF.create position with (left.my_copy) and (right.my_copy);
-  
-  //
-  // Comparaison.
-  //
-    
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + same:SELF;
-    
-    same ?= other;
-    (same != NULL) && {left == same.left} && {right == same.right}
-  );  
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    left .remove;
-    right.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  ( + instr:INSTR;
-    instr  := left.execute_unlink;
-    (instr != NULL).if {
-      list_current.insert_before instr;
-    };
-    right.execute_unlink    
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + left_cst,right_cst:INTEGER_CST;
-    
-    old_seq := seq_call_and_loop;    
-    left  := left .execute_link;
-    right := right.execute_link;     
-    //
-    left_cst  ?= left;
-    right_cst ?= right;
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {left_cst != NULL}).if {      
-      result := exec_conservator_left left_cst;
-    };
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_conservator_right right_cst;
-    };      
-    (
-      (result = NULL)     && 
-      {right_cst != NULL} && 
-      {left_cst  != NULL}
-    ).if {
-      result := exec left_cst and right_cst;
-    };        
-    ((result = NULL) && {old_seq = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;
-      ((result = NULL) && {left_cst != NULL}).if {
-	result := exec_left left_cst;
-      };
-      ((result = NULL) && {right_cst != NULL}).if {
-	result := exec_right right_cst;
-      };
-    };   
-    //
-    (result = NULL).if {
-      result := Self;
-    } else {
-      result.set_position position;
-      new_execute_pass;
-    };
-    
-    result
-  );
-  
-  - exec_conservator:EXPR <- NULL;  
-  - exec_conservator_left  left_cst :INTEGER_CST :EXPR <- NULL;
-  - exec_conservator_right right_cst:INTEGER_CST :EXPR <- NULL;
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- NULL;
-  
-  - exec:EXPR <- NULL;
-  - exec_left  left_cst :INTEGER_CST :EXPR <- NULL;
-  - exec_right right_cst:INTEGER_CST :EXPR <- NULL;
- 
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.add_last '(';
-    (
-      (left.static_type.raw = type_pointer) && 
-      {ALIAS_STR.is_integer (right.static_type.raw.name)}
-    ).if {
-      buffer.append "(unsigned long)";
-    }.elseif {! left.static_type.is_expanded} then {    
-      buffer.append "(void *)"; // BSBS: A virer quand tu auras optim '=='
-    };
-    ((left.static_type.raw = TYPE_NULL) && {right.static_type.raw.is_block}).if {
-      buffer.add_last '0';
-    } else {
-      left.genere buffer;
-      (left.static_type.raw.is_block).if {
-	buffer.append ".__id";
-      };
-    };    
-    buffer.add_last ' ';
-    buffer.append symbol;
-    buffer.add_last ' ';
-        
-    (
-      (ALIAS_STR.is_integer (left.static_type.raw.name)) && 
-      {right.static_type.raw = type_pointer}
-    ).if {      
-      buffer.append "(unsigned long)";
-    }.elseif {! right.static_type.is_expanded} then {
-      buffer.append "(void *)"; // BSBS: A virer quand tu auras optim '=='
-    };
-    ((right.static_type.raw = TYPE_NULL) && {left.static_type.raw.is_block}).if {
-      buffer.add_last '0';
-    } else {
-      right.genere buffer;
-      (right.static_type.raw.is_block).if {
-	buffer.append ".__id";
-      };
-    };    
-    buffer.add_last ')';
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';    
-    left.static_type.append_name_in buffer;    
-    buffer.add_last ' ';
-    left.display buffer;
-    buffer.append symbol;
-    right.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/comparison/expr_equal.li b/src/external/comparison/expr_equal.li
deleted file mode 100644
index aa54cad..0000000
--- a/src/external/comparison/expr_equal.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_EQUAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
- 
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Simple Equal Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public
-  
-  - symbol:STRING_CONSTANT := "==";
-    
-  //
-  // Execute.
-  //
-    
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 == C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value = right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    result
-  );
-  
-  - exec:EXPR <-  
-  //-- E == E -> TRUE
-  //-- Expanded == NULL -> FALSE
-  ( + result:PROTOTYPE_CST;
-    + r:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-      left .remove;
-      right.remove;
-    } else {
-      r ?= right;
-      (
-	(r != NULL) && 
-	{r.static_type.raw = TYPE_NULL} && 
-	{left.static_type.is_expanded}  &&
-	{left.static_type.raw != type_pointer}
-      ).if {
-	result := PROTOTYPE_CST.create position type (type_false.default);
-      };
-    };
-    
-    result
-  );
-  
-
-
-
-
-
-
diff --git a/src/external/comparison/expr_inf.li b/src/external/comparison/expr_inf.li
deleted file mode 100644
index 809cbf9..0000000
--- a/src/external/comparison/expr_inf.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_INF;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Inferior binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := "<";
-  
-  //
-  // Execute.
-  //
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 < C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value < right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    
-    result
-  );
-  
-  - exec:EXPR <-  
-  //-- E < E -> FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-      left .remove;
-      right.remove;
-    };    
-    
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E(unsigned) < 0 -> FALSE
-  ( + result:EXPR;
-    
-    ((right_cst.value = 0) && {left.static_type.raw.name.first = 'U'}).if {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-      left .remove;
-      right.remove;
-    };
-    result
-  );
\ No newline at end of file
diff --git a/src/external/comparison/expr_inf_eq.li b/src/external/comparison/expr_inf_eq.li
deleted file mode 100644
index eec4536..0000000
--- a/src/external/comparison/expr_inf_eq.li
+++ /dev/null
@@ -1,70 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_INF_EQ;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Inferior or equal binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := "<=";
-  
-  //
-  // Execute.
-  //
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 <= C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value <= right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    
-    result
-  );
-  
-  - exec:EXPR <-  
-  //-- E <= E -> TRUE
-  ( + result:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-      left .remove;
-      right.remove;
-    };    
-    
-    result
-  );
-  
diff --git a/src/external/comparison/expr_not_equal.li b/src/external/comparison/expr_not_equal.li
deleted file mode 100644
index b221b3d..0000000
--- a/src/external/comparison/expr_not_equal.li
+++ /dev/null
@@ -1,86 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_NOT_EQUAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Not equal binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public
-  
-  - symbol:STRING_CONSTANT := "!=";
- 
-  //
-  // Execute.
-  //
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 != C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value != right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    
-    result
-  );
-  
-  - exec:EXPR <-  
-  //-- E != E -> FALSE
-  //-- Expanded != NULL -> TRUE
-  ( + result:PROTOTYPE_CST;
-    + r:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-      left .remove;
-      right.remove;
-    } else {
-      r ?= right;
-      (
-	(r != NULL) && 
-	{r.static_type.raw = TYPE_NULL} && 
-	{left.static_type.is_expanded}  &&
-	{left.static_type.raw != type_pointer}
-      ).if {
-	result := PROTOTYPE_CST.create position type (type_true.default);	
-      };
-    };    
-    
-    result
-  );
-
-  
-  
-
-
diff --git a/src/external/comparison/expr_sup.li b/src/external/comparison/expr_sup.li
deleted file mode 100644
index 81b4c5d..0000000
--- a/src/external/comparison/expr_sup.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_SUP;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Superior binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := ">";
-  
-  //
-  // Execute.
-  //
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 > C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value > right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    
-    result
-  );
-  
-  - exec_left  left_cst :INTEGER_CST :EXPR <- 
-  //-- 0 > E (unsigned) -> FALSE
-  ( + result:EXPR;
-    
-    ((left_cst.value = 0) && {right.static_type.raw.name.first = 'U'}).if {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-      left .remove;
-      right.remove;
-    };
-    result    
-  );
-    
-  - exec:EXPR <-  
-  //-- E > E -> FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-      left .remove;
-      right.remove;
-    };    
-    
-    result
-  );
-  
diff --git a/src/external/comparison/expr_sup_eq.li b/src/external/comparison/expr_sup_eq.li
deleted file mode 100644
index 0332913..0000000
--- a/src/external/comparison/expr_sup_eq.li
+++ /dev/null
@@ -1,81 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_SUP_EQ;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Superior or equal binary comparison expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_cmp:Expanded EXPR_BINARY_CMP;
-  
-Section Public  
-  
-  - symbol:STRING_CONSTANT := ">=";
-  
-  //
-  // Execute.
-  //
-  
-  - exec left_cst:INTEGER_CST and right_cst:INTEGER_CST :EXPR <- 
-  //-- C1 >= C2 -> TRUE/FALSE
-  ( + result:PROTOTYPE_CST;
-    
-    (left_cst.value >= right_cst.value).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    left_cst .remove;
-    right_cst.remove;
-    
-    result
-  );
-  
-  - exec:EXPR <-  
-  //-- E >= E -> TRUE
-  ( + result:PROTOTYPE_CST;
-    
-    (left == right).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-      left .remove;
-      right.remove;
-    };    
-    
-    result
-  );
-  
-  - exec_right right_cst:INTEGER_CST :EXPR <- 
-  //-- E(unsigned) >= 0 -> TRUE
-  ( + result:EXPR;
-    
-    ((right_cst.value = 0) && {left.static_type.raw.name.first = 'U'}).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-      left .remove;
-      right.remove;
-    };
-    result
-  );
\ No newline at end of file
diff --git a/src/external/external_c.li b/src/external/external_c.li
deleted file mode 100644
index bf183e8..0000000
--- a/src/external/external_c.li
+++ /dev/null
@@ -1,229 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXTERNAL_C;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit";
-  - comment     := "External C instruction.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  + is_persistant:BOOLEAN;
-
-  + static_type:TYPE_FULL;
-
-  + living_type:TYPES; 
-  
-  - set_living_type l:TYPES <-
-  (
-    living_type := l;
-  );
-  
-  - get_type t:TYPES_TMP <-
-  (
-    (living_type = NULL).if {
-      t.add (static_type.raw);
-    } else {
-      t.union living_type;
-    };
-  );
-
-  //
-  // External value.
-  //
-  
-  + code:STRING_CONSTANT;
-  + access_list:FAST_ARRAY[EXPR];
-
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION 
-  text c:STRING_CONSTANT
-  access ac:FAST_ARRAY[EXPR] 
-  persistant per:BOOLEAN 
-  type t:TYPE_FULL :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p text c access ac persistant per type t;
-    result
-  );
-
-  - make p:POSITION 
-  text c:STRING_CONSTANT
-  access ac:FAST_ARRAY[EXPR] 
-  persistant per:BOOLEAN 
-  type t:TYPE_FULL <-
-  (
-    position      := p;
-    static_type   := t;
-    is_persistant := per;
-    code          := c;
-    access_list   := ac;
-  );
-
-  - my_copy:SELF <-
-  ( + result:SELF;
-    + new_access:FAST_ARRAY[EXPR];
-    + val:EXPR;    
-        
-    (access_list != NULL).if {
-      new_access := FAST_ARRAY[EXPR].create_with_capacity (access_list.count);
-      (access_list.lower).to (access_list.upper) do { j:INTEGER;
-	val := access_list.item j.my_copy;	
-	new_access.add_last val;
-      };      
-    };
-    result := SELF.create position text code 
-    access new_access persistant is_persistant type static_type;    
-    result.set_living_type living_type;    
-    result
-  );
-
-  //
-  // Generation.
-  //
-
-  - remove <-
-  (
-    (access_list != NULL).if {
-      (access_list.lower).to (access_list.upper) do { j:INTEGER;
-	access_list.item j.remove;
-      };
-    };
-  );
-  
-  - execute_unlink:INSTR <-
-  ( + result,instr:INSTR;
-    
-    (is_persistant).if {
-      // Normal.
-      static_type := TYPE_VOID.default;
-      result := execute_link;
-    } else {
-      // Remove.
-      (access_list != NULL).if {
-	(access_list.lower).to (access_list.upper) do { j:INTEGER;	  
-	  instr := access_list.item j.execute_unlink;
-	  (instr != NULL).if {
-	    list_current.insert_before instr;
-	  };
-	};
-      };
-    };
-    result
-  );
-
-  - execute_link:EXPR <-
-  ( + e:EXPR;
- 
-    // Normal
-    (access_list != NULL).if { 
-      (access_list.lower).to (access_list.upper) do { j:INTEGER;
-	e := access_list.item j.execute_link;	  
-	access_list.put e to j;
-      };
-    };
-    Self
-  );
-
-  - genere buffer:STRING <-
-  ( + idx,beg:INTEGER;
-     
-    (static_type.raw != TYPE_VOID).if {
-      buffer.append "((";
-      static_type.genere_declaration buffer;     
-      buffer.add_last ' ';
-      static_type.genere_star_declaration buffer;      
-      buffer.append ")("; 
-    };     
-    
-    (access_list != NULL).if {
-      beg := code.lower;
-      idx := code.index_of '@' since beg;
-      (access_list.lower).to (access_list.upper) do { j:INTEGER;
-	beg.to (idx-1) do { k:INTEGER;
-	  buffer.add_last (code.item k);
-	};
-	beg := idx + 1;
-	access_list.item j.genere buffer;	
-	idx := code.index_of '@' since beg;
-      };
-      // Copy end.
-      beg.to (code.upper) do { k:INTEGER;
-	buffer.add_last (code.item k);
-      };
-    } else {
-      buffer.append code;
-    };
-    (static_type.raw != TYPE_VOID).if {
-      buffer.append "))";
-    };
-  );
-
-  //
-  // Display.
-  //
-
-  - display buffer:STRING <-
-  (     
-    buffer.add_last '`';
-    buffer.append code;    
-    ((access_list != NULL) && { ! access_list.is_empty}).if {
-      buffer.add_last '(';
-      access_list.lower.to (access_list.upper - 1) do { j:INTEGER;
-	access_list.item j.display buffer;
-	buffer.add_last ',';
-      };
-      access_list.last.display buffer;
-      buffer.add_last ')';
-    };    
-    buffer.add_last '`';
-    static_type.append_name_in buffer;
-    (living_type != NULL).if {
-      buffer.add_last '(';      
-      (living_type.lower).to (living_type.upper-1) do { j:INTEGER;			
-	buffer.append (living_type.item j.intern_name);
-	buffer.add_last ',';
-      };
-      buffer.append (living_type.last.intern_name);
-      buffer.add_last ')';
-    };
-    display_ref buffer;
-  );
-    
-
-
-
-
-
-
-
-
diff --git a/src/external/get_type_id.li b/src/external/get_type_id.li
deleted file mode 100644
index 5270651..0000000
--- a/src/external/get_type_id.li
+++ /dev/null
@@ -1,126 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := GET_TYPE_ID;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Get intern ID object";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- TRUE;
-  
-  + receiver:EXPR;
-    
-  - static_type:TYPE_FULL <- type_integer.default;
-  
-  - get_type t:TYPES_TMP <-
-  (     
-    t.add type_integer;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION receiver e:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p receiver e;
-    result
-  );
-  
-  - make p:POSITION receiver e:EXPR <-
-  (
-    position := p;            
-    receiver := e; 
-  );
-  
-  - my_copy:SELF <- SELF.create position receiver (receiver.my_copy);
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    receiver.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  (     
-    remove;
-    NULL
-  );
-  
-  - execute_link:EXPR <-
-  (         
-    receiver := receiver.execute_link;
-    Self
-  );
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    (receiver.static_type.is_late_binding).if {
-      buffer.append "-1";
-    } else {
-      buffer.append (ALIAS_STR.separate);
-      buffer.append (receiver.static_type.raw.intern_name);
-      buffer.append (ALIAS_STR.separate); // <=> "__";
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "type_id(";
-    receiver.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/is_expanded.li b/src/external/is_expanded.li
deleted file mode 100644
index 3e258fb..0000000
--- a/src/external/is_expanded.li
+++ /dev/null
@@ -1,131 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := IS_EXPANDED;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "True, if `Self' is Expanded type.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- TRUE;
-  
-  + receiver:EXPR;
-    
-  - static_type:TYPE_FULL <- type_boolean.default;
-  
-  - get_type t:TYPES_TMP <-
-  (     
-    t.add type_true;
-    t.add type_false;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION receiver e:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p receiver e;
-    result
-  );
-  
-  - make p:POSITION receiver e:EXPR <-
-  (
-    position := p;            
-    receiver := e; 
-  );
-  
-  - my_copy:SELF <- SELF.create position receiver (receiver.my_copy);
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    receiver.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  (     
-    receiver.execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + instr:INSTR;
-    
-    (receiver.static_type.is_expanded).if {
-      result := PROTOTYPE_CST.create position type (type_true.default);
-    } else {
-      result := PROTOTYPE_CST.create position type (type_false.default);
-    };    
-    instr := receiver.execute_unlink;
-    (instr != NULL).if {
-      list_current.insert_before instr;      
-    };
-    new_execute_pass;
-    result
-  );
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    crash_with_message "IS_EXPANDED.genere !";
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "is_expanded(";
-    receiver.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/item.li b/src/external/item.li
deleted file mode 100644
index 78fa5ec..0000000
--- a/src/external/item.li
+++ /dev/null
@@ -1,139 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITEM;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Item for NATIVE_ARRAY[type].";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- receiver.is_invariant && {index.is_invariant};
-  
-  + receiver:EXPR;
-  
-  + index:EXPR;
-    
-  - static_type:TYPE_FULL <- 
-  ( + t:TYPE_GENERIC;
-    
-    t ?= receiver.static_type.raw;
-    t.generic_list.first    
-  );
-     
-  - get_type t:TYPES_TMP <-
-  ( + typ_gen:TYPE_GENERIC;   
-        
-    typ_gen ?= receiver.static_type.raw;
-    typ_gen.get_type t;    
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION base rec:EXPR index idx:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p base rec index idx;
-    result
-  );
-  
-  - make p:POSITION base rec:EXPR index idx:EXPR <-
-  (
-    position := p;            
-    receiver := rec;
-    index    := idx;
-  );
-  
-  - my_copy:SELF <- SELF.create position base (receiver.my_copy) index (index.my_copy);
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    receiver.remove;
-    index.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  ( + instr:INSTR;    
-    instr := receiver.execute_unlink;
-    (instr != NULL).if {
-      list_current.insert_before instr;
-    };
-    index.execute_unlink    
-  );
-  
-  - execute_link:EXPR <-
-  (   
-    receiver := receiver.execute_link;
-    index    := index.execute_link;    
-    Self
-  );
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    receiver.genere buffer;   
-    buffer.add_last '[';
-    index.genere buffer;
-    buffer.add_last ']';    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    receiver.display buffer;
-    buffer.add_last '[';
-    index.display buffer;
-    buffer.add_last ']';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/logic/expr_and_and_logic.li b/src/external/logic/expr_and_and_logic.li
deleted file mode 100644
index b9b0adb..0000000
--- a/src/external/logic/expr_and_and_logic.li
+++ /dev/null
@@ -1,149 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_AND_AND_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "&& Binary logical expression.";
-  
-Section Inherit
-  
-  + parent_expr_and_logic:Expanded EXPR_AND_LOGIC;
-  
-Section Public
-  
-  + symbol:STRING_CONSTANT := "&&";
-  
-  //
-  // Execute.
-  //
-   
-  - execute_unlink:INSTR <-
-  (     
-    execute_link
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + left_cst,right_cst:PROTOTYPE_CST;
-    + left_t,right_t:TYPE;
-    
-    old_seq := seq_call_and_loop;    
-    left  := left.execute_link;    
-    //
-    seq_or_and := seq_or_and + 1;
-    seq_inline := seq_inline + 1;
-    //    
-    right := right.execute_link;     
-    //
-    left_cst  ?= left;
-    right_cst ?= right;
-    
-    (left_cst != NULL).if { // BSBS : Peux faire mieux !!!
-      (left_cst.static_type.raw = type_true).if {
-	left_t := type_true;
-      } else {
-	left_t := type_false;
-      };
-    };
-    (right_cst != NULL).if {
-      (right_cst.static_type.raw = type_true).if {
-	right_t := type_true;
-      } else {
-	right_t := type_false;
-      };
-    };
-    
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {left_cst != NULL}).if {      
-      result := exec_conservator_left left_t;
-    };
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_conservator_right right_t;
-    };
-    (
-      (result = NULL)     && 
-      {right_cst != NULL} && 
-      {left_cst != NULL}
-    ).if {
-      result := exec left_t and right_t;
-    };    
-    ((result = NULL) && {(old_seq + 1) = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;
-      ((result = NULL) && {left_cst != NULL}).if {
-	result := exec_left left_t;
-      };
-      ((result = NULL) && {right_cst != NULL}).if {
-	result := exec_right right_t;
-      };
-    };
-    //
-    (result = NULL).if {
-      result := Self;
-    } else {
-      new_execute_pass;
-    };
-    
-    result
-  );
-  
-  - exec_conservator:EXPR <-
-  //-- E && Var -> E & Var
-  ( + rd:READ;
-    + result:EXPR;
-    
-    rd ?= right;
-    (rd != NULL).if {
-      result := EXPR_AND_LOGIC.create position with left and right;
-    };
-    result
-  );
-  
-  //-- for && same &
-  
-  - exec_conservator_left  left_cst :TYPE :EXPR <-
-  //-- FALSE && E -> FALSE
-  ( + result:EXPR;
-    
-    result := parent_expr_and_logic.exec_conservator_left left_cst;
-    ((result = NULL) && {left_cst = type_false}).if {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-      
-
-
-
-
-
-
-
-
-
diff --git a/src/external/logic/expr_and_logic.li b/src/external/logic/expr_and_logic.li
deleted file mode 100644
index 5ec2ef1..0000000
--- a/src/external/logic/expr_and_logic.li
+++ /dev/null
@@ -1,129 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_AND_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "And binary logical expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_logic:Expanded EXPR_BINARY_LOGIC;
-  
-Section Public  
-  
-  + symbol:STRING_CONSTANT := "&";
-  
-  //
-  // Execute.
-  //
-      
-  - exec_conservator_left  left_cst :TYPE :EXPR <- 
-  //-- TRUE & E -> E
-  ( + result:EXPR;
-    
-    (left_cst = type_true).if {
-      result := right;
-      left.remove;
-    };
-    result
-  );
-  
-  - exec_conservator_right right_cst:TYPE :EXPR <- 
-  //-- E & TRUE -> E
-  ( + result:EXPR;
-    
-    (right_cst = type_true).if {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-    
-  - exec left_cst:TYPE and right_cst:TYPE :EXPR <-
-  //-- C1 & C2 -> C3
-  ( + result:EXPR;
-    
-    (left_cst = type_true).if {
-      result := right;
-      left.remove;
-    } else {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec:EXPR <-   
-  //-- E & E -> E
-  ( + result:EXPR;
-        
-    (left == right).if {
-      result := left;
-      right.remove;
-    };
-    result      
-  );
-
-  - exec_left  left_cst :TYPE :EXPR <- 
-  //-- FALSE & E -> FALSE
-  ( + result:EXPR;
-    
-    (left_cst = type_false).if {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec_right right_cst:TYPE :EXPR <- 
-  //-- E & FALSE -> FALSE
-  ( + result:EXPR;
-    
-    (right_cst = type_false).if {
-      result := right;
-      left.remove;
-    };
-    result
-  );
-
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-
-
-
-
-
-
-
-
diff --git a/src/external/logic/expr_binary_logic.li b/src/external/logic/expr_binary_logic.li
deleted file mode 100644
index 689d9bd..0000000
--- a/src/external/logic/expr_binary_logic.li
+++ /dev/null
@@ -1,221 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_BINARY_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Binary logical expression.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- left.is_invariant && {right.is_invariant};
-  
-  + left:EXPR;
-  
-  + right:EXPR;
-  
-  - symbol:STRING_CONSTANT <- 
-  (
-    deferred;
-    NULL
-  );
-  
-  - static_type:TYPE_FULL <- type_boolean.default;
-  
-  - get_type t:TYPES_TMP <-
-  (    
-    t.add type_true; 
-    t.add type_false;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with l:EXPR and r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with l and r;
-    result
-  );
-  
-  - make p:POSITION with l:EXPR and r:EXPR <-
-  (
-    position := p;
-    left     := l;
-    right    := r;
-  );
-  
-  - my_copy:SELF <- SELF.create position with (left.my_copy) and (right.my_copy);
-  
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + same:SELF;
-    
-    same ?= other;
-    (same != NULL) && {left == same.left} && {right == same.right}
-  );  
-    
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    left .remove;
-    right.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  ( + instr:INSTR;    
-    instr := left.execute_unlink;
-    (instr != NULL).if {
-      list_current.insert_before instr;
-    };
-    right.execute_unlink    
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + left_cst,right_cst:PROTOTYPE_CST;
-    + left_t,right_t:TYPE;
-    
-    old_seq := seq_call_and_loop;    
-    left  := left .execute_link;
-    right := right.execute_link;     
-    //
-    left_cst  ?= left;
-    right_cst ?= right;
-    
-    (left_cst != NULL).if { // BSBS : Peux faire mieux !!!
-      (left_cst.static_type.raw = type_true).if {
-	left_t := type_true;
-      } else {
-	left_t := type_false;
-      };
-    };
-    (right_cst != NULL).if {
-      (right_cst.static_type.raw = type_true).if {
-	right_t := type_true;
-      } else {
-	right_t := type_false;
-      };
-    };
-    
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {left_cst != NULL}).if {      
-      result := exec_conservator_left left_t;
-    };
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_conservator_right right_t;
-    };
-    (
-      (result = NULL)     && 
-      {right_cst != NULL} && 
-      {left_cst != NULL}
-    ).if {
-      result := exec left_t and right_t;
-    };    
-    ((result = NULL) && {old_seq = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;
-      ((result = NULL) && {left_cst != NULL}).if {
-	result := exec_left left_t;
-      };
-      ((result = NULL) && {right_cst != NULL}).if {
-	result := exec_right right_t;
-      };
-    };
-    //
-    (result = NULL).if {
-      result := Self;
-    } else {
-      result.set_position position;
-      new_execute_pass;
-    };
-    
-    result
-  );
-  
-  - exec_conservator:EXPR <- NULL;  
-  - exec_conservator_left  left_cst :TYPE :EXPR <- NULL;
-  - exec_conservator_right right_cst:TYPE :EXPR <- NULL;
-  
-  - exec left_cst:TYPE and right_cst:TYPE :EXPR <- NULL;
-  
-  - exec:EXPR <- NULL;
-  - exec_left  left_cst :TYPE :EXPR <- NULL;
-  - exec_right right_cst:TYPE :EXPR <- NULL;
- 
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.add_last '(';    
-    left.genere buffer;
-    buffer.add_last ' ';
-    buffer.append symbol;
-    buffer.add_last ' ';
-    right.genere buffer;
-    buffer.add_last ')';
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';    
-    left.display buffer;
-    buffer.append symbol;
-    right.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/logic/expr_not_logic.li b/src/external/logic/expr_not_logic.li
deleted file mode 100644
index e3cbf10..0000000
--- a/src/external/logic/expr_not_logic.li
+++ /dev/null
@@ -1,98 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_NOT_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Unary not logical expression.";
-  
-Section Inherit
-  
-  + parent_expr_unary_logic:Expanded EXPR_UNARY_LOGIC;
-  
-Section Public  
-  
-  - symbol:CHARACTER <- '!';
-    
-  //
-  // Execute.
-  //
-    
-  - exec_conservator:EXPR <- 
-  //-- ! (E1 == E2) -> E1 != E2   (see INTEGER)
-  //-- ! (E1 >= E2) -> E1 <  E2   (see INTEGER)
-  //-- ! (E1 >  E2) -> E1 <= E2   (see INTEGER)
-  //-- ! ! E -> E
-  ( + eq:EXPR_EQUAL;
-    + sup_eq:EXPR_SUP_EQ;
-    + sup:EXPR_SUP;
-    + not:EXPR_NOT_LOGIC;
-    + result:EXPR;    
-
-    not ?= right;
-    (not != NULL).if {
-      result := not.right;
-    }.elseif {    
-      eq ?= right;
-      eq != NULL
-    } then {
-      result := EXPR_NOT_EQUAL.create position with (eq.left) and (eq.right);
-    }.elseif {
-      sup_eq ?= right;
-      sup_eq != NULL
-    } then {      
-      result := EXPR_INF.create position with (sup_eq.left) and (sup_eq.right);
-    }.elseif {
-      sup ?= right;
-      sup != NULL
-    } then {
-      result := EXPR_INF_EQ.create position with (sup.left) and (sup.right);
-    };
-    result
-  );
-  
-  - exec_right right_cst:TYPE :EXPR <- 
-  // ! TRUE  -> FALSE
-  // ! FALSE -> TRUE
-  ( + pro:PROTOTYPE_CST;
-    
-    pro ?= right;
-    (right_cst = type_true).if {      
-      pro.make (pro.position) type (type_false.default);
-    } else {
-      pro.make (pro.position) type (type_true.default);
-    };
-    right
-  );
-  
-
-
-
-
-
-
-
-
-
diff --git a/src/external/logic/expr_or_logic.li b/src/external/logic/expr_or_logic.li
deleted file mode 100644
index 5be1a29..0000000
--- a/src/external/logic/expr_or_logic.li
+++ /dev/null
@@ -1,130 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_OR_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Or binary logical expression.";
-  
-Section Inherit
-  
-  + parent_expr_binary_logic:Expanded EXPR_BINARY_LOGIC;
-  
-Section Public  
-  
-  + symbol:STRING_CONSTANT := "|";
-  
-  //
-  // Execute.
-  //
- 
-  - exec_conservator_left  left_cst :TYPE :EXPR <- 
-  //-- FALSE | E -> E
-  ( + result:EXPR;
-
-    (left_cst = type_false).if { 
-      result := right;
-      left.remove;
-    };
-    result
-  );
-  
-  - exec_conservator_right right_cst:TYPE :EXPR <- 
-  //-- E | FALSE -> E
-  ( + result:EXPR;
-
-    (right_cst = type_false).if {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec left_cst:TYPE and right_cst:TYPE :EXPR <-
-  //-- C1 | C2 -> C3
-  ( + result:EXPR;
-
-    (left_cst = type_true).if {
-      result := left;
-      right.remove;
-    } else {
-      result := right;
-      left.remove;
-    };    
-    result
-  );
-  
-  - exec:EXPR <- 
-  //-- (E1 > E2) | (E1 = E2) -> E1 >= E2 (a lot of possibilities, but see INTEGER)
-  //-- E | E -> E
-  ( + result:EXPR;
-    + sup:EXPR_SUP;
-    + eq:EXPR_EQUAL;
-
-    (left == right).if {
-      result := left;
-      right.remove;
-    } else {
-      sup ?= left;
-      eq  ?= right;
-      ((sup != NULL) && {eq != NULL}).if {
-	((sup.left == eq.left) && {sup.right == eq.right}).if {
-	  result := EXPR_SUP_EQ.create position with (sup.left) and (sup.right);
-	  right.remove;
-	};
-      };
-    };
-    result      
-  );
-
-  - exec_left  left_cst :TYPE :EXPR <- 
-  //-- TRUE | E -> TRUE
-  ( + result:EXPR;
-
-    (left_cst = type_true).if {
-      result := left;
-      right.remove;
-    };
-    result
-  );
-  
-  - exec_right right_cst:TYPE :EXPR <- 
-  //-- E | TRUE -> TRUE
-  ( + result:EXPR;
-    
-    (right_cst = type_true).if {
-      result := right;
-      left.remove;
-    };
-    result
-  );
-  
-  
-
-
-
-
-
-
diff --git a/src/external/logic/expr_or_or_logic.li b/src/external/logic/expr_or_or_logic.li
deleted file mode 100644
index 8c4b798..0000000
--- a/src/external/logic/expr_or_or_logic.li
+++ /dev/null
@@ -1,140 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_OR_OR_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Or Binary Expression.";
-  
-Section Inherit
-  
-  + parent_expr_or_logic:Expanded EXPR_OR_LOGIC;
-  
-Section Public 
-  
-  + symbol:STRING_CONSTANT := "||";
-  
-  //
-  // Execute.
-  //
-  
-  - execute_unlink:INSTR <-
-  (     
-    execute_link
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + left_cst,right_cst:PROTOTYPE_CST;
-    + left_t,right_t:TYPE;
-    
-    old_seq := seq_call_and_loop;    
-    left  := left.execute_link;    
-    //
-    seq_or_and := seq_or_and + 1;
-    seq_inline := seq_inline + 1;
-    //
-    right := right.execute_link;     
-    //
-    left_cst  ?= left;
-    right_cst ?= right;
-    
-    (left_cst != NULL).if { // BSBS : Peux faire mieux !!!
-      (left_cst.static_type.raw = type_true).if {
-	left_t := type_true;
-      } else {
-	left_t := type_false;
-      };
-    };
-    (right_cst != NULL).if {
-      (right_cst.static_type.raw = type_true).if {
-	right_t := type_true;
-      } else {
-	right_t := type_false;
-      };
-    };
-
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {left_cst != NULL}).if {      
-      result := exec_conservator_left left_t;
-    };
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_conservator_right right_t;
-    };
-    (
-      (result = NULL)     && 
-      {right_cst != NULL} && 
-      {left_cst != NULL}
-    ).if {
-      result := exec left_t and right_t;
-    };    
-    ((result = NULL) && {(old_seq + 1) = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;
-      ((result = NULL) && {left_cst != NULL}).if {
-	result := exec_left left_t;
-      };
-      ((result = NULL) && {right_cst != NULL}).if {
-	result := exec_right right_t;
-      };
-    };
-    //
-    (result = NULL).if {
-      result := Self;
-    } else {
-      new_execute_pass;
-    };
-    
-    result
-  );
-  
-  - exec_conservator:EXPR <-
-  //-- E || Var -> E | Var
-  ( + rd:READ;
-    + result:EXPR;
-    
-    rd ?= right;
-    (rd != NULL).if {
-      result := EXPR_OR_LOGIC.create position with left and right;
-    };
-    result
-  );
-  
-  //-- for || same |
-  
-  - exec_conservator_left  left_cst :TYPE :EXPR <-
-  //-- TRUE || E -> TRUE
-  ( + result:EXPR;
-    result := parent_expr_or_logic.exec_conservator_left left_cst;
-    ((result = NULL) && {left_cst = type_true}).if {
-      result := left;
-      right.remove;
-    };    
-    result
-  );
-      
-  
\ No newline at end of file
diff --git a/src/external/logic/expr_unary_logic.li b/src/external/logic/expr_unary_logic.li
deleted file mode 100644
index c91fc43..0000000
--- a/src/external/logic/expr_unary_logic.li
+++ /dev/null
@@ -1,178 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := EXPR_UNARY_LOGIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Unary logical expression.";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public  
-  
-  - is_invariant:BOOLEAN <- right.is_invariant;
-  
-  + right:EXPR;
-  
-  - symbol:CHARACTER <- 
-  (
-    deferred;
-    ' '
-  );
-  
-  - static_type:TYPE_FULL <- type_boolean.default;
-  
-  - get_type t:TYPES_TMP <-
-  (    
-    t.add type_true; 
-    t.add type_false;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION with r:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p with r;
-    result
-  );
-  
-  - make p:POSITION with r:EXPR <-
-  (
-    position := p;
-    right := r;
-  );
-  
-  - my_copy:SELF <- SELF.create position with (right.my_copy);
-  
-  //
-  // Comparaison.
-  //
-  
-  - '==' Right 60 other:EXPR :BOOLEAN <-
-  ( + same:SELF;
-    
-    same ?= other;
-    (same != NULL) && {right == same.right}
-  ); 
-  
-  - remove <-
-  (    
-    right.remove;
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute_unlink:INSTR <-
-  (
-    right.execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  ( + result:EXPR;
-    + old_seq:UINTEGER_32;
-    + right_cst:PROTOTYPE_CST;
-    + right_t:TYPE;
-    
-    old_seq := seq_call_and_loop;    
-    right := right.execute_link;     
-    //    
-    right_cst ?= right;
-    (right_cst != NULL).if { 
-      (right_cst.static_type.raw = type_true).if {
-	right_t := type_true;
-      } else {
-	right_t := type_false;
-      };
-    };
-
-    // Conservator transformation.
-    result := exec_conservator;
-    ((result = NULL) && {right_cst != NULL}).if {      
-      result := exec_right right_t;
-    };
-    ((result = NULL) && {old_seq = seq_call_and_loop}).if {    
-      // No conservator transformation.      
-      result := exec;      
-    };
-    //
-    (result = NULL).if {
-      result := Self;
-    } else {
-      result.set_position position;
-      new_execute_pass;
-    };
-        
-    result
-  );
-  
-  - exec_conservator:EXPR <- NULL;  
-  
-  - exec_right right_cst:TYPE :EXPR <- NULL;
-    
-  - exec:EXPR <- NULL;
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  (
-    buffer.add_last '(';
-    buffer.add_last symbol;
-    buffer.add_last ' ';
-    right.genere buffer;
-    buffer.add_last ')';
-  );  
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.add_last '(';
-    buffer.add_last symbol;
-    buffer.add_last ' ';
-    right.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
-
diff --git a/src/external/put_to.li b/src/external/put_to.li
deleted file mode 100644
index dfb39bb..0000000
--- a/src/external/put_to.li
+++ /dev/null
@@ -1,173 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PUT_TO;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Put for NATIVE_ARRAY[E] (see ITEM)";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR; // BSBS: C'est une INSTR, mais pb dans ITM_EXTERNAL 
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- 
-  receiver.is_invariant && {index.is_invariant} && {value.is_invariant};  
-  
-  + receiver:EXPR;
-  
-  + index:EXPR;
-  
-  + value:EXPR;
-    
-  - static_type:TYPE_FULL <- TYPE_VOID.default;
-  
-  - get_type t:TYPES_TMP <-
-  ( 
-    t.add TYPE_VOID;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION base rec:EXPR index idx:EXPR value v:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p base rec index idx value v;
-    result
-  );
-  
-  - make p:POSITION base rec:EXPR index idx:EXPR value v:EXPR <-
-  ( + type_generic:TYPE_GENERIC;
-    + first_type:TYPE_FULL;
-    
-    position := p;            
-    receiver := rec;
-    index    := idx;
-    value    := v;
-    //
-    type_generic ?= receiver.static_type.raw;
-    first_type := type_generic.generic_list.first;
-    (
-      (! first_type.is_expanded) || 
-      {first_type.raw = type_boolean}
-    ).if {
-      type_generic.add_put_to Self;
-    };
-  );
-  
-  - my_copy:SELF <- 
-  SELF.create position base (receiver.my_copy) index (index.my_copy) value (value.my_copy);
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  ( + type_generic:TYPE_GENERIC;
-    + first_type:TYPE_FULL;
-    
-    type_generic ?= receiver.static_type.raw;
-    first_type := type_generic.generic_list.first;
-    (
-      (! first_type.is_expanded) || 
-      {first_type.raw = type_boolean}
-    ).if {
-      type_generic.remove_put_to Self;
-    };
-    //
-    receiver.remove;
-    index.remove;
-    value.remove;    
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  (     
-    execute_link
-  );
-  
-  - execute_link:EXPR <-
-  (   
-    receiver := receiver.execute_link;
-    index    := index.execute_link;    
-    value    := value.execute_link;
-    Self
-  );
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  ( + type_generic:TYPE_GENERIC;
-    + first_type:TYPE_FULL;
-    
-    receiver.genere buffer;
-    buffer.add_last '[';
-    index.genere buffer;
-    buffer.append "]=";    
-    type_generic ?= receiver.static_type.raw;
-    first_type := type_generic.generic_list.first;
-    ((first_type.is_expanded) && {! first_type.is_expanded_c}).if {
-      (value.static_type.is_expanded_ref).if {
-	buffer.append "*(";
-	value.genere buffer;
-	buffer.add_last ')';
-      } else {
-	value.genere buffer;    
-      };
-    } else {
-      value.genere buffer;
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    receiver.display buffer;
-    buffer.add_last '[';
-    index.display buffer;
-    buffer.append "]=";
-    value.display buffer;
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/external/size_of.li b/src/external/size_of.li
deleted file mode 100644
index 1ba36c8..0000000
--- a/src/external/size_of.li
+++ /dev/null
@@ -1,122 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SIZE_OF;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-    
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Size of object";
-  
-Section Inherit
-  
-  + parent_expr:Expanded EXPR;
-  
-Section Public 
-  
-  - is_invariant:BOOLEAN <- TRUE;  
-  
-  + receiver:EXPR;
-    
-  - static_type:TYPE_FULL <- type_integer.default;
-  
-  - get_type t:TYPES_TMP <-
-  (     
-    t.add type_integer;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION receiver e:EXPR :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p receiver e;
-    result
-  );
-  
-  - make p:POSITION receiver e:EXPR <-
-  (
-    position := p;            
-    receiver := e; 
-  );
-  
-  - my_copy:SELF <- SELF.create position receiver (receiver.my_copy);
-  
-  //
-  // Remove
-  //
-  
-  - remove <-
-  (
-    receiver.remove;
-  );
-  
-  //
-  // Execute
-  //
-  
-  - execute_unlink:INSTR <-
-  (     
-    receiver.execute_unlink
-  );
-  
-  - execute_link:EXPR <-
-  (   
-    receiver := receiver.execute_link;
-    Self
-  );
-    
-  //
-  // Genere.
-  //
-  
-  - genere buffer:STRING <-
-  ( + t:TYPE_FULL;
-    buffer.append "sizeof(";
-    t := receiver.static_type;
-    t.raw.put_expanded_declaration buffer;
-    buffer.add_last ')';    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "size_of(";
-    receiver.display buffer;
-    buffer.add_last ')';
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/item/itm_arg.li b/src/item/itm_arg.li
deleted file mode 100644
index 842ec2c..0000000
--- a/src/item/itm_arg.li
+++ /dev/null
@@ -1,147 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ITM_ARG;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "One argument";
-  
-Section Inherit
-  
-  + parent_itm_argument:Expanded ITM_ARGUMENT;
-  
-Section Public
-
-  + name:STRING_CONSTANT;
-  
-  + type:ITM_TYPE_MONO;
-  
-  - upper:INTEGER := 0;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT type t:ITM_TYPE_MONO :SELF <-
-  ( + result:SELF;
-    
-    result := SELF.clone;
-    result.make p name n type t;
-    result
-  );
-
-  - make p:POSITION name n:STRING_CONSTANT type t:ITM_TYPE_MONO <-
-  (
-    position := p;
-    name     := n;
-    type     := t;
-  );
-  
-  //
-  // Running.
-  //
-/*  
-  - item idx:INTEGER :ITM_TYPE_MONO <- 
-  ( ? {idx = 0};
-    type
-  );
-  */
-
-  - to_run_in arg_lst:FAST_ARRAY[LOCAL] for p:PARAMETER_TO_TYPE <-
-  ( + t:ITM_TYPE_MONO;
-            
-    (name = ALIAS_STR.variable_self).if {
-      t := ITM_TYPE_SIMPLE.type_self;
-    } else {
-      t := type;
-    };    
-    arg_lst.add_last (
-      LOCAL.create position name name style ' ' type (t.to_run_for p)
-    );    
-  );
-
-  - get_index_type p:ITM_TYPE_PARAMETER :INTEGER <-
-  ( + result:INTEGER;
-    (type != p).if {
-      result := 1;
-    };
-    result
-  );
-  
-  - check larg:FAST_ARRAY[EXPR] index idx:INTEGER for p:PARAMETER_TO_TYPE :INTEGER <-
-  ( + new_expr:EXPR;
-    
-    new_expr := larg.item idx.check_type (type.to_run_for p) with position;
-    larg.put new_expr to idx;
-    idx + 1
-  );    
-
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append name;
-    buffer.add_last ':';
-    type.display buffer;    
-  );
-
-  - shorter_in buf:STRING <-
-  (
-    (name = ALIAS_STR.variable_self).if {
-      put name to buf like (ALIAS_STR.short_keyword);
-    } else {
-      put name to buf like (ALIAS_STR.short_local);
-    };
-    buf.add_last ':';
-    type.shorter_in buf;    
-  );
-  
-  
-  //
-  // Comparaison.
-  //
-  
-  - is_equal other:ITM_ARGUMENT <-
-  ( + o:ITM_ARG;
-    + err:STRING_CONSTANT;
-    ? {other != Self};
-    
-    o ?= other;
-    (o = NULL).if {
-      err := "Invariance number vector argument invalid.";
-    }.elseif {name != o.name} then {
-      err := "Invariance name argument invalid.";
-    }.elseif {type != o.type} then {
-      err := "Invariance type argument invalid.";
-    };
-    (err != NULL).if {
-      POSITION.put_error semantic text err;
-      position.put_position;
-      (other.position).put_position;
-      POSITION.send_error;
-    };
-  );
\ No newline at end of file
diff --git a/src/item/itm_args.li b/src/item/itm_args.li
deleted file mode 100644
index d47d78d..0000000
--- a/src/item/itm_args.li
+++ /dev/null
@@ -1,166 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_ARGS;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "One argument vector";
-  
-Section Inherit
-  
-  + parent_itm_argument:Expanded ITM_ARGUMENT;
-  
-Section Public
-
-  + name:FAST_ARRAY[STRING_CONSTANT];
-  
-  + type:ITM_TYPE_MULTI;
-  
-  - upper:INTEGER <- name.upper;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION name n:FAST_ARRAY[STRING_CONSTANT] 
-  type t:ITM_TYPE_MULTI :SELF <-
-  ( + result:SELF;
-    
-    result := SELF.clone;
-    result.make p name n type t;
-    result
-  );
-
-  - make p:POSITION name n:FAST_ARRAY[STRING_CONSTANT] 
-  type t:ITM_TYPE_MULTI <-
-  (
-    position := p;
-    name     := n;
-    type     := t;
-  );
-        
-  //
-  // Running.
-  //
-/*
-  - item idx:INTEGER :ITM_TYPE_MONO <- 
-  ( ? {idx.in_range 0 to upper};
-    type.item idx
-  );
-  */
-  
-  - to_run_in arg_lst:FAST_ARRAY[LOCAL] for p:PARAMETER_TO_TYPE <-
-  ( + t:TYPE_FULL;
-    
-    (name.lower).to (name.upper) do { j:INTEGER;
-      t := type.item j.to_run_for p;      
-      arg_lst.add_last (
-	LOCAL.create position name (name.item j) style ' ' type t
-      );
-    };
-  );
-  
-  - get_index_type p:ITM_TYPE_PARAMETER :INTEGER <-
-  ( + i:INTEGER;
-    
-    i := name.lower;
-    {(i <= name.upper) && {type.item i != p}}.while_do {
-      i := i + 1;
-    };
-    i
-  );
-
-  - check larg:FAST_ARRAY[EXPR] index idx:INTEGER for p:PARAMETER_TO_TYPE :INTEGER <-
-  ( + new_expr:EXPR;
-    
-    (type.lower).to (type.upper) do { i:INTEGER;
-      new_expr := larg.item (idx+i).check_type (type.item i.to_run_for p) with position;
-      larg.put new_expr to (idx+i);
-    };
-    idx + type.count
-  );    
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  ( 
-    buffer.add_last '(';
-    (name.lower).to (name.upper - 1) do { j:INTEGER;      
-      buffer.append (name.item j);
-      buffer.add_last ':';
-      type.item j.display buffer;
-      buffer.add_last ',';
-    };
-    buffer.append (name.last);
-    buffer.add_last ':';
-    type.last.display buffer;    
-    buffer.add_last ')';
-  );
-  
-  - shorter_in buf:STRING <-
-  (
-    buf.add_last '(';
-    (name.lower).to (name.upper - 1) do { j:INTEGER;      
-      (name.item j = ALIAS_STR.variable_self).if {
-        put (name.item j) to buf like (ALIAS_STR.short_keyword);
-      } else {
-        put (name.item j) to buf like (ALIAS_STR.short_local);
-      };
-      buf.add_last ':';
-      type.item j.shorter_in buf;
-      buf.add_last ',';
-    };
-    put (name.last) to buf like (ALIAS_STR.short_local);
-    buf.add_last ':';
-    type.last.shorter_in buf;    
-    buf.add_last ')';
-  );
-  
-  //
-  // Comparaison.
-  //
-  
-  - is_equal other:ITM_ARGUMENT <-
-  ( + o:ITM_ARGS;
-    + err:STRING_CONSTANT;
-    ? {other != Self};
-    
-    o ?= other;
-    (o = NULL).if {
-      err := "Invariance number vector argument invalid.";
-    }.elseif {name != o.name} then {
-      err := "Invariance name argument invalid.";
-    }.elseif {type != o.type} then {
-      err := "Invariance type argument invalid.";
-    };
-    (err != NULL).if {
-      POSITION.put_error semantic text err;
-      position.put_position;
-      (other.position).put_position;
-      POSITION.send_error;
-    };
-  );
diff --git a/src/item/itm_argument.li b/src/item/itm_argument.li
deleted file mode 100644
index 1d994ed..0000000
--- a/src/item/itm_argument.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_ARGUMENT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent argument";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_OBJECT;
-  
-Section Public
-  
-  - lower:INTEGER <- 0;
-  
-  - upper:INTEGER <- ( deferred; 0);
-  
-  - count:INTEGER <- upper + 1;
-
-  //
-  // Running.
-  //
-/*  
-  - item idx:INTEGER :ITM_TYPE_MONO <- 
-  (
-    deferred;
-    NULL
-  );
-*/  
-  - to_run_in arg_lst:FAST_ARRAY[LOCAL] for p:PARAMETER_TO_TYPE <-
-  (
-    deferred;
-  );
-  
-  - get_index_type p:ITM_TYPE_PARAMETER :INTEGER <-
-  (
-    deferred;
-  );
-  
-  - check larg:FAST_ARRAY[EXPR] index idx:INTEGER for p:PARAMETER_TO_TYPE :INTEGER <-
-  (
-    deferred;
-    0
-  );
-  
-  //
-  // Comparaison.
-  //
-  
-  - is_equal other:ITM_ARGUMENT <- deferred;
-  
-  //
-  // Display.
-  //
-  
-  - shorter_in buf:STRING <-
-  (
-    deferred;
-  );
-  
-  
diff --git a/src/item/itm_binary.li b/src/item/itm_binary.li
deleted file mode 100644
index a3d4e7f..0000000
--- a/src/item/itm_binary.li
+++ /dev/null
@@ -1,255 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_BINARY;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Binary operator message";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + position_list:FAST_ARRAY[POSITION];
-
-  + value_list   :FAST_ARRAY[ITM_CODE];
-
-  + operator_list:FAST_ARRAY[STRING_CONSTANT];
-
-  //
-  // Constructor
-  //  
-
-  - create p:FAST_ARRAY[POSITION] values v:FAST_ARRAY[ITM_CODE] 
-  operators o:FAST_ARRAY[STRING_CONSTANT] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p values v operators o;
-    result
-  );
-  
-  - make p:FAST_ARRAY[POSITION] values v:FAST_ARRAY[ITM_CODE] 
-  operators o:FAST_ARRAY[STRING_CONSTANT] <-
-  (
-    ? { p.count=o.count };
-    ? { p.count=(v.count-1) };
-    position_list := p;
-    value_list    := v;
-    operator_list := o;
-  );
-
-  //
-  // Runnable.
-  //
-
-  - to_run_expr:EXPR <-
-  ( + max_pos,max_lev:INTEGER;
-    + max_pri  :STRING_CONSTANT;
-    + expr     :INSTR;
-    + val_list:FAST_ARRAY[EXPR];
-    + val:EXPR;    
-    + typ_list:TYPES_TMP;
-    + typ:TYPE;
-    + slo_list:FAST_ARRAY[SLOT];
-    + slo,slo_ref:SLOT;
-    + ope_list:FAST_ARRAY[STRING_CONSTANT];
-    + pos_list:FAST_ARRAY[POSITION];
-    + nam:STRING_CONSTANT;
-    + site:NODE;
-    + extern:EXPR;
-    + loc:VARIABLE;
-    + l_arg:FAST_ARRAY[EXPR];
-    + result:EXPR;
-
-    // Array Temporary.
-    ope_list := ALIAS_ARRAY[STRING_CONSTANT].new;
-    ope_list.copy operator_list;
-    pos_list := ALIAS_ARRAY[POSITION].new;
-    pos_list.copy position_list;
-    val_list := ALIAS_ARRAY[EXPR].new;
-    typ_list := TYPES_TMP.new;
-    slo_list := ALIAS_ARRAY[SLOT].new;
-
-    // ITM_CODE -> EXPR
-    (value_list.lower).to (value_list.upper) do { j:INTEGER;      
-      val := value_list.item j.to_run_expr;      
-      val_list.add_last val;
-      typ := val.static_type.raw;      
-      typ_list.add typ;
-    };
-                  
-    // Error verification.      
-    (operator_list.lower).to (operator_list.upper) do { j:INTEGER;
-      nam := operator_list.item j;
-      ((nam = ALIAS_STR.operator_equal) || {nam = ALIAS_STR.operator_not_equal}).if {
-	// '=' or '!=':
-	slo_list.add_last NULL;
-      } else {
-	// Other:
-	typ := typ_list.first;
-	slo_ref := typ.get_slot nam;
-	(slo_ref = NULL).if {
-	  error_slot (position_list.item j) name nam in typ list typ_list;
-	} else {
-	  slo_list.add_last slo_ref;
-	  (typ_list.lower+1).to (typ_list.upper) do { k:INTEGER;
-	    typ := typ_list.item k;
-	    slo := typ.get_slot nam;
-	    (slo = NULL).if {
-	      error_slot (position_list.item j) name nam in typ list typ_list;
-	    } else {
-	      (slo_ref.priority_and_level != slo.priority_and_level).if {
-		position.put_error semantic text 
-		"Conflicting declaration associativity or priority.";
-		slo_ref.position.put_position;
-		slo.position.put_position;
-		position_list.item j.put_position; 
-		position.send_error;
-	      };	      
-	    };
-	  };
-	};
-      };
-    };
-
-    // operator_list -> SW_READ.
-    {slo_list.is_empty}.until_do {
-      // Search max level.
-      max_lev := -1;
-      (slo_list.lower).to (slo_list.upper) do { j:INTEGER;
-	slo := slo_list.item j;
-	(slo = NULL).if {
-	  // '=' or '!='.
-	  (
-	    (50 > max_lev) ||
-	    {(50 = max_lev) && {max_pri = ALIAS_STR.keyword_right}}
-	  ).if {
-	    max_lev := 50;
-	    max_pri := ALIAS_STR.keyword_right;
-	    max_pos := j;
-	  };
-	} else {
-	  // Other:
-	  ( 
-	    (slo.priority > max_lev) ||
-	    {
-	      (slo.priority = max_lev) && 
-	      {slo.associativity = max_pri} && 
-	      {max_pri = ALIAS_STR.keyword_right}
-	    }
-	  ).if {
-	    max_lev := slo.priority;
-	    max_pri := slo.associativity;
-	    max_pos := j;
-	  };
-	};
-      };
-      // Test conflicting.
-      (
-	(max_pos < slo_list.upper) &&
-	{slo_list.item (max_pos+1) != NULL} &&
-	{slo_list.item (max_pos+1).priority = max_lev} &&
-	{slo_list.item (max_pos+1).associativity != max_pri}
-      ).if {
-	warning_error ((pos_list.item max_pos),
-	"Conflicting left/right priority."); 
-      };
-            
-      (slo_list.item max_pos = NULL).if {
-	// '=' or '!='.
-	(ope_list.item max_pos = ALIAS_STR.operator_equal).if {
-	  extern := EXPR_EQUAL.create (pos_list.item max_pos) with 
-	  (val_list.item max_pos) and (val_list.item (max_pos+1));
-	} else {
-	  extern := EXPR_NOT_EQUAL.create (pos_list.item max_pos) with 
-	  (val_list.item max_pos) and (val_list.item (max_pos+1));
-	};	
-	loc  := type_boolean.default.get_temporary (pos_list.item max_pos);
-	expr := loc.write (pos_list.item max_pos) value extern; 
-	list_current.add_last expr;
-	val := loc.read (pos_list.item max_pos);
-      } else {
-	// SW_READ.
-	l_arg := FAST_ARRAY[EXPR].create_with_capacity 2;
-	l_arg.add_last (val_list.item max_pos);
-	l_arg.add_last (val_list.item (max_pos + 1));
-	
-	site := NODE.new_read (pos_list.item max_pos) 
-	slot     (slo_list.item max_pos)
-	receiver (l_arg.first.my_copy)
-	with     l_arg;	
-	
-	list_current.add_last site;
-	val := site.result_expr;
-      };
-      
-      // Delete operator.
-      slo_list.remove max_pos;      
-      ope_list.remove max_pos;      
-      pos_list.remove max_pos;       
-      val_list.remove (max_pos+1);
-      //
-      val_list.put val to max_pos;      
-    };
-
-    result := val_list.first;
-    
-    // Free Array Temporary.
-    ALIAS_ARRAY[STRING_CONSTANT].free ope_list;    
-    ALIAS_ARRAY[POSITION].free pos_list;    
-    ALIAS_ARRAY[EXPR].free val_list;
-    typ_list.free;
-    ALIAS_ARRAY[SLOT].free slo_list;
-    
-    result
-  );
-  
-Section Private  
-  
-  - error_slot p:POSITION name s:STRING_CONSTANT in t:TYPE list st:TYPES_TMP <-
-  (
-    string_tmp.copy "Slot '";
-    string_tmp.append s;
-    string_tmp.append "' not found in ";
-    string_tmp.append (t.intern_name);
-    string_tmp.append ". ( ";
-    (st.lower).to (st.upper-1) do { j:INTEGER;
-      st.item j.append_name_in string_tmp;
-      string_tmp.add_last ' ';
-    };
-    st.last.append_name_in string_tmp;
-    string_tmp.add_last ')';
-    semantic_error (p,string_tmp);
-  );
-
-
-
-
diff --git a/src/item/itm_block.li b/src/item/itm_block.li
deleted file mode 100644
index a1342c5..0000000
--- a/src/item/itm_block.li
+++ /dev/null
@@ -1,101 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_BLOCK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Instruction block";
-  
-  // BSBS: Memory : Faire la version sans argument (très courant)
-  
-Section Inherit
-  
-  - parent_itm_code:ITM_CODE := ITM_CODE;
-  
-Section Public
-  
-  - position:POSITION <- list.position;
-  
-  + list:ITM_LIST;
-  
-  + argument:ITM_ARGUMENT;
-  
-  //
-  // Creation.
-  //
-  
-  - create lst:ITM_LIST argument arg:ITM_ARGUMENT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make lst argument arg;
-    result
-  );
-  
-  - make lst:ITM_LIST argument arg:ITM_ARGUMENT <-
-  (
-    list     := lst;
-    argument := arg;
-  );
-  
-  //
-  // Runnable.
-  //
-  
-  - to_run_expr:EXPR <-
-  ( + tb:PROFIL_BLOCK;   
-    + t:TYPE_FULL;    
-    + loc,my_self:LOCAL;    
-    + val,rec:EXPR;
-    + wrt:WRITE;
-        
-    tb := PROFIL_BLOCK.create Self;
-    t := tb.default;
-    //
-    loc := t.get_temporary position;	
-    // tmp.id := id_block;
-    rec := loc.read position;
-    val := PROTOTYPE_CST.create position type t;      
-    wrt := tb.slot_value.write position with rec value val;
-    list_current.add_last wrt;
-    // tmp.self := Self;
-    rec := loc.read position;
-    my_self := lookup (ALIAS_STR.variable_self);
-    val := my_self.read position;
-    wrt := tb.slot_self.write position with rec value val;
-    list_current.add_last wrt;
-    // tmp
-    loc.read position
-  );
-  
-  // 
-  // Display.
-  //
-  
-  - print <-
-  (
-    "{BLOCK}".print;
-  );
-  
diff --git a/src/item/itm_character.li b/src/item/itm_character.li
deleted file mode 100644
index 95e98fe..0000000
--- a/src/item/itm_character.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_CHARACTER;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Character constant";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CONSTANT;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + character:STRING_CONSTANT;
-
-  //
-  // Creation
-  //
-
-  - create p:POSITION char n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p char n;
-    result
-  );
-  
-  - make p:POSITION char n:STRING_CONSTANT <-
-  (
-    position:=p;
-    character:=n;
-  );
-
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  ( 
-    CHARACTER_CST.create position char character    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.add_last '\'';
-    buffer.append character;
-    buffer.add_last '\'';
-  );
diff --git a/src/item/itm_code.li b/src/item/itm_code.li
deleted file mode 100644
index 5c92dc4..0000000
--- a/src/item/itm_code.li
+++ /dev/null
@@ -1,86 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_CODE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all item code";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-  
-  // Use by PARSER, for left expr assignment ( in EXPR1 := EXPR2, EXPR1.is_affect). 
-  - is_affect:POSITION <- position;
-  
-  //
-  // Flags.
-  //
-
-  - is_constant:BOOLEAN <- FALSE;
-
-  //
-  // Runnable.
-  // 
-    
-  - to_run:INSTR <-
-  (
-    to_run_expr
-  );
-  
-  - to_run_expr:EXPR <-
-  ( 
-    warning_error (position,"Error: ITM_CODE.to_run");
-    deferred;
-    NULL
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    "ITM_CODE : Type:".print;
-    type_id_intern.print; 
-    '\n'.print;
-    deferred;
-  );
-  
-  - print <-
-  (
-    string_tmp.clear;
-    append_in string_tmp;
-    string_tmp.print;
-  );
-
-
-
-
-
-
-
diff --git a/src/item/itm_constant.li b/src/item/itm_constant.li
deleted file mode 100644
index cd48718..0000000
--- a/src/item/itm_constant.li
+++ /dev/null
@@ -1,37 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_CONSTANT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all constant";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  - is_constant:BOOLEAN := TRUE;
diff --git a/src/item/itm_expression.li b/src/item/itm_expression.li
deleted file mode 100644
index 3b64b0a..0000000
--- a/src/item/itm_expression.li
+++ /dev/null
@@ -1,261 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_EXPRESSION;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "operator list message";
-  
-Section Inherit
-  
-  - parent_itm_code:ITM_CODE := ITM_CODE;
-  
-Section Public
-  
-  - position:POSITION <- value_list.first.position;
-  
-  //
-  // Data
-  //
-
-  + value_list   :FAST_ARRAY[ITM_CODE];
-
-  //
-  // Constructor
-  //  
-
-  - create v:FAST_ARRAY[ITM_CODE] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make v;
-    result
-  );
-  
-  - make v:FAST_ARRAY[ITM_CODE] <-
-  (   
-    value_list    := v;
-  );
-
-  //
-  // Runnable.
-  //
-
-  - to_run_expr:EXPR <-
-  ( + max_pos,max_lev,idx,idx_post,idx_pre,low:INTEGER;
-    + continue:BOOLEAN;
-    + max_pri  :STRING_CONSTANT;
-    + left,right:EXPR;
-    + instr:INSTR;
-    + val_list:FAST_ARRAY[INSTR];
-    + val:EXPR;    
-    + typ:TYPE;
-    + slo:SLOT;
-    + nam,op_name:STRING_CONSTANT;
-    + site:NODE;
-    + n_t:NODE_TYPE;
-    + extern:EXPR_BINARY_CMP;
-    + loc:VARIABLE;
-    + l_arg:FAST_ARRAY[EXPR];
-    + result:EXPR;
-    + itm_op:ITM_OPERATOR;
-        
-    val_list := ALIAS_ARRAY[INSTR].new;
-    // Search unary message.
-    idx := -1;    
-    low := value_list.lower;
-    {      
-      // Search first message.
-      {
-	idx := idx + 1;
-	itm_op ?= value_list.item idx;
-      }.do_while {(itm_op != NULL) && {idx != value_list.upper}};	
-      (itm_op != NULL).if {
-        semantic_error (itm_op.position,"Operator postfix not found.");
-      };
-      val := value_list.item idx.to_run_expr;
-      typ := val.static_type.raw;      
-      // Post-fix.	
-      idx_post := idx + 1;
-      continue := TRUE;
-      {(idx_post <= value_list.upper) && {continue}}.while_do {
-        continue := FALSE;
-        (idx_post != value_list.upper).if {
-          itm_op ?= value_list.item (idx_post + 1);
-        };
-        ((idx_post = value_list.upper) || {itm_op != NULL}).if {
-          itm_op ?= value_list.item idx_post;
-          slo := typ.get_slot (operator (ALIAS_STR.slot_postfix) name (itm_op.name));
-          (slo != NULL).if {	  
-            site := NODE.new_read (itm_op.position) slot slo receiver val self val intern FALSE;
-            list_current.add_last site;
-            val := site.result_expr;
-            idx_post := idx_post + 1;
-            continue := TRUE;
-          };
-        };
-      };
-      // Pre-fix.      
-      idx_pre := idx - 1;
-      continue := TRUE;
-      {(idx_pre >= low) && {continue}}.while_do {
-        continue := FALSE;
-        (idx_pre != low).if {
-          itm_op ?= value_list.item (idx_pre - 1);
-        };
-        ((idx_pre = low) || {itm_op != NULL}).if {
-          itm_op ?= value_list.item idx_pre;
-          slo := typ.get_slot (operator (ALIAS_STR.slot_prefix) name (itm_op.name));
-          (slo = NULL).if {	  
-            error_slot (itm_op.position) name "prefix" operator (itm_op.name) in typ;
-          };
-          site := NODE.new_read (itm_op.position) slot slo receiver val self val intern FALSE;
-          list_current.add_last site;
-          val := site.result_expr;	    	    
-          idx_pre := idx_pre - 1;
-          continue := TRUE;
-        };
-      };
-      val_list.add_last val;
-      idx := idx_post;
-      (idx < value_list.upper).if {
-        // Infix.
-        typ := val.static_type.raw;                            
-        itm_op ?= value_list.item idx;
-        op_name := itm_op.name;      
-        (op_name = ALIAS_STR.symbol_equal).if {
-          instr := EXPR_EQUAL.create (itm_op.position) with NULL and NULL;
-        }.elseif {op_name = ALIAS_STR.symbol_not_equal} then {
-          instr := EXPR_NOT_EQUAL.create (itm_op.position) with NULL and NULL;
-        } else {
-          nam := operator (ALIAS_STR.slot_infix) name op_name;
-          slo := typ.get_slot nam;
-          (slo = NULL).if {
-            error_slot (itm_op.position) name "infix" operator op_name in typ;
-          };
-          instr := NODE.new_read_partial (itm_op.position) slot slo;
-        };
-        val_list.add_last instr;      
-      };
-      low := idx_post + 1;
-    }.do_while {idx <= value_list.upper};
-                                    
-    {val_list.count = 1}.until_do {
-      // Search max level.
-      max_lev := -1;
-      (val_list.lower+1).to (val_list.upper-1) by 2 do { j:INTEGER;
-	site ?= val_list.item j;
-	(site = NULL).if {
-	  // '=' or '!='.
-	  (
-	    (50 > max_lev) ||
-	    {(50 = max_lev) && {max_pri = ALIAS_STR.keyword_right}}
-	  ).if {
-	    max_lev := 50;
-	    max_pri := ALIAS_STR.keyword_right;
-	    max_pos := j;
-	  };
-	} else {	  
-	  // Other:
-	  slo := site.data.slot;
-	  ( 
-	    (slo.priority > max_lev) ||
-	    {
-	      (slo.priority = max_lev) && 
-	      {slo.associativity = max_pri} && 
-	      {max_pri = ALIAS_STR.keyword_right}
-	    }
-	  ).if {
-	    max_lev := slo.priority;
-	    max_pri := slo.associativity;
-	    max_pos := j;
-	  };
-	};
-      };
-      
-      n_t   ?= val_list.item max_pos;
-      left  ?= val_list.item (max_pos - 1);
-      right ?= val_list.item (max_pos + 1);
-      (n_t = NULL).if {
-	// '=' or '!='.
-	extern ?= val_list.item max_pos;	
-	extern.set_left left and_right right;	
-	loc  := type_boolean.default.get_temporary (extern.position);
-	instr:= loc.write (extern.position) value extern; 
-	list_current.add_last instr;
-	val := loc.read (instr.position);
-      } else {
-	// SW_READ.
-	l_arg := FAST_ARRAY[EXPR].create_with_capacity 2;
-	l_arg.add_last left;
-        l_arg.add_last right;
-        slo := left.static_type.raw.get_slot (n_t.data.slot.name);
-	n_t.new_read_finalize (left.my_copy,slo) with l_arg;
-	list_current.add_last n_t;
-	val := n_t.result_expr;
-      };
-      
-      // Delete operator.
-      val_list.remove max_pos;
-      val_list.remove max_pos;
-      //
-      val_list.put val to (max_pos - 1);      
-    };
-
-    result ?= val_list.first;
-    
-    // Free Array Temporary.    
-    ALIAS_ARRAY[INSTR].free val_list;
-    
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    (value_list.lower).to (value_list.upper) do { i:INTEGER;
-      value_list.item i.append_in buffer;
-    };
-  );
-  
-Section Private  
-  
-  - error_slot p:POSITION name s:STRING_CONSTANT operator op:STRING_CONSTANT in t:TYPE <-
-  (
-    string_tmp.copy "Slot ";
-    string_tmp.append s;
-    string_tmp.append " '";
-    string_tmp.append op;
-    string_tmp.append "' not found in ";
-    string_tmp.append (t.intern_name);
-    string_tmp.add_last '.';    
-    semantic_error (p,string_tmp);
-  );
-
-
-
-
diff --git a/src/item/itm_expression_old.li b/src/item/itm_expression_old.li
deleted file mode 100644
index a417996..0000000
--- a/src/item/itm_expression_old.li
+++ /dev/null
@@ -1,299 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_EXPRESSION;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "operator list message";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + value_list   :FAST_ARRAY[ITM_CODE];
-
-  //
-  // Constructor
-  //  
-
-  - create v:FAST_ARRAY[ITM_CODE] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make v;
-    result
-  );
-  
-  - make v:FAST_ARRAY[ITM_CODE] <-
-  (   
-    value_list    := v;
-  );
-
-  //
-  // Runnable.
-  //
-
-  - to_run_expr:EXPR <-
-  ( + max_pos,max_lev:INTEGER;
-    + max_pri  :STRING_CONSTANT;
-    + expr     :INSTR;
-    + val_list:FAST_ARRAY[EXPR];
-    + val:EXPR;    
-    + typ_list:TYPES_TMP;
-    + typ:TYPE;
-    + slo_list:FAST_ARRAY[SLOT];
-    + slo,slo_ref:SLOT;
-    + ope_list:FAST_ARRAY[STRING_CONSTANT];
-    + pos_list:FAST_ARRAY[POSITION];
-    + nam,op_name:STRING_CONSTANT;
-    + site:NODE;
-    + extern:EXPR;
-    + loc:VARIABLE;
-    + l_arg:FAST_ARRAY[EXPR];
-    + result:EXPR;
-
-    // Array Temporary.
-    ope_list := ALIAS_ARRAY[STRING_CONSTANT].new;
-    ope_list.copy operator_list;
-    pos_list := ALIAS_ARRAY[POSITION].new;
-    pos_list.copy position_list;
-    val_list := ALIAS_ARRAY[EXPR].new;
-    typ_list := TYPES_TMP.new;
-    slo_list := ALIAS_ARRAY[SLOT].new;
-        
-    
-    // Search unary message.
-    idx := -1;    
-    {      
-      // Search first message.
-      {
-	idx := idx + 1;
-	itm_op ?= value_list.item idx;
-      }.do_while {itm_op != NULL};	
-      val := value_list.item idx.to_run_expr;
-      typ := val.static_type.raw;      
-      idx_post := idx + 1;
-      (idx_post < value_list.upper).if {
-	// Post-fix.	
-	{
-	  continue := FALSE;
-	  itm_op ?= value_list.item (idx_post + 1);
-	  (itm_op != NULL).if {
-	    itm_op := value_list.item idx_post;
-	    slo := typ.get_slot (operator (ALIAS_STR.slot_postfix) name (itm_op.name));
-	    (slo != NULL).if {	  
-	      site := NODE.new_read (itm_op.position) slot slo receiver val self val;		
-	      list_current.add_last site;
-	      val := site.result_expr;
-	      idx_post := idx_post + 1;
-	      continue := TRUE;
-	    };
-	  };
-	}.do_while {continue};
-      };
-      // Pre-fix.      
-      (idx > 0).if {
-	{
-	  idx := idx - 1;
-	  continue := FALSE;
-	  (idx != 0).if {
-	    itm_op ?= value_list.item (idx - 1);
-	  };
-	  ((idx = 0) || {itm_op != NULL}).if {
-	    itm_op := value_list_tmp.item idx;
-	    slo := typ.get_slot (operator (ALIAS_STR.slot_prefix) name (itm_op.name));
-	    (slo = NULL).if {	  
-	      error_slot (itm_op.position) name "prefix" operator (itm_op.name) in typ;
-	    };
-	    site := NODE.new_read (itm_op.position) slot slo receiver val self val;		
-	    list_current.add_last site;
-	    val := site.result_expr;	    	    
-	    continue := TRUE;
-	  };
-	}.do_while {continue};
-      };
-      val_list.add_last val;
-      typ := val.static_type.raw;            
-      idx := idx_post;
-      // Infix.
-      itm_op ?= value_list.item idx;
-      op_name := itm_op.name;
-      nam := operator (ALIAS_STR.slot_infix) name op_name;
-      slo_ref := typ.get_slot nam;
-      (slo_ref = NULL).if {
-	error_slot (position_list.item j) name "infix" operator op_name in typ list typ_list;
-      };
-    }.do_while {idx < value_list.upper};
-                            
-    // Error verification.      
-    (value_list_tmp.lower+1).to (value_list_tmp.upper) by 2 do { j:INTEGER;
-      itm_op ?= value_list_tmp.item j;
-      op_name := itm_op.name;
-      nam := operator (ALIAS_STR.slot_infix) name op_name;
-      ((nam = ALIAS_STR.operator_equal) || {nam = ALIAS_STR.operator_not_equal}).if {
-	// '=' or '!=':
-	slo_list.add_last NULL;
-      } else {
-	// Other:
-	typ := typ_list.first;
-	slo_ref := typ.get_slot nam;
-	(slo_ref = NULL).if {
-	  error_slot (position_list.item j) name "infix" operator op_name in typ list typ_list;
-	} else {
-	  slo_list.add_last slo_ref;
-	  (typ_list.lower+1).to (typ_list.upper) do { k:INTEGER;
-	    typ := typ_list.item k;
-	    slo := typ.get_slot nam;
-	    (slo = NULL).if {
-	      error_slot (position_list.item j) name "infix" operator op_name in typ list typ_list;
-	    } else {
-	      (slo_ref.priority_and_level != slo.priority_and_level).if {
-		position.put_error semantic text 
-		"Conflicting declaration associativity or priority.";
-		slo_ref.position.put_position;
-		slo.position.put_position;
-		position_list.item j.put_position; 
-		position.send_error;
-	      };	      
-	    };
-	  };
-	};
-      };
-    };
-
-    // operator_list -> SW_READ.
-    {slo_list.is_empty}.until_do {
-      // Search max level.
-      max_lev := -1;
-      (slo_list.lower).to (slo_list.upper) do { j:INTEGER;
-	slo := slo_list.item j;
-	(slo = NULL).if {
-	  // '=' or '!='.
-	  (
-	    (50 > max_lev) ||
-	    {(50 = max_lev) && {max_pri = ALIAS_STR.keyword_right}}
-	  ).if {
-	    max_lev := 50;
-	    max_pri := ALIAS_STR.keyword_right;
-	    max_pos := j;
-	  };
-	} else {
-	  // Other:
-	  ( 
-	    (slo.priority > max_lev) ||
-	    {
-	      (slo.priority = max_lev) && 
-	      {slo.associativity = max_pri} && 
-	      {max_pri = ALIAS_STR.keyword_right}
-	    }
-	  ).if {
-	    max_lev := slo.priority;
-	    max_pri := slo.associativity;
-	    max_pos := j;
-	  };
-	};
-      };
-      // Test conflicting.
-      (
-	(max_pos < slo_list.upper) &&
-	{slo_list.item (max_pos+1) != NULL} &&
-	{slo_list.item (max_pos+1).priority = max_lev} &&
-	{slo_list.item (max_pos+1).associativity != max_pri}
-      ).if {
-	warning_error ((pos_list.item max_pos), ********************************
-	"Conflicting left/right priority."); 
-      };
-            
-      (slo_list.item max_pos = NULL).if {
-	// '=' or '!='.
-	(ope_list.item max_pos = ALIAS_STR.operator_equal).if {
-	  extern := EXPR_EQUAL.create (pos_list.item max_pos) with 
-	  (val_list.item max_pos) and (val_list.item (max_pos+1));
-	} else {
-	  extern := EXPR_NOT_EQUAL.create (pos_list.item max_pos) with 
-	  (val_list.item max_pos) and (val_list.item (max_pos+1));
-	};	
-	loc  := type_boolean.default.get_temporary (pos_list.item max_pos);
-	expr := loc.write (pos_list.item max_pos) value extern; 
-	list_current.add_last expr;
-	val := loc.read (pos_list.item max_pos);
-      } else {
-	// SW_READ.
-	l_arg := FAST_ARRAY[EXPR].create_with_capacity 2;
-	l_arg.add_last (val_list.item max_pos);
-	l_arg.add_last (val_list.item (max_pos + 1));
-	
-	site := NODE.new_read (pos_list.item max_pos) 
-	slot     (slo_list.item max_pos)
-	receiver (l_arg.first.my_copy)
-	with     l_arg;	
-	
-	list_current.add_last site;
-	val := site.result_expr;
-      };
-      
-      // Delete operator.
-      slo_list.remove max_pos;      
-      ope_list.remove max_pos;      
-      pos_list.remove max_pos;       
-      val_list.remove (max_pos+1);
-      //
-      val_list.put val to max_pos;      
-    };
-
-    result := val_list.first;
-    
-    // Free Array Temporary.
-    ALIAS_ARRAY[STRING_CONSTANT].free ope_list;    
-    ALIAS_ARRAY[POSITION].free pos_list;    
-    ALIAS_ARRAY[EXPR].free val_list;
-    typ_list.free;
-    ALIAS_ARRAY[SLOT].free slo_list;
-    
-    result
-  );
-  
-Section Private  
-  
-  - error_slot p:POSITION name s:STRING_CONSTANT operator op:STRING_CONSTANT in t:TYPE <-
-  (
-    string_tmp.copy "Slot ";
-    string_tmp.append s;
-    string_tmp.append " '";
-    string_tmp.append op;
-    string_tmp.append "' not found in ";
-    string_tmp.append (t.intern_name);
-    string_tmp.add_last '.';    
-    semantic_error (p,string_tmp);
-  );
-
-
-
-
diff --git a/src/item/itm_extern.li b/src/item/itm_extern.li
deleted file mode 100644
index c14544c..0000000
--- a/src/item/itm_extern.li
+++ /dev/null
@@ -1,114 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_EXTERN;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for externals";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + extern:STRING_CONSTANT;
-
-  //  
-  // Constructor.
-  //
-  
-  - last_code:STRING_CONSTANT;
-  
-  - get_access:FAST_ARRAY[EXPR] <-
-  ( + idx,base:INTEGER;
-    + e:EXPR;
-    + loc:STRING_CONSTANT;
-    + var:VARIABLE;
-    + access_list:FAST_ARRAY[EXPR];
-    
-    string_tmp2.copy extern;
-    idx := string_tmp2.index_of '@' since (string_tmp2.lower);
-    (idx <= string_tmp2.count).if {
-      access_list := ALIAS_ARRAY[EXPR].new;
-      {idx > string_tmp2.upper}.until_do {
-	base := idx;
-	idx  := idx + 1;
-	string_tmp.clear;	
-	{
-	  (idx > string_tmp2.upper) || 
-	  {
-	    (! string_tmp2.item idx.is_letter_or_digit) &&
-	    {string_tmp2.item idx != '_'}
-	  }
-	}.until_do {
-	  string_tmp.add_last (string_tmp2.item idx);
-	  idx := idx + 1;
-	};
-	string_tmp.is_empty.if {
-	  syntax_error (position,"Incorrect external local slot access.");
-	};
-	loc := ALIAS_STR.get string_tmp;
-	var := lookup loc;
-	(var = NULL).if {
-	  string_tmp.copy "External local slot access `";
-	  string_tmp.append loc;
-	  string_tmp.append "' is not found.";
-	  semantic_error (position,string_tmp);
-	}.elseif {var.style = '-'} then {
-	  string_tmp.copy "External local slot access `";
-	  string_tmp.append loc;
-	  string_tmp.append "' must be in `+' style.";
-	  semantic_error (position,string_tmp);
-	};
-	e := var.read position;
-	access_list.add_last e;
-	
-	string_tmp2.remove_between base to (base+loc.count);
-	string_tmp2.insert_string "(@)" to base;
-	idx := string_tmp2.index_of '@' since (base+2);
-      };
-      access_list := ALIAS_ARRAY[EXPR].copy access_list;
-    };
-    last_code := ALIAS_STR.get string_tmp2;
-    access_list
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.add_last '`';
-    buffer.append extern;
-    buffer.add_last '`';
-  );
-
-
diff --git a/src/item/itm_external.li b/src/item/itm_external.li
deleted file mode 100644
index 28dfcc1..0000000
--- a/src/item/itm_external.li
+++ /dev/null
@@ -1,170 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_EXTERNAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "External C without type result";
-  
-Section Inherit
-  
-  + parent_itm_extern:Expanded ITM_EXTERN;
-  
-Section Public
-
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION text n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p text n;
-    result
-  );
-  
-  - make p:POSITION text n:STRING_CONSTANT <-
-  (
-    position := p;
-    extern   := n;
-  );
-
-  //
-  // Runnable
-  //
-  
-  - to_run_expr:EXPR <- 
-  ( + result:EXPR;
-    + lst_acc:FAST_ARRAY[EXPR];
-    + num:INTEGER;
-    + exp1,exp2,exp3:EXPR;
-    + left,right:EXPR;
-    + type:TYPE_FULL;
-        
-    extern.is_integer.if {
-      num := extern.to_integer;
-      (num > 31).if {
-	syntax_error (position,"Unknown external lisaac code (0..31).");
-      };
-      num
-      .when 0 then { // is_expanded_type:BOOLEAN
-	exp1 := profil_slot.argument_list.first.read position;
-	result := IS_EXPANDED.create position receiver exp1;
-      }
-      .when 1 then { // type_id_intern:INTEGER
-	exp1 := profil_slot.argument_list.first.read position;
-	result := GET_TYPE_ID.create position receiver exp1;
-      }
-      .when 2 then { // INTEGER > INTEGER -> BOOLEAN.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_SUP.create position with left and right;
-      }
-      .when 3 then { // INTEGER - INTEGER -> INTEGER.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_SUB.create position with left and right;	
-      }
-      .when 4 then { // INTEGER * INTEGER -> INTEGER.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_MUL.create position with left and right;		
-      }
-      .when 5 then { // INTEGER / INTEGER -> INTEGER.	
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_DIV.create position with left and right;		
-      }
-      .when 6 then { // INTEGER & INTEGER -> INTEGER.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_AND.create position with left and right;		
-      }
-      .when 7 then { // INTEGER >> INTEGER -> INTEGER.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_SHIFT_R.create position with left and right;		
-      }
-      .when 8 then { // INTEGER << INTEGER -> INTEGER.
-	left   := profil_slot.argument_list.first .read position;
-	right  := profil_slot.argument_list.item 1.read position;
-	result := EXPR_SHIFT_L.create position with left and right;		
-      }
-      .when 9 then { // put OBJECT to INTEGER.
-	exp1 := profil_slot.argument_list.first .read position;
-	exp2 := profil_slot.argument_list.item 1.read position; 
-	exp3 := profil_slot.argument_list.item 2.read position; 
-	result := PUT_TO.create position base exp1 index exp3 value exp2;
-      }
-      .when 10 then { // item INTEGER -> OBJECT.
-	exp1 := profil_slot.argument_list.first .read position;
-	exp2 := profil_slot.argument_list.item 1.read position; 
-	result := ITEM.create position base exp1 index exp2;
-      }      
-      .when 11 then { // debug_level -> INTEGER.
-	result := INTEGER_CST.create position value debug_level_option type (type_integer.default);
-      }
-      .when 12 then { // object_size -> INTEGER.	
-	exp1 := profil_slot.argument_list.first.read position;
-	result := SIZE_OF.create position receiver exp1;
-      }
-      .when 13 then { // CONVERT SRC TO DST.on src:SRC :DST.
-        type := profil_slot.result_list.first.type;        
-	exp2 := profil_slot.argument_list.second.read position;
-	result := CAST.create type value exp2;
-      }
-      .when 14 then { // top_runtime_stack -> POINTER.
-	(debug_level_option = 0).if {
-	  result := PROTOTYPE_CST.create position type (TYPE_NULL.default);
-	} else {
-	  result := EXTERNAL_C.create position text "top_context->back->back"
-	  access NULL persistant FALSE type (type_pointer.default);
-	};
-      }
-      .when 15 then { // is_cop_type:BOOLEAN
-        type := profil_slot.argument_list.first.type;        
-        (type.prototype.style = '-').if {          
-          result := PROTOTYPE_CST.create position type (type_true.default);	
-        } else {
-          result := PROTOTYPE_CST.create position type (type_false.default);	
-        };
-      }     
-      .when 16 then { // LIST.upper:INTEGER
-        not_yet_implemented;
-      }
-      .when 17 then { // LIST.item index:INTEGER :E
-        not_yet_implemented;
-      }
-      .when 18 to 31 then { // FREE
-        syntax_error (position,"Free external lisaac code.");
-      };
-    } else {
-      lst_acc := get_access;
-      result  := EXTERNAL_C.create position text last_code 
-      access lst_acc persistant TRUE type (TYPE_VOID.default);
-    };
-    result
-  );
-  
diff --git a/src/item/itm_external_type.li b/src/item/itm_external_type.li
deleted file mode 100644
index e3fb776..0000000
--- a/src/item/itm_external_type.li
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_EXTERNAL_TYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "External C with type result";
-  
-Section Inherit
-  
-  + parent_itm_extern:Expanded ITM_EXTERN;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + type:ITM_TYPE_MONO;
-
-  + type_list:FAST_ARRAY[ITM_TYPE_MONO];
-
-  + is_persistant:BOOLEAN;
-
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION text n:STRING_CONSTANT persistant per:BOOLEAN :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p text n persistant per;
-    result
-  );
-  
-  - make p:POSITION text n:STRING_CONSTANT persistant per:BOOLEAN <-
-  (
-    position      := p;
-    extern        := n;
-    is_persistant := per;
-  );
-  
-  //
-  // Added
-  //
-
-  - set_type t:ITM_TYPE_MONO <-
-  (
-    type := t;
-  );
-
-  - set_type_list t:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    type_list := t;
-  );
-
-  //
-  // Runnable
-  //
-    
-  - to_run_expr:EXPR <- 
-  ( + e:EXTERNAL_C;
-    + lt:TYPES_TMP;
-    + lst_acc:FAST_ARRAY[EXPR];
-    + typ:TYPE;
-    + tmp:VARIABLE;   
-
-    lst_acc := get_access;
-    last_position := position;
-    e := EXTERNAL_C.create position text last_code 
-    access lst_acc persistant is_persistant type (type.to_run_for profil_slot);
-    
-    (type_list != NULL).if {
-      lt := TYPES_TMP.new;
-      (type_list.lower).to (type_list.upper) do { j:INTEGER;
-	typ := type_list.item j.to_run_for profil_slot.raw;	
-	lt.add typ;
-      };
-      e.set_living_type (lt.to_types);
-    };
-    // For argument.
-    tmp := e.static_type.get_temporary position;
-    list_current.add_last (tmp.write position value e);
-    tmp.read position
-  );
-
-
-
-
diff --git a/src/item/itm_ldots.li b/src/item/itm_ldots.li
deleted file mode 100644
index 4427dcb..0000000
--- a/src/item/itm_ldots.li
+++ /dev/null
@@ -1,87 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_LDOTS;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "`...' for inherit contract";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CODE;
-  
-Section Public
-
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p;
-    result
-  );
-  
-  - make p:POSITION <-
-  (
-    position := p;
-  );
-  
-  //
-  // Runnable
-  //
-
-  - to_run:INSTR <-
-  ( + contract:ITM_LIST;
-    + result:INSTR;
-    + slot_code:SLOT_CODE;
-    
-    slot_code ?= profil_slot.slot;
-    contract := slot_code.previous_contract;
-    (contract != NULL).if {
-      result := contract.to_run_expr;
-    } else {
-      result := NOP;
-    };
-    result
-  );
-  
-  - to_run_expr:EXPR <-
-  (
-    warning_error (position,"ITM_LDOTS.to_run_expr");
-    crash;
-    NULL
-  );
-
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append "...";
-  );
-  
\ No newline at end of file
diff --git a/src/item/itm_list.li b/src/item/itm_list.li
deleted file mode 100644
index 086d3ab..0000000
--- a/src/item/itm_list.li
+++ /dev/null
@@ -1,203 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_LIST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Instruction list";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-  
-  // BSBS: OPTIM : Dans 95% des cas, les list sont sans local (il faudrait spécialiser)
-  // Mais pb avec le parser...
-  
-  //
-  // Data
-  //
-
-  + local_list:FAST_ARRAY[ITM_LOCAL];  // `+'
-  
-  + static_list:FAST_ARRAY[ITM_LOCAL]; // `-'
-
-  + code:FAST_ARRAY[ITM_CODE];
-  
-  + is_check_name:BOOLEAN;
-  
-  - is_check_local:INTEGER;
-  
-  //
-  // Constructor
-  //
-
-  - create p:POSITION :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p;
-    result
-  );
-  
-  - make p:POSITION <-
-  (
-    position := p;   
-  );
- 
-  //
-  // Added
-  //
-
-  - set_local_list l:FAST_ARRAY[ITM_LOCAL] <-
-  (
-    ? {! l.is_empty};
-    local_list := l;
-  );
-
-  - set_static_list l:FAST_ARRAY[ITM_LOCAL] <-
-  (
-    ? {! l.is_empty};
-    static_list := l;
-  );
-  
-  - set_code c:FAST_ARRAY[ITM_CODE] <-
-  (
-    code := c;
-  );    
-  
-Section Public
-  
-  - is_affect:POSITION <-
-  ( + result,default:POSITION;
-    + j:INTEGER;
-    + itm_r:ITM_RESULT;
-    
-    j := code.lower;
-    {(j < code.upper) && {result = default}}.while_do {
-      itm_r ?= code.item j;
-      (itm_r != NULL).if {
-	result := itm_r.is_affect;
-      } else {
-	result := code.item j.position;
-      };
-      j := j + 1;
-    };
-    (result = default).if {
-      result := code.last.is_affect;
-    };
-    result
-  );
-  
-  //
-  // Runnable.
-  //
-  
-  - to_run_expr:EXPR <- 
-  // List intern.
-  ( + i:INSTR;
-    + var:LOCAL; 
-    + stack_top:INTEGER;
-    + result_top:INTEGER;
-    + result:EXPR;
-    + nb_result:INTEGER;
-    + lr:FAST_ARRAY[EXPR];
-        
-    stack_top  := stack_local .upper + 1;
-    result_top := stack_result.upper + 1;
-            
-    // Push Local.
-    (local_list != NULL).if {      
-      (local_list.lower).to (local_list.upper) do { j:INTEGER;
-	var := local_list.item j.to_run;
-	stack_local.add_last var;
-	var.init;	
-      };      
-    };
-    (static_list != NULL).if {            
-      (static_list.lower).to (static_list.upper) do { j:INTEGER;
-	var := static_list.item j.to_run_static;
-	stack_local.add_last var;		
-      };      
-    };        
-    // Append code.
-    (code.lower).to (code.upper) do { j:INTEGER;
-      i := code.item j.to_run;      
-      list_current.add_last i;
-    };    
-    // Compute result expr.            
-    nb_result := stack_result.upper - result_top + 1;    
-        
-    (nb_result = 0).if {            
-      result := PROTOTYPE_CST.create position type (TYPE_VOID.default); // BSBS: Alias.   
-    } else {                 
-      (nb_result > 1).if {
-	// Creation Vector.
-	lr := FAST_ARRAY[EXPR].create_with_capacity nb_result;
-	(result_top).to (stack_result.upper) do { j:INTEGER;
-	  lr.add_last (stack_result.item j.read position);
-	};
-	result := EXPR_MULTIPLE.create lr;
-      } else {
-        result := stack_result.last.read position;
-      };
-    };    
-    // Pop local / Result.
-    pop_stack_until stack_top;    
-    stack_result.remove_since result_top;
-    ? {stack_result.upper = Old stack_result.upper};
-    // 
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    (code.count = 1).if {
-      buffer.add_last '(';
-      code.first.append_in buffer;
-      buffer.add_last ')';      
-    } else {
-      buffer.append "(\n";      
-      (code.lower).to (code.upper) do { i:INTEGER;
-        indent.append "  ";
-        code.item i.append_in buffer;
-        buffer.append ";\n";
-      };
-      indent.remove_last 2;
-      buffer.append ")";      
-    };      
-  );
-  
-Section ITM_LIST, ITM_RESULT
-  
-  - stack_result:FAST_ARRAY[LOCAL] := FAST_ARRAY[LOCAL].create_with_capacity 16;    
-
-
-
-
diff --git a/src/item/itm_list_idf.li b/src/item/itm_list_idf.li
deleted file mode 100644
index b14d9c0..0000000
--- a/src/item/itm_list_idf.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_LIST_IDF;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "List identifier for assignment.";
-    
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public 
-  
-  - is_affect:POSITION; // Nothing (it s good with 0).
-  // BSBS: A quoi ca sert ca ??? (Stop the Whisky)
-  
-  //
-  // Data
-  //
-
-  + list_name:FAST_ARRAY[STRING_CONSTANT];
-
-  //
-  // Constructor
-  //
-
-  - create p:POSITION with lst:FAST_ARRAY[STRING_CONSTANT] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p with lst;
-    result
-  );
-  
-  - make p:POSITION with lst:FAST_ARRAY[STRING_CONSTANT] <-
-  (
-    position  := p;
-    list_name := lst;
-  );
-
-  //
-  // Runnable
-  //
-      
-  - to_run_expr:EXPR <-
-  ( 
-    semantic_error (position,"ITM_LIST_IDF.to_run_expr");
-    NULL
-  );
-  
-  
\ No newline at end of file
diff --git a/src/item/itm_local.li b/src/item/itm_local.li
deleted file mode 100644
index 8ba97b0..0000000
--- a/src/item/itm_local.li
+++ /dev/null
@@ -1,143 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_LOCAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Local declaration slot";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + type:ITM_TYPE_MONO;
-
-  + name:STRING_CONSTANT;
-
-  //
-  // Constructor
-  //
-
-  - create p:POSITION name n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n;
-    result
-  );
-
-  - create p:POSITION name n:STRING_CONSTANT type t:ITM_TYPE_MONO :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n;
-    result.set_type t;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT <-
-  (
-    name     := n;
-    position := p;
-  );
-
-  //
-  // Set
-  //
-
-  - set_type t:ITM_TYPE_MONO <-
-  (
-    type := t;
-  );
-
-  //
-  // Runnable
-  //
-
-  - to_run:LOCAL <- 
-  ( + pos:POSITION;
-    + result:LOCAL;
-    
-    last_position := position;
-    result := LOCAL.create position name name style '+' type (type.to_run_for profil_slot);
-    last_position := pos;
-    result
-  );
-
-  - to_run_static:LOCAL <-
-  // Static local slot.
-  ( + result:LOCAL;
-    + slot:ITM_SLOT;
-    + larg:FAST_ARRAY[ITM_ARGUMENT];
-    + arg:ITM_ARGUMENT;
-    + proto:PROTOTYPE;
-    
-    (type = ITM_TYPE_SIMPLE.type_self).if {
-      semantic_error (position,"Type `SELF' is not possible for `-' style local.");
-    };
-    result := LOCAL.create position name name style '-' type (type.to_run_for profil_slot);    
-    //
-    proto := position.prototype;
-    slot := proto.first_slot;
-    {(slot != NULL) && {slot.position != position}}.while_do {
-      slot := slot.next;
-    };
-    (slot = NULL).if {
-      slot := ITM_SLOT.create position name (result.intern_name) 
-      feature (SECTION_.get_name (ALIAS_STR.section_private));
-      slot.set_style '-';
-      slot.set_result_type type;
-      larg := ALIAS_ARRAY[ITM_ARGUMENT].new;
-      arg := ITM_ARG.create position name (ALIAS_STR.variable_self)
-      type (ITM_TYPE_SIMPLE.type_self);
-      larg.add_last arg;
-      larg := ALIAS_ARRAY[ITM_ARGUMENT].copy larg;
-      slot.set_argument_list larg; 
-      proto.add_slot slot;
-    } else {
-      result.set_intern_name (slot.name);
-    };
-    //
-    result
-  );
-  
-  // 
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append name;
-    buffer.add_last ':';
-    type.append_in buffer;
-  );
-    
-
-
-
diff --git a/src/item/itm_number.li b/src/item/itm_number.li
deleted file mode 100644
index a54a89b..0000000
--- a/src/item/itm_number.li
+++ /dev/null
@@ -1,77 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_NUMBER;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Integer constant";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CONSTANT;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + value:INTEGER_64;
-
-  //
-  // Constructor
-  //
-  - create p:POSITION value n:INTEGER_64 :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p value n;
-    result
-  );
-  
-  - make p:POSITION value n:INTEGER_64 <-
-  (
-    position:=p;
-    value:=n;
-  );
-  
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  (     
-    INTEGER_CST.create position value value type (type_integer.default)    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    value.append_in buffer;
-  );
-  
-
diff --git a/src/item/itm_object.li b/src/item/itm_object.li
deleted file mode 100644
index 11fafb3..0000000
--- a/src/item/itm_object.li
+++ /dev/null
@@ -1,133 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ITM_OBJECT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Parent item object";
-  
-Section Inherit
-  
-  + parent_any:Expanded ANY;
-  
-  - parent_hashable:HASHABLE := HASHABLE;
-  
-Section Public
-  
-  - bottom_index:INTEGER;
-  
-  - clean_bottom_index <-
-  (
-    bottom_index := stack_local.upper + 1;
-    context_extern := NULL;
-  );
-  
-  - context_extern:LOCAL;
-      
-  - lookup n:STRING_CONSTANT :LOCAL <-
-  ( + result:LOCAL;
-    + j:INTEGER;
-    ? {n = ALIAS_STR.get n};
-        
-    j := stack_local.upper;
-    {(j < stack_local.lower) || {stack_local.item j.name = n}}.until_do {	
-      j := j - 1;
-    };
-    (j >= stack_local.lower).if {
-      result := stack_local.item j;
-            
-      ((j < bottom_index) && {result.style != '-'}).if {
-        bottom_index := j;
-        context_extern := result;
-      };
-      
-    }.elseif {profil_slot != NULL} then {
-      result := profil_slot.lookup n;            
-      ((result != NULL) && {result.name != ALIAS_STR.variable_self}).if {
-        bottom_index := -1;
-	context_extern := result;
-      };
-    };
-    result
-  );
-  
-  //
-  // Source position.
-  //
-
-  + position:POSITION;
-
-  - set_position new_pos:POSITION <-
-  (
-    position := new_pos;
-  );
-  
-  //
-  //
-  //
-   
-  - verify:BOOLEAN;
-  
-  - set_verify v:BOOLEAN <-
-  (
-    verify := v;
-  );
-  
-  - pop_stack_until stack_top:INTEGER <-
-  ( + var,var2:LOCAL;
-    + n:STRING_CONSTANT;
-    
-    (verify).if {
-      // Verify local.      
-      {stack_local.upper >= stack_top}.while_do {
-	var := stack_local.last;
-	stack_local.remove_last;
-	n := var.name;
-	(
-	  (n != ALIAS_STR.variable_self) && 	
-	  {n != ALIAS_STR.variable_tmp}
-	).if {
-	  ((var.ensure_count = 0) && {var.style != ' '}).if {
-	    string_tmp.copy "Local slot `";
-	    string_tmp.append (var.name);
-	    string_tmp.append "' not used.";
-	    warning_error ((var.position),string_tmp);
-	  };
-	  var2 := lookup (var.name);
-	  (var2 != NULL).if {
-	    string_tmp.copy "Double declaration for `";
-	    string_tmp.append n;
-	    string_tmp.append "' slot.";
-	    POSITION.put_error warning text string_tmp;
-	    var2.position.put_position;
-	    var.position.put_position;
-	    POSITION.send_error;
-	  };
-	};
-      };
-    } else {
-      stack_local.remove_since stack_top;
-    };
-  );
diff --git a/src/item/itm_old.li b/src/item/itm_old.li
deleted file mode 100644
index 4e2d925..0000000
--- a/src/item/itm_old.li
+++ /dev/null
@@ -1,125 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_OLD;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Old primitive for contract";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-    
-  + value:ITM_CODE;
-  
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION value val:ITM_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p value val;
-    result
-  );
-  
-  - make p:POSITION value val:ITM_CODE <-
-  (
-    position := p;
-    value    := val;
-  );
-  
-  //
-  // Runnable
-  //
-    
-  - to_run_expr:EXPR <-
-  ( + expr_old:EXPR;
-    + instr:INSTR;
-    + result_old:LOCAL;
-    + lst:LIST;
-    + old_upper,diff:INTEGER;
-    + node:NODE_TYPE;
-    + old_stack_local:FAST_ARRAY[LOCAL];
-    + old_profil:PROFIL;
-    
-    old_stack_local := stack_local;
-    old_profil      := profil_current;
-    stack_local     := stack_local_empty;    
-    profil_current  := profil_slot;
-    ? {stack_local.is_empty};    
-    //
-    old_upper  := list_current.upper;
-    expr_old   := value.to_run_expr;
-    result_old := expr_old.static_type.get_temporary position;
-    list_current.add_last (result_old.write position value expr_old);
-    diff := list_current.upper - old_upper;
-    // Move instr to up.   
-    lst := profil_slot.code;
-    {diff != 0}.while_do {      
-      instr := list_current.last;
-      //
-      (NODE.node_list != NODE.node_list_base).if {
-	node ?= instr;
-	(node != NULL).if {
-	  NODE.node_list.remove (NODE.node_list.fast_first_index_of node);
-	  NODE.node_list_base.add_last node;
-	};
-      };
-      
-      list_current.remove_last;
-      (debug_level_option != 0).if {
-	? { + push:PUSH;      
-	  push ?= lst.first;
-	  (push != NULL) && {push.is_first}
-	};
-	lst.add instr to (lst.lower + 1);
-      } else {
-	lst.add_first instr;      
-      };
-      diff := diff - 1;
-    };    
-    //
-    profil_current := old_profil;
-    stack_local := old_stack_local;
-    //
-    result_old.read position
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append "Old ";
-    value.append_in buffer;
-  );
-  
-Section Private
-  
-  - stack_local_empty:FAST_ARRAY[LOCAL] := FAST_ARRAY[LOCAL].create 0;
diff --git a/src/item/itm_operator.li b/src/item/itm_operator.li
deleted file mode 100644
index 75e5b28..0000000
--- a/src/item/itm_operator.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_OPERATOR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "operator list message";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  + name:STRING_CONSTANT;
-  
-  //
-  // Constructor
-  //  
-
-  - create p:POSITION name n:STRING_CONSTANT :SELF <-
-  [
-    -? {p.code != 0};
-  ]
-  ( + result:SELF;
-    result := clone;
-    result.make p name n;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT <-
-  (   
-    position := p;
-    name := n;
-  );
-  
-  //
-  // Runnable.
-  //
-  
-  - to_run_expr:EXPR <-
-  (
-    crash_with_message "ITM_OPERATOR.to_run_expr";
-    NULL
-  );    
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append name; 
-  );
-
-
diff --git a/src/item/itm_prototype.li b/src/item/itm_prototype.li
deleted file mode 100644
index 4491350..0000000
--- a/src/item/itm_prototype.li
+++ /dev/null
@@ -1,101 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_PROTOTYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Prototype constant";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CONSTANT;
-  
-Section Public
-
-  + type:ITM_TYPE_MONO;
-  
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION type n:ITM_TYPE_MONO :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p type n;
-    result
-  );
-    
-  - make p:POSITION type n:ITM_TYPE_MONO <-
-  ( 
-    position := p;
-    type := n;    
-  );
-
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <- 
-  ( + t:TYPE_FULL;
-    + result:EXPR;
-        
-    last_position := position;                
-    t := type.to_run_for profil_slot;        
-    (t = NULL).if {
-      string_tmp.copy "Type `";
-      type.append_in string_tmp;
-      string_tmp.append "' not found (Undefine type parameter).";      
-      semantic_error (position,string_tmp);
-    };
-    // TYPE Classic.    
-    (
-      (t.is_expanded_c) && 
-      {t.raw != type_boolean} && 
-      {t.raw != type_true} && 
-      {t.raw != type_false}
-    ).if {
-      result := t.default_value position;
-      result := result.check_type t with position;
-    } else {      
-      result := PROTOTYPE_CST.create position type t;
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    type.append_in buffer;
-  );
-
-
-
-
-
-
-
diff --git a/src/item/itm_read.li b/src/item/itm_read.li
deleted file mode 100644
index 3d64e2f..0000000
--- a/src/item/itm_read.li
+++ /dev/null
@@ -1,305 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ITM_READ;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "For local access variable or send message without argument";
-  
-  // BSBS: Optim: Penser à faire un ITM_READ_ARG3 pour tous les `if then else'
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public 
-  
-  - is_affect:POSITION; // Nothing (it's good with 0).
-  
-  //
-  // Data
-  //
-
-  + name:STRING_CONSTANT;
-
-  //
-  // Constructor
-  //
-
-  - create p:POSITION name n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT <-
-  (
-    position := p;
-    name := n;
-  );
-
-  //
-  // Runnable
-  //
-      
-  - to_run_expr:EXPR <-
-  ( + result:EXPR;
-    + loc:LOCAL;    
-            
-    loc := lookup name;
-    (loc != NULL).if {
-      //
-      // Local Access.
-      //            
-      (loc.style = '-').if {
-	loc.set_ensure_count 1;
-	name := loc.intern_name;
-	result := to_run_with NULL args NULL;
-      } else {
-	result := loc.read position;
-      };
-    } else {
-      //
-      // Slot Access without argument.
-      //      
-      result := to_run_with NULL args NULL;
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append name;
-    buffer.append "()";
-  );
-  
-Section ITM_READ, SLOT_DATA
-  
-  - to_run_with first_itm:ITM_CODE args larg:FAST_ARRAY[ITM_CODE] :EXPR <-
-  ( + rec:EXPR;
-    //
-    + itm_list:ITM_LIST;
-    + itm_read:ITM_READ;
-    + is_resend,implicit_self:BOOLEAN;
-        
-    //
-    // Compute `rec'.
-    //    
-    
-    (first_itm = NULL).if {
-      // Implicit Self.
-      rec := lookup (ALIAS_STR.variable_self).read position;
-      implicit_self := TRUE;
-    } else {            
-      rec := first_itm.to_run_expr;      
-      // Resend detect.
-      itm_list ?= first_itm;
-      (itm_list != NULL).if {
-	itm_read ?= itm_list.code.first;
-      } else {	
-	itm_read ?= first_itm;
-      };
-      is_resend := (
-	(itm_read != NULL) && 
-	{position.prototype.search_parent (itm_read.name)}
-      );
-    };
-    to_run_with_self (rec,implicit_self,is_resend) args larg
-  );
-  
-  - to_run_with_self (r:EXPR,implicit_self,is_resend:BOOLEAN) 
-  args larg:FAST_ARRAY[ITM_CODE] :EXPR <-
-  ( + args:FAST_ARRAY[EXPR];
-    + rec_type:TYPE;
-    + rec:EXPR;
-    + em:EXPR_MULTIPLE;
-    + pos_null:POSITION;
-    //    
-    + slot_msg:SLOT;
-    + is_block_value:BOOLEAN;
-    //
-    + base:NODE;
-    
-    rec := r;
-    //
-    // Detect slot.
-    //
-    args := ALIAS_ARRAY[EXPR].new;
-    rec_type := rec.static_type.raw;
-    (rec_type = TYPE_VOID).if {
-      // BSBS: Ce cas ne doit jamais arriver !
-      // il se déclenche avec parent.msg.truc lorsque msg du parent n'a pas de type de retour
-      // Mais que le profil général en a un...
-      semantic_error (position,"Call on Void"); 
-    };
-        
-    (
-      (rec_type.is_block) && 
-      {name = ALIAS_STR.slot_value}
-    ).if {
-      // { ... }.value
-      is_block_value := TRUE;
-    } else {
-      slot_msg := rec_type.get_slot name;     
-      (slot_msg = NULL).if {            
-	string_tmp.copy "Slot `";
-	string_tmp.append name;
-	string_tmp.append "' not found in `";
-	rec_type.append_name_in string_tmp; 
-        string_tmp.append "'.";                        
-	semantic_error (position,string_tmp);
-      };      
-      // Verification
-      (verify).if {
-	(
-	  ((larg  = NULL) && {slot_msg.argument_list.count != 1}) || 
-	  {(larg != NULL) && {larg.count != slot_msg.argument_list.count-1}}
-	).if {
-	  POSITION.put_error semantic text "Incorrect number argument."; 
-	  slot_msg.position.put_position;
-	  position.put_position;
-	  POSITION.send_error;
-	};
-	last_position := slot_msg.position;	
-	( !
-	  slot_msg.id_section.access rec_type with (profil_slot.type_self.raw)
-	).if {
-	  string_tmp.copy "Type ";
-	  profil_slot.type_self.append_name_in string_tmp;
-	  string_tmp.append " does not have access to this slot.";
-	  POSITION.put_error warning text string_tmp;
-	  slot_msg.position.put_position;
-	  position.put_position;
-	  POSITION.send_error;
-	};
-	last_position := pos_null;
-      };
-    };
-    //
-    // Add arguments
-    //
-    add_arg rec to 0 in args for slot_msg block is_block_value;
-    em ?= rec;
-    (em != NULL).if {
-      rec := em.expr_list.first;
-    };
-    (larg != NULL).if {
-      (larg.lower).to (larg.upper) do { j:INTEGER;        
-	add_arg (larg.item j.to_run_expr) to (j+1) in args for slot_msg block is_block_value;
-      };
-    };
-            
-    //
-    // Send message.
-    //
-    (is_block_value).if {
-      // { ... }.value      
-      args := ALIAS_ARRAY[EXPR].copy args;      
-      args.put (args.first.my_copy) to 0;      
-      //rec := slot_msg.slot_data_intern.read position with rec;
-      base := NODE.new_block position receiver rec with args;
-    }.elseif {args.count = 1} then {
-      // Classic message without arguments.
-      (is_resend).if {
-	args.put (lookup (ALIAS_STR.variable_self).read position) to 0;
-	args.first.remove;
-      };
-      
-      ((verify) && {is_all_warning} && {name == "deferred"}).if {
-	string_tmp.copy "Deferred in `";
-	string_tmp.append (profil_slot.slot.name);
-	string_tmp.append "' for ";
-	rec.static_type.append_name_in string_tmp;	
-	warning_error (position,string_tmp);
-      };
-      
-      base := NODE.new_read position slot slot_msg 
-      receiver rec self (args.first) intern implicit_self;
-      
-      ALIAS_ARRAY[EXPR].free args;
-    } else {
-      // Classic message with arguments.
-      (is_resend).if {
-	args.put (lookup (ALIAS_STR.variable_self).read position) to 0;	
-      } else {
-	args.put (args.first.my_copy) to 0;
-      };
-      args := ALIAS_ARRAY[EXPR].copy args;
-      base := NODE.new_read position slot slot_msg 
-      receiver rec with args intern implicit_self;
-    };
-    list_current.add_last base;
-        
-    (larg != NULL).if {
-      ALIAS_ARRAY[ITM_CODE].free larg;
-    };
-        
-    ? {base.result_expr != NULL};    
-    base.result_expr    
-  );
-  
-Section Private
-  
-  - add_arg e:EXPR to idx:INTEGER 
-  in args:FAST_ARRAY[EXPR] for slot:SLOT block is_block_value:BOOLEAN <-
-  ( + em:EXPR_MULTIPLE;
-    + count:INTEGER;
-    
-    em ?= e;
-    (em != NULL).if {
-      count := em.cardinality;
-      args.append_collection (em.expr_list);
-    } else {
-      count := 1;
-      args.add_last e;
-    };
-    (verify).if {
-      (! is_block_value).if {	
-        (slot.argument_list.item idx.count != count).if {
-          string_tmp.copy "Incorrect vector size for #";
-          idx.append_in string_tmp;
-          string_tmp.append " argument of `";
-          string_tmp.append name;
-          string_tmp.append "' slot. (slot #";
-          slot.argument_list.item idx.count.append_in string_tmp;
-          string_tmp.append ", call #";
-          count.append_in string_tmp;
-          string_tmp.add_last ')';
-	  POSITION.put_error semantic text string_tmp; 
-	  slot.argument_list.item idx.position.put_position;
-          e.position.put_position;          
-	  POSITION.send_error;
-	};
-      }.elseif {(idx = 0) && {count != 1}} then {
-	semantic_error (e.position,"Incorrect vector size for `value' message.");
-      };
-    };
-  );
-  
\ No newline at end of file
diff --git a/src/item/itm_read_arg1.li b/src/item/itm_read_arg1.li
deleted file mode 100644
index 27cb5c4..0000000
--- a/src/item/itm_read_arg1.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_READ_ARG1;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := 
-  "For send message with one argument\ 
-  \ (receiver) or unary message";
-  
-Section Inherit
-  
-  + parent_itm_read:Expanded ITM_READ;
-  
-Section Public
-  
-  //
-  // Data
-  //
- 
-  + arg:ITM_CODE;
-
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT arg a:ITM_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n arg a;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT arg a:ITM_CODE <-
-  (
-    position := p;
-    name     := n;
-    arg      := a;
-  );
- 
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  (     
-    to_run_with arg args NULL
-  );
-
-
-
-
-
-
diff --git a/src/item/itm_read_arg2.li b/src/item/itm_read_arg2.li
deleted file mode 100644
index 584445f..0000000
--- a/src/item/itm_read_arg2.li
+++ /dev/null
@@ -1,131 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_READ_ARG2;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "For send message with two argument (receiver + argument)\
-  \ or simple binary message";
-  
-Section Inherit
-  
-  + parent_itm_read:Expanded ITM_READ;
-  
-Section Public
-  
-  - is_affect:POSITION <-
-  ( + result:POSITION;
-    
-    (arg_first != NULL).if {
-      result := arg_first.position;
-    } else {
-      result := arg_second.is_affect;
-    };
-    result
-  );
-  
-  //
-  // Data
-  //
-
-  + arg_first:ITM_CODE;
-  
-  + arg_second:ITM_CODE;
-  
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT args (a1,a2:ITM_CODE) :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n args (a1,a2);
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT args (a1,a2:ITM_CODE) <-
-  (
-    ? { a2 != NULL };
-    position   := p;
-    name       := n;
-    arg_first  := a1;
-    arg_second := a2;
-  );
-
-  //
-  // Runnable
-  //
-  
-  - to_run_expr:EXPR <-
-  ( + result:EXPR; 
-    + l_arg:FAST_ARRAY[ITM_CODE];    
-    + v1,v2:EXPR;
-    + t1,t2:TYPE_FULL;
-    
-    (
-      (name = ALIAS_STR.operator_equal) || 
-      {name = ALIAS_STR.operator_not_equal}
-    ).if {      
-      v1 := arg_first .to_run_expr;
-      v2 := arg_second.to_run_expr;            
-      (verify).if {
-	t1 := v1.static_type;
-	t2 := v2.static_type;
-	(
-	  (! t1.is_expanded) && 	
-	  {! t2.is_expanded} && 
-	  {! t1.is_sub_type t2} &&
-	  {! t2.is_sub_type t1}
-	).if {
-	  string_tmp.clear;
-	  t1.append_name_in string_tmp;
-	  string_tmp.append " and ";
-	  t2.append_name_in string_tmp;
-	  string_tmp.append " are not comparable.";
-	  warning_error (position,string_tmp);
-	};
-      };
-      (name = ALIAS_STR.operator_equal).if {
-	result := EXPR_EQUAL.create position with v1 and v2;
-      } else {
-	result := EXPR_NOT_EQUAL.create position with v1 and v2;
-      };            
-    } else {
-      l_arg := ALIAS_ARRAY[ITM_CODE].new;      
-      l_arg.add_last arg_second;            
-      result := to_run_with arg_first args l_arg;
-    };
-    result
-  );  
-  
-
-
-
-
-
-
-
-
-
diff --git a/src/item/itm_read_args.li b/src/item/itm_read_args.li
deleted file mode 100644
index 967af4e..0000000
--- a/src/item/itm_read_args.li
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_READ_ARGS;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Message with a lot of arguments";
-  
-Section Inherit
-  
-  + parent_itm_read:Expanded ITM_READ;
-  
-Section Public
-  
-  - is_affect:POSITION <-
-  ( + result,default:POSITION;
-    + j:INTEGER;
-    
-    (args.first != NULL).if {
-      result := args.first.position;
-    } else {
-      j := args.lower + 1;      
-      {(j <= args.upper) && {result = default}}.while_do {
-	result := args.item j.is_affect;
-	j := j + 1;
-      };
-    };
-    result
-  );
-  
-  //
-  // Data
-  //
-
-  + args:FAST_ARRAY[ITM_CODE];
-
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT args arg:FAST_ARRAY[ITM_CODE] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n args arg;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT args arg:FAST_ARRAY[ITM_CODE] <-
-  (
-    position := p;
-    name     := n;
-    args     := arg;
-  );
-
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  ( + l_arg:FAST_ARRAY[ITM_CODE];    
-    
-    l_arg := ALIAS_ARRAY[ITM_CODE].new;       
-    (args.lower+1).to (args.upper) do { j:INTEGER;         
-      l_arg.add_last (args.item j);
-    };        
-    to_run_with (args.first) args l_arg
-  );
-     
-
-
-
-
-
-
-
diff --git a/src/item/itm_real.li b/src/item/itm_real.li
deleted file mode 100644
index 17b1015..0000000
--- a/src/item/itm_real.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_REAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Real float constant";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CONSTANT;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + value:STRING_CONSTANT;
-
-  //
-  // Constructor
-  //
-  - create p:POSITION value n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p value n;
-    result
-  );
-  
-  - make p:POSITION value n:STRING_CONSTANT <-
-  (
-    position:=p;
-    value:=n;
-  );
-  
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  (     
-    REAL_CST.create position value value type (type_real.default)    
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append value;
-  );
-
diff --git a/src/item/itm_result.li b/src/item/itm_result.li
deleted file mode 100644
index 0fd8f29..0000000
--- a/src/item/itm_result.li
+++ /dev/null
@@ -1,117 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_RESULT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Result value";
-  
-Section Inherit
-  
-  - parent_itm_code:ITM_CODE := ITM_CODE;
-  
-Section Public
-  
-  - is_affect:POSITION <- value.is_affect;
-  
-  - position:POSITION <- value.position;
-  
-  //
-  // Data
-  //
-  
-  + value:ITM_CODE;
-
-  //
-  // Constructor
-  //
-  
-  - create r:ITM_CODE :SELF <-
-  [
-    -? {r != NULL};
-    -? {r.position.code != 0};
-  ]
-  ( + result:SELF;
-           
-    result := clone;
-    result.make r;
-    result
-  );
-  
-  - make r:ITM_CODE <-
-  (
-    value    := r;
-  );
-  
-  //
-  // Runnable
-  //
-
-  - to_run:INSTR <-
-  ( + mul:EXPR_MULTIPLE;
-    + val:EXPR;
-    + result:INSTR;
-    
-    val := value.to_run_expr;    
-    mul ?= val;
-    (mul != NULL).if {
-      (mul.lower).to (mul.upper-1) do { j:INTEGER;
-        result := to_run_intern (mul.item j);
-        list_current.add_last result;
-      };
-      result := to_run_intern (mul.last);
-    } else {
-      result := to_run_intern val;
-    };
-    result
-  );
-  
-  - to_run_expr:EXPR <-
-  (
-    crash;
-    NULL
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append "return(";
-    value.append_in buffer;
-    buffer.add_last ')';
-  );
-
-Section Private
-
-  - to_run_intern val:EXPR :INSTR <-
-  ( + var:LOCAL;  
-        
-    var := val.static_type.get_temporary position;
-    ITM_LIST.stack_result.add_last var;    
-    var.write position value val    
-  );
-  
diff --git a/src/item/itm_slot.li b/src/item/itm_slot.li
deleted file mode 100644
index 7d2d6dc..0000000
--- a/src/item/itm_slot.li
+++ /dev/null
@@ -1,386 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ITM_SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Slot item";
-  
-Section Inherit
-  
-  + parent_named:Expanded NAMED;
-  
-Section Public
-  
-  //
-  // Shorter information.
-  //
-  
-  + comment:STRING_CONSTANT;
-  
-  - set_comment str:STRING_CONSTANT <-
-  (
-    comment := str;
-  );
-  
-  + comment_chapter:STRING_CONSTANT;
-  
-  - set_comment_chapter c:STRING_CONSTANT <-
-  (
-    comment_chapter := c;
-  );
-  
-  + stat_shorter:INTEGER_8;
-  
-  - set_stat_shorter s:INTEGER_8 <-
-  (
-    stat_shorter := s;
-  );
-  
-  //
-  // Profil
-  //
-  
-  + id_section:SECTION_;
-    
-  - argument_count:INTEGER <-
-  ( + result:INTEGER;
-    
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      result := result + argument_list.item j.count;
-    };
-    result
-  );
-      
-  + argument_list:FAST_ARRAY[ITM_ARGUMENT];
-
-  + result_type:ITM_TYPE;
-  
-  - set_result_type t:ITM_TYPE <-
-  ( + tm:ITM_TYPE_MONO;
-    
-    (id_section.is_inherit_or_insert).if {
-      tm ?= t;
-      (
-        (tm = NULL) || 
-        {tm = ITM_TYPE_SIMPLE.type_self} || 
-        {tm = ITM_TYPE_SIMPLE.type_void}
-      ).if {
-	semantic_error (position,"Incorrect type for inheritance slot.");
-      };
-    };
-    /*
-    "ITM_SLOT : ".print;
-    name.print; ' '.print;
-    ( +tmu:ITM_TYPE_MULTI;
-      tmu ?= t;
-      (tmu != NULL).if {
-        tmu.count.print;
-      };
-    );
-    '\n'.print;
-    */
-    result_type := t;
-  );
-  
-  - set_argument_list p:FAST_ARRAY[ITM_ARGUMENT] <-
-  ( 
-    ((p.count > 1) || {p.first.count > 1}).if {    
-      (id_section.is_interrupt).if {
-	semantic_error (p.last.position,"No argument for interrupt slot.");
-      };
-      (id_section.is_inherit_or_insert).if {
-	semantic_error (p.last.position,"No argument for inheritance slot.");
-      };
-    };
-    argument_list := p;
-  );
-  
-  - is_equal_profil other:ITM_SLOT <-
-  (         
-    (Self != other).if {
-      (result_type != other.result_type).if {
-	string_tmp.copy "Invariance type result invalid."; // (";
-	//type.to_run.append_name_in string_tmp;
-	//string_tmp.append " != ";
-	//other.type.to_run.append_name_in string_tmp;
-	//string_tmp.append ").";
-	POSITION.put_error semantic text string_tmp;
-	position.put_position;
-	(other.position).put_position;
-	POSITION.send_error; 
-      };
-      (id_section != other.id_section).if {
-	POSITION.put_error warning text 
-	"Invariance section declaration invalid.";
-	position.put_position;
-	(other.position).put_position;
-	POSITION.send_error;
-      };
-      (argument_list != NULL).if {
-	? {argument_list.count = other.argument_list.count};
-	(argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-	  argument_list.item j.is_equal (other.argument_list.item j);
-	};	  
-      };
-    };
-  );
-  
-  //
-  // Data.
-  //
-
-  + affect:CHARACTER; // ':', '?', '<'
-
-  - set_affect a:CHARACTER <-
-  (
-    affect := a; 
-  );
-
-  + next:ITM_SLOT;
-  
-  - set_next n:ITM_SLOT <-
-  (
-    next := n;
-  );
-    
-  //
-  // Access associativity & priority level.
-  //
-  
-  - priority_and_level:INTEGER <-
-  ( 
-    crash_with_message "ITM_SLOT.priority_and_level.";
-    0
-  );
-  
-  - associativity:STRING_CONSTANT <-
-  ( 
-    crash_with_message "ITM_SLOT.associativity.";
-    NULL
-  );
-  
-  - priority:INTEGER <-
-  (
-    crash_with_message "ITM_SLOT.priority.";
-    0
-  );
-
-  //
-  // Value.
-  //
-  
-  + require:ITM_LIST;
-  + ensure:ITM_LIST;
-  
-  + value:ITM_CODE;
-
-  - set_value e:ITM_CODE type p:PROTOTYPE <-
-  // Static definition.
-  [ 
-    -? {affect != '\0'};
-  ]
-  ( 
-    (affect = '<').if {
-      value := e;
-    } else {
-      //semantic_error (position,"not_yet_implemented");
-      value := default_value e in p;
-    };
-  );    
-
-  - set_require e:ITM_LIST <-
-  ( 
-    require := e;
-  );    
-
-  - set_ensure e:ITM_LIST <-
-  ( 
-    ensure := e;
-  );    
-
-  //
-  // Constructeur.
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT feature sec:SECTION_ :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n feature sec;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT feature sec:SECTION_ <-
-  (
-    name        := n;
-    position    := p;    
-    id_section  := sec;
-  );
-  
-  //
-  // Runnable.
-  //
-  
-  - get_index_argument_type p:ITM_TYPE_PARAMETER :INTEGER <-
-  ( + i,result,max:INTEGER;
-    + arg:ITM_ARGUMENT;
-    
-    i := argument_list.lower;    
-    {(i <= argument_list.upper) && {result = max}}.while_do {
-      arg    := argument_list.item i;
-      max    := max    + arg.count;
-      result := result + arg.get_index_type p;
-      i := i +1;
-    };
-    (result = max).if {
-      result := -1;
-    };
-    result
-  );
-  
-  - check_argument_type larg:FAST_ARRAY[EXPR] for p:PARAMETER_TO_TYPE <-  
-  ( + idx:INTEGER;
-    + a:ITM_ARGUMENT;
-    
-    (argument_list.lower).to (argument_list.upper) do { i:INTEGER;
-      a := argument_list.item i;
-      idx := a.check larg index idx for p;
-    };
-  );    
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.append name;
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;       
-      buffer.add_last ' ';
-      argument_list.item j.append_in buffer;
-    }; 
-    buffer.add_last ' ';
-    buffer.add_last ':';
-    result_type.append_in buffer;    
-  );    
-  
-  - pretty_name_in buffer:STRING <-
-  ( + j:INTEGER;
-    
-    j := name.lower;
-    {j < name.upper}.while_do {    
-      ((name.item j = '_') && {name.item (j+1) = '_'}).if {
-        buffer.add_last ' ';
-        j := j + 2;
-      } else {
-        buffer.add_last (name.item j);
-        j := j + 1;
-      };      
-    };
-    buffer.add_last (name.last);
-  );
-  
-  - shorter_profile_in buf:STRING <-
-  ( 
-    // style.
-    (style = '+').if {
-      put "+" to buf like (ALIAS_STR.short_slot_style);
-    } else {
-      put "-" to buf like (ALIAS_STR.short_slot_style);
-    };    
-    shorter_profile_intern_in buf;
-    // Result.
-    (result_type != ITM_TYPE_SIMPLE.type_void).if {      
-      buf.add_last ':';      
-      result_type.shorter_in buf;
-    };
-  );
-  
-Section ITM_SLOT
-  
-  - shorter_profile_intern_in buf:STRING <-
-  ( + j,i:INTEGER;
-    // Name + arguments.
-    string_tmp.clear;
-    j := name.lower;
-    argument_list.first.shorter_in buf;
-    buf.add_last '.';
-    i := argument_list.lower+1;    
-    {j < name.upper}.while_do {    
-      ((name.item j = '_') && {name.item (j+1) = '_'}).if {
-        put string_tmp to buf like (ALIAS_STR.short_slot);
-        buf.add_last ' ';
-        argument_list.item i.shorter_in buf;
-        buf.add_last ' ';
-        string_tmp.clear;        
-        j := j + 2;
-        i := i + 1;
-      } else {
-        string_tmp.add_last (name.item j);
-        j := j + 1;
-      };      
-    };
-    string_tmp.add_last (name.last);
-    put string_tmp to buf like (ALIAS_STR.short_slot);
-    (i <= argument_list.upper).if {
-      buf.add_last ' ';
-      argument_list.last.shorter_in buf;
-      buf.add_last ' ';
-    };
-  );
-  
-Section Private
-  
-  - default_value v:ITM_CODE in t:PROTOTYPE :ITM_CODE <-
-  ( //+ lst:ITM_LIST;
-    + s:ITM_SLOT;
-    + n:STRING_CONSTANT;
-    + sec:SECTION_;
-    + larg:FAST_ARRAY[ITM_ARGUMENT];
-    + a:ITM_CODE;
-        
-    // Add function for init.
-    string_tmp.copy "__init_";      
-    string_tmp.append name;
-    n := ALIAS_STR.get string_tmp;
-    sec := SECTION_.get_name (ALIAS_STR.section_public);
-    larg := FAST_ARRAY[ITM_ARGUMENT].create_with_capacity 1;
-    larg.add_last (
-      ITM_ARG.create (v.position)
-      name (ALIAS_STR.variable_self) 
-      type (ITM_TYPE_SIMPLE.type_self)
-    );
-    s := ITM_SLOT.create (v.position) name n feature sec;
-    s.set_affect '<';
-    ? {result_type != NULL};
-    s.set_value v type t;      
-    s.set_argument_list larg;      
-    s.set_result_type result_type;
-    t.slot_list.fast_put s to (s.name);      
-    (t.generic_count = 0).if {
-      a := ITM_PROTOTYPE.create (v.position) type (ITM_TYPE_SIMPLE.get (t.name));            
-    };
-    ITM_READ_ARG1.create (v.position) name n arg a
-  );
diff --git a/src/item/itm_slot_operator.li b/src/item/itm_slot_operator.li
deleted file mode 100644
index d22ca37..0000000
--- a/src/item/itm_slot_operator.li
+++ /dev/null
@@ -1,127 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ITM_SLOT_OPERATOR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Slot item";
-  
-Section Inherit
-  
-  + parent_itm_slot:Expanded ITM_SLOT;
-  
-Section Public
-  
-  + pretty_name:STRING_CONSTANT;
-  
-  - set_pretty_name n:STRING_CONSTANT <-
-  (
-    pretty_name := n;
-  );
-  
-  //
-  // Access associativity & priority level.
-  //
-
-  + priority_and_level:INTEGER;
-
-  - associativity:STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    (priority_and_level >= 0).if {
-      result := ALIAS_STR.keyword_left;
-    } else {
-      result := ALIAS_STR.keyword_right;
-    };
-    result
-  );
-  
-  - priority:INTEGER <-
-  (
-    priority_and_level.abs
-  );
-
-  - set_associativity p:STRING_CONSTANT priority l:INTEGER <-
-  (
-    (p = ALIAS_STR.keyword_left).if {
-      priority_and_level := l;
-    } else {
-      priority_and_level := -l;
-    };
-  );
-  
-  //
-  // Display.
-  //
-    
-  - pretty_name_in buffer:STRING <-
-  ( 
-    (name.has_prefix (ALIAS_STR.slot_postfix)).if {
-      buffer.append "Postfix '";
-    }.elseif {name.has_prefix (ALIAS_STR.slot_infix)} then {
-      buffer.append "Infix '";
-    } else {
-      buffer.append "Prefix '";
-    };          
-    buffer.append pretty_name;
-    buffer.add_last '\'';
-  );
-  
-Section ITM_SLOT
-  
-  - shorter_profile_intern_in buf:STRING <-
-  ( 
-    (name.has_prefix (ALIAS_STR.slot_postfix)).if {
-      argument_list.first.shorter_in buf;
-      buf.add_last ' ';
-      buf.add_last '\'';
-      put pretty_name to buf like (ALIAS_STR.short_slot);
-      buf.add_last '\'';
-      buf.add_last ' ';
-    }.elseif {name.has_prefix (ALIAS_STR.slot_infix)} then {
-      argument_list.first.shorter_in buf;
-      buf.add_last ' ';
-      buf.add_last '\'';
-      put pretty_name to buf like (ALIAS_STR.short_slot);
-      buf.add_last '\'';
-      (priority_and_level != 0).if {
-        buf.add_last ' ';
-        put associativity to buf like (ALIAS_STR.short_keyword);
-        buf.add_last ' ';
-        string_tmp.clear;
-        priority.append_in string_tmp;
-        put string_tmp to buf like (ALIAS_STR.short_keyword);
-      };
-      buf.add_last ' ';
-      argument_list.second.shorter_in buf;
-      buf.add_last ' ';
-    } else {
-      buf.add_last '\'';
-      put pretty_name to buf like (ALIAS_STR.short_slot);
-      buf.add_last '\'';
-      buf.add_last ' ';
-      argument_list.first.shorter_in buf;
-      buf.add_last ' ';
-    };    
-  );
\ No newline at end of file
diff --git a/src/item/itm_string.li b/src/item/itm_string.li
deleted file mode 100644
index b23e374..0000000
--- a/src/item/itm_string.li
+++ /dev/null
@@ -1,120 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_STRING;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "String constant";
-  
-Section Inherit
-  
-  + parent_itm_constant:Expanded ITM_CONSTANT;
-  
-Section Public
-      
-  + string:STRING_CONSTANT; 
-
-  //
-  // Constructor
-  //
-
-  - create p:POSITION text n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p text n;
-    result
-  );
-  
-  - make p:POSITION text n:STRING_CONSTANT <-
-  (
-    position := p;    
-    string   := n;
-  );
-  
-  //
-  // Runnable
-  //
-
-  - to_run_expr:EXPR <-
-  ( + result:EXPR;    
-    + slt:SLOT_DATA;
-    + wrt:WRITE;
-    + len:INTEGER;
-    
-    len := length;
-    result := STRING_CST.create position text string length len;
-    // count
-    slt := type_string_constant.get_local_slot (ALIAS_STR.slot_count).slot_data_intern;
-    wrt := slt.write position with (result.my_copy) value (
-      INTEGER_CST.create position value len type (slt.type)
-    );
-    wrt.set_quiet_generation;
-    list_current.add_last wrt;
-    // storage
-    slt := type_string_constant.get_local_slot (ALIAS_STR.slot_storage).slot_data_intern;
-    wrt := slt.write position with (result.my_copy) value (
-      NATIVE_ARRAY_CHARACTER_CST.create position text string 
-    );
-    wrt.set_quiet_generation;
-    list_current.add_last wrt;
-    //
-    result
-  );
-  
-  // 
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    buffer.add_last '\"';
-    buffer.append string;
-    buffer.add_last '\"';
-  );
-  
-Section Private
-  
-  - length:INTEGER <-
-  ( + i,result:INTEGER;
-    i := string.lower;
-    {i <= string.upper}.while_do {
-      (string.item i = '\\').if {        
-        i := i + 1;
-        (string.item i.is_digit).if {
-          i := i + 1;
-          (string.item i.is_digit).if {
-            i := i + 2;            
-          };
-        };
-      };
-      result := result + 1;
-      i := i + 1;
-    };
-    result
-  );
-
-
-
-
diff --git a/src/item/itm_type.li b/src/item/itm_type.li
deleted file mode 100644
index 2a5672e..0000000
--- a/src/item/itm_type.li
+++ /dev/null
@@ -1,57 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all type";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-  
-  - print <-
-  (
-    string_tmp.clear;
-    append_in string_tmp;
-    string_tmp.print;
-  );
-  
-  - append_in buffer:STRING <- deferred;
-  
-  - shorter_in buf:STRING <- deferred;
-  
-  - to_run_in lst:FAST_ARRAY[TYPE_FULL] for p:PARAMETER_TO_TYPE <-
-  (
-    deferred;
-  );
-  
-  - get_expr_for p:PARAMETER_TO_TYPE :EXPR <-
-  (
-    deferred;
-    NULL
-  );
diff --git a/src/item/itm_type_block.li b/src/item/itm_type_block.li
deleted file mode 100644
index e41b27d..0000000
--- a/src/item/itm_type_block.li
+++ /dev/null
@@ -1,132 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ITM_TYPE_BLOCK;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Type block definition";
-  
-Section Inherit
-  
-  + parent_itm_type_mono:Expanded ITM_TYPE_MONO;
-  
-Section ITM_TYPE_SIMPLE, ITM_TYPE_SELF
-  
-  - dico:FAST_ARRAY[ITM_TYPE_BLOCK] := FAST_ARRAY[ITM_TYPE_BLOCK].create_with_capacity 32;
-  
-Section Private 
-  
-  - create typ_arg:ITM_TYPE and typ_res:ITM_TYPE :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make typ_arg and typ_res;
-    result
-  );
-  
-  - make typ_arg:ITM_TYPE and typ_res:ITM_TYPE <-
-  (
-    type_argument := typ_arg;
-    type_result   := typ_res;
-  );
-  
-Section Public
-      
-  + type_argument:ITM_TYPE;
-  + type_result:ITM_TYPE;
-  
-  - get typ_arg:ITM_TYPE and typ_res:ITM_TYPE :ITM_TYPE_BLOCK <-
-  ( + result:ITM_TYPE_BLOCK;  
-    + idx:INTEGER;
-    
-    idx := dico.lower;
-    {
-      (idx <= dico.upper) && {
-        {dico.item idx.type_argument != typ_arg} ||
-        {dico.item idx.type_result   != typ_res}
-      }
-    }.while_do {
-      idx := idx + 1;
-    };    
-    (idx <= dico.upper).if {
-      result := dico.item idx;
-    } else {
-      result := create typ_arg and typ_res;
-      dico.add_last result;
-    };
-    result
-  );
-  
-  - to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  (     
-    TYPE_BLOCK.get Self with p
-  );
-  
-  - append_in buffer:STRING <-
-  ( + typ_mul:ITM_TYPE_MULTI;
-    buffer.add_last '{';
-    (type_argument != NULL).if {
-      type_argument.append_in buffer;
-      buffer.add_last ';';
-      buffer.add_last ' ';
-    };    
-    (type_result != NULL).if {
-      typ_mul ?= type_result;
-      (typ_mul = NULL).if {
-	type_result.append_in buffer;
-      } else {
-	typ_mul.display_raw buffer;
-      };
-    };
-    buffer.add_last '}';
-  );
-  
-  - shorter_in buf:STRING <-
-  ( + typ_mul:ITM_TYPE_MULTI;
-    put "{" to buf like (ALIAS_STR.short_block);
-    (type_argument != NULL).if {
-      type_argument.shorter_in buf;
-      buf.add_last ';';
-      buf.add_last ' ';
-    };    
-    (type_result != NULL).if {
-      typ_mul ?= type_result;
-      (typ_mul = NULL).if {
-	type_result.shorter_in buf;
-      } else {
-	typ_mul.shorter_raw_in buf;
-      };
-    };
-    put "}" to buf like (ALIAS_STR.short_block);
-  );
-  
-  //
-  // Cast.
-  //
-  
-  - append_cast_name_in buf:STRING <- 
-  (
-    crash_with_message "ITM_TYPE_BLOCK.append_cast_name_in ";
-  );
\ No newline at end of file
diff --git a/src/item/itm_type_generic.li b/src/item/itm_type_generic.li
deleted file mode 100644
index b1b0d3e..0000000
--- a/src/item/itm_type_generic.li
+++ /dev/null
@@ -1,150 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE_GENERIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Generic style type";
-  
-Section Inherit
-  
-  + parent_itm_type_style:Expanded ITM_TYPE_STYLE;
-  
-Section Private
-  
-  - dico:FAST_ARRAY[ITM_TYPE_GENERIC] := FAST_ARRAY[ITM_TYPE_GENERIC].create_with_capacity 32;
-
-  - create n:STRING_CONSTANT style s:STRING_CONSTANT with lt:FAST_ARRAY[ITM_TYPE_MONO] :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make n style s with lt;
-    result
-  );
-  
-  - make n:STRING_CONSTANT style s:STRING_CONSTANT with lt:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    name      := n;
-    style     := s;
-    list_type := lt;
-  );
- 
-Section Public
-  
-  - hash_code:INTEGER <- name.hash_code; 
-
-  + list_type:FAST_ARRAY[ITM_TYPE_MONO];
-  
-  - get n:STRING_CONSTANT style s:STRING_CONSTANT 
-  with lt:FAST_ARRAY[ITM_TYPE_MONO] :SELF <-
-  ( + result:SELF;
-    + idx:INTEGER;
-    
-    idx := dico.lower;
-    {
-      (idx <= dico.upper) && {
-	(dico.item idx.name      != n ) || 
-	{dico.item idx.style     != s } || 
-	{dico.item idx.list_type != lt}
-      }
-    }.while_do {
-      idx := idx + 1;
-    };    
-    (idx <= dico.upper).if {
-      result ?= dico.item idx;
-    } else {
-      result := create n style s with lt;
-      dico.add_last result;
-    };
-    result
-  );
-  
-  - to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  ( + lst:FAST_ARRAY[TYPE_FULL];
-    + t:TYPE_FULL;
-    + j:INTEGER;    
-    + result:TYPE_FULL;
-    
-    lst := ALIAS_ARRAY[TYPE_FULL].new;
-    j := list_type.lower;    
-    {
-      t := list_type.item j.to_run_for p;                  
-      lst.add_last t;
-      j := j + 1;
-    }.do_while {(j <= list_type.upper) && {t != NULL}};
-    (t = NULL).if {
-      ALIAS_ARRAY[TYPE_FULL].free lst;
-    } else {            
-      lst := ALIAS_ARRAY[TYPE_FULL].alias lst;      
-      result := TYPE_GENERIC.get Self with lst;
-    };
-    result
-  );
-  
-  - append_in buffer:STRING <-
-  (
-    (style != NULL).if {
-      buffer.append style;
-      buffer.add_last ' ';
-    };
-    buffer.append name;
-    buffer.add_last '(';
-    (list_type.lower).to (list_type.upper - 1) do { j:INTEGER;
-      list_type.item j.append_in buffer;
-      buffer.add_last ',';
-    };
-    list_type.last.append_in buffer;
-    buffer.add_last ')';
-  );
-  
-  - shorter_in buf:STRING <-
-  (
-    (style != NULL).if {
-      put style to buf like (ALIAS_STR.short_keyword);
-      buf.add_last ' ';
-    };
-    put name to buf like (ALIAS_STR.short_prototype);
-    buf.add_last '(';
-    (list_type.lower).to (list_type.upper - 1) do { j:INTEGER;
-      list_type.item j.shorter_in buf;
-      buf.add_last ',';
-    };
-    list_type.last.shorter_in buf;
-    buf.add_last ')';
-  );
-  
-  //
-  // Cast.
-  //
-  
-  - append_cast_name_in buf:STRING <- 
-  (
-    parent_itm_type_style.append_cast_name_in buf;
-    buf.append "_of_";
-    (list_type.lower).to (list_type.upper - 1) do { j:INTEGER;
-      list_type.item j.append_cast_name_in buf;
-      buf.append "_and_";
-    };
-    list_type.last.append_cast_name_in buf;
-  );
\ No newline at end of file
diff --git a/src/item/itm_type_generic_elt.li b/src/item/itm_type_generic_elt.li
deleted file mode 100644
index 75abb10..0000000
--- a/src/item/itm_type_generic_elt.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ITM_TYPE_GENERIC_ELT;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Virtual element for generic style type";
-  
-Section Inherit
-  
-  + parent_itm_type:Expanded ITM_TYPE_MONO;
-  
-Section Private
-  
-  - list:FAST_ARRAY[ITM_TYPE_GENERIC_ELT] := 
-  // 'A' to 'Z'
-  ( + result:FAST_ARRAY[ITM_TYPE_GENERIC_ELT];
-    
-    result := FAST_ARRAY[ITM_TYPE_GENERIC_ELT].create_with_capacity 26; 
-    'A'.to 'Z' do { c:CHARACTER;
-      result.add_last (create c);
-    };
-    result
-  );
-  
-  - create idf:CHARACTER :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make idf;
-    result
-  );
-  
-  - make idf:CHARACTER <-
-  (
-    index := idf -! 'A';    
-  );
-
-Section Public
-  
-  + index:INTEGER;
-  
-  - hash_code:INTEGER <- index;
-     
-  - get idf:CHARACTER :ITM_TYPE_GENERIC_ELT <-
-  (         
-    list.item (idf -! 'A')
-  );
-  
-  - display buffer:STRING <-
-  (
-    buffer.append "Generic[";
-    buffer.add_last ('A' +# index);    
-    buffer.add_last ']';
-  );
-  
-  - shorter_in buf:STRING <-
-  (
-    string_tmp.clear;
-    string_tmp.add_last ('A' +# index);    
-    put string_tmp to buf like (ALIAS_STR.short_keyprototype);
-  );    
-  
-  - string_tmp:STRING := STRING.create 100;
-  
-  - to_run:TYPE_FULL <-
-  ( + type_generic:TYPE_GENERIC;
-    + result:TYPE_FULL;
-    + t:CHARACTER;
-    
-    t := 'A' +# index;
-    type_generic ?= ITM_TYPE_SELF.self_up;        
-    (type_generic != NULL).if {
-      result := type_generic.generic_to_type t;
-    };
-    (result = NULL).if {
-      string_tmp.copy "Type parameter `";
-      string_tmp.add_last t;
-      string_tmp.append "' is not define.";
-      semantic_error (ITM_TYPE_SELF.to_run.prototype.position,string_tmp);
-    };
-    result
-  );
-
-  //
-  // Cast.
-  //
-  
-  - append_cast_name_in buf:STRING <- 
-  (
-    buf.add_last ('a' +# index);
-  );
\ No newline at end of file
diff --git a/src/item/itm_type_mono.li b/src/item/itm_type_mono.li
deleted file mode 100644
index 3d0401a..0000000
--- a/src/item/itm_type_mono.li
+++ /dev/null
@@ -1,69 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE_MONO;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type simple";
-  
-Section Inherit
-  
-  + parent_itm_type:Expanded ITM_TYPE;
-  
-Section Public
-  
-  - hash_code:INTEGER <- 
-  (
-    deferred;
-    0
-  );
-        
-  //
-  // Runnable.
-  //
-
-  - to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  (        
-    deferred;
-    NULL
-  );
-  
-  - to_run_in lst:FAST_ARRAY[TYPE_FULL] for p:PARAMETER_TO_TYPE <-
-  (
-    lst.add_last (to_run_for p);
-  );
-  
-  - get_expr_for p:PARAMETER_TO_TYPE :EXPR <-
-  ( + t:TYPE_FULL;
-        
-    t := to_run_for p;        
-    t.get_temporary_expr (p.position)
-  );  
-  
-  //
-  // Cast.
-  //
-  
-  - append_cast_name_in buf:STRING <- deferred;
\ No newline at end of file
diff --git a/src/item/itm_type_multi.li b/src/item/itm_type_multi.li
deleted file mode 100644
index ab8d8a2..0000000
--- a/src/item/itm_type_multi.li
+++ /dev/null
@@ -1,153 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE_MULTI;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "List of type";
-  
-Section Inherit
-  
-  + parent_itm_type:Expanded ITM_TYPE;
-  
-Section Private
-  
-  - dico:FAST_ARRAY[ITM_TYPE_MULTI] := FAST_ARRAY[ITM_TYPE_MULTI].create_with_capacity 32;
-
-  - create lt:FAST_ARRAY[ITM_TYPE_MONO] :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make lt;
-    result
-  );
-  
-  - make lt:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    list_type := lt;
-  );
- 
-Section Public
-  
-  + list_type:FAST_ARRAY[ITM_TYPE_MONO];
-  
-  - count:INTEGER <- list_type.count;
-  
-  - lower:INTEGER <- list_type.lower;
-  
-  - upper:INTEGER <- list_type.upper;
-  
-  - item i:INTEGER :ITM_TYPE_MONO <-
-  (
-    list_type.item i
-  );
-  
-  - last:ITM_TYPE_MONO <-
-  (
-    list_type.last
-  );
-
-  - first:ITM_TYPE_MONO <-
-  (
-    list_type.first
-  );
-  
-  - get lt:FAST_ARRAY[ITM_TYPE_MONO] :SELF <-
-  ( + result:SELF;
-    + idx:INTEGER;
-    
-    idx := dico.lower;
-    {(idx <= dico.upper) && {dico.item idx.list_type != lt}}.while_do {
-      idx := idx + 1;
-    };    
-    (idx <= dico.upper).if {
-      result ?= dico.item idx;
-    } else {
-      result := create lt;
-      dico.add_last result;
-    };
-    result
-  );
-  
-  //
-  // Runnable.
-  //
-  
-  - get_expr_for p:PARAMETER_TO_TYPE :EXPR <-
-  ( + lst:FAST_ARRAY[EXPR];
-    + t:TYPE_FULL;
-    
-    lst := FAST_ARRAY[EXPR].create_with_capacity count;
-    lower.to upper do { i:INTEGER;
-      t := item i.to_run_for p;
-      lst.add_last (t.get_temporary_expr (p.position));
-    };
-    EXPR_MULTIPLE.create lst
-  );
-  
-  - to_run_in lst:FAST_ARRAY[TYPE_FULL] for p:PARAMETER_TO_TYPE <-
-  ( + t:TYPE_FULL;
-    
-    lower.to upper do { i:INTEGER;
-      t := item i.to_run_for p;
-      lst.add_last t;
-    };
-  );
-  
-  //
-  // Display.
-  //  
-  
-  - append_in buffer:STRING <-
-  (    
-    buffer.add_last '(';
-    display_raw buffer;
-    buffer.add_last ')';
-  );
-  
-  - shorter_in buf:STRING <-
-  (
-    buf.add_last '(';
-    shorter_raw_in buf;
-    buf.add_last ')';
-  );
-    
-  - display_raw buffer:STRING <-
-  (    
-    (list_type.lower).to (list_type.upper - 1) do { j:INTEGER;
-      list_type.item j.append_in buffer;
-      buffer.add_last ',';
-    };
-    list_type.last.append_in buffer;
-  );
-  
-  - shorter_raw_in buf:STRING <-
-  (    
-    (list_type.lower).to (list_type.upper - 1) do { j:INTEGER;
-      list_type.item j.shorter_in buf;
-      buf.add_last ',';
-    };
-    list_type.last.shorter_in buf;
-  );
diff --git a/src/item/itm_type_parameter.li b/src/item/itm_type_parameter.li
deleted file mode 100644
index 5e4c0c5..0000000
--- a/src/item/itm_type_parameter.li
+++ /dev/null
@@ -1,54 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ITM_TYPE_PARAMETER;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Parameter type for argument define.";
- 
-Section Inherit
-  
-  + parent_itm_type:Expanded ITM_TYPE_SIMPLE;
-  
-Section Public
-  
-  - to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  ( + result:TYPE_FULL;
-        
-    result := p.parameter_to_type Self;    
-    result
-  );
-  
-  //  
-  // Display.
-  //
-  
-  - shorter_in buf:STRING <-
-  (
-    (style != NULL).if {
-      put style to buf like (ALIAS_STR.short_keyword);
-      buf.add_last ' ';
-    };    
-    put name to buf like (ALIAS_STR.short_keyprototype);
-  );
diff --git a/src/item/itm_type_self.li b/src/item/itm_type_self.li
deleted file mode 100644
index 233a6cb..0000000
--- a/src/item/itm_type_self.li
+++ /dev/null
@@ -1,85 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE_SELF;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type Self";
-  
-Section Inherit
-  
-  + parent_itm_type_simple:Expanded ITM_TYPE_SIMPLE;
-  
-Section ITM_TYPE_SIMPLE
-  
-  - make <-
-  (
-    name   := ALIAS_STR.prototype_self;
-  );
-  
-Section Public
-  
-  - run_value:TYPE_FULL;
-  
-  - is_self:BOOLEAN <- TRUE;
-  
-  - to_run:TYPE_FULL <-
-  ( 
-    (run_value = NULL).if {
-      ANY.semantic_error (ANY.last_position,"SELF type result for data slot is not possible.");
-    };
-    run_value
-  );
-        
-  //
-  // Self_up
-  //
-  
-  - self_up:TYPE;
-  
-Section NODE, SLOT  
-
-  - set_run t:TYPE_FULL <-
-  (    
-    run_value := t;
-  );
-  
-Section SLOT, TYPE_FULL
-  
-  - set_self_up t:TYPE <-
-  (
-    self_up := t;
-  );
-  
-Section SLOT_DATA
-  
-  - set_run t1:TYPE_FULL self_up t2:TYPE <-
-  (
-    run_value := t1;
-    self_up   := t2;
-  );
-
-  
-  
\ No newline at end of file
diff --git a/src/item/itm_type_simple.li b/src/item/itm_type_simple.li
deleted file mode 100644
index e257b28..0000000
--- a/src/item/itm_type_simple.li
+++ /dev/null
@@ -1,123 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ITM_TYPE_SIMPLE;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Simple type";
-  
-Section Inherit
-  
-  + parent_itm_type_mono:Expanded ITM_TYPE_MONO;
-  
-Section ITM_TYPE_SIMPLE, ITM_TYPE_SELF
-  
-  - dico:HASHED_DICTIONARY[ITM_TYPE_SIMPLE,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[ITM_TYPE_SIMPLE,STRING_CONSTANT].create;
-
-Section ITM_TYPE_SIMPLE
-  
-  - create n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make n;
-    result
-  );
-  
-  - make n:STRING_CONSTANT <-
-  (
-    name := n;
-    dico.fast_put Self to n;
-  );
-  
-Section Public
-  
-  - type_null:ITM_TYPE_SIMPLE := ITM_TYPE_SIMPLE.get (ALIAS_STR.variable_null);
-  - type_void:ITM_TYPE_SIMPLE := ITM_TYPE_SIMPLE.get (ALIAS_STR.variable_void);
-  - type_self:ITM_TYPE_SIMPLE := ITM_TYPE_PARAMETER.create (ALIAS_STR.prototype_self);
-  
-  - hash_code:INTEGER <- name.hash_code;
-  
-  + name:STRING_CONSTANT;
-  
-  - style:STRING_CONSTANT; // NULL
-  
-  - get n:STRING_CONSTANT :ITM_TYPE_SIMPLE <-
-  [
-    -? {n != NULL};    
-  ]
-  ( + result:ITM_TYPE_SIMPLE;
-        
-    result := dico.fast_reference_at n;    
-    (result = NULL).if {
-      result := create n;      
-    };            
-    result
-  );
-  
-  + to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  ( + result:TYPE_FULL;   
-    
-    (Self = type_null).if {
-      result := TYPE_NULL.default;
-    }.elseif {Self = type_void} then {
-      result := TYPE_VOID.default;
-    } else {
-      result := TYPE.get Self;
-    };
-    /*to_run_for :=*/ result  // BSBS: A tester pour les perfs.
-  );
-  
-  - append_in buffer:STRING <-
-  (
-    (style != NULL).if {
-      buffer.append style;
-      buffer.add_last ' ';
-    };
-    buffer.append name;
-  );
-  
-  - shorter_in buf:STRING <-
-  (
-    (style != NULL).if {
-      put style to buf like (ALIAS_STR.short_keyword);
-      buf.add_last ' ';
-    };
-    put name to buf like (ALIAS_STR.short_prototype);
-  );
-  
-  //
-  // Cast.
-  //
-  
-  - append_cast_name_in buf:STRING <- 
-  (
-    (name.lower).to (name.upper) do { j:INTEGER;
-      buf.add_last (name.item j.to_lower);
-    };
-  );
-    
-  
\ No newline at end of file
diff --git a/src/item/itm_type_style.li b/src/item/itm_type_style.li
deleted file mode 100644
index 033df12..0000000
--- a/src/item/itm_type_style.li
+++ /dev/null
@@ -1,79 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_TYPE_STYLE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type with style";
-  
-Section Inherit
-  
-  + parent_itm_type_simple:Expanded ITM_TYPE_SIMPLE;
-  
-Section Private 
-  
-  - dico:FAST_ARRAY[ITM_TYPE_STYLE] := FAST_ARRAY[ITM_TYPE_STYLE].create_with_capacity 32;
-  
-  - create n:STRING_CONSTANT style s:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make n style s;
-    result
-  );
-  
-  - make n:STRING_CONSTANT style s:STRING_CONSTANT <-
-  (
-    name  := n;
-    style := s;
-  );
-  
-Section Public  
-  
-  + style:STRING_CONSTANT;
-  
-  - get n:STRING_CONSTANT style s:STRING_CONSTANT :SELF <-
-  ( + result:SELF; 
-    + idx:INTEGER;
-    
-    idx := dico.lower;
-    {
-      (idx <= dico.upper) && {
-	(dico.item idx.name  != n) || 
-	{dico.item idx.style != s}
-      }
-    }.while_do {
-      idx := idx + 1;
-    };
-    (idx <= dico.upper).if {
-      result ?= dico.item idx;
-    } else {
-      result := create n style s;
-      dico.add_last result;
-    };
-    result
-  );
-  
-
diff --git a/src/item/itm_write.li b/src/item/itm_write.li
deleted file mode 100644
index 0f22f2d..0000000
--- a/src/item/itm_write.li
+++ /dev/null
@@ -1,197 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_WRITE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all write";
-  
-Section Inherit
-  
-  + parent_itm_code:Expanded ITM_CODE;
-  
-Section Public
-
-  //
-  // Data
-  //
-
-  + assign:ITM_CODE;
-
-  + value:ITM_CODE;
-  
-  - type:STRING_CONSTANT <-
-  (
-    deferred;
-    NULL
-  );
-  
-  //
-  // Constructor
-  //
-  
-  - create p:POSITION assign n:ITM_CODE with v:ITM_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p assign n with v;
-    result
-  );
-  
-  - make p:POSITION assign n:ITM_CODE with v:ITM_CODE <-
-  (
-    position := p;
-    assign   := n;
-    value    := v;
-  );
-
-  //
-  // Access.
-  //
-  
-  - get_simple_name:STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    + without_arg:ITM_READ;
-    
-    without_arg ?= assign;
-    (without_arg != NULL).if {
-      result := without_arg.name;
-    } else {
-      semantic_error (position,"ITM_WRITE: Not yet implemented.");
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buffer:STRING <-
-  (
-    assign.append_in buffer;
-    buffer.append type;
-    value.append_in buffer;
-  );
-  
-Section Private
-  
-  - affect name:STRING_CONSTANT with v:EXPR :EXPR <-
-  ( + loc:LOCAL;    
-    + result:EXPR;    
-    
-    loc := lookup name;
-    (loc != NULL).if {
-      result := affect_local loc with v;
-    } else {
-      result := affect_slot name with v;
-    };
-    result
-  );
-
-  - affect_local loc:LOCAL with v:EXPR :EXPR <-
-  ( + e:INSTR;    
-    + result:EXPR;    
-    + val:EXPR;
-            
-    (loc.style = '-').if {
-      result := affect_slot (loc.intern_name) with v;
-    } else {
-      (loc.style = ' ').if {
-	POSITION.put_error semantic text "Argument assignment is not possible.";
-	loc.position.put_position;
-	position.put_position;
-	POSITION.send_error;  
-      };
-      val := v.check_type (loc.type) with position;
-      e := loc.write position value val; 
-      list_current.add_last e;	
-      result := loc.read position;
-    };
-    result
-  );
-
-  - affect_slot name:STRING_CONSTANT with v:EXPR :EXPR <-
-  ( + loc:VARIABLE;
-    + slot:SLOT;
-    + slot_dta:SLOT_DATA;
-    + node:NODE;
-    + result:EXPR;
-    + rec:EXPR;
-    + type:TYPE;
-    + em:EXPR_MULTIPLE;
-    + new_val:EXPR;
-    + lst:FAST_ARRAY[EXPR];
-    
-    loc := lookup (ALIAS_STR.variable_self);
-    rec := loc.read position;
-    //
-    type := rec.static_type.raw;    
-    slot := type.get_slot name; 
-    (slot = NULL).if {
-      string_tmp.copy "Slot `";
-      string_tmp.append name;
-      string_tmp.append "' not found in static type ";
-      string_tmp.append (type.intern_name);
-      string_tmp.add_last '.';
-      semantic_error (position,string_tmp);
-    };
-    // Control type.
-    em ?= v;
-    slot_dta := slot.slot_data;
-    (em != NULL).if {
-      lst := em.expr_list;
-      (lst.lower).to (lst.upper - 1) do { j:INTEGER;
-	new_val := check (lst.item j) with (slot.slot_data_list.item j.type) and (slot.position);
-	lst.put new_val to j;
-      };
-      new_val := check (lst.last) with (slot_dta.type) and (slot.position);
-      lst.put new_val to (lst.upper);
-      new_val := em;
-    } else {
-      new_val := check v with (slot_dta.type) and (slot.position);
-    };
-    //
-    node := NODE.new_write position slot slot receiver rec value new_val;
-    list_current.add_last node;
-    result := node.result_expr;
-    result
-  );
-  
-  - check v:EXPR with t:TYPE_FULL and p:POSITION :EXPR <-
-  ( + block:PROFIL_BLOCK;
-    
-    block ?= v.static_type.raw;
-    ((block != NULL) && {block.is_context_sensitive}).if {
-      string_tmp.copy "This block is extern context sensitive (with `";
-      string_tmp.append (block.context_extern.name);
-      string_tmp.append "' local variable).";
-      POSITION.put_error semantic text string_tmp;
-      block.code.position.put_position;
-      p.put_position;
-      block.context_extern.position.put_position;
-      POSITION.send_error;
-    };
-    v.check_type t with p
-  );
-  
diff --git a/src/item/itm_write_cast.li b/src/item/itm_write_cast.li
deleted file mode 100644
index 80e3995..0000000
--- a/src/item/itm_write_cast.li
+++ /dev/null
@@ -1,89 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_WRITE_CAST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Assignment slot `?=' style";
-  
-Section Inherit
-  
-  + parent_itm_write:Expanded ITM_WRITE;
-  
-Section Public
-
-  - type:STRING_CONSTANT <- "?=";
-
-  //
-  // Runnable 
-  //
-
-  - to_run_expr:EXPR <-
-  ( + val:EXPR;
-    + loc:LOCAL;
-    + node:NODE; 
-    + nm:STRING_CONSTANT;
-    + typ_cast:TYPE_FULL;
-    + slot:SLOT;
-    + ts:ITM_TYPE_SIMPLE;
-    
-    // Value -> local.
-    val := value.to_run_expr;
-    loc := val.static_type.get_temporary position;    
-    list_current.add_last (loc.write position value val);
-    val := loc.read position;
-    // Assign.
-    nm  := get_simple_name;
-    loc := lookup nm;
-    (loc != NULL).if {
-      typ_cast := loc.type;
-    } else {
-      slot := profil_slot.type_self.get_slot nm; 
-      (slot = NULL).if {
-	string_tmp.copy "Slot `";
-	string_tmp.append nm;
-	string_tmp.append "' not found in static type ";
-	profil_slot.type_self.append_name_in string_tmp;
-	string_tmp.add_last '.';
-	semantic_error (position,string_tmp);
-      };
-      ts ?= slot.result_type;
-      typ_cast := ts.to_run_for profil_slot; 
-    };
-    (verify).if {
-      (typ_cast.affect_with (val.static_type)).if {
-	warning_error (position,"`?=' is not necessary, use `:='.");
-      };
-    };
-    // Dispatch case.
-    node := NODE.new_cast position type typ_cast with val;
-    list_current.add_last node;    
-    // Assignment result.
-    affect nm with (node.result_expr);
-    // Value result.
-    assign.to_run_expr
-  );
-
-
diff --git a/src/item/itm_write_code.li b/src/item/itm_write_code.li
deleted file mode 100644
index 908b204..0000000
--- a/src/item/itm_write_code.li
+++ /dev/null
@@ -1,80 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_WRITE_CODE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Assignment slot with new code";
-  
-Section Inherit
-  
-  + parent_itm_write:Expanded ITM_WRITE;
-  
-Section Public
-
-  - type:STRING_CONSTANT <- "<-";
-
-  //
-  // Runnable 
-  //
-
-  - to_run_expr:EXPR <-
-  ( + itm_read:ITM_READ;
-    + loc:LOCAL;
-    + rec:EXPR;
-    + node:NODE;
-    + result:EXPR;
-    + type:TYPE_FULL;
-    + slot:SLOT;
-    + name:STRING_CONSTANT;
-        
-    itm_read ?= assign;
-    name := itm_read.name;
-    ? {itm_read != NULL};  
-    loc := lookup (ALIAS_STR.variable_self);
-    rec := loc.read position;
-    //
-    type     := rec.static_type;    
-    slot     := type.get_slot name; 
-    (slot = NULL).if {
-      string_tmp.copy "Slot `";
-      string_tmp.append name;
-      string_tmp.append "' not found in static type ";
-      type.append_name_in string_tmp;
-      string_tmp.add_last '.';
-      semantic_error (position,string_tmp);
-    };
-    //
-    node := NODE.new_write position slot slot receiver rec code value;
-    list_current.add_last node;
-    result := node.result_expr;
-    
-    result
-  );
-
-  
-
-
-
diff --git a/src/item/itm_write_value.li b/src/item/itm_write_value.li
deleted file mode 100644
index 84eb204..0000000
--- a/src/item/itm_write_value.li
+++ /dev/null
@@ -1,134 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ITM_WRITE_VALUE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Write with a value";
-  
-Section Inherit
-  
-  + parent_itm_write:Expanded ITM_WRITE;
-  
-Section Public
-
-  - type:STRING_CONSTANT <- ":=";
-
-  //
-  // Runnable 
-  //
-
-  - to_run_expr:EXPR <-
-  ( + ass_multiple:ITM_LIST_IDF;
-    + val:EXPR;
-    + val_multiple:EXPR_MULTIPLE;
-    + j:INTEGER;
-    + lst_idf:FAST_ARRAY[STRING_CONSTANT];
-    + itm_read:ITM_READ;
-    + lst_exp:FAST_ARRAY[EXPR];
-    + result:EXPR;
-        
-    val := value.to_run_expr;
-            
-    val_multiple ?= val;        
-    (val_multiple != NULL).if {
-      //
-      // Assignment Vector.      
-      //
-      lst_exp := FAST_ARRAY[EXPR].create_with_capacity (val_multiple.count);
-      ass_multiple ?= assign;
-      (ass_multiple != NULL).if {	
-	lst_idf := ass_multiple.list_name;
-	(lst_idf.lower).to (lst_idf.upper-1) do { i:INTEGER;
-	  j := affect (lst_idf.item i) with val_multiple index j in lst_exp;
-	};	
-	j := affect (lst_idf.last) with val_multiple index j in lst_exp;	
-      } else {
-	itm_read ?= assign;
-	? {itm_read != NULL};
-	j := affect (itm_read.name) with val_multiple index j in lst_exp;	
-      };
-      (j <= val_multiple.upper).if {
-	semantic_error (position,"Incorrect size vector.");
-      };
-      result := EXPR_MULTIPLE.create lst_exp;
-    } else {
-      //
-      // Assignment simple.
-      //      
-      itm_read ?= assign;      
-      ? {itm_read != NULL};      
-      result := affect (itm_read.name) with val;
-    };
-    result
-  );
-
-Section Private
-  
-  - affect idf:STRING_CONSTANT with val:EXPR_MULTIPLE 
-  index n:INTEGER in lst:FAST_ARRAY[EXPR] :INTEGER <-
-  ( + loc:LOCAL;
-    + result:INTEGER;
-    + slot:SLOT;
-    + typ_multi:ITM_TYPE_MULTI;
-    + lst_expr:FAST_ARRAY[EXPR];
-    
-    (n > val.upper).if {
-      semantic_error (position,"Incorrect size vector.");
-    };
-    
-    loc := lookup idf;
-    (loc != NULL).if {      
-      lst.add_last (affect_local loc with (val.item n));
-      result := n + 1;
-    } else {
-      slot := profil_slot.type_self.get_slot idf;
-      (slot = NULL).if {
-	string_tmp.copy "Slot `";
-	string_tmp.append idf;
-	string_tmp.append "' not found in static type ";
-	profil_slot.type_self.append_name_in string_tmp;
-	string_tmp.add_last '.';
-	semantic_error (position,string_tmp);
-      };
-      typ_multi ?= slot.result_type;
-      (typ_multi != NULL).if {
-	result := n + typ_multi.count;
-	(result > val.count).if {
-	  semantic_error (position,"Incorrect size vector.");
-	};
-	//BSBS: Recycle les EXPR_MULTIPLE
-	lst_expr := FAST_ARRAY[EXPR].create_with_capacity (typ_multi.count);	
-	0.to (typ_multi.upper) do { i:INTEGER;
-	  lst_expr.add_last (val.item (n+i));
-	};	
-	lst.add_last (affect_slot idf with (EXPR_MULTIPLE.create lst_expr));
-      } else {
-	lst.add_last (affect_slot idf with (val.item n));
-	result := n + 1;
-      };
-    };
-    result
-  );
\ No newline at end of file
diff --git a/src/item/old/itm_type_self.li b/src/item/old/itm_type_self.li
deleted file mode 100644
index 78cb998..0000000
--- a/src/item/old/itm_type_self.li
+++ /dev/null
@@ -1,47 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ITM_TYPE_SELF;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Type Self";
-  
-Section Inherit
-  
-  + parent_itm_type_simple:Expanded ITM_TYPE_SIMPLE;
-  
-Section Public
-  
-  // BSBS: Voir si il est encore necessaire avec ITM_TYPE_PARAMETER
-  
-  - name:STRING_CONSTANT <- ALIAS_STR.prototype_self;
-  
-  - to_run:TYPE_FULL <-
-  (
-    not_yet_implemented;
-    NULL
-  );
-
-  
-  
\ No newline at end of file
diff --git a/src/lip/lip_affect.li b/src/lip/lip_affect.li
deleted file mode 100644
index 85595ae..0000000
--- a/src/lip/lip_affect.li
+++ /dev/null
@@ -1,78 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_AFFECT;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + value:LIP_CODE;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION name n:STRING_CONSTANT value val:LIP_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n value val;
-    result
-  );
-
-  - make p:POSITION name n:STRING_CONSTANT value val:LIP_CODE <-
-  ( 
-    position := p;
-    name := n;
-    value := val;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run <-
-  ( + slot:LIP_SLOT_DATA;
-    + val:LIP_CONSTANT;
-    
-    slot := get_data name;
-    (slot = NULL).if {
-      string_tmp.copy "Slot `";
-      string_tmp.append name;
-      string_tmp.append "' not found.";
-      semantic_error (position,string_tmp);
-    };
-    val := value.run_expr;
-    (slot.set_value val).if_false {
-      semantic_error (position,"Incorrect type.");
-    };
-    val.free;
-  );
\ No newline at end of file
diff --git a/src/lip/lip_binary.li b/src/lip/lip_binary.li
deleted file mode 100644
index 801f3b8..0000000
--- a/src/lip/lip_binary.li
+++ /dev/null
@@ -1,86 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_BINARY;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + left:LIP_CODE;
-  
-  + right:LIP_CODE;
-  
-  + operator:CHARACTER;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION with l:LIP_CODE operator op:CHARACTER and r:LIP_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p with l operator op and r;
-    result
-  );
-
-  - make p:POSITION  with l:LIP_CODE operator op:CHARACTER and r:LIP_CODE<-
-  ( 
-    position := p;
-    left := l;
-    right := r;
-    operator := op;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run_expr:LIP_CONSTANT <-
-  ( + result:LIP_CONSTANT;
-    + lv,rv:LIP_CONSTANT;
-    
-    lv := left.run_expr;
-    rv := right.run_expr;    
-    (operator)
-    .when '|' then { result := lv |   rv; }
-    .when '&' then { result := lv &   rv; }
-    .when '=' then { result := lv ==  rv; }
-    .when 'E' then { result := lv !== rv; }
-    .when '>' then { result := lv >   rv; }
-    .when '<' then { result := lv <   rv; }
-    .when 'S' then { result := lv >=  rv; }
-    .when 'I' then { result := lv <=  rv; }
-    .when '+' then { result := lv +   rv; }
-    .when '-' then { result := lv -   rv; };
-    (result = NULL).if {
-      semantic_error (position,"Incorrect type.");      
-    };
-    result    
-  );
diff --git a/src/lip/lip_boolean.li b/src/lip/lip_boolean.li
deleted file mode 100644
index 579780f..0000000
--- a/src/lip/lip_boolean.li
+++ /dev/null
@@ -1,108 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_BOOLEAN;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_constant:Expanded LIP_CONSTANT;
-  
-Section Private
-  
-  - true:LIP_BOOLEAN := 
-  ( + result:LIP_BOOLEAN;
-    result := clone;
-    result.set_value TRUE;
-    result
-  );
-  
-  - false:LIP_BOOLEAN := LIP_BOOLEAN;
-  
-  - set_value i:BOOLEAN <-
-  (
-    value := i;
-  );
-  
-Section Public
-
-  + value:BOOLEAN;
-  
-  //
-  // Creation.
-  //
-  
-  - get b:BOOLEAN :LIP_BOOLEAN <-
-  ( + result:LIP_BOOLEAN;
-    b.if {
-      result := true;
-    } else {
-      result := false;
-    };
-    result
-  );
-  
-  - free; // Nothing.
-  
-  //
-  // Operation.
-  //
-  
-  - name:STRING_CONSTANT <- "BOOLEAN";
-  
-  - '!' :LIP_CONSTANT <- get (! value);
-  
-  - copy:LIP_CONSTANT <- Self;
-  
-  - print <-
-  (
-    value.print;
-  );
-
-Section LIP_CONSTANT
-  
-  - my_copy other:SELF :LIP_CONSTANT <- other;
-           
-  - '|#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    get (value | other.value)
-  );
-  
-  - '&#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    get (value & other.value)
-  );
-      
-  - '=#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    get (value = other.value)
-  );
-  
-  - '!=#' other:SELF :LIP_CONSTANT <- 
-  ( 
-    get (value != other.value)
-  );
-  
\ No newline at end of file
diff --git a/src/lip/lip_call.li b/src/lip/lip_call.li
deleted file mode 100644
index 152e8d7..0000000
--- a/src/lip/lip_call.li
+++ /dev/null
@@ -1,190 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_CALL;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + argument:LIP_CODE;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION name n:STRING_CONSTANT with arg:LIP_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p name n with arg;
-    result
-  );
-
-  - make p:POSITION name n:STRING_CONSTANT with arg:LIP_CODE <-
-  [
-    -? {p.code != 0};
-  ]
-  ( 
-    position := p;
-    name := n;
-    argument := arg;
-  );
-
-  //
-  // Run.
-  //
-  
-  - run <-
-  ( + slot:LIP_SLOT_CODE;
-    + val:LIP_CONSTANT;
-    + str:LIP_STRING;    
-    + path:STRING_CONSTANT;
-    + is_rec:BOOLEAN;
-    
-    (argument != NULL).if {
-      val := argument.run_expr;    
-    };    
-    (name = ALIAS_STR.slot_exit).if {
-      (val != NULL).if {
-        warning_error (position,"No argument for `exit' method.");
-      };
-      die_with_code exit_failure_code;      
-    }.elseif {name = ALIAS_STR.slot_path} then {
-      str ?= val;
-      (str = NULL).if {
-        semantic_error (position,"String argument needed.");
-      };
-      path := str.value;
-      (path.last = '*').if {
-        string_tmp.copy path; 
-        string_tmp.remove_last 1;        
-        path := ALIAS_STR.get string_tmp;
-        is_rec := TRUE;
-      };        
-      load_directory path is_recursive is_rec;
-    }.elseif {name = ALIAS_STR.slot_run} then {
-      str ?= val;
-      (str = NULL).if {
-        semantic_error (position,"String argument needed.");
-      };      
-      string_tmp.clear;
-      str.append_in string_tmp;
-      ENVIRONMENT.execute_command string_tmp; 
-    } else {    
-      slot := get_method name;
-      (slot = NULL).if {
-        string_tmp.copy "Slot `";
-        string_tmp.append name;
-        string_tmp.append "' not found.";
-        semantic_error (position,string_tmp);
-      };
-      (slot.run_with val).if_false {
-        semantic_error (position,"Invalid argument.");
-      };
-    };
-    (val != NULL).if {
-      val.free;
-    };
-  );
-  
-  - run_expr:LIP_CONSTANT <-
-  ( + slot:LIP_SLOT_DATA;
-    + str:LIP_STRING;
-    + val:LIP_CONSTANT;
-    + result:LIP_CONSTANT;
-    + res:INTEGER;
-    
-    (argument != NULL).if {
-      val := argument.run_expr;    
-    };    
-    (name = ALIAS_STR.slot_run).if {
-      str ?= val;
-      (str = NULL).if {
-        semantic_error (position,"String argument needed.");
-      };      
-      string_tmp.clear;
-      str.append_in string_tmp;
-      res := ENVIRONMENT.execute_command string_tmp; 
-      result := LIP_INTEGER.get res;
-    }.elseif {name = ALIAS_STR.slot_get_integer} then {
-      {
-        IO.read_line;
-        (IO.last_string.is_integer).if_false {
-          "Error INTEGER needed.\n".print;
-        };
-      }.do_until {IO.last_string.is_integer};      
-      result := LIP_INTEGER.get (IO.last_string.to_integer);      
-      //IO.read_integer;
-      //result := LIP_INTEGER.get (IO.last_integer);      
-    }.elseif {name = ALIAS_STR.slot_get_string} then {
-      IO.read_line;
-      result := LIP_STRING.get (ALIAS_STR.get (IO.last_string));
-    } else {
-      slot := get_data name;
-      (slot = NULL).if {
-        slot := stack.last;
-        (slot = NULL).if {
-          string_tmp.copy "Slot `";
-          string_tmp.append name;
-          string_tmp.append "' not found.";
-          semantic_error (position,string_tmp);
-        };
-      };        
-      result := slot.get_value;
-    };
-    (val != NULL).if {
-      val.free;
-    };
-    result
-  );
-  
-  - load_directory path:ABSTRACT_STRING is_recursive is_rec:BOOLEAN <-
-  ( + entry:ENTRY;
-    + dir:DIRECTORY;
-    
-    entry := FILE_SYSTEM.get_entry path;         
-    ((entry != NULL) && {entry.is_directory} && {entry.open}).if {
-      dir ?= entry;
-      (dir.lower).to (dir.upper) do { j:INTEGER;
-        entry := dir.item j;
-        (entry.name.has_suffix ".li").if {
-          path_file.add_last (entry.path);            
-        }.elseif {(is_rec) && {entry.is_directory}} then {
-          load_directory (entry.path) is_recursive TRUE;
-        };
-      };      
-    } else {
-      string_tmp.copy "Incorrect directory `";
-      string_tmp.append path;
-      string_tmp.append "'.";
-      warning_error (position,string_tmp);
-    };
-  );
\ No newline at end of file
diff --git a/src/lip/lip_code.li b/src/lip/lip_code.li
deleted file mode 100644
index ca0a19b..0000000
--- a/src/lip/lip_code.li
+++ /dev/null
@@ -1,187 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_CODE;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-
-Section Public
-  
-  - list_parent:FAST_ARRAY[STRING_CONSTANT] := FAST_ARRAY[STRING_CONSTANT].create_with_capacity 1;
-  
-  - list_method:FAST_ARRAY[LIP_SLOT_CODE] := FAST_ARRAY[LIP_SLOT_CODE].create_with_capacity 32;  
-  
-  - list_data:HASHED_DICTIONARY[LIP_SLOT_DATA,STRING_CONSTANT] :=
-  HASHED_DICTIONARY[LIP_SLOT_DATA,STRING_CONSTANT].create;
-  
-  - stack:FAST_ARRAY[LIP_SLOT_DATA] := FAST_ARRAY[LIP_SLOT_DATA].create_with_capacity 8;
-  
-  - get_data n:STRING_CONSTANT :LIP_SLOT_DATA <-
-  (
-    list_data.fast_reference_at n
-  );
-  
-  - get_method n:STRING_CONSTANT :LIP_SLOT_CODE <-
-  ( + j:INTEGER;
-    + result:LIP_SLOT_CODE;
-    
-    j := list_method.lower;
-    {(j <= list_method.upper) && {list_method.item j.name != n}}.while_do {
-      j := j + 1;
-    };
-    (j <= list_method.upper).if {
-      result := list_method.item j;
-    };
-    result
-  );
-  
-  - print_usage <-
-  ( + slot:LIP_SLOT_CODE;
-    + is_ok:BOOLEAN;
-    
-    (list_method.lower).to (list_method.upper) do { j:INTEGER;
-      slot := list_method.item j;
-      (slot.section = ALIAS_STR.section_public).if {
-        is_ok := TRUE;
-        slot.print;
-      };
-    };
-    (is_ok).if_false {
-      "\t Sorry, no option (see `make.lip').\n".print;
-    };
-  );
-  
-  - get_integer n:STRING_CONSTANT :INTEGER <-
-  ( + d:LIP_SLOT_DATA;
-    + int:LIP_INTEGER;
-    + result:INTEGER;
-    
-    d := get_data n;
-    (d = NULL).if {
-      "Warning: Slot `".print;
-      n.print;
-      "' not found.\n".print;
-    } else {
-      int ?= d.value;
-      (int = NULL).if {
-        semantic_error (d.position,"INTEGER type is needed.");
-      };
-      result := int.value;
-    };
-    result
-  );
-  
-  - get_boolean n:STRING_CONSTANT :BOOLEAN <-
-  ( + d:LIP_SLOT_DATA;
-    + bool:LIP_BOOLEAN;
-    + result:BOOLEAN;
-    
-    d := get_data n;
-    (d = NULL).if {
-      "Warning: Slot `".print;
-      n.print;
-      "' not found.\n".print;
-    } else {
-      bool ?= d.value;
-      (bool = NULL).if {
-        semantic_error (d.position,"BOOLEAN type is needed.");
-      };
-      result := bool.value;
-    };
-    result
-  );
-  
-  - get_string n:STRING_CONSTANT :STRING_CONSTANT <-
-  ( + d:LIP_SLOT_DATA;
-    + str:LIP_STRING;
-    + result:STRING_CONSTANT;
-    
-    d := get_data n;
-    (d = NULL).if {
-      "Warning: Slot `".print;
-      n.print;
-      "' not found.\n".print;
-    } else {
-      str ?= d.value;
-      (str = NULL).if {
-        semantic_error (d.position,"STRING type is needed.");
-      };
-      result := str.value;
-    };
-    result
-  );
-  
-  - put_string v:STRING_CONSTANT to n:STRING_CONSTANT <-
-  ( + d:LIP_SLOT_DATA;
-    + str:LIP_STRING;
-    
-    d := get_data n;
-    (d = NULL).if {
-      "Warning: Slot `".print;
-      n.print;
-      "' not found.\n".print;      
-    } else {
-      str ?= d.value;
-      (str = NULL).if {
-        semantic_error (d.position,"STRING type is needed.");
-      };
-      str.set_value v;
-    };    
-  );
-  
-  - put_boolean v:BOOLEAN to n:STRING_CONSTANT <-
-  ( + d:LIP_SLOT_DATA;
-        
-    d := get_data n;
-    (d = NULL).if {
-      "Warning: Slot `".print;
-      n.print;
-      "' not found.\n".print;      
-    } else {      
-      (d.set_value (LIP_BOOLEAN.get v)).if_false {
-        semantic_error (d.position,"BOOLEAN type is needed.");
-      };      
-    };    
-  );
-   
-  //
-  // Run.
-  //
-  
-  - run <-
-  (
-    warning_error (position,"Unreachable code.");
-  );
-  
-  - run_expr:LIP_CONSTANT <-
-  (
-    semantic_error (position,"No expression result.");
-    NULL
-  );
-  
diff --git a/src/lip/lip_constant.li b/src/lip/lip_constant.li
deleted file mode 100644
index 2d840a3..0000000
--- a/src/lip/lip_constant.li
+++ /dev/null
@@ -1,184 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_CONSTANT;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-  
-  - name:STRING_CONSTANT <- ( deferred; NULL);
-  
-  - copy:LIP_CONSTANT <-
-  (
-    deferred;
-  );
-  
-  - copy_of other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := my_copy s;
-    };
-    result
-  );
-  
-  - free <- deferred;
-  
-  - '-' :LIP_CONSTANT <- NULL;
-  
-  - '!' :LIP_CONSTANT <- NULL;  
-
-  - '|'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self |# s;
-    };
-    result
-  );
-  
-  - '&'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self &# s;
-    };
-    result
-  );
-  
-  - '+'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self +# s;
-    };
-    result
-  );
-  
-  - '-'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self -# s;
-    };
-    result
-  );
-  
-  - '>'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self ># s;
-    };
-    result
-  );
-
-  - '<'  other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self <# s;
-    };
-    result
-  );
-  
-  - '=='  other:LIP_CONSTANT :LIP_CONSTANT <-
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self =# s;
-    };
-    result
-  );
-  
-  - '>=' other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self >=# s;
-    };
-    result
-  );
-  
-  - '<=' other:LIP_CONSTANT :LIP_CONSTANT <- 
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self <=# s;
-    };
-    result
-  );
-  
-  - '!==' other:LIP_CONSTANT :LIP_CONSTANT <-
-  ( + result:LIP_CONSTANT;
-    + s:SELF;
-    s ?= other;
-    (s != NULL).if {
-      result := Self !=# s;
-    };
-    result
-  );
-  
-  - print <- deferred;
-  
-Section LIP_CONSTANT
-  
-  - my_copy other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '|#'  other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '&#'  other:SELF :LIP_CONSTANT <- NULL;  
-  
-  - '+#'  other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '-#'  other:SELF :LIP_CONSTANT <- NULL;  
-  
-  - '>#'  other:SELF :LIP_CONSTANT <- NULL;
-
-  - '<#'  other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '=#'  other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '>=#' other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '<=#' other:SELF :LIP_CONSTANT <- NULL;
-  
-  - '!=#' other:SELF :LIP_CONSTANT <- NULL;
-
diff --git a/src/lip/lip_if.li b/src/lip/lip_if.li
deleted file mode 100644
index bb3e126..0000000
--- a/src/lip/lip_if.li
+++ /dev/null
@@ -1,84 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_IF;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + condition:LIP_CODE;
-  
-  + then:FAST_ARRAY[LIP_CODE];
-  
-  + else:FAST_ARRAY[LIP_CODE];
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION if rec:LIP_CODE then the:FAST_ARRAY[LIP_CODE] 
-  else els:FAST_ARRAY[LIP_CODE] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p if rec then the else els;
-    result
-  );
-
-  - make p:POSITION if rec:LIP_CODE then the:FAST_ARRAY[LIP_CODE] 
-  else els:FAST_ARRAY[LIP_CODE] <-
-  ( 
-    position := p;
-    condition := rec;
-    then := the;
-    else := els;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run <-
-  ( + val:LIP_BOOLEAN;
-    
-    val ?= condition.run_expr;
-    (val = NULL).if {
-      semantic_error (position,"BOOLEAN needed.");
-    };
-    (val.value).if {
-      (then.lower).to (then.upper) do { i:INTEGER;
-        then.item i.run;
-      };
-    }.elseif {else != NULL} then {
-      (else.lower).to (else.upper) do { i:INTEGER;
-        else.item i.run;
-      };
-    };
-    val.free;
-  );
diff --git a/src/lip/lip_integer.li b/src/lip/lip_integer.li
deleted file mode 100644
index e6bf608..0000000
--- a/src/lip/lip_integer.li
+++ /dev/null
@@ -1,172 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_INTEGER;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_constant:Expanded LIP_CONSTANT;
-  
-Section Private
-  
-  - storage:FAST_ARRAY[LIP_INTEGER] := FAST_ARRAY[LIP_INTEGER].create_with_capacity 10;
-  
-  - set_value v:INTEGER <-
-  (
-    value := v;
-  );
-  
-Section Public
-    
-  + value:INTEGER;
-  
-  //
-  // Creation.
-  //
-  
-  - get i:INTEGER :LIP_INTEGER <-
-  ( + result:LIP_INTEGER;
-    (storage.is_empty).if {
-      result := clone;
-    } else {
-      result := storage.last;
-      storage.remove_last;
-    };
-    result.set_value i;
-    result
-  );
-  
-  - free <-
-  (
-    storage.add_last Self;
-  );
-  
-  //
-  // Operation.
-  //
-  
-  - name:STRING_CONSTANT <- "INTEGER";
-  
-  - '-' :LIP_CONSTANT <-
-  ( 
-    value := - value;
-    Self
-  );
-
-  - '!' :LIP_CONSTANT <-
-  ( 
-    value := ~ value;
-    Self
-  );
-  
-  - copy:LIP_CONSTANT <-
-  (
-    get value
-  );
-  
-  - print <-
-  (
-    value.print;
-  );
-  
-Section LIP_CONSTANT
-    
-  - my_copy other:SELF :LIP_CONSTANT <-
-  (
-    value := other.value;
-    Self
-  );
-    
-  - '|#'  other:SELF :LIP_CONSTANT <-
-  ( 
-    value := value | other.value;
-    other.free;
-    Self
-  );
-      
-  - '&#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    value := value & other.value;
-    other.free;
-    Self
-  );
-  
-  - '+#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    value := value + other.value;
-    other.free;
-    Self    
-  );
-  
-  - '-#'  other:SELF :LIP_CONSTANT <-
-  ( 
-    value := value - other.value;
-    other.free;
-    Self
-  );
-  
-  - '>#'  other:SELF :LIP_CONSTANT <-
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value > other.value)
-  );
-  
-  - '<#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value < other.value)
-  );
-  
-  - '=#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value = other.value)
-  );
-  
-  - '>=#' other:SELF :LIP_CONSTANT <- 
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value >= other.value)
-  );
-  
-  - '<=#' other:SELF :LIP_CONSTANT <-
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value <= other.value)
-  );
-  
-  - '!=#' other:SELF :LIP_CONSTANT <- 
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value != other.value)
-  );
diff --git a/src/lip/lip_print.li b/src/lip/lip_print.li
deleted file mode 100644
index 399e07c..0000000
--- a/src/lip/lip_print.li
+++ /dev/null
@@ -1,68 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_PRINT;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE; 
-
-Section Public
-  
-  + message:LIP_CODE;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION message rec:LIP_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p message rec;
-    result
-  );
-
-  - make p:POSITION message rec:LIP_CODE <-
-  ( 
-    position := p;
-    message := rec;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run <-
-  ( + val:LIP_CONSTANT;
-    
-    val := message.run_expr;
-    (val = NULL).if {
-      semantic_error (position,"Incorrect type.");
-    };
-    val.print;
-    val.free;
-  );
\ No newline at end of file
diff --git a/src/lip/lip_slot_code.li b/src/lip/lip_slot_code.li
deleted file mode 100644
index 5beacd5..0000000
--- a/src/lip/lip_slot_code.li
+++ /dev/null
@@ -1,148 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_SLOT_CODE;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  - parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + section:STRING_CONSTANT;
-  
-  + name:STRING_CONSTANT;
-  
-  + argument:LIP_SLOT_DATA;
-    
-  + code:FAST_ARRAY[LIP_CODE];
-  
-  + comment:STRING_CONSTANT;
-  
-  // + comment_chapter:STRING_CONSTANT;
-  
-  - set_comment c:STRING_CONSTANT <-
-  (
-    comment := c;
-  );
-  
-  /*
-  - set_comment_chapter c:STRING_CONSTANT <-
-  (
-    comment_chapter := c;
-  );
-  */
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION section sec:STRING_CONSTANT 
-  name n:STRING_CONSTANT 
-  argument arg:LIP_SLOT_DATA
-  code c:FAST_ARRAY[LIP_CODE] :LIP_SLOT_CODE <-
-  ( + result:LIP_SLOT_CODE;
-    
-    result := get_method n;
-    (result != NULL).if {
-      ((arg = NULL) ^ (result.argument = NULL)).if {
-        semantic_error (result.position,"Incorrect redefinition.");
-      };
-      ALIAS_ARRAY[LIP_CODE].free c;
-    } else {    
-      result := clone;
-      result.make p section sec name n argument arg code c;      
-    };
-    result
-  );
-
-  - make p:POSITION section sec:STRING_CONSTANT 
-  name n:STRING_CONSTANT 
-  argument arg:LIP_SLOT_DATA 
-  code c:FAST_ARRAY[LIP_CODE] <-
-  ( 
-    position := p;
-    section := sec;
-    name := n;
-    argument := arg;    
-    code := c;        
-    list_method.add_last Self;
-  );
-  
-  //
-  // Operation.
-  //
-  
-  - run_with val:LIP_CONSTANT :BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    result := ! ((val = NULL) ^ (argument = NULL));
-    (result).if {      
-      (argument != NULL).if {
-        ? { val != NULL };
-        result := argument.set_value val;                
-        stack.add_last argument;          
-      } else {
-        stack.add_last NULL;
-      };
-      (result).if {
-        (code.lower).to (code.upper) do { j:INTEGER;
-          code.item j.run;
-        };                
-      };
-      stack.remove_last;
-    };
-    result
-  );
-  
-  //
-  // Print.
-  //
-  
-  - print <-
-  (
-    "  -".print;
-    name.print;
-    (argument != NULL).if {
-      " <".print;
-      argument.print;
-      ">".print;
-    };
-    " :\n".print;
-    (comment != NULL).if {      
-      '\t'.print;
-      (comment.lower).to (comment.upper) do { i:INTEGER;
-        comment.item i.print;
-        ((comment.item i = '\n') && {i < comment.upper}).if {
-          '\t'.print;
-        };
-      };
-    } else {
-      "\t Sorry, no comment (see `make.lip').\n".print;
-    };
-  );
-  
diff --git a/src/lip/lip_slot_data.li b/src/lip/lip_slot_data.li
deleted file mode 100644
index 19af1fa..0000000
--- a/src/lip/lip_slot_data.li
+++ /dev/null
@@ -1,99 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_SLOT_DATA;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_slot:Expanded LIP_CODE;
-
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + value:LIP_CONSTANT;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION name n:STRING_CONSTANT value v:LIP_CONSTANT 
-  argument is_arg:BOOLEAN :SELF <-
-  [
-    -? {v != NULL};
-  ]
-  ( + result:SELF;
-    result := clone;
-    result.make p name n value v argument is_arg;
-    result
-  );
-
-  - make p:POSITION name n:STRING_CONSTANT value v:LIP_CONSTANT
-  argument is_arg:BOOLEAN <-
-  ( + s:LIP_SLOT_DATA;
-    position := p;
-    s := get_data n;
-    (s != NULL).if {
-      semantic_error (s.position,"Double declaration.");
-    };
-    name     := n;
-    value    := v;    
-    (is_arg).if_false {
-      list_data.add Self to n;
-    };
-  );
-  
-  //
-  // Value.
-  //
-  
-  - set_value v:LIP_CONSTANT :BOOLEAN <-
-  ( + new_val:LIP_CONSTANT;
-    
-    new_val := value.copy_of v;
-    (new_val != NULL).if {     
-      value := new_val;      
-    }
-  );
-    
-  - get_value:LIP_CONSTANT <-
-  (
-    value.copy
-  );
-  
-  //
-  // Print.
-  //
-  
-  - print <-
-  (
-    name.print;
-    ':'.print;
-    value.name.print;
-  );
-  
-  
\ No newline at end of file
diff --git a/src/lip/lip_string.li b/src/lip/lip_string.li
deleted file mode 100644
index 84c8dda..0000000
--- a/src/lip/lip_string.li
+++ /dev/null
@@ -1,149 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_STRING;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_constant:Expanded LIP_CONSTANT;
-  
-Section Private
-  
-  - storage:FAST_ARRAY[LIP_STRING] := FAST_ARRAY[LIP_STRING].create_with_capacity 10;
-    
-Section Public
-  
-  + value:STRING_CONSTANT;
-
-  - set_value v:STRING_CONSTANT <-
-  (
-    value := v;
-  );
-
-  //
-  // Creation.
-  //
-  
-  - get str:STRING_CONSTANT :LIP_STRING <-
-  ( + result:LIP_STRING;
-    (storage.is_empty).if {
-      result := clone;
-    } else {
-      result := storage.last;
-      storage.remove_last;
-    };
-    result.set_value str;
-    result
-  );
-  
-  - free <-
-  (
-    storage.add_last Self;
-  );
-  
-  //
-  // Operation.
-  //
-  
-  - name:STRING_CONSTANT <- "STRING";
-  
-  - copy:LIP_CONSTANT <-
-  (
-    get value
-  );
-  
-  - print <-
-  ( 
-    string_tmp.clear;
-    append_in string_tmp;
-    string_tmp.print;
-  );
-  
-  - append_in str:STRING <-
-  ( + i:INTEGER;
-    + car:CHARACTER;
-     
-    i := value.lower;
-    {i <= value.upper}.while_do {
-      car := value.item i;
-      (car = '\\').if {        
-        i := i + 1;
-        (i <= value.upper).if {
-          car := value.item i;
-          (car)
-          .when 'a'  then { str.add_last '\a'; }
-          .when 'b'  then { str.add_last '\b'; }
-          .when 'f'  then { str.add_last '\f'; }  
-          .when 'n'  then { str.add_last '\n'; }  
-          .when 'r'  then { str.add_last '\r'; }  
-          .when 't'  then { str.add_last '\t'; }  
-          .when 'v'  then { str.add_last '\v'; }  
-          .when '\\' then { str.add_last '\\'; } 
-          .when '?'  then { str.add_last '\?'; }  
-          .when '\'' then { str.add_last '\''; } 
-          .when '\"' then { str.add_last '\"'; };
-        } else {
-          str.add_last car;
-        };
-      } else {
-        str.add_last car;
-      };
-      i := i + 1;
-    };
-  );
-  
-Section LIP_CONSTANT
-    
-  - my_copy other:SELF :LIP_CONSTANT <-
-  (
-    value := other.value;
-    Self
-  );
-  
-  - '=#'  other:SELF :LIP_CONSTANT <- 
-  ( 
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value = other.value)
-  );
-  
-  - '!=#' other:SELF :LIP_CONSTANT <- 
-  (   
-    other.free;
-    free;
-    LIP_BOOLEAN.get (value != other.value)
-  );
-  
-  - '+#'  other:SELF :LIP_CONSTANT <-
-  (         
-    string_tmp.copy value;
-    string_tmp.append (other.value);
-    value := ALIAS_STR.get string_tmp;
-    other.free;
-    Self
-  );
-  
\ No newline at end of file
diff --git a/src/lip/lip_unary.li b/src/lip/lip_unary.li
deleted file mode 100644
index 27f32e1..0000000
--- a/src/lip/lip_unary.li
+++ /dev/null
@@ -1,73 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_UNARY;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE; 
-
-Section Public
-  
-  + value:LIP_CODE;
-    
-  + operator:CHARACTER;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION operator op:CHARACTER with v:LIP_CODE :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p operator op with v;
-    result
-  );
-
-  - make p:POSITION operator op:CHARACTER with v:LIP_CODE <-
-  ( 
-    position := p;    
-    operator := op;
-    value := v;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run_expr:LIP_CONSTANT <-
-  ( + result:LIP_CONSTANT;
-        
-    result := value.run_expr;    
-    (operator)
-    .when '-' then { result := - result; }
-    .when '!' then { result := ! result; };
-    (result = NULL).if {
-      semantic_error (position,"Incorrect type.");
-    };
-    result    
-  );
diff --git a/src/lip/lip_value.li b/src/lip/lip_value.li
deleted file mode 100644
index 24a1179..0000000
--- a/src/lip/lip_value.li
+++ /dev/null
@@ -1,62 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LIP_VALUE;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  + parent_lip_code:Expanded LIP_CODE;
-
-Section Public
-  
-  + value:LIP_CONSTANT;
-  
-  //
-  // Creation.
-  //
-
-  - create p:POSITION with v:LIP_CONSTANT :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make p with v;
-    result
-  );
-
-  - make p:POSITION with v:LIP_CONSTANT <-
-  ( 
-    position := p;
-    value := v;
-  );
-  
-  //
-  // Run.
-  //
-  
-  - run_expr:LIP_CONSTANT <-
-  (
-    value.copy
-  );
diff --git a/src/lisaac.li b/src/lisaac.li
deleted file mode 100644
index 76b2f62..0000000
--- a/src/lisaac.li
+++ /dev/null
@@ -1,809 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := LISAAC;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author   := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment  := "The main prototype";
-  
-  - external := `#include "path.h"`;
-  
-  // Top 5 memory record :
-  // 1 - LOCAL         (>20MB) (il fo Aliaser les tmp !)
-  // 2 - READ_LOCAL    (15MB)
-  // 3 - LIST          (13MB) (En baisse => a retester)
-  // 4 - PROTOTYPE_CST (10MB)
-  // 5 - WRITE_LOCAL   (10MB)
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-
-  - output_name:STRING_CONSTANT;
-  
-  - input_name:STRING_CONSTANT;
-  
-  - path_lisaac:STRING_CONSTANT <-
-  ( + path:NATIVE_ARRAY[CHARACTER];
-    + path_str :STRING;
-    + j:INTEGER;
-    //COMMAND_LINE.executable_name.print; '\n'.print;
-    // Load LISAAC_DIRECTORY.
-    path_str := ENVIRONMENT.get_environment_variable "LISAAC_DIRECTORY";
-    (path_str != NULL).if {
-      string_tmp.copy path_str;
-    } else {
-      path := `LISAAC_DIRECTORY`:NATIVE_ARRAY[CHARACTER];
-      string_tmp.clear;
-      j := 0;
-      {path.item j != '\0'}.while_do {
-	string_tmp.add_last (path.item j);
-	j := j + 1;
-      };
-    };
-    ((string_tmp.last != '/') && {string_tmp.last != '\\'}).if {
-      string_tmp.add_last '/';
-    };
-    path_lisaac := ALIAS_STR.get string_tmp
-  );
-  
-  //
-  // Command.
-  //
-
-  - begin_usage: STRING_CONSTANT :=
-  "----------------------------------------------------------------\n\
-  \--            Lisaac IS An Advanced Compiler V.0.14           --\n\
-  \--            LORIA - LSIIT - ULP - CNRS - FRANCE             --\n\
-  \--         Benoit SONNTAG - sonntag at icps.u-strasbg.fr         --\n\
-  \--                   http://www.IsaacOS.com                   --\n\
-  \----------------------------------------------------------------\n\
-  \Usage:                                                          \n\
-  \  lisaac [<lip_file.lip>] [<input_file[.li]>] {<Options>}       \n\
-  \                                                                \n\
-  \  Note: without <lip_file> or <input_file>,                     \n\
-  \        the nearest `make.lip' file is interpreted.             \n\
-  \                                                                \n\
-  \Options:                                                        \n";
-  
-  - end_usage:STRING_CONSTANT :=
-  "                                                                \n\
-  \Bug report:                                                     \n\
-  \\t post in : https://gna.org/bugs/?group=isaac         \n\
-  \\t mail to : sonntag at icps.u-strasbg.fr                 \n";
-
-  - display_usage <-
-  (
-    begin_usage.print;
-    LIP_CODE.print_usage;
-    end_usage.print;
-    die_with_code exit_failure_code;
-  );
-  
-  //
-  // Options.
-  //
-  
-  - read_options <-
-  ( + cmd:STRING;
-    + j,i,f:INTEGER;  
-    + lip_ok:BOOLEAN;
-    + s:LIP_SLOT_CODE;
-    + t:STRING_CONSTANT;
-    + arg:LIP_CONSTANT;
-    + is_path_list:BOOLEAN;
-
-    // Default value.
-    is_ansi := TRUE;
-    // Read argument.
-    j := 1;
-    {j > COMMAND_LINE.upper}.until_do {
-      cmd := COMMAND_LINE.item j;
-      (cmd.item 1='-').if {        
-	//
-	// Lecture des options :
-        //
-        ((cmd.count >= 3) && {cmd.item 2 = '-'}).if {
-          (cmd.item 3)
-          .when 'v' then {
-            verbose_level := 1;
-          }
-          .when 'p' then {
-            is_path_list := TRUE;
-          };
-        } else {
-          (lip_ok).if_false {
-            load_lip "make.lip";
-            lip_ok := TRUE;
-          };
-          string_tmp.copy cmd;
-          string_tmp.remove_first 1;
-          s := LIP_CODE.get_method (ALIAS_STR.get string_tmp);
-          ((s = NULL) || {s.section != ALIAS_STR.section_public}).if {
-            "ERROR : Option `".print;
-            cmd.print;
-            "' not found.\n".print;
-            display_usage;
-          };
-          (s.argument != NULL).if {
-            j := j + 1;
-            (j > COMMAND_LINE.upper).if {
-              "ERROR : For option `".print;
-              cmd.print;
-              "', argument needed.\n".print;
-              display_usage;
-            };
-            cmd := COMMAND_LINE.item j;
-            t := s.argument.value.name;
-            arg := NULL;            
-            (t = ALIAS_STR.prototype_boolean).if {
-              cmd.to_upper;
-              (cmd == "TRUE").if {
-                arg := LIP_BOOLEAN.get TRUE;
-              }.elseif {cmd == "FALSE"} then {
-                arg := LIP_BOOLEAN.get FALSE;
-              };
-            }.elseif {t = ALIAS_STR.prototype_integer} then {              
-              (cmd.is_integer).if {                
-                arg := LIP_INTEGER.get (cmd.to_integer);
-              };
-            } else {
-              arg := LIP_STRING.get (ALIAS_STR.get cmd);
-            };
-            (arg = NULL).if {
-              "ERROR : Incorrect type for `".print;
-              cmd.print;
-              "' argument.\n".print;
-              display_usage;
-            };            
-          };
-          (s.run_with arg).if_false {
-            "ERROR : Invalid argument.\n".print;
-            display_usage;
-          };
-        };
-      } else {
-	//
-	// Input name & Current Directory.
-        //        
-        (cmd.has_suffix ".lip").if {
-          // .lip 
-          (lip_ok).if {
-            "ERROR : Put options after `".print;
-            cmd.print;
-            "'.".print;
-            display_usage;
-          };
-          load_lip cmd;
-          lip_ok := TRUE;
-        } else {
-          // .li
-          (lip_ok).if_false {
-            load_lip "make.lip";
-            lip_ok := TRUE;
-          };
-          (input_name != NULL).if {
-            display_usage;
-          };
-          string_tmp.copy (COMMAND_LINE.item j);
-          string_tmp2.copy string_tmp;
-          string_tmp.replace_all '\\' with '/';
-          i := last_index (string_tmp,'/');
-          (i < string_tmp.lower).if {
-            string_tmp.copy "./";
-          } else {
-            string_tmp.remove_last (string_tmp.upper-i);
-            string_tmp2.remove_first i;
-          };
-          i := last_index (string_tmp2,'.');
-          (i > string_tmp2.lower).if {
-            string_tmp2.remove_last (string_tmp2.upper-i+1);
-          };
-          LIP_CALL.load_directory (ALIAS_STR.get string_tmp) is_recursive FALSE;          
-          input_name := ALIAS_STR.get string_tmp2;
-          LIP_CODE.put_string input_name to (ALIAS_STR.slot_input_file);
-        };
-      };
-      j := j+1;
-    };            
-    (lip_ok).if_false {
-      load_lip "make.lip";
-    };
-    
-    // Executing `front_end':
-    s := LIP_CODE.get_method (ALIAS_STR.slot_front_end);
-    (s = NULL).if {
-      "Slot `front_end' not found in *.lip file.\n".print;
-      die_with_code exit_failure_code;
-    };
-    s.run_with NULL;
-    
-    (is_path_list).if {
-      string_tmp.clear;
-      (path_file.lower).to (path_file.upper) do { n:INTEGER;
-        string_tmp.append (path_file.item n);
-        string_tmp.add_last '\n';
-      };
-      (! FS_MIN.make_file "current_path.txt").if {
-        STD_ERROR.put_string "Error: File `current_path.txt' is not created !\n";
-        die_with_code exit_failure_code;
-      };
-      f := FS_MIN.open_write "current_path.txt";    
-      FS_MIN.write f with string_tmp size (string_tmp.count);    
-      FS_MIN.close f;      
-      die_with_code 0;
-    };
-    
-    // Loading variable.
-    input_name         := LIP_CODE.get_string  (ALIAS_STR.slot_input_file);
-    debug_level_option := LIP_CODE.get_integer (ALIAS_STR.slot_debug_level);
-    debug_with_code    := LIP_CODE.get_boolean (ALIAS_STR.slot_debug_with_code);
-    is_all_warning     := LIP_CODE.get_boolean (ALIAS_STR.slot_is_all_warning);
-    is_optimization    := LIP_CODE.get_boolean (ALIAS_STR.slot_is_optimization);
-    inline_level       := LIP_CODE.get_integer (ALIAS_STR.slot_inline_level);
-    is_java            := LIP_CODE.get_boolean (ALIAS_STR.slot_is_java);
-    is_statistic       := LIP_CODE.get_boolean (ALIAS_STR.slot_is_statistic);
-    is_quiet           := LIP_CODE.get_boolean (ALIAS_STR.slot_is_quiet);
-    //
-    ((input_name = NULL) || {input_name.is_empty}).if {      
-      "ERROR : `input_file' is empty.\n".print;
-      display_usage;
-    };        
-    string_tmp.copy input_name;
-    (is_java).if {
-      string_tmp.append ".java";
-    } else {
-      string_tmp.append ".c";
-    };    
-    output_name := ALIAS_STR.get string_tmp;    
-  );
-  
-  - last_index (n:STRING,c:CHARACTER) :INTEGER <-
-  // BSBS: A Mettre dans STRING.
-  ( + result:INTEGER;
-    result := n.upper;
-    {(result < n.lower) || {n.item result = c}}.until_do {
-      result := result-1;
-    };
-    result
-  );
-  
-  - load_lip file_lip:ABSTRACT_STRING <-
-  ( + path_lip:STRING_CONSTANT;
-    + is_good:BOOLEAN;
-    + count:INTEGER;
-
-    string_tmp.clear;
-    {      
-      string_tmp.append file_lip;
-      path_lip := ALIAS_STR.get string_tmp;      
-      (is_good := PARSER.read_lip path_lip).if_false {      
-        string_tmp.copy path_lip;
-        string_tmp.remove_last (file_lip.count);
-        string_tmp.append "../";
-        count := count + 1;
-      };
-    }.do_while {(count < 5) && {! is_good}};
-    (is_good).if_false {
-      string_tmp.copy path_lisaac;
-      string_tmp.append "make.lip";
-      path_lip := ALIAS_STR.get string_tmp;
-      (is_good := PARSER.read_lip path_lip).if_false {      
-        "File `".print;
-        path_lip.print;
-        "' not found !\nIncorrect installation.\n".print;
-        die_with_code exit_failure_code;
-      };      
-    };            
-    {LIP_CODE.list_parent.is_empty}.until_do {
-      path_lip := LIP_CODE.list_parent.first;
-      LIP_CODE.list_parent.remove_first;      
-      (path_lip.is_empty).if {
-        string_tmp.copy path_lisaac;
-        string_tmp.append "make.lip";
-        path_lip := ALIAS_STR.get string_tmp;
-      };
-      (PARSER.read_lip path_lip).if_false {      
-        "File `".print;
-        path_lip.print;
-        "' not found ! (see `*.lip')\n".print;          
-        die_with_code exit_failure_code;
-      };
-    };
-    // Auto-load 'lisaac' variable.
-    LIP_CODE.put_string path_lisaac to (ALIAS_STR.variable_lisaac);    
-  );
-
-  - put_trace_code buf:STRING <-
-  ( + proto:PROTOTYPE;
-    
-    ((debug_level_option != 0) || {CALL_NULL.is_necessary}).if {
-      title "DEBUG MANAGER" in buf;
-      
-      (is_java).if {
-        buf.append 
-        "private static void print_string(String str) \n\
-        \{ \n\
-        \  System.out.print(str);\n\
-        \}\n\
-        \\n";
-      } else {
-        buf.append 
-        "int print_string(char *str) \n\
-        \{ \n\
-        \  while (*str!=0) {\n\
-        \    print_char(*str); \n\
-        \    str++; \n\
-        \  };\n\
-        \}\n\
-        \\n";
-      };
-    };
-
-    (debug_level_option != 0).if {
-      buf.append "char *trace[";
-      buf.append (PROTOTYPE.prototype_list.count.to_string);
-      buf.append "]={\n";
-      (PROTOTYPE.prototype_list.lower).to (PROTOTYPE.prototype_list.upper-1) do { 
-	j:INTEGER;
-	proto := PROTOTYPE.prototype_list.item j;
-	buf.append "  \"";
-	buf.append (proto.name);
-	buf.append " (";
-	buf.append (proto.filename);
-	buf.append ")\",\n";
-      };
-      proto := PROTOTYPE.prototype_list.last;
-      buf.append "  \"";
-      buf.append (proto.name);
-      buf.append " (";
-      buf.append (proto.filename);
-      buf.append ")\"\n};\n\n";
-
-      //
-      // Source Code.
-      //
-            
-      (debug_with_code).if {
-	+ src:HASHED_DICTIONARY[STRING,UINTEGER_32];
-	+ key:UINTEGER_32;
-	
-	output_decl.append 
-	"\n//==========================//\n\
-	\// SOURCE LINE REFERENCE    //\n\
-	\//==========================//\n";
-	
-	buf.append 
-	"struct __source {\n\
-	\  unsigned int pos;\n\
-	\  char *line;\n\
-	\} __src[";
-	src := PUSH.source_line;
-	src.count.append_in buf;
-	buf.append "]={\n";		
-	(src.lower).to (src.upper) do { j:INTEGER;
-	  key := src.key j;
-	  output_decl.append "#define L";
-	  key.append_in output_decl;
-	  output_decl.add_last ' ';
-	  (j-1).append_in output_decl;
-	  output_decl.add_last '\n';
-	  //
-	  buf.append "  {";	 
-	  key.append_in buf;
-	  buf.append ",\"";
-	  buf.append (src.item j);
-	  buf.append "\"},\n";
-	};
-	buf.remove (buf.upper - 1);
-	buf.append "};\n\n";
-      };
-      
-      //
-      // Signal manager.
-      // 
-      
-      (is_ansi).if {
-	buf.append 
-	"// Unix Signal manager:\n\
-	\void interrupt_signal(int sig)  \n\
-	\{                               \n\
-	\  stack_print(top_context);     \n\
-	\  print_string(\"User interrupt.\\n\"); \n\
-	\  die_with_code(1);                     \n\
-	\}                                       \n\n";
-      };
-	
-      //
-      // Stack manager.
-      //
-      
-      buf.append 	
-      "void push_first(_____CONTEXT *path,unsigned long code)\n\
-      \{ int n; _____CONTEXT *c; static int mx=0;\n";
-      (debug_level_option = 20).if {
-	buf.append 
-	"  _____CONTEXT *cur,loop;\n\
-	\  cur = top_context; \n\
-	\  while ((cur != (void *)0) && (cur != path)) cur = cur->back; \n\
-	\  if (cur == path) {\n\
-	\    loop.back = top_context;\n\	
-	\    loop.code = code; \n\
-	\    stack_print(&loop);\n\
-	\    print_string(\"COMPILER : Debug context looping detected !\\n\");\n\
-	\    die_with_code(1);\n\
-	\  };\n";
-      };
-      buf.append
-      "  path->back  = top_context;\n\
-      \  path->code  = code;\n\
-      \  top_context = path;\n\
-      \ \n\
-      \ /*c = path; n=0;\n\
-      \ while (c != NULL) { n++; c = c->back; };\n\
-      \ if ((n > mx) ) { print_integer(n); print_string(\"\\n\"); mx = n; };*/ \n\
-      \} \n\
-      \  \n\
-      \void push(_____CONTEXT *path,unsigned long code)\n\
-      \{ \n\      	
-      \  path->code  = code;\n\
-      \  top_context = path;\n\  
-      \} \n\
-      \  \n\
-      \void stack_print(_____CONTEXT *up)      \n\
-      \{ _____CONTEXT *back,*next;             \n\
-      \  int j;	                              \n\
-      \  next = (void *)0;                          \n\  
-      \  while (up != (void *)0) {                  \n\
-      \    back = up -> back;                       \n\
-      \    up -> back = next;                       \n\  
-      \    next = up;                               \n\
-      \    up = back;                               \n\
-      \  };                                         \n\
-      \  print_string(\"\\n============== BOTTOM ==============\\n\"); \n\
-      \  while (next != (void *)0) {                \n";
-      (debug_with_code).if {
-	buf.append
-	"    print_string(\"Line #\");                           \n\
-	\    print_integer(__src[next->code].pos >> 17);         \n\ 
-	\    print_string(\" Column #\");                        \n\
-	\    print_integer((__src[next->code].pos >> 9) & 0xFF); \n\ 
-	\    print_string(\" in \");                             \n\
-	\    print_string(trace[__src[next->code].pos & 0x1FF]); \n\
-	\    print_string(\".\\n\");                             \n\
-\ if ((__src[next->code].pos & 0x1FF) != 0) { \n\
-        \    print_string(__src[next->code].line);               \n\
-	\    print_char('\\n');                                  \n\
-	\    for (j=0;j < ((__src[next->code].pos >> 9) & 0xFF);j++) {\n\
-	\      if (__src[next->code].line[j]=='\\t') print_char('\\t');\n\
-        \      else print_char(' ');\n\
-        \    };                                                  \n\
-        \    print_char('^');    \n\
-	\    print_char('\\n');   \n\
-\ }; \n";	
-	
-      } else {    
-	buf.append
-	"    print_string(\"Line #\");                \n\
-	\    print_integer(next->code >> 17);         \n\
-	\    print_string(\" Column #\");          \n\
-	\    print_integer((next->code >> 9) & 0xFF); \n\ 
-	\    print_string(\" in \");               \n\
-	\    print_string(trace[next->code & 0x1FF]); \n\
-	\    print_string(\".\\n\");                  \n";
-      };
-      buf.append 
-      "    next = next -> back;                     \n\
-      \  };                                         \n\
-      \  print_string(\"================ TOP ===============\\n\"); \n\
-      \  top_context = (void *)0;                   \n\
-      \}                                            \n\
-      \ \n\
-      \void print_integer(unsigned short n) \n\
-      \{ unsigned short val;                \n\
-      \  char car;                          \n\	
-      \  car = (n % 10) + '0';              \n\
-      \  val = n / 10;                      \n\
-      \  if (val != 0) print_integer(val);  \n\
-      \  print_char(car);                   \n\
-      \} \n\n";
-    };
-  );
-  
-  - load_main_object <-
-  ( + type_gen:FAST_ARRAY[ITM_TYPE_MONO];
-    + itm_type_character:ITM_TYPE_MONO;
-    + itm_type_n_a_character:ITM_TYPE_MONO;
-    
-    // NULL, VOID, CONTEXT
-    TYPE_NULL.make_null;    
-    TYPE_VOID.make_void;
-    TYPE_CONTEXT.make_context;    
-    TYPE_ID.make_type_id; // Pas utile !    
-    // Input.
-    string_tmp.copy input_name;
-    string_tmp.to_upper;
-    type_input   := ITM_TYPE_SIMPLE.get (ALIAS_STR.get string_tmp).to_run_for NULL.raw;
-    // Other prototype.
-    type_true    := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_true)      
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_false   := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_false)     
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_boolean := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_boolean)   
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_integer := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_integer)   
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_real    := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_real)   
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_integer_32 := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_integer_32)   
-    style (ALIAS_STR.keyword_expanded).to_run_for NULL.raw;
-    type_string_constant := ITM_TYPE_SIMPLE.get (ALIAS_STR.prototype_string_constant)
-    .to_run_for NULL.raw;
-    itm_type_character   := ITM_TYPE_STYLE.get (ALIAS_STR.prototype_character) 
-    style (ALIAS_STR.keyword_expanded);
-    type_character := itm_type_character.to_run_for NULL.raw;
-    type_block     := ITM_TYPE_SIMPLE.get (ALIAS_STR.prototype_block).to_run_for NULL.raw;        
-    //
-    type_pointer   := ITM_TYPE_SIMPLE.get (ALIAS_STR.prototype_pointer).to_run_for NULL.raw;
-    // NATIVE_ARRAY[CHARACTER]
-    type_gen  := ALIAS_ARRAY[ITM_TYPE_MONO].new;
-    type_gen.add_last itm_type_character;
-    type_gen  := ALIAS_ARRAY[ITM_TYPE_MONO].alias type_gen;
-    itm_type_n_a_character := ITM_TYPE_GENERIC.get (ALIAS_STR.prototype_native_array)
-    style NULL with type_gen;
-    type_n_a_character := itm_type_n_a_character.to_run_for NULL.raw;
-    // NATIVE_ARRAY[NATIVE_ARRAY[CHARACTER]]
-    type_gen  := ALIAS_ARRAY[ITM_TYPE_MONO].new;
-    type_gen.add_last itm_type_n_a_character;
-    type_gen  := ALIAS_ARRAY[ITM_TYPE_MONO].alias type_gen;
-    type_n_a_n_a_character := ITM_TYPE_GENERIC.get (ALIAS_STR.prototype_native_array)
-    style NULL with type_gen.to_run_for NULL.raw;
-    //    
-    ? {type_input != NULL};
-  );
-  
-  - print msg:STRING_CONSTANT stat n:INTEGER for t:INTEGER <-
-  ( + pour_mil:INTEGER;
-    
-    (t != 0).if {
-      STD_ERROR.put_string msg;    
-      pour_mil := `(int)((1000./ @t * @n))`:INTEGER;
-      STD_ERROR.put_integer (pour_mil/10);
-      STD_ERROR.put_character '.';
-      STD_ERROR.put_integer (pour_mil%10);
-      STD_ERROR.put_string "% (";
-      STD_ERROR.put_integer n;
-      STD_ERROR.put_character '/';
-      STD_ERROR.put_integer t;
-      STD_ERROR.put_string ")\n";
-    };
-  );
-  
-Section Public  
-
-  //
-  // Creation.
-  //
-
-  - main <-
-  ( + file_output:POINTER;
-    //+ entry:ENTRY;
-    + begin_time,end_time:UINTEGER_64;
-    + time:INTEGER;    
-    + txt:STRING;
-    + s:LIP_SLOT_CODE;
-
-    ALIAS_STR.make;
-    
-    begin_time := SYSTEM.get_universal_time;
-    
-    //
-    // Load Environment. 
-    //
-    read_options;
-    is_verbose.if {
-      string_tmp.copy "\ninput  file : ";
-      string_tmp.append input_name;      
-      string_tmp.append ".li\noutput file : ";
-      string_tmp.append output_name;
-      string_tmp.append "\npath directory :\n";
-      path_file.lower.to (path_file.upper) do { j:INTEGER;
-	string_tmp.append "  ";
-	string_tmp.append (path_file.item j);
-	string_tmp.add_last '\n';
-      };
-      string_tmp.print;
-    };
-    
-    //
-    // Header C 
-    //    
-    (is_java).if {
-      output_decl.copy "// Java code generated by Lisaac compiler (www.isaacOS.com) //\n";
-      output_decl.append "class ";      
-      output_decl.append input_name;
-      output_decl.append " {\n";
-      output_decl.append "private static String arg[];\n";
-    } else {
-      output_decl.copy "// C code generated by Lisaac compiler (www.isaacOS.com) //\n";
-      // ANSI argument command.
-      (debug_level_option != 0).if {
-        output_decl.append "#include <signal.h>\n";
-      };
-      output_decl.append 
-      "int arg_count;\n\
-      \char **arg_vector;\n";      
-    };    
-    
-    // External.
-    title "EXTERNAL" in output_decl;
-
-    //
-    // Load prototype constant.
-    //
-    load_main_object;
-    
-    // Compilation.    
-    type_input.prototype.depend;    
-    
-    // Type / Struct.
-    title "TYPE" in output_decl;
-    
-    (is_java).if {
-      output_decl.append 
-      "// Generic Object\n\
-      \class ___OBJ {\n\
-      \  long __id;\n\
-      \};\n\n";          
-    } else {
-      output_decl.append 
-      "// Generic Object\n\
-      \struct ___OBJ {\n\
-      \  unsigned long __id;\n\
-      \};\n\n";          
-    };
-    title "GLOBAL" in output_glob;
-        
-    // Function header.
-    title "FUNCTION HEADER" in output_code;
-    
-    // Debug source code.
-    (is_java).if_false {
-      (debug_level_option != 0).if {      
-        output_code.append "// Debug Manager\n"; 
-        (is_ansi).if {
-          output_code.append "void interrupt_signal(int sig);\n";
-        };
-        output_code.append 
-        "void stack_print(_____CONTEXT *up);\n\
-        \void push_first(_____CONTEXT *path,unsigned long code);\n\
-        \void push(_____CONTEXT *path,unsigned long code);\n\
-        \void print_integer(unsigned short n);\n";
-      };
-    };
-    
-    // Extern source code.
-    output_code.append "// Source code\n";
-    PROFIL_LIST.genere_handler output_code;
-    
-    // Source code.
-    title "SOURCE CODE" in output_code;        
-    
-    (is_java).if {
-      output_code.append "public static void main(String parg[])\n";
-    } else {
-      output_code.append "int main(int argc,char **argv)\n";
-    };
-    output_code.append "{\n";
-    indent.append "  ";
-        
-    list_main.genere_extern output_code;    
-        
-    (is_java).if_false {
-      output_code.append "  return(0);\n";
-    };
-    indent.remove_last 2;    
-    output_code.append indent;
-    output_code.append "}\n\n"; 
-        
-    PROFIL_LIST.genere output_code;
-        
-    TYPE.genere_all_struct;        
-    (is_java).if_false {
-      output_decl.append "\nvoid *table_type[";
-      TYPE.id_counter_without_type.append_in output_decl;
-      output_decl.append "];\n";
-    };
-        
-    // String Constant.
-
-    // Trace code.    
-    put_trace_code output_code;
-    
-    (is_java).if {
-      output_code.append "\n} // End class MAIN\n";
-    };
-    
-    //
-    // Saving File Output.
-    //    
-    (! FS_MIN.make_file output_name).if {
-      STD_ERROR.put_string "Error: File ";
-      STD_ERROR.put_string output_name;
-      STD_ERROR.put_string " is not created !\n";
-      die_with_code exit_failure_code;
-    };
-
-    file_output := FS_MIN.open_write output_name;    
-    FS_MIN.write file_output with output_decl size (output_decl.count);    
-    FS_MIN.write file_output with output_glob size (output_glob.count);
-    (STRING_CST.output_count != 0).if {
-      txt := STRING_CST.output;
-      FS_MIN.write file_output with txt size (txt.count);
-    };    
-    FS_MIN.write file_output with output_code size (output_code.count);
-    FS_MIN.close file_output;
-    //
-    end_time := SYSTEM.get_universal_time;
-    (is_quiet).if_false {
-      STD_ERROR.put_string " => ";
-      time := (end_time - begin_time).to_integer;
-      (time >= 120).if {
-	STD_ERROR.put_integer (time/60);
-	STD_ERROR.put_string " minutes, ";
-	time := time % 60;
-      };
-      STD_ERROR.put_integer time;
-      STD_ERROR.put_string " second(s).\n";
-      //
-      (POSITION.nb_warning != 0).if {
-	STD_ERROR.put_string " => ";
-	STD_ERROR.put_integer (POSITION.nb_warning);
-	STD_ERROR.put_string " warning(s).\n";
-      };
-    };
-    
-    (is_statistic).if {            
-      print "  Null call score      : " stat null_counter for late_binding_counter;            
-      print "  Polymorphic call     : " stat polymorphic_counter for late_binding_counter;
-      (is_optimization).if {
-	"  Invariant loop score : ".print; count_invariant.print; '\n'.print;      
-      };
-    };
-        
-    //
-    // Execute finality command (front end).
-    //
-    // Executing `front_end':
-    LIP_CODE.put_boolean is_cop to (ALIAS_STR.slot_is_cop);
-    s := LIP_CODE.get_method (ALIAS_STR.slot_back_end);
-    (s = NULL).if {
-      "Warning: Slot `back_end' not found in *.lip file.\n".print;      
-    } else {
-      s.run_with NULL;
-    };    
-  );
-
diff --git a/src/my_grep b/src/my_grep
deleted file mode 100755
index fc4bc60..0000000
--- a/src/my_grep
+++ /dev/null
@@ -1 +0,0 @@
-grep $1 *.li constant/*.li compiler_any/*.li external/*.li external/arithmetic/*.li external/comparison/*.li external/logic/*.li item/*.li tools/*.li type/*.li variable/*.li dispatcher/*.li lip/*.li code_life/*.li
\ No newline at end of file
diff --git a/src/parameter_to_type.li b/src/parameter_to_type.li
deleted file mode 100644
index 50900ad..0000000
--- a/src/parameter_to_type.li
+++ /dev/null
@@ -1,43 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PARAMETER_TO_TYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type parameter -> type full";
-  
-Section Public
-  
-  - position:POSITION <- 
-  ( + result:POSITION;
-    deferred;
-    result
-  );
-  
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  (
-    deferred;
-    NULL
-  );
\ No newline at end of file
diff --git a/src/parser.li b/src/parser.li
deleted file mode 100644
index 64aa456..0000000
--- a/src/parser.li
+++ /dev/null
@@ -1,3208 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := PARSER;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Parser for Lisaac language.";
-  
-  // You can to get current grammar with `grep "//++" parser.li'
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-  
-  //
-  // Shorter Section.
-  //
-    
-  - is_active_short:BOOLEAN;
-  
-  - short_dico:HASHED_DICTIONARY[LINKED_LIST[STRING_CONSTANT],STRING_CONSTANT] :=
-  HASHED_DICTIONARY[LINKED_LIST[STRING_CONSTANT],STRING_CONSTANT].create;
-  
-  - short_derive:INTEGER;
-  
-  - token:STRING := STRING.create 100;
-  
-  - short key:STRING_CONSTANT token beg:INTEGER to end:INTEGER <-
-  ( + pos:INTEGER;
-    + add_text:ABSTRACT_STRING;
-    + fmt:LINKED_LIST[STRING_CONSTANT];
-    
-    (is_shorter).if {
-      (is_active_short).if {
-	//
-	// SHORTER
-	//
-	(short_dico.fast_has key).if {
-	  // Extract token.
-	  token.clear;
-	  pos := beg + short_derive;
-	  beg.to (end-1) do { j:INTEGER;
-	    token.add_last (source.item j);
-	    output_code.remove pos; 
-	  };	  
-	  short_derive := short_derive - token.count;
-	  // Insert format.
-	  fmt := short_dico.at key; 
-	  fmt.lower.to (fmt.upper) do { j:INTEGER;
-	    (fmt.item j = NULL).if {
-	      add_text := token;
-	    } else {
-	      add_text := fmt.item j;
-	    };	    
-	    output_code.insert_string add_text to pos; 
-	    pos := pos + add_text.count;
-	    short_derive := short_derive + add_text.count;	
-	  };
-	};
-      };
-    };
-  );
-  
-  - short_remove begin:INTEGER to end:INTEGER <-
-  (
-    output_code.remove_between 
-    (begin + short_derive) to (end + short_derive);	    
-    short_derive := short_derive - (end - begin + 1);
-  );
-  
-  - short_local:HASHED_SET[STRING_CONSTANT];
-  
-Section Private  
-  
-  //
-  // Source information.
-  //
-    
-  - object   : PROTOTYPE;
-  
-  - source   : STRING;
-  
-  - position : INTEGER;
-  
-  - pos_cur  : INTEGER;
-  - pos_line : INTEGER;
-  - pos_col  : INTEGER;
-  
-  - begin_position:INTEGER; // begin item position
-  
-  - current_position:POSITION <-
-  ( + result:POSITION;
-    ? {pos_cur <= position};
-    
-    {pos_cur = position}.until_do {
-      (source.item pos_cur = '\n').if {
-	pos_col := 0;
-	pos_line := pos_line + 1;
-      } else {
-	pos_col := pos_col + 1;
-      };
-      pos_cur := pos_cur + 1;
-    };
-    (pos_line > 32767).if {
-      result := POSITION.create object line 32767 column pos_col;
-      syntax_error (result,"Line counter overflow.");
-    };
-    (pos_col > 255).if {
-      result := POSITION.create object line pos_line column 255;
-      syntax_error (result,"Column counter overflow (line too long).");
-    };
-    POSITION.create object line pos_line column pos_col
-  );
-  
-  //
-  // AMBIGU Manager.
-  //
-  
-  - old_position:INTEGER;
-  - old_pos_cur :INTEGER;
-  - old_pos_line:INTEGER;
-  - old_pos_col :INTEGER;
-  //
-  - old_short_derive:INTEGER;
-  
-  - save_context <-
-  (
-    old_position := position;
-    old_pos_cur  := pos_cur;
-    old_pos_line := pos_line;
-    old_pos_col  := pos_col;
-    //
-    old_short_derive := short_derive;
-  );
-  
-  - restore_context <-
-  ( + beg:INTEGER;
-    
-    (is_shorter).if {
-      token.clear;      
-      beg := old_position + old_short_derive;      
-      output_code.remove_between beg to (position+short_derive-1);
-      (old_position).to (position-1) do { j:INTEGER;
-	token.add_last (source.item j);
-      };      
-      output_code.insert_string token to beg;
-      short_derive := old_short_derive;
-    };
-    
-    position := old_position;
-    pos_cur  := old_pos_cur;
-    pos_line := old_pos_line;
-    pos_col  := old_pos_col;
-  );
-  
-  //
-  // Syntax parser.
-  //
-
-  - last_character:CHARACTER <-
-  ( + result:CHARACTER;
-    (position > source.upper).if {
-      result := 0.to_character;
-      } else {
-      result := source.item position;
-    };
-    result
-  );
-
-  - last_integer : INTEGER_64;
-  - last_real    : STRING_CONSTANT;
-  - last_string  : STRING_CONSTANT;
-  - is_parameter_type:BOOLEAN;
-  
-  - last_comment_extern:STRING_CONSTANT;
-  - last_comment_slot  :STRING_CONSTANT;
-  - skip_comment:BOOLEAN;
-      
-  - read_space:BOOLEAN <-
-  ( + posold,pos,pos2:INTEGER;     
-    + level_comment:INTEGER;
-    + stat:INTEGER;
-    
-    pos := position;
-    posold := -1;    
-    (is_shorter2).if {
-      string_tmp3.clear;
-      string_tmp4.clear;
-    };
-    {posold = position}.until_do {
-      posold := position;
-            
-      // Skip spaces :            
-      {(last_character = 0.to_character) || {last_character > ' '}}.until_do {        
-        ((is_shorter2) || {is_shorter}).if {
-          (last_character = '\n').if {
-            (stat)
-            .when 0 then { stat := 1; }
-            .when 1 then { stat := 2; }
-            .when 2 then {            };      
-          };
-        };
-	position := position + 1;	
-      };
-      
-      (position < source.upper).if {
-	// Skip C++ comment style :
-	((last_character = '/') && {source.item (position + 1) = '/'}).if {
-	  position := position + 2;
-          pos2 := position;          
-	  { 
-	    (last_character = 0.to_character) || 
-	    {last_character = '\n'}
-          }.until_do {                        
-            (is_shorter2).if {
-              (stat)
-              .when 0 or 1 then {                 
-                string_tmp3.add_last last_character;
-              }
-              .when 2 then {               
-                string_tmp4.add_last last_character;
-              };                               
-            };
-	    position := position + 1;
-          };
-          (is_shorter2).if {
-            (stat)
-            .when 0 or 1 then { string_tmp3.add_last '\n'; }
-            .when 2      then { string_tmp4.add_last '\n'; };
-          };
-          (is_shorter).if {
-            // BSBS: A revoir ...            
-            ((pos2-2+short_derive).in_range (output_code.lower) to (output_code.upper)).if {
-              output_code.remove_between (pos2-2+short_derive) to (pos2-1+short_derive);
-              short_derive := short_derive - 2;
-            };
-            // Bug ?
-            ( + nb,p:INTEGER;
-              p := pos2 - 3;
-              {(p >= source.lower) && {source.item p <= ' '}}.while_do {
-                (source.item p = '\n').if {
-                  nb := nb + 1;
-                };
-                p := p - 1;
-              };
-              (nb > 1).if {
-                stat := 2;
-              };
-            );
-            (stat)
-            .when 0 or 1 then {
-              short (ALIAS_STR.short_comment_slot_line) token pos2 to position;
-            }
-            .when 2 then {
-              short (ALIAS_STR.short_comment_line) token pos2 to position;
-            };
-          };
-          position := position + 1;
-	};
-      };
-      (position < source.upper).if {
-	// Skip C comment style :
-	pos2 := position;
-	((last_character = '/') && {source.item (position+1) = '*'}).if {
-	  position := position + 2; 	  
-	  level_comment := 1;
-	  {
-	    (last_character = 0.to_character) || {level_comment = 0}
-	  }.until_do {
-	    ((last_character = '/') && {source.item (position+1) = '*'}).if {
-	      level_comment := level_comment + 1;
-	      position := position + 2;
-	    }.elseif {
-	      (last_character = '*') && {source.item (position+1) = '/'}
-	    } then {
-	      level_comment := level_comment - 1;
-	      position := position + 2;
-	    } else {
-	      position := position+1;
-	    };
-	  };
-	  (level_comment != 0).if {
-	    position := pos2;
-	    syntax_error (current_position,"End of comment not found !");
-	  };
-	  //position := position+2;
-	  short (ALIAS_STR.short_comment) token pos2 to position;
-	};
-      };
-    };
-    ((is_shorter2) && {! skip_comment}).if {      
-      (string_tmp3.is_empty).if {
-        last_comment_slot := NULL;
-      } else {
-        last_comment_slot := ALIAS_STR.get string_tmp3;
-      };
-      (string_tmp4.is_empty).if_false {
-        last_comment_extern := ALIAS_STR.get string_tmp4;
-      };
-    };
-    // FALSE : Last character.
-    begin_position := position;
-    ((position != pos) | (last_character != 0.to_character))
-  );
-  
-  - read_symbol st:STRING_CONSTANT :BOOLEAN <-
-  ( + posold,j:INTEGER;
-    + result:BOOLEAN;
-    // On passe les espaces :
-    (! read_space).if {
-      result := FALSE;
-    } else {
-      posold := position;    
-      j := st.lower;
-      {(last_character = 0.to_character) ||
-      {(j > st.upper) || {last_character != st.item j}}}.until_do {
-	j := j+1;
-	position := position+1;
-      };
-      (j > st.upper).if {
-        result := TRUE;
-        last_string := st;
-      } else {
-	position := posold;
-	result := FALSE;
-      };
-    };
-    result
-  );
-
-  - read_character ch:CHARACTER :BOOLEAN <-
-  ( + result:BOOLEAN;
-    // On passe les espaces :
-    (! read_space).if {
-      result := FALSE;
-    } else {
-      (last_character = ch).if {
-	position := position + 1;
-	result := TRUE;
-      };
-    };
-    result
-  );
-  
-  //-- affect -> ":=" | "<-" | "?="
-  - read_affect:BOOLEAN <-
-  ( 
-    (read_symbol (ALIAS_STR.symbol_affect_immediate)) ||
-    {read_symbol (ALIAS_STR.symbol_affect_cast)} ||
-    {read_symbol (ALIAS_STR.symbol_affect_code)}
-  );
-  
-  //-- style         -> '-' | '+'
-  - read_style:CHARACTER <-
-  ( + result:CHARACTER;
-    read_character '-'.if {
-      result := '-';
-      short (ALIAS_STR.short_slot_style) token (position-1) to position;
-    }.elseif {read_character '+'} then {
-      result := '+';
-      short (ALIAS_STR.short_slot_style) token (position-1) to position;
-    } else {
-      result := ' ';
-    };
-    result
-  );
-  
-  //-- identifier    -> 'a'-'z' {'a'-'z' | '0'-'9' | '_'}
-  - read_identifier:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + posold,idx:INTEGER;
-
-    // On passe les espaces :
-    ((! read_space) || {! last_character.is_lower}).if {
-      result := FALSE;
-    } else {
-      posold := position;              
-      string_tmp.clear;
-      {
-	(last_character = 0.to_character) || 
-	{
-	  (! last_character.is_lower) &&
-	  {! last_character.is_digit} && 
-	  {last_character != '_'}
-	}
-      }.until_do {
-	string_tmp.add_last last_character;
-	position := position+1;          
-      };
-      (! string_tmp.is_empty).if {
-	idx := string_tmp.first_substring_index "__";
-	(idx != 0).if { 
-	  position := posold+idx;
-	  syntax_error (current_position,"Identifier is incorrect.");
-	};
-	last_string := ALIAS_STR.get string_tmp;
-	result := TRUE;
-      };
-    };
-    result
-  );
-  
-  - read_word st:STRING_CONSTANT :BOOLEAN <-
-  ( + posold,idx:INTEGER;   
-    + result:BOOLEAN;
-    // On passe les espaces :
-    (! read_space).if {
-      result := FALSE;
-    } else {
-      posold := position;
-      idx := st.lower;
-      {(idx > st.upper) || {last_character != st.item idx}}.until_do {
-	position := position+1;
-	idx := idx+1;
-      };
-      (idx>st.upper).if {
-	last_string := st;
-	result := TRUE;
-      } else {
-	position := posold;
-      };
-    };
-    result
-  );
-
-  - read_this_keyword st:STRING_CONSTANT :BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    result := read_word st;
-    (is_shorter).if {
-      (result).if {      
-	(st = ALIAS_STR.keyword_section).if {
-	  short (ALIAS_STR.short_keyword_section) token 
-	  (position-last_string.count) to position;
-	} else {
-	  short (ALIAS_STR.short_keyword) token 
-	  (position-last_string.count) to position;
-	};
-      };
-    };
-    result
-  );
-  
-  //-- keyword -> 'A'-'Z' 'a'-'z' {'a'-'z' | '0'-'9' | '_'}
-  - read_keyword:BOOLEAN <-
-  ( + result:BOOLEAN;
-    // On passe les espaces :
-    ((! read_space) || {! last_character.is_upper}).if {
-      result := FALSE;
-    } else {
-      string_tmp.clear;
-      string_tmp.add_last last_character;
-      position := position + 1;
-      (last_character.is_lower).if {
-	string_tmp.add_last last_character;
-	position := position + 1;
-	{(last_character != 0.to_character) &&
-	  {(last_character.is_lower) || 
-	    {last_character.is_digit} ||
-	{last_character = '_'}}}.while_do {
-	  string_tmp.add_last last_character;
-	  position := position+1;          
-	};
-	last_string := ALIAS_STR.get string_tmp;
-	result := TRUE;
-	short (ALIAS_STR.short_keyword) token 
-	(position-last_string.count) to position;
-      } else {
-	position := position - 1;
-	result := FALSE;
-      };    
-    };
-    result
-  );  
-    
-  //-- cap_identifier -> 'A'-'Z' {'A'-'Z' | '0'-'9' | '_'}
-  - read_cap_identifier:BOOLEAN <-
-  ( + posold,idx:INTEGER;
-    + result:BOOLEAN;
-    + car:CHARACTER;
-    // On passe les espaces :
-    ((! read_space) || {! last_character.is_upper}).if {
-      result := FALSE;
-    } else {
-      posold := position;
-      string_tmp.clear;
-      string_tmp.add_last last_character;
-      position := position + 1;
-      is_parameter_type := TRUE;
-      {
-	(last_character = 0.to_character) ||
-	{
-	  (! last_character.is_upper) && 
-	  {! last_character.is_digit} &&
-	  {last_character != '_'}
-	}
-      }.until_do {
-        car := last_character;
-        is_parameter_type := is_parameter_type && {car.is_digit};
-	string_tmp.add_last car; 
-        position := position+1;                          
-      };      
-      idx := string_tmp.first_substring_index "__";
-      (idx != 0).if { 
-        position := posold + idx;
-        syntax_error (current_position,"Identifier is incorrect.");
-      };             
-      last_string := ALIAS_STR.get string_tmp;      
-      result := TRUE;          
-    };
-    result
-  );
-  
-  //-- integer -> number 
-  //-- number  -> {'0'-'9'} ['d'] 
-  //--          | '0'-'9' {'0'-'9' | 'A'-'F' | 'a'-'f'} 'h'
-  //--          | {'0'-'7'} 'o'
-  //--          | {'0' | '1'} 'b'
-  - read_integer:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + pos_old:INTEGER;
-
-    // On passe les espaces :
-    ((read_space) && {last_character.is_digit}).if {
-      result := TRUE;
-      string_tmp.clear;
-      string_tmp.add_last last_character;      
-      pos_old := position;
-      position := position + 1;
-      {(last_character.is_hexadecimal_digit) || {last_character = '_'}}.while_do {
-	(last_character != '_').if {
-	  string_tmp.add_last last_character;
-	};
-	position := position + 1;
-      };
-      (last_character = 'h').if {
-	last_integer := string_tmp.to_hexadecimal;
-	position := position+1;
-      } else {
-	(string_tmp.last > '9').if {
-	  string_tmp.remove_last 1;
-	  position := position - 1;
-	};
-	(last_character='o').if {
-	  (! string_tmp.is_octal).if {
-	    syntax_error (current_position,"Incorrect octal number.");
-	  };
-	  last_integer := string_tmp.to_octal;
-	  position := position+1;
-	}.elseif {last_character='b'} then {
-	  (! string_tmp.is_bit).if {
-	    syntax_error (current_position,"Incorrect binary number.");
-	  };
-	  last_integer := string_tmp.to_binary;
-	  position := position+1;
-	} else {
-	  (last_character='d').if {	    
-	    position := position+1;
-	  };
-	  (! string_tmp.is_integer).if {
-	    syntax_error (current_position,"Incorrect decimal number.");
-	  };
-	  last_integer := string_tmp.to_integer;          
-	};
-      };
-    };
-    (result).if {
-      short (ALIAS_STR.short_integer) token pos_old to position;
-    };
-    result
-  );
-
-  - read_real:BOOLEAN <-
-  //-- real -> '0'-'9' {'0'-'9'_} [ '.' {'0'-'9'} ] [ 'E' ['+'|'-'] '0'-'9' {'0'-'9'}
-  ( + result:BOOLEAN;
-    + pos_old:INTEGER;
-
-    // On passe les espaces :
-    ((read_space) && {last_character.is_digit}).if {      
-      string_tmp.clear;
-      string_tmp.add_last last_character;      
-      pos_old := position;      
-      position := position + 1;
-      {(last_character.is_digit) || {last_character = '_'}}.while_do {
-	(last_character != '_').if {
-	  string_tmp.add_last last_character;
-	};
-	position := position + 1;
-      };      
-      (last_character = '.').if {	
-	string_tmp.add_last '.';
-	position := position + 1;		
-	(last_character.is_digit).if {
-	  result := TRUE;
-	  string_tmp.add_last last_character;
-	  position := position + 1;
-	  {last_character.is_digit}.while_do {
-	    string_tmp.add_last last_character;
-	    position := position + 1;
-	  };
-	};
-	(last_character = 'E').if {
-	  result := TRUE;
-	  string_tmp.add_last 'E';
-	  position := position + 1;  
-	  ((last_character = '+') || {last_character = '-'}).if {
-	    string_tmp.add_last last_character;
-	    position := position + 1;
-	  };
-	  (last_character.is_digit).if {
-	    string_tmp.add_last last_character;
-	    position := position + 1;
-	    {last_character.is_digit}.while_do {
-	      string_tmp.add_last last_character;
-	      position := position + 1;
-	    };	    
-	  } else {
-	    syntax_error (current_position,"Incorrect real number.");
-	  };
-	};
-      };
-      (result).if {
-	last_real := ALIAS_STR.get string_tmp;
-      } else {
-	position := pos_old;
-      };
-    };
-    (result).if {      
-      short (ALIAS_STR.short_integer) token pos_old to position;
-    }; 
-    result    
-  );
-  
-  - read_escape_character <-
-  ( + nothing:BOOLEAN;
-    + val:INTEGER;
-    last_character.is_separator.if {        
-      position := position+1;
-      {
-	(last_character = 0.to_character) || 
-	{! last_character.is_separator}
-      }.until_do {
-	position := position+1;
-      };
-      (last_character='\\').if {
-	string_tmp.remove_last 1;
-	position := position+1;
-      }.elseif {last_character != 0.to_character} then {
-	syntax_error (current_position,"Unknown escape sequence.");
-      };
-    }.elseif {last_character != 0.to_character} then {
-      ( (last_character = 'a')  || 
-	{last_character = 'b'}  ||
-	{last_character = 'f'}  ||
-	{last_character = 'n'}  ||
-	{last_character = 'r'}  ||
-	{last_character = 't'}  ||
-	{last_character = 'v'}  ||
-	{last_character = '\\'} ||
-	{last_character = '?'}  ||
-	{last_character = '\''} ||
-	{last_character = '\"'}
-      ).if {
-	string_tmp.add_last last_character;
-	position := position+1;
-      }.elseif {last_character.in_range '0' to '9'} then {
-	(
-          (last_character='0') && 
-	  {position<source.upper} && 
-          {! source.item(position+1).is_hexadecimal_digit}
-        ).if {
-	  string_tmp.add_last last_character;
-	  position := position+1;
-	} else {
-	  string_tmp2.copy string_tmp;
-	  nothing := read_integer; // result is Always TRUE.
-	  string_tmp.copy string_tmp2;
-	  (last_integer > 255).if {
-	    syntax_error (current_position,
-	    "Invalid range character number [0,255].");
-	  };
-	  val := last_integer.to_integer;
-	  string_tmp.add_last ((val / 64).decimal_digit);
-	  string_tmp.add_last (((val % 64) / 8).decimal_digit);
-	  string_tmp.add_last ((val % 8).decimal_digit);
-	  (last_character='\\').if {
-	    position := position + 1;
-	  } else {
-	    syntax_error (current_position,"Character '\' is needed."); 
-	  };
-	};
-      } else {
-	syntax_error (current_position,"Unknown escape sequence.");
-      };      
-    };
-  );
-  
-  //-- character  -> '\'' ascii '\''
-  - read_characters:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    + count:INTEGER;
-    // On passe les espaces :
-    ((read_space) && {last_character='\''}).if { 
-      old_pos := position;      
-      position := position+1;
-      string_tmp.clear;
-      {
-        (last_character=0.to_character) ||
-	{last_character='\n'} ||
-        {last_character='\''}
-      }.until_do {
-	string_tmp.add_last last_character;
-	(last_character='\\').if {
-	  position := position+1;
-          read_escape_character;            
-          count := count + 1;
-	} else {
-          position := position+1;	  
-          count := count + 1;
-	};
-      };
-      (last_character='\'').if {
-	position := position+1;
-	last_string := ALIAS_STR.get string_tmp;
-	(count != 1).if {
-	  position := begin_position;
-	  syntax_error (current_position,"Character constant too long.");
-	};
-	result := TRUE;
-	short (ALIAS_STR.short_character) token old_pos to position;
-      } else {
-	position := begin_position;
-	syntax_error (current_position,"Unterminated character constant.");
-      };
-    };
-    result
-  );
-  
-  //-- string -> '\"' ascii_string '\"'
-  - read_string:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    // On passe les espaces :
-    ((read_space) && {last_character='\"'}).if { 
-      old_pos := position;
-      position := position+1;
-      string_tmp.clear;
-      {
-        (last_character=0.to_character) ||
-	{last_character='\n'} || 
-        {last_character='\"'}
-      }.until_do { 
-	string_tmp.add_last last_character;
-	(last_character='\\').if {
-	  position := position+1;
-	  read_escape_character;
-	} else {
-	  position := position+1;	  
-	};
-      };
-      (last_character='\"').if { 
-	position := position+1;
-	last_string := ALIAS_STR.get string_tmp;
-	result := TRUE;
-	short (ALIAS_STR.short_string) token old_pos to position;
-      } else {
-	position := begin_position;
-	syntax_error (current_position,"Unterminated string constant.");
-      };
-    };
-    result
-  );
-  
-  //-- external -> '`' ascii_c_code '`'
-  - read_external:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + pos_old:INTEGER;
-    // On passe les espaces :
-    ((! read_space) || {last_character != '`'}).if {
-      result := FALSE;
-    } else {      
-      pos_old:=position;
-      position := position+1;
-      string_tmp.clear;
-      {(last_character = 0.to_character) | (last_character='`')}.until_do {
-	string_tmp.add_last last_character;
-	(last_character='\\').if {
-	  position := position+1;
-	  string_tmp.add_last last_character;
-	  (last_character != 0.to_character).if {
-	    position := position+1;
-	  };
-	} else {
-	  position := position+1;
-	};
-      };
-      (last_character != 0.to_character).if {
-	position := position+1;
-	last_string := ALIAS_STR.get string_tmp;
-	result := TRUE;
-	short (ALIAS_STR.short_external) token pos_old to position;
-      } else {
-	result := FALSE;
-      };
-    };
-    result
-  );
-  
-  //-- operator -> '!' | '@' | '#' | '$' | '%' | '^' | '&' | '<' | '|'  
-  //--           | '*' | '-' | '+' | '=' | '~' | '/' | '?' | '\' | '>'
-  - read_operator:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + old_pos:INTEGER;
-    // On passe les espaces :
-    (read_space).if {
-    };    
-    old_pos:=position;
-    string_tmp.clear;
-    {(last_character = 0.to_character) ||
-    {! "!@#$%^&<|*-+=~/?\\>".has last_character}}.until_do {
-      string_tmp.add_last last_character;
-      position := position+1;
-    };
-    (! string_tmp.is_empty).if {
-      last_string := ALIAS_STR.get string_tmp;
-      (
-	(last_string = ALIAS_STR.symbol_affect_immediate) ||
-	{last_string = ALIAS_STR.symbol_affect_code} ||
-	{last_string = ALIAS_STR.symbol_affect_cast}
-      ).if {
-	syntax_error (current_position,"Incorrect operator.");
-      };
-      short (ALIAS_STR.short_operator) token old_pos to position; 
-      result := TRUE;
-    };
-    result
-  );
-
-  //
-  // Variable & function Global.
-  //
-  
-  - last_slot:ITM_SLOT;
-
-  - last_group:ITM_LIST;
-
-  - last_section:SECTION_;
-  
-  //
-  // PARSER
-  //
-  
-  //++ PROGRAM      -> { "Section" (section|TYPE_LIST) { SLOT } } [CONTRACT ';'] 
-  - read_program:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + pos_sec,old_derive:INTEGER;
-    + t:FAST_ARRAY[ITM_TYPE_MONO];
-    
-    result := TRUE;
-    
-    pos_sec := position;
-    old_derive := short_derive;
-    
-    read_space;
-    
-    (is_shorter).if {
-      output_code.remove_between (source.lower+old_derive) to (position-1+short_derive);
-      short_derive := short_derive - ((position+short_derive) - (source.lower+old_derive));
-    };    
-    pos_sec := position;
-    old_derive := short_derive;
-    last_comment_extern := NULL;
-    //
-    // Read Section Header.
-    //            
-    (read_this_keyword (ALIAS_STR.keyword_section)).if_false {
-      syntax_error (current_position,"`Section' is needed.");
-    };
-    (read_this_keyword (ALIAS_STR.section_header)).if_false {
-      syntax_error (current_position,"Section `Header' is needed.");
-    };    
-    (read_slot_header TRUE).if_false {
-      syntax_error (current_position,"Slot `name' not found."); 
-    };
-    {read_slot_header FALSE}.while_do {
-    }; // loop
-    
-    (is_shorter2).if {
-      object.set_comment_header last_comment_extern;
-    };
-        
-    //
-    // Read Section Other. 
-    //
-    {read_this_keyword (ALIAS_STR.keyword_section)}.while_do {
-      last_comment_extern := NULL;
-      (read_keyword).if {
-	// Public, Private, ...
-	(ALIAS_STR.is_section last_string).if_false {
-	  syntax_error (current_position,"Incorrect type section.");
-	};	
-	last_section := SECTION_.get_name last_string;	
-	(last_section.is_mapping).if {
-	  object.set_mapping;
-	}.elseif {
-	  (last_section.is_inherit_or_insert) && 
-	  {object.last_slot != NULL} && 
-	  {! object.last_slot.id_section.is_inherit_or_insert}
-	} then {	  
-	  syntax_error (current_position,
-	  "`Section Inherit/Insert' must to be first section.");
-	}.elseif {	  
-	  (last_section.is_inherit) && 
-	  {object.type_style = ALIAS_STR.keyword_expanded} &&
-	  {object.name != ALIAS_STR.prototype_true } && 
-	  {object.name != ALIAS_STR.prototype_false}
-	} then {	  
-	  warning_error (current_position,
-	  "`Section Inherit' is not possible with Expanded object (Use `Section Insert').");
-	};
-      } else {
-	// TYPE_LIST.
-	t := read_type_list TRUE; 
-	(t = NULL).if {
-	  syntax_error (current_position,"Incorrect type section.");
-	};
-	last_section := SECTION_.get_type_list t;
-      };
-      {read_slot}.while_do {
-      }; // loop
-      
-      (is_shorter).if {
-	(
-	  (! is_short_private) && 
-	  {last_section.is_private}
-	).if {
-	  output_code.remove_between 
-	  (pos_sec + old_derive) to (position + short_derive - 1);	    
-	  short_derive := old_derive - (position - pos_sec);
-	};
-	
-	pos_sec:=position;
-	old_derive:=short_derive;
-      };
-      
-    }; // loop
-    (read_invariant).if {      
-      warning_error (current_position,"Invariant: Sorry, Not yet implemented.");
-    };
-    
-    // End of file :
-    result := result | read_space;
-    (last_character != 0.to_character).if {
-      syntax_error (current_position,"Incorrect symbol.");
-    };
-    result
-  );  // read_program
-
-  //++ SLOT         -> style TYPE_SLOT [':' (TYPE|'('TYPE_LIST')') ][ affect DEF_SLOT ]';'
-  - read_slot:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + t:ITM_TYPE;
-    + lt:FAST_ARRAY[ITM_TYPE_MONO];
-    + style:CHARACTER;
-    + affect:CHARACTER;
-    + old_pos,old_derive:INTEGER;
-    + s:ITM_SLOT;
-        
-    style  := read_style;
-    (style != ' ').if {      
-      //
-      // Classic slot.
-      //                
-      result := TRUE;
-      //
-      last_slot := read_type_slot;
-      (last_slot = NULL).if {
-	syntax_error (current_position,"Incorrect slot declaration.");
-      };       
-            
-      last_slot.set_style style;
-            
-      (read_affect).if {
-	affect := last_string.first;
-      } else {
-	affect := ' ';
-      };
-	
-      // ':' (TYPE|'('TYPE_LIST')'
-      ((affect = ' ') && {read_character ':'}).if {
-	(read_character '(').if {
-	  lt := read_type_list FALSE;
-	  (lt = NULL).if {
-	    syntax_error (current_position,"Incorrect result type.");
-	  };
-	  (read_character ')').if_false {
-	    warning_error (current_position,"Added ')' is needed.");
-	  };
-	  t := ITM_TYPE_MULTI.get lt;
-	} else {
-	  t := read_type FALSE; 
-	  (t = NULL).if {
-	    syntax_error (current_position,"Incorrect result type.");
-	  };
-	};	  
-	
-	(read_affect).if {
-	  affect := last_string.first;
-	};
-      } else {
-	t := ITM_TYPE_SIMPLE.type_void;
-      }; 
-      last_slot.set_result_type t;
-      last_slot.set_affect affect;
-      
-      (affect != ' ').if {
-        read_space;
-        (is_shorter2).if {          
-          (last_comment_slot != NULL).if {
-            last_slot.set_comment last_comment_slot;
-          };
-          (last_comment_extern != NULL).if {
-            last_slot.set_comment_chapter last_comment_extern;
-          };
-          skip_comment := TRUE;
-        };               
-	old_pos    := position;
-	old_derive := short_derive;
-	read_def_slot;
-      };
-
-      (read_character ';').if_false {
-	warning_error (current_position,"Added ';'.");
-      };
-      (is_shorter2).if {
-        skip_comment := FALSE;
-        read_space;
-        ((last_slot.comment = NULL) && {last_comment_slot != NULL}).if {
-          last_slot.set_comment last_comment_slot;
-        };
-      };
-	
-      (is_shorter).if {
-	(
-	  (! is_short_code) && 
-	  {old_pos != 0} &&
-	  {! last_section.is_header}
-	).if {
-	  (current_position.column<5).if {	      
-	    {
-	      (last_character != 0.to_character) &&
-	      {last_character.is_separator} &&
-	      {last_character != '\n'}
-	    }.while_do {
-	      position := position + 1;
-	    };
-	    (last_character = '\n').if {
-	      position := position + 1;
-	    };
-	  };
-	  output_code.remove_between 
-	  (old_pos + old_derive) to (position + short_derive - 1);	    
-	  short_derive := old_derive - (position - old_pos);
-	};
-      };
-
-      // Added slot in prototype :
-      s := object.slot_list.fast_reference_at (last_slot.name);
-      (s != NULL).if {
-	POSITION.put_error semantic text "Double slot declaration.";
-	s.position.put_position;
-	last_slot.position.put_position;
-	POSITION.send_error;
-      };
-      object.add_slot last_slot;
-
-      (is_shorter).if {
-	short_local.clear;
-      };
-    };
-    result
-  );  // read_slot
-  
-  //++ TYPE_SLOT    -> [ LOC_ARG '.' ] identifier [ LOC_ARG { identifier LOC_ARG } ]
-  //++               | [ LOC_ARG ] '\'' operator '\'' [("Left"|"Right") [integer]] [LOC_ARG]
-  - read_type_slot:ITM_SLOT <-
-  ( + arg:ITM_ARGUMENT;
-    + result:ITM_SLOT;
-    + list_arg:FAST_ARRAY[ITM_ARGUMENT];
-    
-    list_arg := ALIAS_ARRAY[ITM_ARGUMENT].new;
-    arg := read_loc_arg FALSE with_self TRUE;
-        
-    (arg = NULL).if {
-      (read_character '\'').if {
-	result := read_slot_operator list_arg;
-      } else {
-	arg := ITM_ARG.create current_position 
-        name (ALIAS_STR.variable_self) type (ITM_TYPE_SIMPLE.type_self);
-	list_arg.add_last arg;      
-	result := read_slot_keyword list_arg;
-      };
-    } else {
-      list_arg.add_last arg;
-      (read_character '.').if {
-	result := read_slot_keyword list_arg;
-      }.elseif {read_character '\''} then { 
-	result := read_slot_operator list_arg;
-      };
-    };
-    (result != NULL).if {
-      list_arg := ALIAS_ARRAY[ITM_ARGUMENT].copy list_arg;
-      result.set_argument_list list_arg; 
-    };
-    result
-  );
-  
-  - read_slot_keyword list_arg:FAST_ARRAY[ITM_ARGUMENT] :ITM_SLOT <-
-  ( + n:STRING;
-    + arg:ITM_ARGUMENT;
-    + result:ITM_SLOT;
-    
-    read_identifier.if {
-      short (ALIAS_STR.short_slot) token 
-      (position-last_string.count) to position;
-      
-      n  := ALIAS_STR.new;            
-      n.copy last_string;      
-      arg := read_loc_arg FALSE with_self FALSE;
-      (arg != NULL).if {
-	list_arg.add_last arg;	
-	(read_identifier).if {
-	  (last_section.is_external).if {
-	    syntax_error (current_position,"Incorrect in `Section External'.");
-	  };	  
-	  {	    
-	    short (ALIAS_STR.short_slot) token 
-	    (position-last_string.count) to position;            
-	    n.append (ALIAS_STR.separate);
-	    n.append last_string;
-	    arg := read_loc_arg FALSE with_self FALSE;
-	    (arg = NULL).if {
-	      syntax_error (current_position,"Incorrect symbol.");
-	    }; // if
-	    list_arg.add_last arg;
-	  }.do_while {read_identifier}; // loop
-	};
-      }; // if
-      result := ITM_SLOT.create current_position name (ALIAS_STR.alias n) feature last_section;
-    };
-    result
-  );
-  
-  - read_slot_operator list_arg:FAST_ARRAY[ITM_ARGUMENT] :ITM_SLOT <-
-  ( + name,pretty_name:STRING_CONSTANT;    
-    + associativity:STRING_CONSTANT;
-    + priority:INTEGER;
-    + arg:ITM_ARGUMENT;
-    + result:ITM_SLOT_OPERATOR;
-    
-    (! read_operator).if {
-      syntax_error (current_position,"Operator is needed.");
-    };
-    (
-      (last_string = ALIAS_STR.symbol_equal) ||
-      {last_string = ALIAS_STR.symbol_not_equal}
-    ).if {
-      syntax_error (current_position,"Incorrect operator.");
-    };    
-    pretty_name := name := last_string;
-    (! read_character '\'').if {
-      warning_error (current_position,"Added `''.");
-    };
-    (
-      (read_this_keyword (ALIAS_STR.keyword_left)) ||
-      {read_this_keyword (ALIAS_STR.keyword_right)}
-    ).if {
-      associativity := last_string;
-      (read_integer).if {
-	priority := last_integer.to_integer;
-      };      
-    };
-    
-    (list_arg.is_empty).if {
-      // Prefix operator.
-      arg := read_loc_arg FALSE with_self TRUE;
-      (arg = NULL).if {
-	syntax_error (current_position,"Operator declaration invalid.");
-      };
-      list_arg.add_last arg;
-      name := operator (ALIAS_STR.slot_prefix) name name;
-      (associativity != NULL).if {
-	syntax_error (current_position,"Not associativity for postfix operator.");
-      };
-    } else {
-      arg := read_loc_arg FALSE with_self FALSE;
-      (arg != NULL).if {
-	// Infix operator.
-	list_arg.add_last arg;
-	name := operator (ALIAS_STR.slot_infix) name name;	
-	(associativity = NULL).if {
-	  associativity := ALIAS_STR.keyword_left;
-	};      
-      } else {
-	// Postfix operator.
-	name := operator (ALIAS_STR.slot_postfix) name name;
-	(associativity != NULL).if {
-	  syntax_error (current_position,"Not associativity for prefix operator.");
-	};
-      };
-    };    
-    result := ITM_SLOT_OPERATOR.create current_position name name feature last_section;
-    result.set_associativity associativity priority priority;
-    result.set_pretty_name pretty_name;    
-    result
-  );  // read_slot_operator
-  
-  //++ DEF_SLOT     -> [CONTRACT] EXPR [CONTRACT]
-  - read_def_slot <-
-  ( + expr:ITM_CODE;
-    
-    read_require;
-    expr := read_expr;
-    (expr = NULL).if {
-      syntax_error (current_position,"Incorrect expression.");
-    };
-    last_slot.set_value expr type object;
-    read_ensure;
-  );
-  
-  //++ LOC_ARG      -> identifier ':' TYPE
-  //++               | '(' LOCAL ')'
-  - read_loc_arg mute:BOOLEAN with_self self_first:BOOLEAN :ITM_ARGUMENT <-
-  ( + result:ITM_ARGUMENT;
-    + t:ITM_TYPE_MONO;
-    + pos:POSITION;
-    + n:STRING_CONSTANT;
-    + tb:ITM_TYPE_BLOCK;
-    
-    (
-      ((  self_first) && {read_this_keyword (ALIAS_STR.variable_self)}) || 
-      {(! self_first) && {read_identifier}}
-    ).if {      
-      pos := current_position;
-      n   := last_string;
-      ((read_character ':') && {last_character != '='}).if {
-	t := read_type TRUE;
-	(t = NULL).if {
-	  syntax_error (current_position,"Incorrect type.");
-        };
-                        
-	(
-	  (self_first) && 
-          {t != ITM_TYPE_SIMPLE.type_self} && 
-          {
-            (object.name != ALIAS_STR.prototype_block) || 
-            {tb ?= t; tb = NULL}
-          }
-        ).if {                    
-	  syntax_error (current_position,"Type `SELF' is needed.");
-	};
-	result := ITM_ARG.create pos name n type t;
-		
-	(is_shorter).if {
-	  short_local.add n;
-	};
-      } else {
-	mute.if_false {
-	  warning_error (current_position,"Added ':' is needed.");
-	};
-      };      
-    }.elseif {read_character '('} then {      
-      result := read_local_arg mute with_self self_first;
-      (result = NULL).if {
-	mute.if_false {
-	  syntax_error (current_position,"Incorrect argument definition.");
-	};
-      } else {      
-	(read_character ')').if_false {
-	  warning_error (current_position,"Added ')'.");
-	};
-      };
-    };
-    result
-  );
-	
-  //++ LOCAL        -> { identifier [ ':' TYPE ] ',' } identifier ':' TYPE
-  - read_local m:BOOLEAN :FAST_ARRAY[ITM_LOCAL] <-
-  ( + t:ITM_TYPE_MONO;
-    + loc:ITM_LOCAL;
-    + result:FAST_ARRAY[ITM_LOCAL]; 
-    + beg:INTEGER;
-    + mute:BOOLEAN;
-    
-    mute := m;
-    (read_identifier).if {
-      result := ALIAS_ARRAY[ITM_LOCAL].new;      
-      beg := result.lower;
-      {
-	((result.count != 0) && {! read_identifier} && {! mute}).if {
-	  syntax_error (current_position,"Incorrect identifier.");
-	};
-	loc := ITM_LOCAL.create current_position name last_string;
-	result.add_last loc;
-	((read_character ':') && {last_character != '='}).if {
-	  mute := FALSE;
-	  t := read_type TRUE;
-	  (t = NULL).if {
-	    syntax_error (current_position,"Incorrect local type.");
-	  };
-	  beg.to (result.upper) do { j:INTEGER;
-	    result.item j.set_type t;
-	  };
-	  beg := result.upper + 1;
-	};  
-      }.do_while {read_character ','};
-      (beg != result.upper + 1).if {
-	(mute).if {
-	  ALIAS_ARRAY[ITM_LOCAL].free result;
-	  result := NULL;
-	} else {
-	  syntax_error (current_position,"Incorrect local type.");
-	};	
-      } else {
-	result := ALIAS_ARRAY[ITM_LOCAL].copy result;
-	
-	(is_shorter).if {
-	  (result.lower).to (result.upper) do { j:INTEGER;
-	    short_local.add (result.item j.name);
-	  };
-	};
-      };
-    };
-    
-    result
-  );  // read_local
-  
-  - read_local_arg m:BOOLEAN with_self s:BOOLEAN :ITM_ARGUMENT <-
-  ( + t:ITM_TYPE_MONO;
-    + tm:ITM_TYPE_MULTI;
-    + type:FAST_ARRAY[ITM_TYPE_MONO];
-    + name:FAST_ARRAY[STRING_CONSTANT]; 
-    + beg:INTEGER;
-    + mute:BOOLEAN;
-    + result:ITM_ARGUMENT;
-    + tb:ITM_TYPE_BLOCK;
-    
-    mute := m;
-    (
-      ((s) && {read_this_keyword (ALIAS_STR.variable_self)}) ||
-      {read_identifier}
-    ).if {      
-      name := ALIAS_ARRAY[STRING_CONSTANT].new;
-      type := ALIAS_ARRAY[ITM_TYPE_MONO].new;      
-      beg  := name.lower;
-      {
-	((name.count != 0) && {! read_identifier} && {! mute}).if {
-	  syntax_error (current_position,"Incorrect argument identifier.");
-	};
-	name.add_last last_string;
-	((read_character ':') && {last_character != '='}).if {
-	  mute := FALSE;
-	  t := read_type TRUE;
-	  (t = NULL).if {
-	    syntax_error (current_position,"Incorrect argument type.");
-	  };
-	  beg.to (name.upper) do { j:INTEGER;
-	    type.add_last t;
-	  };
-	  beg := name.upper + 1;
-	};  
-      }.do_while {read_character ','};
-      (beg != name.upper + 1).if {
-	(mute).if_false {
-	  syntax_error (current_position,"Incorrect argument type.");
-	};	
-	ALIAS_ARRAY[STRING_CONSTANT].free name;
-	ALIAS_ARRAY[ITM_TYPE_MONO].free type;
-      } else {
-	(
-	  (s) && {
-	    (type.first != ITM_TYPE_SIMPLE.type_self) || {
-	      (object.name = ALIAS_STR.prototype_block) && 
-	      {tb ?= type.first; tb = NULL}
-	    }
-	  }
-	).if {
-	  syntax_error (current_position,"Type `SELF' is needed.");
-	};
-	(name.count = 1).if {
-	  // Single Argument.
-	  result := ITM_ARG.create current_position 
-	  name (name.first)
-	  type (type.first);
-	  ALIAS_ARRAY[STRING_CONSTANT].free name;
-	  ALIAS_ARRAY[ITM_TYPE_MONO].free type;
-	} else {
-	  // Vector Arguments.
-	  name := ALIAS_ARRAY[STRING_CONSTANT].alias name;
-	  type := ALIAS_ARRAY[ITM_TYPE_MONO].alias type;
-	  tm := ITM_TYPE_MULTI.get type;
-	  result := ITM_ARGS.create current_position name name type tm;
-	};
-	
-	(is_shorter).if {
-	  (name.lower).to (name.upper) do { j:INTEGER;
-	    short_local.add (name.item j);
-	  };
-	};
-      };
-    };
-    
-    result
-  );  // read_local  
-  
-  //++ TYPE_LIST    -> TYPE { ',' TYPE }
-  - read_type_list is_section:BOOLEAN :FAST_ARRAY[ITM_TYPE_MONO] <-
-  ( + lst:FAST_ARRAY[ITM_TYPE_MONO];
-    + t:ITM_TYPE_MONO;
-    + ts:ITM_TYPE_SIMPLE;
-    
-    t := read_type FALSE;    
-    (t != NULL).if {      
-      (is_section).if {
-	ts ?= t;
-	(ts = NULL).if {
-	  syntax_error (current_position,
-	  "For a section, the prototype name only (without '['...']').");
-	};
-      };
-      lst := ALIAS_ARRAY[ITM_TYPE_MONO].new;
-      lst.add_last t;      
-      {read_character ','}.while_do {
-	t := read_type FALSE;
-	(t = NULL).if {
-	  syntax_error (current_position,"Incorrect type list.");
-	};
-	(is_section).if {
-	  ts ?= t;
-	  (ts = NULL).if {
-	    syntax_error (current_position,
-	    "For a section, the prototype name only (without '['...']').");
-	  };
-	};
-	lst.add_last t;
-      };
-      lst := ALIAS_ARRAY[ITM_TYPE_MONO].alias lst;
-    };
-    lst
-  );
-    
-  //++ TYPE         -> '{' [ (TYPE | '(' TYPE_LIST ')') ';' ] [ TYPE_LIST ] '}'
-  //++               | [type] PROTOTYPE [ CONTRACT ]
-  - read_type is_local:BOOLEAN :ITM_TYPE_MONO <-
-  ( + style:STRING_CONSTANT;
-    + result:ITM_TYPE_MONO;
-    + lst:FAST_ARRAY[ITM_TYPE_MONO];
-    + typ_arg,typ_res:ITM_TYPE;
-    + contract:ITM_LIST;
-    
-    (read_character '{').if {
-      // '{' [ (TYPE | '(' TYPE_LIST ')') ';' ] [ TYPE_LIST ] '}'      
-      (read_character '(').if {
-	// Read vector argument.
-	lst := read_type_list FALSE;
-	(lst = NULL).if {
-	  syntax_error (current_position,"Incorrect type list.");
-	};
-	(lst.count = 1).if {
-	  typ_arg := lst.first;	  
-	} else {
-	  typ_arg := ITM_TYPE_MULTI.get lst;
-	};
-	(! read_character ')').if {
-	  warning_error (current_position,"Added ')'.");
-	}; // if      	
-	(! read_character ';').if {
-	  warning_error (current_position,"Added ';'.");
-        }; // if
-        lst := read_type_list FALSE;
-      } else {
-	lst := read_type_list FALSE;
-	(lst != NULL).if {
-	  (read_character ';').if {	    
-	    (lst.count = 1).if {
-	      typ_arg := lst.first;
-	    } else {
-	      typ_arg := ITM_TYPE_MULTI.get lst;
-	      string_tmp.copy "Added '";
-	      typ_arg.append_in string_tmp;
-	      string_tmp.append "'.";
-	      warning_error (current_position,string_tmp);
-            };
-            lst := read_type_list FALSE;
-          };          
-	};      
-      };
-      (lst != NULL).if {
-        (lst.count = 1).if {
-          typ_res := lst.first;
-        } else {
-          typ_res := ITM_TYPE_MULTI.get lst;
-        };
-      };
-      (! read_character '}').if {
-	warning_error (current_position,"Added '}'.");
-      }; // if      	
-      result := ITM_TYPE_BLOCK.get typ_arg and typ_res;      
-    } else {    
-      // Expanded | Strict 
-      (
-	(read_this_keyword (ALIAS_STR.keyword_expanded)) || 
-	{read_this_keyword (ALIAS_STR.keyword_strict)} 
-      ).if {      
-	style := last_string;
-	((is_local) && {last_string = ALIAS_STR.keyword_expanded}).if {
-	  syntax_error (current_position,"`Expanded' is not possible.");
-	};
-      };    
-      // PROTOTYPE
-      result := read_prototype style;
-      contract := read_contract;
-      (contract != NULL).if {
-        warning_error (current_position,"Sorry, not yet implemented.");
-      };
-    };
-    result
-  );  // read_type
-  
-  //++ PROTOTYPE    -> cap_identifier{('.'|'...')cap_identifier}['('PARAM_TYPE{','PARAM_TYPE}')']
-  - read_prototype styl:STRING_CONSTANT :ITM_TYPE_MONO <-
-  ( + nam:STRING_CONSTANT;    
-    + genericity:FAST_ARRAY[ITM_TYPE_MONO];    
-    + result,t:ITM_TYPE_MONO;    
-    + old_pos,old_derive,sav_derive,pos_before:INTEGER;
-    + continue:BOOLEAN;
-    
-    
-    (read_cap_identifier).if {                        
-      old_pos    := position;
-      old_derive := short_derive;
-      string_tmp2.copy last_string;
-      {
-        continue := read_word (ALIAS_STR.keyword_ldots);
-        (continue).if {
-          (read_cap_identifier).if_false {
-            syntax_error (current_position,"Prototype name needed.");
-          };
-          string_tmp2.append (ALIAS_STR.keyword_ldots);
-          string_tmp2.append last_string;
-        } else {
-          pos_before := position;
-          ((read_character '.') && {read_cap_identifier}).if {
-            continue := TRUE;
-            string_tmp2.add_last '.';
-            string_tmp2.append last_string;
-          } else {
-            position := pos_before;
-          };
-        };
-      }.do_while {continue};      
-      nam := ALIAS_STR.get string_tmp2;
-      
-      (read_character '(').if {	
-	//
-	// Genericity.
-        //		
-        genericity := ALIAS_ARRAY[ITM_TYPE_MONO].new;
-        {
-          t := read_param_type;
-          (t = NULL).if {
-            syntax_error (current_position,"Type needed.");
-          };
-          genericity.add_last t;
-        }.do_while {read_character ','};        
-        genericity := ALIAS_ARRAY[ITM_TYPE_MONO].alias genericity;
-        result     := ITM_TYPE_GENERIC.get nam style styl with genericity;
-        (read_character ')').if_false {
-          warning_error (current_position,"Added ')'.");
-        };
-      } else {	        
-        // Simple type.	          
-        (is_parameter_type).if {
-          (styl != NULL).if {
-            string_tmp.copy "Style `";
-            string_tmp.append styl;
-            string_tmp.append "' for parameter type is ignored.";
-            warning_error (current_position,string_tmp);
-          };
-          result := ITM_TYPE_PARAMETER.get nam;
-        }.elseif {styl = NULL} then {
-	  result := ITM_TYPE_SIMPLE.get nam;
-	} else {
-	  (nam = ALIAS_STR.prototype_self).if {
-	    string_tmp.copy "Style `";
-	    string_tmp.append styl;
-	    string_tmp.append "' ignored.";
-            warning_error (current_position,string_tmp);            
-	    result := ITM_TYPE_SIMPLE.type_self;
-	  } else {
-	    result := ITM_TYPE_STYLE.get nam style styl;
-	  };
-	};
-      }; // if
-      (is_shorter).if {
-        sav_derive := short_derive;
-        short_derive := old_derive;
-        (
-          (result = ITM_TYPE_SIMPLE.type_self) || 
-          {result = ITM_TYPE_SIMPLE.type_null}
-        ).if {
-          short (ALIAS_STR.short_keyprototype) token 
-          (old_pos - nam.count) to old_pos;
-        } else {
-          short (ALIAS_STR.short_prototype) token 
-          (old_pos - nam.count) to old_pos;
-        };
-        short_derive := sav_derive + (short_derive - old_derive);
-      };
-    }; // if
-    result
-  );  // read_prototype
-    
-  - read_param_type:ITM_TYPE_MONO <-
-  //++ PARAM_TYPE   -> TYPE
-  //++               | CONSTANT
-  //++               | identifier
-  ( + result:ITM_TYPE_MONO;
-    + cst:ITM_CONSTANT;
-    
-    result := read_type FALSE;
-    (result = NULL).if {    
-      cst := read_constant;
-      (cst != NULL).if {
-        syntax_error (current_position,"1) Sorry, not yet implemented.");
-        //result := 
-      }.elseif {read_identifier} then {
-        syntax_error (current_position,"2) Sorry, not yet implemented.");
-        //result := 
-      };
-    };
-    result
-  );
-    
-  //++ EXPR         -> { ASSIGN !!AMBIGU!! affect } EXPR_OPERATOR
-  //++ ASSIGN       -> '(' IDF_ASSIGN { ',' IDF_ASSIGN } ')'
-  //++               | IDF_ASSIGN
-  //++ IDF_ASSIGN   -> identifier { identifier }
-  - read_expr:ITM_CODE <-
-  ( + result,value:ITM_CODE;    
-    + affect:CHARACTER;   
-    + again:BOOLEAN;
-    + l_assignment:FAST_ARRAY[STRING_CONSTANT];
-    + p:INTEGER;
-    + name:STRING_CONSTANT;
-    
-    // !! AMBIGU resolution !!    
-    save_context;
-    (read_character '(').if {
-      l_assignment := ALIAS_ARRAY[STRING_CONSTANT].new;
-      {
-	again := FALSE;
-	(read_identifier).if {
-	  p := position - last_string.count;
-	  string_tmp2.copy last_string;
-	  {read_identifier}.while_do {
-	    string_tmp2.append (ALIAS_STR.separate);
-	    string_tmp2.append last_string;
-	  };
-	  name := ALIAS_STR.get string_tmp2;
-	  l_assignment.add_last name;
-	  
-	  (is_shorter).if {
-	    (! short_local.fast_has name).if {	  	  
-	      short (ALIAS_STR.short_slot_call) token p to position;	  
-	    };
-	  };
-	  
-	  (read_character ',').if {
-	    again := TRUE;
-	  };
-	};
-      }.do_while {again};
-      ((! l_assignment.is_empty) && {read_character ')'} && {read_affect}).if {	
-	l_assignment := ALIAS_ARRAY[STRING_CONSTANT].copy l_assignment;
-	result := ITM_LIST_IDF.create current_position with l_assignment;
-	affect := last_string.first;	
-	value  := read_expr;
-	(value = NULL).if {
-	  syntax_error (current_position,"Incorrect expression.");
-	};
-	(affect)
-	.when ':' then {
-	  result := ITM_WRITE_VALUE.create (result.position) assign result with value;
-	}
-	.when '<' then {
-	  syntax_error (current_position,"Impossible '<-' style assignment with vector.");
-	}
-	.when '?' then {
-	  syntax_error (current_position,"Sorry, Not yet implemented !");
-	  result := ITM_WRITE_CAST.create (result.position) assign result with value;
-	};	
-      } else {
-	ALIAS_ARRAY[STRING_CONSTANT].free l_assignment;
-      };
-    }.elseif {read_identifier} then {
-      p := position - last_string.count;
-      string_tmp2.copy last_string;
-      {read_identifier}.while_do {
-	string_tmp2.append (ALIAS_STR.separate);
-	string_tmp2.append last_string;
-      };
-      name := ALIAS_STR.get string_tmp2;
-            
-      (is_shorter).if {
-	(! short_local.fast_has name).if {	  	  
-	  short (ALIAS_STR.short_slot_call) token p to position;	  
-	};
-      };
-      
-      (read_affect).if {
-	result := ITM_READ.create current_position name name;
-	affect := last_string.first;	
-	value  := read_expr;
-	(value = NULL).if {
-	  syntax_error (current_position,"Incorrect expression.");
-	};
-	(affect)
-	.when ':' then {
-	  result := ITM_WRITE_VALUE.create (result.position) assign result with value;
-	}
-	.when '<' then {
-	  result := ITM_WRITE_CODE.create (result.position) assign result with value;
-	}
-	.when '?' then {
-	  result := ITM_WRITE_CAST.create (result.position) assign result with value;
-	};	
-      };
-    };
-    (result = NULL).if {
-      restore_context;
-      result := read_expr_operator;
-    };
-    result
-  );  
-     
-  //++ EXPR_OPERATOR-> { operator } EXPR_MESSAGE { operator {operator} EXPR_MESSAGE } {operator}
-  - read_expr_operator:ITM_CODE <-
-  ( + result:ITM_CODE;
-    + expr :ITM_CODE;
-    + l_expr:FAST_ARRAY[ITM_CODE];    
-    + itm_op:ITM_OPERATOR;    
-    + last_msg,first_msg:INTEGER;
-    
-    l_expr := ALIAS_ARRAY[ITM_CODE].new;
-    {read_operator}.while_do {
-      expr := ITM_OPERATOR.create current_position name last_string;
-      l_expr.add_last expr;
-    };
-    expr := read_expr_message;
-    (expr = NULL).if {      
-      // Error.
-      (! l_expr.is_empty).if {
-	syntax_error (current_position,"Incorrect expression.");
-      };
-      ALIAS_ARRAY[ITM_CODE].free l_expr;      
-    } else {
-      // { operator {operator} EXPR_MESSAGE } {operator}      
-      first_msg := l_expr.count;
-      {
-	last_msg := l_expr.count;
-	l_expr.add_last expr;	
-	(read_operator).if {
-	  {
-	    expr := ITM_OPERATOR.create current_position name last_string;
-	    l_expr.add_last expr;
-	  }.do_while {read_operator};	  
-	  expr := read_expr_message;
-	} else {	
-	  expr := NULL;
-	};
-      }.do_while {expr != NULL};
-      
-      // Last Post-fix operator.
-      {last_msg < l_expr.upper}.while_do {
-	itm_op ?= l_expr.item (last_msg + 1);
-	expr := ITM_READ_ARG1.create (itm_op.position)
-	name (operator (ALIAS_STR.slot_postfix) name (itm_op.name))
-	arg (l_expr.item last_msg);
-	l_expr.put expr to last_msg;
-	l_expr.remove (last_msg + 1);
-      };      
-      ((last_msg - first_msg) < 3).if {
-	// First Pre-fix operator.
-	{first_msg != 0}.while_do {
-	  itm_op ?= l_expr.item (first_msg - 1);
-	  expr := ITM_READ_ARG1.create (itm_op.position)
-	  name (operator (ALIAS_STR.slot_prefix) name (itm_op.name))
-	  arg (l_expr.item first_msg);
-	  l_expr.put expr to first_msg;
-	  first_msg := first_msg - 1;
-	  l_expr.remove first_msg;
-	};	      
-      };
-      (l_expr.count = 1).if {
-	result := l_expr.first;	
-	ALIAS_ARRAY[ITM_CODE].free l_expr;
-      }.elseif {l_expr.count = 3} then {
-	// Simple binary message.	
-	itm_op ?= l_expr.second;
-	result := ITM_READ_ARG2.create (itm_op.position) 
-	name (operator (ALIAS_STR.slot_infix) name (itm_op.name)) 
-	args (l_expr.first,l_expr.item 2);
-	//
-	ALIAS_ARRAY[ITM_CODE].free l_expr;      
-      } else {
-	// Complex expression.
-	l_expr := ALIAS_ARRAY[ITM_CODE].copy l_expr;
-	result := ITM_EXPRESSION.create l_expr;
-      };
-    };
-    result
-  );  // read_expr_operator
-
-  //++ EXPR_MESSAGE -> EXPR_BASE { '.' SEND_MSG }
-  - read_expr_message:ITM_CODE <-
-  ( + result:ITM_CODE;
-    
-    result := read_expr_base;
-    (result != NULL).if {        
-      {read_character '.'}.while_do {
-	result := read_send_msg result;
-	(result=NULL).if {
-	  syntax_error (current_position,"Incorrect message.");
-	}; // if
-      }; // loop
-    }; //if
-    result
-  );  // read_expr_message
-
-  //++ EXPR_BASE    -> "Old" EXPR
-  //++               | EXPR_PRIMARY
-  //++               | SEND_MSG
-  - read_expr_base:ITM_CODE <-
-  ( + result,old_value:ITM_CODE;    
-    
-    (read_this_keyword (ALIAS_STR.keyword_old)).if {
-      old_value := read_expr;
-      (old_value = NULL).if {	  
-	syntax_error (current_position,"Incorrect `Old' expression."); 
-      };      
-      result := ITM_OLD.create current_position value old_value;
-    } else {    
-      result := read_expr_primary;
-      (result = NULL).if {
-	result := read_send_msg NULL;
-      };
-    };
-    result
-  );  // read_expr_base
-
-  //++ EXPR_PRIMARY -> "Self"
-  //++               | result
-  //++               | PROTOTYPE
-  //++               | CONSTANT
-  //++               | '(' GROUP ')'
-  //++               | '{' [ LOC_ARG ';' !! AMBIGU!! ] GROUP '}'
-  //++               | external [ ':' ['('] TYPE ['{' TYPE_LIST '}'] [')'] ]
-  - read_expr_primary:ITM_CODE <-
-  ( + result:ITM_CODE;
-    + type :ITM_TYPE_MONO;
-    + ltype:FAST_ARRAY[ITM_TYPE_MONO];
-    + ext  :ITM_EXTERNAL_TYPE;
-    + group_sav:ITM_LIST;
-    + arg:ITM_ARGUMENT;
-    + result_id:STRING_CONSTANT;    
-    
-    (read_this_keyword (ALIAS_STR.variable_self)).if {
-      result := ITM_READ.create current_position name last_string;
-    }.elseif {read_this_keyword (ALIAS_STR.keyword_result)} then {
-      (last_character = '_').if {
-	position := position + 1;
-	string_tmp.copy (ALIAS_STR.keyword_result);
-	string_tmp.add_last '_';
-	{last_character.is_digit}.while_do {
-	  string_tmp.add_last last_character;
-	  position := position + 1;
-	};
-	(string_tmp.is_empty).if {
-	  syntax_error (current_position,"Incorrect Result number.");
-	};
-	result_id := ALIAS_STR.get string_tmp;
-      } else {
-	result_id := ALIAS_STR.keyword_result;
-      };
-      result := ITM_READ.create current_position name result_id;
-    }.elseif {
-      type := read_prototype NULL;
-      type != NULL
-    } then {      
-      result := ITM_PROTOTYPE.create current_position type type;            
-    }.elseif {(result := read_constant) != NULL} then {      
-    }.elseif {read_character '(' } then { 
-      group_sav := last_group;
-      last_group := ITM_LIST.create current_position;
-      result := last_group;
-      last_group.set_code read_group;
-      (read_character ')').if_false {  
-	warning_error (current_position,"Added ')'.");
-      }; // if
-      last_group := group_sav;
-    }.elseif {read_character '{' } then {
-      short (ALIAS_STR.short_block) token (position-1) to position;
-      group_sav := last_group;      
-      last_group := ITM_LIST.create current_position;
-      
-      save_context; // !! SAVE CONTEXT !!
-            
-      //
-      arg := read_loc_arg TRUE with_self FALSE;
-      //      
-      (arg != NULL).if {	
-	(read_character ';').if_false {  
-	  warning_error (current_position,"Added ';'.");
-	}; // if
-      } else {
-	
-	restore_context; // !! RESTORE CONTEXT !!
-	
-      };
-      result := ITM_BLOCK.create last_group argument arg;
-      
-      last_group.set_code read_group;
-      (! read_character '}').if {
-	warning_error (current_position,"Added '}'.");
-      }; // if
-      short (ALIAS_STR.short_block) token (position-1) to position;
-      last_group := group_sav;      
-    }.elseif {read_external} then {
-      (! read_character ':').if {
-	result := ITM_EXTERNAL.create current_position text last_string;
-      } else {
-	ext := ITM_EXTERNAL_TYPE.create current_position text 
-	last_string persistant (read_character '(');
-	type := read_type FALSE;
-	(type = NULL).if {
-	  syntax_error (current_position,"Incorrect type.");
-	};
-	ext.set_type type;
-	(read_character '{').if {
-	  ltype := read_type_list FALSE;
-	  (ltype = NULL).if {
-	    syntax_error (current_position,"Incorrect live type list.");
-	  };
-	  (! read_character '}').if {
-	    warning_error (current_position,"Added '}'.");
-	  };
-	  ext.set_type_list ltype;
-	};
-	((ext.is_persistant) && {! read_character ')'}).if { 
-	  warning_error (current_position,"Added ')'.");
-	};
-	result := ext;
-      };
-    };
-    result
-  );  // read_expr_primaire
-  
-  - read_constant:ITM_CONSTANT <-
-  //++ CONSTANT     -> integer
-  //++               | real
-  //++               | characters
-  //++               | string
-  ( + result:ITM_CONSTANT;
-    
-    (read_real).if {
-      result := ITM_REAL.create current_position value last_real;
-    }.elseif {read_integer} then {
-      result := ITM_NUMBER.create current_position value last_integer;
-    }.elseif {read_characters} then {
-      result := ITM_CHARACTER.create current_position char last_string;
-    }.elseif {read_string} then {
-      result := ITM_STRING.create current_position text last_string;    
-    };
-    result
-  );
-  
-  //++ GROUP        -> DEF_LOCAL {EXPR ';'} [ EXPR {',' {EXPR ';'} EXPR } ]
-  - read_group:FAST_ARRAY[ITM_CODE] <-
-  ( + e:ITM_CODE;    
-    + result:FAST_ARRAY[ITM_CODE];
-    
-    read_def_local;
-    
-    result := ALIAS_ARRAY[ITM_CODE].new;
-    e := read_expr;
-    {(e != NULL) && {read_character ';'}}.while_do {
-      result.add_last e;
-      e := read_expr;
-    };
-    (e != NULL).if {
-      (read_character ',').if {	
-	{
-	  e := ITM_RESULT.create e;
-	  result.add_last e;
-	  e := read_expr;
-	  {(e != NULL) && {read_character ';'}}.while_do {
-	    result.add_last e;
-	    e := read_expr;
-	  };
-	  (e = NULL).if {
-	    syntax_error (current_position,"Incorrect multiple result expression.");
-	  };	  
-        }.do_while {read_character ','};	        
-      };
-      e := ITM_RESULT.create e;
-      result.add_last e;
-    };    
-    ALIAS_ARRAY[ITM_CODE].copy result
-  );
-  
-  - read_invariant:BOOLEAN <-
-  ( + lst:ITM_LIST;
-    
-    lst := read_contract;
-    lst != NULL    
-  );
-  
-  - read_require:BOOLEAN <-
-  ( + lst:ITM_LIST;
-    + result:BOOLEAN;
-    
-    lst := read_contract;
-    (lst != NULL).if {
-      last_slot.set_require lst;
-      result := TRUE;
-    };
-    result
-  );
-
-  - read_ensure:BOOLEAN <-
-  ( + lst:ITM_LIST;
-    + result:BOOLEAN;
-    
-    lst := read_contract;
-    (lst != NULL).if {
-      last_slot.set_ensure lst;
-      result := TRUE;
-    };
-    result
-  );
-  
-  //++ CONTRACT     -> '[' DEF_LOCAL { ( EXPR ';' | "..." ) } ']'
-  - read_contract:ITM_LIST <-
-  ( + continue:BOOLEAN;
-    + e:ITM_CODE;
-    + result:ITM_LIST;
-    + lst:FAST_ARRAY[ITM_CODE];
-    
-    (read_character '[').if {
-      result := last_group := ITM_LIST.create current_position;
-      read_def_local;
-      
-      lst := ALIAS_ARRAY[ITM_CODE].new;
-      {
-	e := read_expr;
-	(e = NULL).if {
-	  continue := read_word (ALIAS_STR.keyword_ldots);
-	  (continue).if {
-	    lst.add_last (ITM_LDOTS.create current_position);
-	  };
-	} else {
-	  lst.add_last e;
-	  (! read_character ';').if {
-	    warning_error (current_position,"Added ';'.");
-	  };
-	  continue := TRUE;
-	};
-      }.do_while {continue};
-      
-      (! read_character ']').if {
-	warning_error (current_position,"Added ']'.");
-      };
-      e := ITM_PROTOTYPE.create current_position type (ITM_TYPE_SIMPLE.type_void);
-      lst.add_last e;
-      //
-      result.set_code (ALIAS_ARRAY[ITM_CODE].copy lst);
-    };
-    result
-  );
-  
-  //++ DEF_LOCAL    -> { style LOCAL ';' } !! AMBIGU !!
-  - read_def_local <-
-  ( + loc_lst:FAST_ARRAY[ITM_LOCAL];
-    + local_list,static_list:FAST_ARRAY[ITM_LOCAL];    
-    + styl:CHARACTER;
-    
-    save_context; // !! SAVE CONTEXT !!
-    
-    styl    := read_style;
-    local_list  := ALIAS_ARRAY[ITM_LOCAL].new;
-    static_list := ALIAS_ARRAY[ITM_LOCAL].new;
-    {styl != ' '}.while_do {
-      loc_lst := read_local TRUE;
-      (loc_lst != NULL).if {
-	(styl = '+').if {
-	  local_list.append_collection loc_lst;
-	} else {
-	  static_list.append_collection loc_lst;
-	};
-	(read_character ';').if_false {
-	  warning_error (current_position,"Added ';'.");
-	};
-	
-	save_context; // !! SAVE CONTEXT !!
-	
-	styl := read_style;
-      } else {
-	
-	restore_context; // !! RESTORE CONTEXT !!
-	
-	styl := ' ';
-      };      
-    };
-    (local_list.is_empty).if {
-      ALIAS_ARRAY[ITM_LOCAL].free local_list;
-    } else {
-      last_group.set_local_list  (ALIAS_ARRAY[ITM_LOCAL].copy local_list);
-    };
-    (static_list.is_empty).if {
-      ALIAS_ARRAY[ITM_LOCAL].free static_list;
-    } else {
-      last_group.set_static_list (ALIAS_ARRAY[ITM_LOCAL].copy static_list); 
-    };
-  );
-  
-  //++ SEND_MSG     -> identifier [ ARGUMENT { identifier ARGUMENT } ]
-  - read_send_msg first_arg:ITM_CODE :ITM_CODE <-
-  ( + result:ITM_CODE;
-    + name :STRING_CONSTANT;
-    + n:STRING;
-    + l_arg:FAST_ARRAY[ITM_CODE];
-    + arg:ITM_CODE;
-    + p1,p2,old_derive,sav_derive:INTEGER;
-    
-    read_identifier.if {
-      //
-      // Classic Message.
-      //
-      p1 := position - last_string.count;
-      p2 := position;
-      old_derive := short_derive;
-      
-      n := ALIAS_STR.new;
-      n.copy last_string;
-      // Argument list.
-      l_arg := ALIAS_ARRAY[ITM_CODE].new;
-      arg := read_argument;
-      (arg != NULL).if {          
-	l_arg.add_last arg;	
-	{read_identifier}.while_do {
-	  
-	  short (ALIAS_STR.short_slot_call) token 
-	  (position-last_string.count) to position;
-	  
-	  n.append (ALIAS_STR.separate);
-	  n.append last_string;
-	  arg := read_argument;
-	  (arg = NULL).if {
-	    syntax_error (current_position,"Incorrect argument.");
-	  }; // if
-	  l_arg.add_last arg;
-	}; // loop
-      }; // if
-      name := ALIAS_STR.alias n;
-      
-      (is_shorter).if {
-	(
-	  (! l_arg.is_empty) || 
-	  {first_arg != NULL} ||
-	  {! short_local.fast_has last_string}
-	).if {
-	  sav_derive := short_derive;
-	  short_derive := old_derive;
-	  short (ALIAS_STR.short_slot_call) token p1 to p2;
-	  short_derive := sav_derive + (short_derive-old_derive);
-	};
-      };
-      
-      l_arg.is_empty.if {
-	(first_arg=NULL).if {
-	  // Local ou Implicite Slot without argument.
-	  result := ITM_READ.create current_position name name; 
-	} else {  
-	  result := ITM_READ_ARG1.create current_position name name arg first_arg; 
-	};
-	ALIAS_ARRAY[ITM_CODE].free l_arg;
-      }.elseif {l_arg.count=1} then {
-	result := ITM_READ_ARG2.create current_position name 
-	name args (first_arg,(l_arg.first)); 
-	ALIAS_ARRAY[ITM_CODE].free l_arg;
-      } else {
-	l_arg.add_first first_arg;
-	l_arg := ALIAS_ARRAY[ITM_CODE].copy l_arg;	
-	result := ITM_READ_ARGS.create current_position name name args l_arg; 
-      };
-    }; // if
-    result
-  );  // read_send_msg
-
-  //++ ARGUMENT     -> EXPR_PRIMARY
-  //++               | identifier
-  - read_argument:ITM_CODE <-
-  ( + result:ITM_CODE;
-    result := read_expr_primary;
-    ((result = NULL) && {read_identifier}).if {
-      (is_shorter).if {
-	(short_local.fast_has last_string).if_false {
-	  short (ALIAS_STR.short_slot_call) token 
-	  (position-last_string.count) to position;
-	};
-      };
-      result := ITM_READ.create current_position name last_string;
-    };
-    result
-  );  // read_argument
-  
-  // name, export, import, type, default, external, version, lip,
-  // date, comment, author, bibliography, language, bug_report, 
-  // copyright.
-  - read_slot_header first:BOOLEAN :BOOLEAN <-
-  ( + result:BOOLEAN;    
-    + v:ITM_CODE;
-    + cast:FAST_ARRAY[ITM_TYPE_MONO];
-    + style:CHARACTER;
-    + is_export:BOOLEAN;
-    + parameter_type:ITM_TYPE_PARAMETER;
-    + instr:LIP_CODE;
-    + param:BLOCK;
-    
-    style := read_style;
-    (style != ' ').if {
-      result := TRUE;
-      ((! first) && {style = '+'}).if {
-	warning_error (current_position,"Incorrect style slot ('-').");
-      };
-      (first).if {
-	(read_word (ALIAS_STR.slot_name)).if {
-	  //
-	  // Read `name' slot.
-	  //
-	  
-	  (style = '-').if {	    
-            is_cop := TRUE;            
-            (is_java).if {
-              semantic_error (current_position,"COP not yet implemented.");
-            } else {
-              output_decl.append 
-              "#include <pthread.h>\n\
-              \#include <limits.h>\n\n\
-              \void print_char(char car);\n\
-              \int die_with_code(int code);\n\n\
-              \static pthread_key_t current_thread;\n\
-              \static pthread_attr_t thread_attr;\n\
-              \pthread_t c_thread;\n\
-              \int thread_counter;\n\n\              
-              \static char thread_stack[512][PTHREAD_STACK_MIN];\n\n\
-              \typedef struct lith_object_struct lith_object;\n\
-              \typedef struct lith_node_struct lith_node;\n\
-              \struct lith_node_struct {\n\
-                \  pthread_mutex_t mutex;\n\
-                \  lith_node *next;\n\
-                \  lith_object *object;\n\
-              \};\n\              
-              \struct lith_object_struct {\n\
-                \  unsigned long __id; // Just for late binding.\n\
-                \  lith_node *first;\n\
-                \  lith_node *last;\n\
-                \  lith_object *(*procedure)(lith_object *obj,pthread_mutex_t *mutex);\n\
-                \  pthread_mutex_t mutex;\n\
-              \};\n\
-              \struct {\n\
-                \  lith_node *first;\n\
-                \  pthread_mutex_t mutex;\n\
-              \} pool;\n\n\
-              \void *thread_life(void *ptr)\n\
-              \{ lith_node node,*n;\n\
-                \  lith_object *obj,*new_obj;\n\n\    
-                \  pthread_mutex_init(&node.mutex,NULL);\n\
-                \  pthread_mutex_lock(&node.mutex);\n\
-                \  node.object = (lith_object *)ptr;\n\
-                \  do {\n\
-                  \    // Append fifo object.\n\
-                  \    obj = node.object;\n\
-                  \    node.next = NULL;\n\
-                  \    n = obj->last;\n\
-                  \    if (n == NULL) {\n\
-                    \      obj->first = &node;\n\
-                    \      pthread_mutex_unlock(&node.mutex);\n\
-                  \    } else {\n\
-                    \      n->next = &node;\n\
-                  \    };\n\
-                  \    obj->last = &node;\n\
-                  \    pthread_setspecific(current_thread,(void *)obj);\n\
-                  \    // Run procedure.\n\
-                  \    new_obj = obj->procedure(obj,&node.mutex);\n\
-                  \    // Remove fifo object.\n\
-                  \    pthread_mutex_lock(&obj->mutex);\n\
-                  \    n = obj->first->next;\n\
-                  \    if (n != NULL) {\n\
-                    \      pthread_mutex_unlock(&n->mutex);\n\
-                  \    } else {\n\
-                    \      obj->last = NULL;\n\
-                  \    };\n\
-                  \    obj->first = n;\n\
-                  \    pthread_mutex_unlock(&obj->mutex);\n\
-                  \    if (new_obj != NULL) {\n\
-                    \      node.object = new_obj;\n\
-                  \    } else {\n\
-                    \      // Add in pool.\n\
-                    \      pthread_mutex_lock(&pool.mutex);\n\
-                    \      node.next = pool.first;\n\
-                    \      pool.first = &node;\n\
-                    \      pthread_mutex_unlock(&pool.mutex);\n\
-                    \      // Sleep.\n\
-                    \      pthread_mutex_lock(&node.mutex);\n\
-                  \    };\n\
-                \  } while (1);\n\
-                \  return NULL;\n\
-              \};\n\n\
-              \void run_procedure(lith_object *obj)\n\
-              \{ lith_node *node;\n\
-                \  char *msg=\"COP Error!\\n\";\n\
-                \  // Pool manager.\n\
-                \  pthread_mutex_lock(&pool.mutex);\n\
-                \  node = pool.first;\n\
-                \  if (node != NULL) {\n\
-                  \    pool.first = node->next;\n\
-                \  };\n\
-                \  pthread_mutex_unlock(&pool.mutex);\n\
-                \  // Run thread.\n\
-                \  if (node == NULL) {\n\                  
-                  \    pthread_attr_setstack(&thread_attr, thread_stack[thread_counter++],PTHREAD_STACK_MIN);\n\
-                  \    if ((thread_counter>512) || pthread_create(&c_thread,&thread_attr, thread_life, (void *)obj)) {\n\
-                    \      while (*msg != 0) print_char(*(msg++));\n\
-                    \      die_with_code(1);\n\
-                  \    };\n\
-                \  } else {\n\
-                  \    node->object = obj;\n\
-                  \    pthread_mutex_unlock(&node->mutex);\n\
-                \  };\n\
-              \};\n\n";
-            };
-	  };
-	  
-	  // style "name" ':=' [type] cap_identifier [ '(' PARAM {',' PARAM}')' ]
-	  // PARAM -> cap_identifier | identifier ':' TYPE
-	  short (ALIAS_STR.short_slot) token 
-	  (position-last_string.count) to position; 
-	  
-	  object.set_position current_position;
-          object.set_style style;          
-	  (read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	    warning_error (current_position,"Added ':='.");
-	  };
-	  
-	  (
-	    (read_this_keyword (ALIAS_STR.keyword_expanded)) ||
-	    {read_this_keyword (ALIAS_STR.keyword_strict)}	    
-	  ).if {
-	    object.set_type_style last_string;	    
-	  };
-	  
-	  (! read_cap_identifier).if {
-	    syntax_error (current_position,"Prototype identifier is needed.");
-	  };
-	  short (ALIAS_STR.short_prototype) token
-	  (position-last_string.count) to position;
-	  
-	  (object.shortname != last_string).if {
-	    syntax_error (current_position,"Incorrect name (filename != name).");
-          };          
-	  (read_character '(').if {
-	    //
-	    // Generic loader.
-            //
-            param := { + res:ITM_TYPE_PARAMETER;
-              (read_identifier).if {	                    
-                (read_character ':').if_false {
-                  warning_error (current_position,"Added ':'.");
-                };
-                (read_type TRUE = NULL).if {
-                  syntax_error (current_position,"Type needed.");
-                };
-                // BSBS: Warning: type::{INTEGER,CHARACTER,REAL,STRING_CONSTANT}
-                semantic_error (current_position,"Sorry, not yet implemented.");
-              }.elseif {read_cap_identifier} then {
-                (is_parameter_type).if_false {
-                  syntax_error (current_position,"Identifier parameter type is needed.");
-                };
-                short (ALIAS_STR.short_keyprototype) token
-                (position - last_string.count) to position;
-                res ?= ITM_TYPE_PARAMETER.get last_string;
-              };
-	      res
-	    };
-            
-	    ((! is_shorter) && {! is_shorter2}).if {	      
-	      (object.generic_count = 0).if {
-		syntax_error (current_position,"Object can't be generic.");
-	      };
-            };
-            parameter_type := param.value;
-            (parameter_type = NULL).if {
-              syntax_error (current_position,"Identifier parameter type is needed.");
-            };            	    
-	    	    
-	    object.idf_generic_list.add_last parameter_type;	    
-	    {read_character ','}.while_do {	      	      
-	      parameter_type := param.value;
-	      (parameter_type = NULL).if {
-                syntax_error (current_position,"Identifier parameter type is needed.");
-              };	      	      
-	      object.idf_generic_list.add_last parameter_type;
-	    }; // loop
-	    	    
-	    (! read_character ')').if {
-	      warning_error (current_position,"Added ')'.");
-	    };
-	    
-	    ((! is_shorter) && {! is_shorter2}).if {	      	      
-	      (object.idf_generic_list.count != object.generic_count).if {
-		syntax_error (current_position,"Invalid generic list number.");
-	      };
-	    };
-	  };	  
-	} else {
-	  syntax_error (current_position,"Slot `name' must to be first slot.");
-	};
-      }.elseif {
-	(is_export := read_word (ALIAS_STR.slot_export)) || 
-	{read_word (ALIAS_STR.slot_import)}
-      } then {
-	// - ("export"|"import") ':=' TYPE_LIST 
-	short (ALIAS_STR.short_slot) token
-	(position-last_string.count) to position;
-
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};
-	cast := read_type_list FALSE;
-	(cast = NULL).if {
-	  syntax_error (current_position,"Incorrect type list.");
-	};
-	(is_export).if {
-	  object.set_export_list cast;
-	} else {
-	  object.set_import_list cast;
-	};
-      }.elseif {read_word (ALIAS_STR.slot_external)} then {
-	//
-	// Read `external' slot.
-	//
-	
-	// - "external" ':=' `<code_c>`
-	short (ALIAS_STR.short_slot) token
-	(position-last_string.count) to position;
-
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};
-	(read_external).if_false {
-	  syntax_error (current_position,"Incorrect external.");
-	};
-	output_decl.append "// ";
-	output_decl.append (object.name);
-	output_decl.add_last '\n';
-	output_decl.append last_string;	
-	output_decl.add_last '\n';
-      }.elseif {read_word(ALIAS_STR.slot_default)} then {
-	//
-	// Read `default' slot.
-	//
-	
-	// '-' "default" ':=' EXPR_PRIMARY
-	short (ALIAS_STR.short_slot) token
-	(position-last_string.count) to position;
-	
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};
-	v := read_expr_primary;
-	(v = NULL).if {
-	  syntax_error (current_position,"Incorrect expr.");
-	};
-	(object.default_value != NULL).if {
-	  semantic_error (current_position,"Double `default' slot definition.");
-	};
-	object.set_default_value v;
-      }.elseif {read_word (ALIAS_STR.slot_type)} then {
-	//
-	// Read `type' slot.
-	//
-	
-	// '-' "type" ':=' `<type C>`
-	short (ALIAS_STR.short_slot) token
-	(position-last_string.count) to position;
-	
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};
-	(read_external).if_false {
-	  syntax_error (current_position,"Incorrect external.");
-	};
-	(object.type_c != NULL).if {
-	  semantic_error (current_position,"Double `type' slot definition.");
-	};
-	object.set_c_type last_string;
-      }.elseif {read_word (ALIAS_STR.slot_version)} then {
-	//
-	// Read `version' slot.
-	//
-	
-	// '-' "version" ':=' integer
-	short (ALIAS_STR.short_slot) token
-	(position-last_string.count) to position;
-	
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};
-	(read_integer).if_false {
-	  syntax_error (current_position,"Incorrect number.");
-        };
-        
-      }.elseif {read_word (ALIAS_STR.slot_lip)} then {
-	//
-	// LIP interpreter.
-	//
-        
-        // '-' lip <- ( { LIP_EXPR ';' } )
-        (read_symbol (ALIAS_STR.symbol_affect_code)).if_false {
-          warning_error (current_position,"Added '<-' is needed.");
-        };      
-        (read_character '(').if_false {
-          warning_error (current_position,"Added '(' is needed.");
-        };              
-        {(instr := readlip_expr) != NULL}.while_do {
-          instr.run;
-          (read_character ';').if_false {
-            warning_error (current_position,"Added ';' is needed.");
-          };
-        };
-        (read_character ')').if_false {
-          warning_error (current_position,"Added ')' is needed.");
-        };        
-      }.elseif {
-	(read_word (ALIAS_STR.slot_date)) ||
-	{read_word (ALIAS_STR.slot_comment)} ||
-	{read_word (ALIAS_STR.slot_author)} ||
-	{read_word (ALIAS_STR.slot_bibliography)} ||
-	{read_word (ALIAS_STR.slot_language)} ||
-	{read_word (ALIAS_STR.slot_copyright)} ||
-	{read_word (ALIAS_STR.slot_bug_report)}
-      } then {
-	//	  
-	// Read `date', `comment', `author', `bibliography', 
-	// `language', `copyright' or `bug_report' slots.
-	//
-	
-	// '-' ("date"|"comment"|"author"|"bibliography"|"language"|"copyright"|"bug_report") 
-        // ':=' string
-	short (ALIAS_STR.short_slot) token 
-	(position-last_string.count) to position; 
-	
-	(read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	  warning_error (current_position,"Added ':='.");
-	};	
-	(read_string).if_false {
-	  syntax_error (current_position,"Incorrect string.");
-        };	
-        (is_shorter2).if {
-          object.set_comment_slot last_string;
-        };
-      } else {
-	warning_error (current_position,"Incorrect slot.");
-      };
-      (read_character ';').if_false {
-	warning_error (current_position,"Added ';'.");
-      };
-    };
-    result
-  );
-  
-  //
-  // Parser for LIP file.
-  // 
-  
-  - readlip_program <-  
-  //// PROGRAM      -> { 'Section' ('Inherit' | 'Public' | 'Private') { SLOT ';' } } 
-  ( + idx:INTEGER;
-    + section:STRING_CONSTANT;
-    
-    idx := LIP_CODE.list_parent.lower;    
-    {read_this_keyword (ALIAS_STR.keyword_section)}.while_do {      
-      (read_this_keyword (ALIAS_STR.section_inherit)).if {
-        // { '+' string ':' STRING [ ':=' string ] ';' }        
-        {read_character '+'}.while_do {
-          (read_identifier).if_false {
-            warning_error (current_position,"Identifier needed.");
-          };
-          (read_character ':').if_false {
-            warning_error (current_position,"Added ':' is needed.");
-          };
-          (read_word (ALIAS_STR.prototype_string)).if_false {
-            warning_error (current_position,"`STRING' type needed.");
-          };
-          (read_symbol (ALIAS_STR.symbol_affect_immediate)).if {            
-            (read_string).if_false {            
-              syntax_error (current_position,"String needed.");            
-            };
-            string_tmp.copy (object.filename);
-            {
-              (!string_tmp.is_empty)    && 
-              {string_tmp.last != '/'}  && 
-              {string_tmp.last != '\\'}
-            }.while_do {
-              string_tmp.remove_last 1;
-            };
-            string_tmp.append last_string;                              
-          } else {
-            string_tmp.clear;
-          };
-          LIP_CODE.list_parent.add (ALIAS_STR.get string_tmp) to idx;
-          idx := idx + 1;
-          (read_character ';').if_false {
-            warning_error (current_position,"Added ';' is needed.");
-          };
-        };
-      }.elseif {
-        (read_this_keyword (ALIAS_STR.section_public))  ||
-        {read_this_keyword (ALIAS_STR.section_private)} 
-      } then {
-        section := last_string;
-        {readlip_slot section}.while_do {
-          (read_character ';').if_false {
-            warning_error (current_position,"Added ';' is needed.");
-          };
-        };
-      } else {
-        syntax_error (current_position,"`Public' or `Private' or `Inherit' needed.");
-      };
-    };
-  );
-  
-  - readlip_slot sec:STRING_CONSTANT :BOOLEAN <-
-  //// SLOT         -> '+' identifier ':' TYPE [ ':=' EXPR_CONSTANT ]
-  ////               | '-' identifier [ identifier ':' TYPE ] '<-' '(' { EXPR ';' } ')' 
-  ( + result:BOOLEAN;
-    + t:LIP_CONSTANT;
-    + n,na:STRING_CONSTANT;
-    + data:LIP_SLOT_DATA;
-    + slot_code:LIP_SLOT_CODE;
-    + cst:LIP_CONSTANT;
-    + cod:FAST_ARRAY[LIP_CODE];
-    + instr:LIP_CODE;
-    + pos:POSITION;
-    
-    (read_character '+').if {
-      // Data.
-      result := TRUE;
-      (sec = ALIAS_STR.section_public).if {
-        syntax_error (current_position,"No data in Public section.");
-      };
-      (read_identifier).if_false {
-        syntax_error (current_position,"Identifier is incorrect.");
-      };
-      n := last_string;
-      (read_character ':').if_false {
-        warning_error (current_position,"Added ':' is needed.");
-      };
-      t := readlip_type;
-      (t = NULL).if {
-        syntax_error (current_position,"type is incorrect.");
-      };      
-      data := LIP_SLOT_DATA.create current_position name n value t argument FALSE;
-      (read_symbol (ALIAS_STR.symbol_affect_immediate)).if {
-        cst := readlip_expr_constant;
-        (cst = NULL).if {
-          syntax_error (current_position,"Incorrect expression.");
-        };
-        data.set_value cst;
-        cst.free;
-      };
-    }.elseif {read_character '-'} then {
-      // Function.
-      result := TRUE;
-      (read_identifier).if_false {
-        syntax_error (current_position,"Identifier is incorrect.");
-      };
-      pos := current_position;      
-      n := last_string;
-      (read_identifier).if {
-        na := last_string;
-        (read_character ':').if_false {
-          warning_error (current_position,"Added ':' is needed.");
-        };
-        t := readlip_type;
-        (t = NULL).if {
-          syntax_error (current_position,"Incorrect type.");
-        };
-        data := LIP_SLOT_DATA.create current_position name na value t argument TRUE;
-      };            
-      // 
-      (read_symbol (ALIAS_STR.symbol_affect_code)).if_false {
-        warning_error (current_position,"Added '<-' is needed.");
-      };            
-      is_shorter2 := TRUE;
-      (read_character '(').if_false {
-        warning_error (current_position,"Added '(' is needed.");
-      };      
-      is_shorter2 := FALSE;
-      cod := ALIAS_ARRAY[LIP_CODE].new;
-      {(instr := readlip_expr) != NULL}.while_do {
-        cod.add_last instr;
-        (read_character ';').if_false {
-          warning_error (current_position,"Added ';' is needed.");
-        };
-      };
-      (read_character ')').if_false {
-        warning_error (current_position,"Added ')' is needed.");
-      };
-      cod := ALIAS_ARRAY[LIP_CODE].copy cod;            
-      slot_code := LIP_SLOT_CODE.create pos section sec 
-      name n argument data code cod;
-      (sec = ALIAS_STR.section_public).if {
-        (last_comment_slot = NULL).if {
-          warning_error (pos,"Comment needed.");
-        } else {
-          slot_code.set_comment (ALIAS_STR.get last_comment_slot);
-        };
-      };            
-    };
-    result
-  );
-  
-  - readlip_type:LIP_CONSTANT <-
-  //// TYPE         -> 'BOOLEAN' | 'STRING' | 'INTEGER'
-  ( + result:LIP_CONSTANT;
-    
-    (read_cap_identifier).if {            
-      (last_string = ALIAS_STR.prototype_integer).if {
-        result := LIP_INTEGER.get 0;
-      }.elseif {last_string = ALIAS_STR.prototype_string} then {
-        result := LIP_STRING.get (ALIAS_STR.get "");
-      }.elseif {last_string = ALIAS_STR.prototype_boolean} then {
-        result := LIP_BOOLEAN.get FALSE;
-      } else {
-        syntax_error (current_position,"Incorrect type.");
-      };
-    };
-    result
-  );
-  
-  - readlip_expr:LIP_CODE <-  
-  //// EXPR         -> [ identifier !!AMBIGU!! ':=' ] EXPR_OPERATOR [ '.' FUNCTION ]
-  ( + result,val:LIP_CODE;
-    + nam:STRING_CONSTANT;
-    
-    save_context; // !! SAVE CONTEXT !!
-    
-    (read_identifier).if {
-      nam := last_string;
-      (read_symbol (ALIAS_STR.symbol_affect_immediate)).if {
-        val := readlip_expr_operator;
-        (val = NULL).if {
-          syntax_error (current_position,"Incorrect expression.");
-        };        
-        result := LIP_AFFECT.create current_position name nam value val;
-      } else {
-        restore_context; // !! RESTORE CONTEXT !!
-      };
-    };    
-    (result = NULL).if {
-      result := readlip_expr_operator;
-      ((result != NULL) && {read_character '.'}).if {        
-        result := readlip_function result;
-        (result = NULL).if {
-          syntax_error (current_position,"Incorrect slot.");
-        };        
-      };
-    };
-    result
-  );
-  
-  - readlip_function rec:LIP_CODE :LIP_CODE <-  
-  //// FUNCTION     -> 'if' '{' { EXPR ';' }  '}' [ 'else' '{' { EXPR ';' } '}' ]
-  ////               | 'print'
-  ( + result:LIP_CODE;
-    + the,els:FAST_ARRAY[LIP_CODE];
-    + val:LIP_CODE;
-    
-    (read_word (ALIAS_STR.slot_if)).if {
-      the := ALIAS_ARRAY[LIP_CODE].new;      
-      (read_character '{').if_false {
-        warning_error (current_position,"Added '(' is needed.");
-      };
-      {(val := readlip_expr) != NULL}.while_do {
-        the.add_last val;
-        (read_character ';').if_false {
-          warning_error (current_position,"Added ';' is needed.");
-        };        
-      };
-      (read_character '}').if_false {
-        warning_error (current_position,"Added '(' is needed.");
-      };
-      the := ALIAS_ARRAY[LIP_CODE].copy the;
-      (read_word (ALIAS_STR.slot_else)).if {
-        els := ALIAS_ARRAY[LIP_CODE].new;
-        (read_character '{').if_false {
-          warning_error (current_position,"Added '(' is needed.");
-        };
-        {(val := readlip_expr) != NULL}.while_do {
-          els.add_last val;
-          (read_character ';').if_false {
-            warning_error (current_position,"Added ';' is needed.");
-          };        
-        };
-        (read_character '}').if_false {
-          warning_error (current_position,"Added '(' is needed.");
-        };
-        els := ALIAS_ARRAY[LIP_CODE].copy els;
-      };
-      result := LIP_IF.create current_position if rec then the else els;    
-    }.elseif {read_word (ALIAS_STR.slot_print)} then {
-      result := LIP_PRINT.create current_position message rec;
-    };
-    result
-  );
-  
-  - readlip_expr_operator:LIP_CODE <-  
-  //// EXPR_OPERATOR-> EXPR_CMP { ('|' | '&') EXPR_CMP }                
-  ( + result,right:LIP_CODE;
-    + is_or:BOOLEAN;    
-    
-    result := readlip_expr_cmp;
-    (result != NULL).if {
-      {(is_or := read_character '|') || {read_character '&'}}.while_do {
-        right := readlip_expr_cmp;
-        (right = NULL).if {
-          syntax_error (current_position,"Incorrect expression.");
-        };
-        (is_or).if {
-          result := LIP_BINARY.create current_position with result operator '|' and right;
-        } else {
-          result := LIP_BINARY.create current_position with result operator '&' and right;
-        };
-      };
-    };
-    result
-  );
-  
-  - readlip_expr_cmp:LIP_CODE <-
-  //// EXPR_CMP     -> EXPR_BINARY { ('='|'!='|'>'|'<'|'>='|'<=') EXPR_BINARY }
-  ( + result,right:LIP_CODE;
-    + op:STRING_CONSTANT;    
-    + type:CHARACTER;
-    
-    result := readlip_expr_binary;
-    (result != NULL).if {
-      {
-        (read_symbol (ALIAS_STR.symbol_great_equal)) || 
-        {read_symbol (ALIAS_STR.symbol_less_equal)}  ||
-        {read_symbol (ALIAS_STR.symbol_not_equal)}   || 
-        {read_symbol (ALIAS_STR.symbol_equal)}       ||
-        {read_symbol (ALIAS_STR.symbol_great)}       || 
-        {read_symbol (ALIAS_STR.symbol_less)}
-      }.while_do {
-        op := last_string;
-        right := readlip_expr_binary;
-        (right = NULL).if {
-          syntax_error (current_position,"Incorrect expression.");
-        };
-        (op)
-        .when ">=" then { type := 'S'; }
-        .when "<=" then { type := 'I'; }
-        .when "!=" then { type := 'E'; }
-        .when "="  then { type := '='; }
-        .when ">"  then { type := '>'; }
-        .when "<"  then { type := '<'; };
-        result := LIP_BINARY.create current_position with result operator type and right;
-      };
-    };
-    result
-  );
-  
-  - readlip_expr_binary:LIP_CODE <-  
-  //// EXPR_BINARY  -> EXPR_UNARY { ('-'|'+') EXPR_UNARY }
-  ( + result,right:LIP_CODE;
-    + is_sub:BOOLEAN;
-    
-    result := readlip_expr_unary;
-    (result != NULL).if {
-      {(is_sub := read_character '-') || {read_character '+'}}.while_do {
-        right := readlip_expr_unary;
-        (right = NULL).if {
-          syntax_error (current_position,"Incorrect expression.");
-        };
-        (is_sub).if {
-          result := LIP_BINARY.create current_position with result operator '-' and right;
-        } else {
-          result := LIP_BINARY.create current_position with result operator '+' and right;
-        };
-      };
-    };
-    result
-  );
-  
-  - readlip_expr_unary:LIP_CODE <- 
-  //// EXPR_UNARY   -> ( '-' | '!' ) EXPR_UNARY
-  ////               | EXPR_BASE
-  ////               | identifier [ EXPR_ARGUMENT ]
-  ( + result:LIP_CODE;
-    + is_neg:BOOLEAN;
-    + type:CHARACTER;
-    + nam:STRING_CONSTANT;
-    + arg:LIP_CODE;
-    
-    ((is_neg := read_character '-') || {read_character '!'}).if {      
-      result := readlip_expr_unary;
-      (result = NULL).if {
-        syntax_error (current_position,"Incorrect expression.");
-      };
-      (is_neg).if {
-        type := '-';
-      } else {
-        type := '!';
-      };
-      result := LIP_UNARY.create current_position operator type with result;
-    }.elseif {read_identifier} then {
-      nam := last_string;
-      arg := readlip_expr_argument;
-      result := LIP_CALL.create current_position name nam with arg;      
-    } else {
-      result := readlip_expr_base;
-    };
-    result
-  );
-  
-  - readlip_expr_base:LIP_CODE <-  
-  //// EXPR_BASE    -> '(' EXPR_OPERATOR ')'
-  ////               | EXPR_CONSTANT
-  ( + result:LIP_CODE;
-    + v:LIP_CONSTANT;
-    
-    (read_character '(').if {
-      result := readlip_expr_operator;
-      (result = NULL).if {
-        syntax_error (current_position,"Incorrect expression.");
-      };
-      (read_character ')').if_false {
-        warning_error (current_position,"Added ')' is needed.");
-      };
-    } else {
-      v := readlip_expr_constant;
-      (v != NULL).if {
-        result := LIP_VALUE.create current_position with v;
-      };
-    };
-    result
-  );
-  
-  - readlip_expr_constant:LIP_CONSTANT <-
-  //// EXPR_CONSTANT-> integer              
-  ////               | string
-  ////               | TRUE
-  ////               | FALSE
-  ( + result:LIP_CONSTANT;
-
-    (read_integer).if {      
-      result := LIP_INTEGER.get last_integer;
-    }.elseif {read_string} then {
-      result := LIP_STRING.get last_string;
-    }.elseif {read_cap_identifier} then {
-      (last_string = ALIAS_STR.prototype_true).if {
-        result := LIP_BOOLEAN.get TRUE;
-      }.elseif {last_string = ALIAS_STR.prototype_false} then {
-        result := LIP_BOOLEAN.get FALSE;
-      } else {
-        syntax_error (current_position,"Type incorrect.");
-      };
-    };    
-    result
-  );
-  
-  - readlip_expr_argument:LIP_CODE <-
-  //// EXPR_ARGUMENT-> identifier 
-  ////               | EXPR_BASE
-  ( + result:LIP_CODE;
-
-    (read_identifier).if {
-      result := LIP_CALL.create current_position name last_string with NULL;
-    } else {
-      result := readlip_expr_base;      
-    };
-    result
-  );
-    
-  //
-  // Parser for FORMAT.LI
-  // 
-
-  //|| FORMAT -> { '-' identifier ':=' SHORT_DEF ';' }
-  - read_format <-
-  ( + def:LINKED_LIST[STRING_CONSTANT];
-    
-    {read_character '-'}.while_do {
-      (read_identifier).if_false {
-	syntax_error (current_position,"Incorrect slot identifier."); 
-      };
-      def := LINKED_LIST[STRING_CONSTANT].create;
-      (short_dico.fast_has last_string).if {
-	syntax_error (current_position,"Double definition slot.");
-      };
-      short_dico.fast_put def to last_string;
-      (read_symbol (ALIAS_STR.symbol_affect_immediate)).if_false {
-	syntax_error (current_position,"Assignment ':=' is needed.");
-      };      
-      (read_short_def def).if_false {
-	syntax_error (current_position,"Incorrect definition.");
-      };
-      (read_character ';').if_false {
-	warning_error (current_position,"Added ';' is needed.");
-      };      
-    };
-    
-    // End of file :
-    read_space;
-    (last_character != 0.to_character).if {
-      syntax_error (current_position,"Incorrect symbol.");
-    };
-  );
-
-  //|| SHORT_DEF -> { SHORT_ELT '+' } SHORT_ELT
-  - read_short_def def:LINKED_LIST[STRING_CONSTANT] :BOOLEAN <-
-  ( + result:BOOLEAN;
-    
-    read_short_elt.if {
-      result := TRUE;
-      def.add_last last_string;      
-      {read_character '+'}.while_do {
-	(read_short_elt).if_false {
-	  syntax_error (current_position,"Incorrect format expression.");
-	};
-	def.add_last last_string;
-      };
-    };
-    result
-  );
-
-  //|| SHORT_ELT -> "token" | string
-  - read_short_elt:BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    
-    read_identifier.if {
-      (last_string != ALIAS_STR.short_token).if {
-	warning_error (current_position,"Variable not `token'.");
-      };
-      last_string := NULL;
-      result := TRUE;
-    }.elseif {read_string} then {
-      string_tmp.clear;
-      j := last_string.lower;
-      {j <= last_string.upper}.while_do {
-	(last_string.item j = '\\').if {
-	  j := j+1; 
-	  last_string.item j
-	  .when 'a'  then { string_tmp.add_last '\a'; }
-	  .when 'b'  then { string_tmp.add_last '\b'; }
-	  .when 'f'  then { string_tmp.add_last '\f'; }
-	  .when 'n'  then { string_tmp.add_last '\n'; }
-	  .when 'r'  then { string_tmp.add_last '\r'; }
-	  .when 't'  then { string_tmp.add_last '\t'; }
-	  .when 'v'  then { string_tmp.add_last '\v'; }
-	  .when '\\' then { string_tmp.add_last '\\'; }
-	  .when '?'  then { string_tmp.add_last '\?'; }
-	  .when '\'' then { string_tmp.add_last '\''; }
-	  .when '\"' then { string_tmp.add_last '\"'; };
-	} else {
-	  string_tmp.add_last (last_string.item j);
-	};
-	j := j+1;
-      };
-      last_string := ALIAS_STR.get string_tmp;
-      result := TRUE;
-    };
-    result
-  );
-  
-Section Public  
-  
-  //
-  // Parser Entry.
-  //
-    
-  - go_on obj:PROTOTYPE <-
-  (
-    ? { object=NULL};
-    
-    // Source information.
-    object   := obj;
-    source   := obj.source;
-    position := source.lower;
-    pos_cur  := source.lower;
-    pos_line := 1;
-    pos_col  := 0;
-    
-    (is_shorter).if {
-      is_active_short := TRUE;            
-      short_derive := 0;
-      output_code.copy source;
-      short_local := HASHED_SET[STRING_CONSTANT].create;
-      short (ALIAS_STR.short_begin) token 1 to 1;
-    };
-    
-    // Parse.
-    (! read_program).if {
-      syntax_error (current_position,"Incorrect symbol.");
-    };
-    
-    short (ALIAS_STR.short_end) token (source.upper) to (source.upper);
-    
-    object := NULL; // Parser is Free (see require test...)
-  );
-  
-  - read_lip path_lip:STRING_CONSTANT :BOOLEAN <-
-  ( + entry:POINTER; 
-        
-    entry := FS_MIN.open_read path_lip;
-    (entry != NULL).if {
-      FS_MIN.close entry;
-      object := PROTOTYPE.create path_lip
-      name path_lip generic_count 0;
-    
-      source  := object.source;
-      position := source.lower;
-      pos_cur := source.lower;
-      pos_line:=1;
-      pos_col :=0;
-    
-      // Parse.
-      readlip_program;
-      //
-      object := NULL; // Parser is Free (see require test...)
-    }     
-  );
-
-  - parse_format fmt_name:STRING_CONSTANT <-
-  (     
-    // Source information.
-    (FILE_SYSTEM.get_entry fmt_name = NULL).if {
-      STD_ERROR.put_string "Error: File format `";
-      STD_ERROR.put_string fmt_name;
-      STD_ERROR.put_string "' is not open !\n";
-      die_with_code exit_failure_code;
-    };
-    
-    object := PROTOTYPE.create fmt_name 
-    name (ALIAS_STR.short_format) 
-    generic_count 0;    
-    
-    source   := object.source;
-    position := source.lower;
-    pos_cur  := source.lower;
-    pos_line := 1;
-    pos_col  := 0;
-    
-    // Parse.
-    read_format;
-    
-    object := NULL; // Parser is Free (see require test...)
-  );
-
-
diff --git a/src/profil.li b/src/profil.li
deleted file mode 100644
index 418ca9d..0000000
--- a/src/profil.li
+++ /dev/null
@@ -1,580 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PROFIL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Method with costumization";
-  
-Section Inherit
-  
-  + parent_any:Expanded ANY; 
-  
-Section PROFIL_LIST
-
-  + life_index:INTEGER;
-  
-  - set_life_index idx:INTEGER <-
-  (
-    life_index := idx;
-  );
-  
-Section Public
-  
-  - slot:SLOT <- deferred;
-
-  - is_interrupt:BOOLEAN;
-  
-  - is_external:BOOLEAN;
-  
-  + type_self:TYPE_FULL; 
-    
-  + argument_list:FAST_ARRAY[LOCAL];  
-  
-  + result_list:Expanded SLIM_ARRAY[LOCAL];
-  
-  + code:LIST;
-  + context:LOCAL;
-  
-  + count_intern_call:INTEGER;
-  
-  + link_count:INTEGER;
-  + cop_link_count:INTEGER;
-  
-  + name:STRING_CONSTANT;
-    
-  - is_context_sensitive:BOOLEAN <- deferred;
-    
-  + stat:INTEGER_8 := -1;
-  // 00 : No recursive, No inlinable.
-  // 01 : No recursive, Inlinable.
-  // 10 : Recusive,     No tail.
-  // 11 : Recusive,     Tail
-  
-  - recursivity_bit:INTEGER_8 := 10b;
-  - tail_bit:INTEGER_8        := 01b;
-  - inlining_bit:INTEGER_8    := 01b;
-  
-  - is_tail_recursive:BOOLEAN     <- stat = 11b;
-  - is_not_tail_recursive:BOOLEAN <- stat = 10b;
-  - is_inlinable:BOOLEAN          <- stat = 01b;
-  - is_recursive:BOOLEAN          <- (stat & recursivity_bit) != 0;
-
-  //
-  
-  - mode_recursive:BOOLEAN;
-  
-  - set_mode_recursive b:BOOLEAN <-
-  (
-    mode_recursive := b;
-  );
-    
-  - set_life <-
-  (     
-    PROFIL_LIST.set_life Self;
-    (mode_recursive).if {      
-      execute_recursive;
-    };
-  );
-
-  - link call:CALL_SLOT <-
-  ( 
-    (call.cop_argument != NULL).if {
-      cop_link_count := cop_link_count + 1;
-    } else {
-      link_count := link_count + 1;
-    };
-  );
-  
-  - unlink call:CALL_SLOT <-
-  (
-    (call.cop_argument != NULL).if {
-      cop_link_count := cop_link_count - 1;
-      ? {cop_link_count >= 0};
-    } else {
-      link_count := link_count - 1;    
-      ? {link_count >= 0};
-    };    
-  );
-
-  - write_argument args:FAST_ARRAY[EXPR] :FAST_ARRAY[WRITE] <-
-  ( + loc:LOCAL;
-    + val:EXPR;
-    + wrt:WRITE;
-    + result:FAST_ARRAY[WRITE];
-    
-    (args.count != argument_list.count).if {
-      semantic_error (args.last.position,"Incorrect vector size.");
-    };
-    
-    result := FAST_ARRAY[WRITE].create_with_capacity (argument_list.count);
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      loc := argument_list.item j;
-      val := args.item j;
-      (loc != NULL).if {	
-	wrt := loc.write (val.position) value val;
-	result.add_last wrt;
-      } else {	
-	result.add_last NULL;
-	val.remove;
-      };
-    };
-    result
-  );
-  
-  //
-  // Comparaison.
-  //
-  
-  - compatibility_with other:PROFIL <-
-  ( + n1,n2:INTEGER;
-    (argument_list.count != other.argument_list.count).if {
-      POSITION.put_error semantic text "Incorrect vector size argument.";
-      code.position.put_position;
-      other.code.position.put_position;
-      POSITION.send_error;
-    };
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      (argument_list.item j.type != other.argument_list.item j.type).if {
-	POSITION.put_error semantic text "Incorrect invariant type argument.";
-	argument_list.item j.position.put_position;
-	other.argument_list.item j.position.put_position;
-	POSITION.send_error;
-      };
-    };
-    (result_list.count != other.result_list.count).if {
-      POSITION.put_error semantic text "Incorrect vector size result.";
-      code.position.put_position;
-      other.code.position.put_position;
-      POSITION.send_error;
-    };
-    (result_list.lower).to (result_list.upper) do { j:INTEGER;
-      (result_list.item j.type != other.result_list.item j.type).if {
-        POSITION.put_error semantic text "Incorrect invariant type result.";
-        result_list.item j.position.put_position;
-        other.result_list.item j.position.put_position;
-        POSITION.send_error;
-      };
-    };
-  );
-  
-  - lookup n:STRING_CONSTANT :LOCAL <-
-  ( + j:INTEGER;
-    + result:LOCAL;
-    
-    j := argument_list.lower;
-    {(j > argument_list.upper) || {argument_list.item j.name = n}}.until_do {      
-      j := j + 1;
-    };
-    (j <= argument_list.upper).if {
-      result := argument_list.item j;
-    } else {
-      j := result_list.lower;
-      {(j > result_list.upper) || {result_list.item j.name = n}}.until_do {      
-        j := j + 1;
-      };
-      (j <= result_list.upper).if {
-        result := result_list.item j;
-      };
-    };
-        
-    result
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - remove_inline <-
-  (    
-    PROFIL_LIST.remove Self;    
-  );
-  
-  - remove <-
-  ( 
-    code.remove;    
-  );
-  
-  - search_tail_recursive:BOOLEAN <-
-  ( + switch:SWITCH;
-    + msg:CALL_SLOT;
-    + lst:LIST;
-    + count_recur:INTEGER;
-    + result:BOOLEAN;
-        
-    (
-      (! mode_recursive)      &&
-      {is_not_tail_recursive} &&       
-      {! code.is_empty}
-    ).if {          
-      switch ?= code.last;            
-      (switch != NULL).if {	
-	// Verification des cases :		
-	(switch.list.lower).to (switch.list.upper) do { j:INTEGER;
-	  lst := switch.list.item j.code;
-	  (lst.is_empty).if_false {
-	    msg ?= lst.last;
-	    ((msg != NULL) && {msg.profil = Self}).if {	      	      
-	      count_recur := count_recur + 1;
-	    };
-	  };
-	};
-	(count_recur = switch.list.count).if {
-	  semantic_error (slot.position,"Recursivity without end.");
-	};
-	(count_recur = switch.list.count - 1).if {	  	  
-	  ((count_intern_call - 1) = count_recur).if {
-	    (link_count = count_intern_call).if {
-	      result := TRUE;
-	      stat := stat | tail_bit;
-	    };
-	  };
-	};
-      };
-    };
-    result    
-  );
-  
-  - i_am_the_last i:INSTR :BOOLEAN <-
-  (
-    code.i_am_the_last i
-  );
-  
-  - execute_recursive <-
-  ( + old_list_current:LIST;    
-    
-    (stat = -1).if {
-      count_intern_call := count_intern_call + 1;
-      (count_intern_call = 1).if {	  	  
-	old_list_current   := list_current;
-	//
-	execute 3;
-	//	
-	list_current   := old_list_current;
-	? {code != NULL};      
-	(count_intern_call = 1).if {	  
-	  stat := 0;
-	} else {
-	  stat := recursivity_bit;
-	};	
-      };
-    };
-  );
-  
-  - execute inline_lev:INTEGER <-
-  ( + old_seq_inline:UINTEGER_32;
-        
-    list_current  := NULL;
-    old_seq_inline := seq_inline;
-    
-    CALL_SLOT.reset_count_context_sensitive;  
-    
-    seq_call_and_loop := seq_call_and_loop + 1;
-          
-    code ?= code.execute; 
-    
-    // BSBS: Netoyer les result pas utile
-    
-    LOCAL_SEQ.clear;
-    
-    seq_call_and_loop := seq_call_and_loop + 1;
-    
-    (
-      (CALL_SLOT.count_context_sensitive = 0) && 
-      {! mode_recursive} &&
-      {stat = 0} &&
-      {is_context_sensitive || {(seq_inline - old_seq_inline) < inline_lev}}
-    ).if {
-      stat := stat | inlining_bit;      
-      new_execute_pass;
-    };
-  );
-  
-  //
-  // Genere.
-  //
-  
-  - is_static:BOOLEAN <- deferred;
-  
-  - genere_handler buffer:STRING <-
-  (
-    (link_count != 0).if {
-      genere_handler_intern buffer;
-      buffer.append ";\n"; 
-    };
-    ((cop_link_count != 0) && {result_list.count = 0}).if {
-      genere_handler_cop buffer;
-      buffer.append ";\n"; 
-    };
-  );
-  
-  - genere_handler_intern buffer:STRING <-
-  ( + ts:TYPE_FULL;    
-    + v:LOCAL;
-    
-    (is_static).if {
-      buffer.append "static ";
-    };
-    
-    // Result.    
-    (result_list.is_empty).if {
-      buffer.append "void ";
-    } else {      
-      ts := result_list.first.type;            
-      ts.genere_declaration buffer;
-      ts.genere_star_declaration buffer;
-      buffer.add_last ' ';
-    };
-    
-    // Name.
-    buffer.append name;
-    buffer.add_last '(';
-    
-    // Arguments.    
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      v := argument_list.item j;
-      (v != NULL).if {
-        ? {v.style = ' '};
-        
-        (v.style != ' ').if {
-          semantic_error (v.position,"BUG PROFIL.genere_handler Error");
-        };
-        genere v result FALSE in buffer;	
-        buffer.add_last ',';
-      };
-    };    
-    
-    // Results.      
-    (result_list.lower + 1).to (result_list.upper) do { j:INTEGER;
-      v := result_list.item j;
-      v.set_ensure_count (-1);
-      v.set_result TRUE;
-      genere v result TRUE in buffer;
-      buffer.add_last ',';
-    };
-    (buffer.last = ',').if {
-      buffer.remove_last 1;
-    };
-    buffer.add_last ')';
-  );
-  
-  - genere_handler_cop buffer:STRING <-
-  (
-    buffer.append "lith_object *COP_";
-    buffer.append name;
-    buffer.append "(lith_object *obj,pthread_mutex_t *mutex)";
-  );
-  
-  - genere buffer:STRING <-
-  ( + loc:LOCAL;
-    + t,ts:TYPE_FULL;
-    + v:LOCAL;
-    + np:INTEGER;
-    + low:INTEGER;
-    
-    ((link_count != 0) || {result_list.count != 0}).if {
-      ((cop_link_count != 0) && {result_list.count = 0}).if {
-        // COP link.
-        not_yet_implemented;
-        buffer.add_last '\n';
-        genere_handler_cop buffer;
-        buffer.append "\n{ ";
-        
-        buffer.append " self;\n\
-        \  self = ";
-        buffer.append "ptr;\n\
-        \  pthread_mutex_lock (&(self->mutex));\n\
-        \  pthread_setspecific(current_thread,self);\n  ";
-        buffer.append name;
-        buffer.append "(self);\n";        
-        buffer.append "  pthread_mutex_unlock (&(self->mutex));\n\
-        \  return(NULL);\n\
-        \};\n";
-      };
-      // Version normal.
-      buffer.add_last '\n';
-      genere_handler_intern buffer;      
-      buffer.add_last '\n';
-      add_comment buffer;
-      //
-      buffer.append "{\n";
-      indent.append "  ";
-      code.genere_extern buffer;    
-      (result_list.is_empty).if_false {
-        loc := result_list.first;
-        buffer.append indent;      
-        buffer.append "return(";          
-        t := loc.type;
-        (
-          (t.is_expanded) && 
-          {! t.is_expanded_ref} && 
-          {! t.is_expanded_c}
-        ).if {
-          buffer.add_last '&';
-        };	
-        buffer.append (loc.intern_name);
-        buffer.append ");\n";    
-      };
-      // End.
-      indent.remove_last 2;    
-      buffer.append indent;
-      buffer.append "}\n";    
-    } else {    
-      // COP direct.
-      buffer.add_last '\n';
-      genere_handler_cop buffer;      
-      buffer.add_last '\n';
-      add_comment buffer;
-      //
-      buffer.append "{\n";
-      indent.append "  ";
-      (argument_list.count > 0).if {
-        buffer.append indent;
-        v := argument_list.first;
-        ((v != NULL) && {v.name = ALIAS_STR.variable_self}).if {
-          genere v result FALSE in buffer;	
-          buffer.add_last '=';
-          put_cast_self buffer;
-          buffer.append "obj;\n";      
-          low := 1;
-        };        
-      };
-      (argument_list.count-low > 0).if {        
-        (low).to (argument_list.upper) do { j:INTEGER;
-          v := argument_list.item j;
-          (v != NULL).if {
-            buffer.append indent;
-            genere v result FALSE in buffer;	
-            buffer.append "=(";
-            ts := v.type;
-            ts.genere_declaration buffer;
-            buffer.add_last ' ';
-            ts.genere_star_declaration buffer;	
-            buffer.append ")((";
-            put_cast_self buffer;
-            buffer.append "obj)->param_";
-            np.append_in buffer;
-            buffer.append ");\n";
-            np := np + 1;
-          };
-        };
-        type_self.raw.set_param np;        
-      };         
-      buffer.append "  pthread_mutex_unlock(&obj->mutex);\n";
-      buffer.append "  pthread_mutex_lock(mutex);\n";      
-      //
-      name.print; '\n'.print;
-      
-      code.genere_extern buffer;    
-      //
-      buffer.append "  return NULL;\n}\n";
-      indent.remove_last 2;
-    };    
-  );
-  
-  //
-  // Display.
-  //
-    
-  - display buffer:STRING <-
-  (    
-    buffer.append (slot.name);
-    append_type buffer;
-  );    
-  
-  - display_all buffer:STRING <-
-  (
-    display buffer;
-    code.display buffer;
-    buffer.append "\n---------------------\n";
-  );
-  
-Section Private  
-  
-  - put_cast_self buffer:STRING <-
-  (
-    buffer.add_last '(';
-    type_self.genere_declaration buffer;	
-    buffer.add_last ' ';
-    type_self.genere_star_declaration buffer;
-    buffer.add_last ')';
-  );
-  
-  - add_comment buffer:STRING <-
-  (
-    buffer.append "// ";
-    append_type buffer;
-    ((stat & 10b) = 0).if {
-      buffer.append "No recursive, ";
-    } else {
-      buffer.append "Recursive, ";
-    };
-    ((stat & 01b) = 0).if {
-      buffer.append "No inlinable.";
-    } else {
-      buffer.append "Inlinable.";
-    };
-    (is_context_sensitive).if {
-      buffer.append " Context_sensitive.";
-    } else {
-      buffer.append " No Context_sensitive.";
-    };
-    buffer.add_last '\n';
-  );
-  
-  - append_type buffer:STRING <-
-  ( + v:VARIABLE;
-    
-    buffer.add_last '(';
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      v := argument_list.item j;
-      (v != NULL).if {
-	v.display_type buffer;
-	buffer.add_last ',';
-      };
-    };
-    (buffer.last = ',').if {
-      buffer.remove_last 1;
-    };
-    buffer.add_last ')';
-    (result_list.is_empty).if {
-      buffer.append " Void ";
-    } else {
-      buffer.append " With result ";      
-    };
-  );
-  
-  - genere v:LOCAL result is_res:BOOLEAN in buffer:STRING <-
-  ( + ts:TYPE_FULL;
-    
-    ts := v.type;
-    ts.genere_declaration buffer;
-    buffer.add_last ' ';
-    ts.genere_star_declaration buffer;	
-    (is_res).if {
-      buffer.add_last '*';
-    };
-    buffer.append (v.intern_name);
-  );
\ No newline at end of file
diff --git a/src/profil_block.li b/src/profil_block.li
deleted file mode 100644
index 76752c2..0000000
--- a/src/profil_block.li
+++ /dev/null
@@ -1,380 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := PROFIL_BLOCK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Method with costumization";
-  
-Section Inherit
-  
-  + parent_profil:Expanded PROFIL; 
-  
-  + parent_type:Expanded TYPE;
-  
-Section Public
-  
-  - slot:SLOT <- 
-  (
-    crash_with_message "PROFIL_BLOCK.slot";
-    NULL
-  );
-  
-  - type_c:STRING_CONSTANT <- type_block.intern_name;
-  
-  + to_type_block:TYPE_BLOCK;
-  
-  + slot_self:SLOT_DATA;
-  + slot_value:SLOT_DATA;
-  
-  - inc_id <-
-  (
-    slot_value.set_ensure_count (slot_value.ensure_count + 1);
-  );
-  
-  - dec_id <-
-  (
-    slot_value.set_ensure_count (slot_value.ensure_count - 1);
-    ? {slot_value.ensure_count >= 0};
-  );  
-  
-  + context_extern:LOCAL;
-  
-  + profil_list:FAST_ARRAY[PROFIL_SLOT];
-  + node_list:LINKED_LIST[NODE_TYPE];
-    
-  - is_context_sensitive:BOOLEAN <- context_extern != NULL;
-  
-  //
-  // Creation.
-  //
-    
-  - create base:ITM_BLOCK :SELF <-
-  ( + result:SELF;
-        
-    result := clone;
-    result.make base;
-    result
-  );
-  
-  - make base:ITM_BLOCK <-
-  ( + list:ITM_LIST;
-    + old_node_list:LINKED_LIST[NODE_TYPE];
-    + var:LOCAL;
-    + old_list:LIST;
-    + old_profil:PROFIL;
-    + result:EXPR;
-    + mul:EXPR_MULTIPLE;
-    + rd:READ_LOCAL;
-    + a_list:FAST_ARRAY[TYPE_FULL];
-    + r_list:FAST_ARRAY[TYPE_FULL];
-    + stack_top:INTEGER;
-    
-    list := base.list;
-    stack_top := stack_local .upper + 1;
-        
-    PROFIL_LIST.add Self;
-    type_self   := ITM_TYPE_SIMPLE.type_self.to_run_for profil_slot; 
-    default := TYPE_FULL.create Self with (
-      TYPE_FULL.expanded_bit | TYPE_FULL.default_expanded_bit
-    );
-    //           
-    slot_self  := SLOT_DATA.clone;
-    slot_self.make (list.position) name (ALIAS_STR.slot_self) style '+' base NULL type type_self;
-    slot_self.set_intern_name (ALIAS_STR.slot_self);
-    //
-    slot_value := SLOT_DATA.clone;
-    slot_value.make (list.position) name (ALIAS_STR.slot_id) style '+' base NULL type default;
-    slot_value.set_intern_name (ALIAS_STR.slot_id);
-    //
-    profil_list := FAST_ARRAY[PROFIL_SLOT].create_with_capacity 2;    
-    node_list   := LINKED_LIST[NODE_TYPE].create;
-    old_node_list := NODE.node_list;
-    NODE.set_node_list node_list;
-        
-    // index TYPE
-    index       := index_count;
-    index_count := index_count + 1;
-    
-    // Name : value
-    name := ALIAS_STR.get_intern (ALIAS_STR.slot_value);    
-    
-    // Create code.    
-    old_profil := profil_current;
-    old_list   := list_current;
-    profil_current := Self;
-    list_current := LIST.create (list.position);    
-    ITM_OBJECT.clean_bottom_index;
-    // Add context debug.
-    (debug_level_option != 0).if {      
-      context := TYPE_CONTEXT.default.new_local (list.position) 
-      name (ALIAS_STR.variable_context) style '+';
-      context.set_ensure_count 1;      
-      list_current.add_last (PUSH.create (list.position) context context first TRUE);
-    };
-    
-    // Append arguments.    
-    a_list := ALIAS_ARRAY[TYPE_FULL].new;
-    (base.argument != NULL).if {      
-      argument_list := FAST_ARRAY[LOCAL].create_with_capacity (base.argument.count+1);            
-      argument_list.add_last NULL;      
-      base.argument.to_run_in argument_list for profil_slot;
-      1.to (argument_list.upper) do { j:INTEGER;
-        a_list.add_last (argument_list.item j.type);
-      };
-    } else {
-      argument_list := FAST_ARRAY[LOCAL].create 1; 
-    };       
-    var := LOCAL.create (list.position) name (ALIAS_STR.variable_self) style ' ' type type_self;
-        
-    argument_list.put var to 0;
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;
-      stack_local.add_last (argument_list.item j);
-    };        
-    a_list := ALIAS_ARRAY[TYPE_FULL].alias a_list;
-    //
-    code := list_current;    
-    //
-    result := list.to_run_expr;
-    // Result.
-    r_list := ALIAS_ARRAY[TYPE_FULL].new;
-    (result.static_type.raw != TYPE_VOID).if {
-      mul ?= result;
-      (mul != NULL).if {
-        result_list.make_with_capacity (mul.count);
-        (mul.lower).to (mul.upper) do { j:INTEGER;
-          rd ?= mul.item j;
-          var := rd.local;
-          result_list.add_last var;
-          r_list.add_last (var.type);
-        };
-      } else {
-        rd ?= result;        
-        var := rd.local;                
-        result_list.add_last var;
-        r_list.add_last (var.type);
-      };      
-    };    
-    result.remove; // BSBS: Il y a un petit gachi...
-    r_list := ALIAS_ARRAY[TYPE_FULL].alias r_list;
-    //
-    (ITM_OBJECT.bottom_index <= stack_local.upper).if {
-      context_extern := ITM_OBJECT.context_extern;
-    };
-    to_type_block  := TYPE_BLOCK.get_direct a_list and_result r_list;
-    stack_local.remove_since stack_top;
-    //
-    NODE.set_node_list old_node_list;        
-    profil_current := old_profil;
-    list_current := old_list;
-  );
-  
-  //
-  // Genere Profil.
-  //
-  
-  - is_static:BOOLEAN <- TRUE;
-  
-  - genere_handler_intern buffer:STRING <-
-  (
-    (is_context_sensitive).if {
-      warning_error (code.position,
-	"Compiler limit : This block is context sensitive, and \
-	\evaluation too far away from the context."
-      );      
-    };
-    parent_profil.genere_handler_intern buffer;
-  );
-  
-  //
-  // TYPE BLOCK.
-  //
-  
-  - intern_name:STRING_CONSTANT <- name;
-  
-  - write_argument args:FAST_ARRAY[EXPR] :FAST_ARRAY[WRITE] <-
-  ( + rd:READ;
-    + rec:EXPR;
-    
-    rec := args.first;
-    rd := slot_self.read (rec.position) with rec;
-    args.put rd to 0;
-    parent_profil.write_argument args
-  );
-  
-  - set_late_binding <-
-  (    
-    type_block.set_late_binding;
-  );
-  
-  - link call:CALL_SLOT <-
-  ( 
-    (link_count = 0).if {
-      NODE.node_list.append_collection node_list;
-    };
-    link_count := link_count + 1;
-  );
-  
-  - get_expr_result:EXPR <-
-  ( + result:EXPR;
-    + lst:FAST_ARRAY[EXPR];
-    + loc:LOCAL;
-        
-    (result_list.count > 1).if {
-      lst := FAST_ARRAY[EXPR].create_with_capacity (result_list.count);      
-      (result_list.lower).to (result_list.upper) do { k:INTEGER;
-	loc := result_list.item k;
-	lst.add_last (loc.type.get_temporary_expr (loc.position));
-      };      
-      result := EXPR_MULTIPLE.create lst;      
-    }.elseif {result_list.count = 1} then {	
-      loc := result_list.first;
-      result := loc.type.get_temporary_expr (loc.position);
-    } else {
-      result := PROTOTYPE_CST.create (code.position) type (TYPE_VOID.default); //BSBS: Alias.
-    };
-    result
-  );
-    
-  - is_block:BOOLEAN := TRUE;
-
-  - '==' Right 60 other:TYPE :BOOLEAN <- 
-  ( 
-    other = to_type_block
-  );
-
-  - append_name_in buf:STRING <-  
-  (
-    buf.add_last '{';        
-    (argument_list.count > 1).if {
-      (argument_list.count > 2).if {
-        buf.add_last '(';
-        (argument_list.lower+1).to (argument_list.upper-1) do { j:INTEGER;
-          argument_list.item j.type.display buf;
-          buf.add_last ',';
-        };    
-        argument_list.last.type.display buf;
-        buf.add_last ')';
-      } else {
-        argument_list.last.type.display buf;
-      };
-      buf.add_last ';';
-      buf.add_last ' ';
-    };
-    (result_list.lower).to (result_list.upper-1) do { j:INTEGER;
-      result_list.item j.type.display buf;
-      buf.add_last ',';
-    };    
-    (result_list.is_empty).if_false {
-      result_list.last.type.display buf;      
-    };
-    buf.add_last '}';    
-    // Debug
-    buf.append "(PROFIL_BLOCK)";
-  );
-
-  - prototype:PROTOTYPE <- type_block.prototype;
-  
-  - subtype_list:HASHED_SET[TYPE] <- type_block.subtype_list;
-  - add_subtype t:TYPE <- type_block.add_subtype t;
-  
-  - get_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_slot n
-  );
-  
-  - get_local_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_local_slot n
-  );
-  
-  - get_path_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_path_slot n
-  );
-  
-  - genere_struct <-
-  (
-    // Nothing.
-  );
-         
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <- index.append_in buffer;
-  
-  - put_access_id e:EXPR in buffer:STRING <- 
-  (    
-    e.genere buffer;
-    buffer.append ".__id";
-  );
-  
-  - put_value buffer:STRING <- 
-  (
-    index.append_in buffer;
-  );
-  
-  - put_expanded_declaration buffer:STRING <-
-  (    
-    // BSBS: A revoir car c'est un gros bordel entre PROFIL_BLOCK et TYPE_BLOCK!
-    buffer.append "__";
-    buffer.append type_c;    
-  );  
-  
-Section Public
-  /*
-  - to_run_for p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  (
-    "PROFIL BLOCK\n".print;  
-    NULL
-  );
-  */
-  
-  - is_sub_type other:TYPE :BOOLEAN <- 
-  ( + result:BOOLEAN;
-    + t:TYPE_BLOCK;
-        
-    result := Self == other;
-    (result).if_false {
-      t ?= other;
-      result := (
-        (t != NULL) && 
-        {t.argument_list = to_type_block.argument_list} &&
-        {to_type_block.is_sub_type_result t}
-      );
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-    
-  - display buffer:STRING <-
-  (    
-    buffer.append "BLOCK SEND ";
-    append_type buffer;
-  );    
diff --git a/src/profil_list.li b/src/profil_list.li
deleted file mode 100644
index a2af792..0000000
--- a/src/profil_list.li
+++ /dev/null
@@ -1,193 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PROFIL_LIST;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Profil list manager.";
-  
-Section Inherit
-  
-  + parent_any:Expanded ANY; 
-  
-Section Private
-  
-  - profil_list:FAST_ARRAY[PROFIL] := FAST_ARRAY[PROFIL].create_with_capacity 65536;  
-  
-  - life_limit:INTEGER;
-  
-  - current:INTEGER;
-  
-  - swap i1:INTEGER with i2:INTEGER <-
-  (
-    profil_list.item i2.set_life_index i1;
-    profil_list.item i1.set_life_index i2;
-    profil_list.swap i1 with i2;            
-  );
-
-  - clean <-
-  (
-    reduce_profil := profil_list.upper >= life_limit;
-    {profil_list.upper >= life_limit}.while_do {
-      profil_list.last.remove;	
-      ! {profil_list.last.set_life_index (-1)};
-      profil_list.remove_last;
-    };
-  );
-  
-Section Public
-  
-  - reduce_profil:BOOLEAN := TRUE;
-  
-  - add p:PROFIL <-
-  ( 
-    profil_list.add_last p;
-    p.set_life_index (profil_list.upper);
-  );
-  
-  - set_life p:PROFIL <-
-  [ 
-    -? { p.life_index != -1 };
-    -? { profil_list.item (p.life_index) = p };
-  ]
-  ( + idx:INTEGER;
-    
-    idx := p.life_index;
-    (idx = life_limit).if {
-      life_limit := life_limit + 1;
-    }.elseif {idx > life_limit} then {      
-      swap idx with life_limit;      
-      life_limit := life_limit + 1;
-    };
-  )
-  [ 
-    +? { profil_list.item (p.life_index) = p };
-    +? { p.life_index < life_limit };
-  ];
-  
-  - unset_life p:PROFIL <-
-  [
-    -? { p.life_index != -1 };
-  ]
-  ( + idx:INTEGER;
-    
-    idx := p.life_index;
-    (idx < life_limit).if {
-      life_limit := life_limit - 1;	
-      (idx < life_limit).if {
-	(idx > current).if {
-	  swap idx with life_limit;	
-	} else {	  
-	  swap idx with current;
-	  swap current with life_limit; 
-	  current := current - 1;
-	};
-      };
-    };    
-  );
-  
-  - remove p:PROFIL <-
-  [
-    -? { p.life_index != -1 };
-  ]
-  ( + idx:INTEGER;
-    
-    unset_life p;
-    idx := p.life_index;
-    (idx != profil_list.upper).if {
-      swap idx with (profil_list.upper);
-    };
-    profil_list.remove_last;
-    // Debug.
-    ! {p.set_life_index (-1)};
-  );
-    
-  - execute_pass_recursive <-
-  (
-    VARIABLE.update;
-    life_limit := 0;
-    PROFIL.set_mode_recursive TRUE;
-    profil_current := profil_slot := NULL;
-    list_current   := NULL;          
-    list_main.execute;    
-    PROFIL.set_mode_recursive FALSE;
-    clean;
-    reduce_profil := TRUE;
-  );
-  
-  - inline_level_current:INTEGER := 3;
-  
-  - execute_pass <-
-  ( 
-    VARIABLE.update;
-    life_limit := 0;
-    profil_slot := NULL;
-    list_current   := NULL; 
-    list_main.execute;      
-    current := profil_list.lower;
-    {current < life_limit}.while_do {			            
-      profil_current := profil_list.item current;
-      profil_current.execute inline_level_current;
-      current := current + 1;
-    };      
-    current := 0;
-    clean;    
-    ((! reduce_profil) && {inline_level_current < inline_level}).if {
-      inline_level_current := inline_level_current + 3;
-      new_execute_pass;
-    };
-  );
-  
-  //
-  // Genere.
-  //
-  
-  - genere_handler buffer:STRING <-
-  (
-    (profil_list.lower).to (profil_list.upper) do { j:INTEGER;
-      profil_list.item j.genere_handler buffer;            
-    };
-  );
-  
-  - genere buffer:STRING <-
-  (
-    (profil_list.lower).to (profil_list.upper) do { j:INTEGER;
-      profil_list.item j.genere buffer;            
-    };
-  );
-
-  //
-  // Display.
-  //
-  
-  - display <-
-  (    
-    string_tmp.clear;
-    (profil_list.upper).downto (profil_list.lower) do { j:INTEGER;
-      profil_list.item j.display_all string_tmp;
-    };
-    string_tmp.print;
-  );
-  
\ No newline at end of file
diff --git a/src/profil_slot.li b/src/profil_slot.li
deleted file mode 100644
index e9a15bf..0000000
--- a/src/profil_slot.li
+++ /dev/null
@@ -1,182 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := PROFIL_SLOT;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Method with costumization";
-  
-Section Inherit
-  
-  + parent_profil:Expanded PROFIL; 
-  
-  - parent_parameter_to_type:Expanded PARAMETER_TO_TYPE;
-  
-Section Public
-  
-  - position:POSITION <- slot.position;
-  
-  - slot:SLOT <- slot_code;
-  
-  - is_interrupt:BOOLEAN <- slot_code.id_section.is_interrupt;  
-  - is_external:BOOLEAN  <- slot_code.id_section.is_external;  
-
-  + slot_code:SLOT_CODE;
-    
-  + is_context_sensitive:BOOLEAN; 
-  // BSBS: Le bloc passé en argument peux ne pas etre context sensitive
-  // Et puis, cet stat peu changer dans le temps...
-    
-  - set_context_sensitive <-
-  (
-    is_context_sensitive := TRUE;
-  );
-
-  //
-  // Creation.
-  //
-  
-  - arg_type_tmp:FAST_ARRAY[EXPR];
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  ( + idx:INTEGER;
-    + result:TYPE_FULL;
-    
-    (p.name = ALIAS_STR.prototype_self).if {
-      // For Self.
-      result := type_self;                
-    } else {
-      // For Genericity.    
-      result := type_self.raw.parameter_to_type p;
-      (result = NULL).if {            
-        // For Type parametric.
-        idx := slot_code.get_index_argument_type p;
-        (idx != - 1).if {
-          result := arg_type_tmp.item idx.static_type;
-        };
-      };
-    };
-    
-    result
-  );
-  
-  - make s:SLOT_CODE 
-  with (typ_self:TYPE_FULL,call_lst:FAST_ARRAY[EXPR]) 
-  verify is_first:BOOLEAN :FAST_ARRAY[WRITE] <-
-  [ 
-    -? {typ_self != NULL};
-  ]
-  ( + loc:LOCAL;
-    + typ:TYPE_FULL;
-    + item_lst:FAST_ARRAY[ITM_ARGUMENT];         
-    + result:FAST_ARRAY[WRITE];
-    + tm:ITM_TYPE_MULTI;
-    + ts:ITM_TYPE_MONO;
-    
-    PROFIL_LIST.add Self;
-    
-    (s.id_section.is_external).if {
-      name := s.name;
-    } else {
-      name := ALIAS_STR.get_intern (s.name);    
-    };
-    slot_code := s;
-    type_self := typ_self;
-    //
-    list_current := LIST.create (s.position);
-    profil_current := profil_slot := Self;    
-    //
-    (debug_level_option != 0).if {
-      // Debug mode : Add context local.
-      context := TYPE_CONTEXT.default.new_local (s.position) 
-      name (ALIAS_STR.variable_context) style '+';
-      context.set_ensure_count 1;      
-      list_current.add_last (PUSH.create (slot_code.position) context context first TRUE);
-    };
-    //
-    code := list_current;
-    arg_type_tmp := call_lst;
-    //
-    // Arguments.    
-    item_lst := s.argument_list;    
-    argument_list := FAST_ARRAY[LOCAL].create_with_capacity (s.argument_count); 
-    (item_lst.lower).to (item_lst.upper) do { j:INTEGER;
-      item_lst.item j.to_run_in argument_list for Self;
-    };
-    
-    ((s.id_section.is_external) && {argument_list.count > 1}).if {
-      (argument_list.lower+1).to (argument_list.upper) do { j:INTEGER;      
-	loc := argument_list.item j;
-	loc.set_ensure_count 1;
-	loc.write (loc.position) value (
-	  EXTERNAL_C.create (loc.position) text "/* External slot */"
-	  access NULL persistant FALSE type (loc.type)
-	);
-      };
-    };    
-            
-    // Results
-    tm ?= s.result_type;        
-    (tm != NULL).if {    
-      result_list.make_with_capacity (tm.count);      
-      (tm.lower).to (tm.upper) do { k:INTEGER;	  
-        typ := tm.item k.to_run_for Self;	
-        loc := typ.get (s.position) result (k+1);
-        result_list.add_last loc;        
-      };      
-    } else {      
-      ts ?= s.result_type;      
-      (ts != ITM_TYPE_SIMPLE.type_void).if {
-        typ := ts.to_run_for Self;	        
-        result_list.add_last (typ.get (s.position) result 0);         
-      };
-    };           
-    //
-    result := write_argument call_lst;
-    //        
-    slot_code.create_code is_first;       
-    //
-    result
-  );
-      
-  //
-  // Execute.
-  //
-  
-  - remove_inline <-
-  (
-    parent_profil.remove_inline;
-    slot_code.remove_profil Self;    
-  );
-  
-  - remove <-
-  ( 
-    parent_profil.remove;
-    slot_code.remove_profil Self;            
-  );
-  
-  //
-  // Genere.
-  //
-  
-  - is_static:BOOLEAN <- (! slot.id_section.is_interrupt) && {! slot.id_section.is_external};
diff --git a/src/shorter.li b/src/shorter.li
deleted file mode 100644
index 433919e..0000000
--- a/src/shorter.li
+++ /dev/null
@@ -1,465 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SHORTER;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - bibliography:= "http://IsaacOS.com";
-  - author      := "Matthieu Brehier, Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Shorter source code.";
-  
-  - external := `#include "path.h"`;
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-
-  - last_index (n:STRING,c:CHARACTER) :INTEGER <-
-  // BSBS: A Mettre dans STRING.
-  ( + result:INTEGER;
-    result := n.upper;
-    {(result<n.lower) || {n.item result = c}}.until_do {
-      result := result-1;
-    };
-    result
-  );
-
-  - output_name : STRING_CONSTANT;
-  
-  - input_name  : STRING_CONSTANT;
-  
-  - format_name : STRING_CONSTANT;
-  
-  - proto_input:PROTOTYPE;
-  
-  //
-  // Buffer.
-  //
-  
-  - directory_list:STRING;
-  
-  - file_list:STRING;
-  
-  - current_list:STRING;
-  
-  //
-  // Command.
-  //
-
-  - usage:STRING_CONSTANT :=
-  "----------------------------------------------------------------\n\
-  \--                   Lisaac source Shorter                    --\n\
-  \--            LORIA - LSIIT - ULP - CNRS - FRANCE             --\n\
-  \--         Benoit SONNTAG - sonntag at icps.u-strasbg.fr         --\n\
-  \--                   http://www.IsaacOS.com                   --\n\
-  \----------------------------------------------------------------\n\
-  \Usage:                                                      \n\
-  \  shorter <input_file[.li]> [Options]                       \n\
-  \                                                            \n\
-  \Options:                                                    \n\
-  \  -o <output>      : output file or directory               \n\
-  \                     (default: <input_file.ext>)            \n\
-  \  -p               : include `Section Private'              \n\
-  \  -c               : include code source                    \n\
-  \  -r               : recursive builder documentation        \n\
-  \  -f <format_file> : formatting description file            \n\
-  \                     (see `/lisaac/shorter/')               \n\
-  \  -d               : Lisaac doc style (no -c, -r)           \n\
-  \                                                            \n\
-  \Examples:                                                   \n\
-  \  * Output format file:                                     \n\
-  \    shorter -c -p -f latex hello_world.li                   \n\ 
-  \                                                            \n\
-  \  * Build html documentation:                               \n\
-  \    shorter -r -f html ~/lisaac/lib                         \n\
-  \                                                            \n\
-  \  * Build html documentation style JavaDoc:                 \n\
-  \    shorter -d -f belinda ~/lisaac/lib                      \n\
-  \                                                            \n\
-  \Bug report:                                                 \n\
-  \            post in : https://gna.org/bugs/?group=isaac     \n\
-  \            mail to : sonntag at icps.u-strasbg.fr             \n";
-
-  - display_usage <-
-  (
-    usage.print;
-    die_with_code exit_failure_code;
-  );
-  
-  //
-  // Options.
-  //
-  
-  - read_options <-
-  ( + cmd:STRING;
-    + j:INTEGER;
-    + var_lisaac:STRING_CONSTANT;
-    + path:NATIVE_ARRAY[CHARACTER];
-    
-    // Read argument.
-    is_shorter := TRUE;
-    j := 1;
-    {j > COMMAND_LINE.upper}.until_do {
-      cmd := COMMAND_LINE.item j;
-      (cmd.item 1='-').if {
-	//
-	// Lecture des options :
-	//
-	(cmd.item 2 = 'o').if {
-	  // Output name.
-	  j := j+1;
-	  (j > COMMAND_LINE.count).if {
-	    display_usage;
-	  };	  
-	  output_name := ALIAS_STR.get (COMMAND_LINE.item j);
-	}.elseif {cmd.item 2 = 'f'} then {
-	  j := j+1;
-	  (j > COMMAND_LINE.count).if {
-	    display_usage;
-	  };	  
-	  format_name := ALIAS_STR.get (COMMAND_LINE.item j);
-	}.elseif {cmd.item 2 = 'c'} then {
-	  is_short_code := TRUE;
-	}.elseif {cmd.item 2 = 'p'} then {
-	  is_short_private := TRUE;
-	}.elseif {cmd.item 2 = 'r'} then {
-          is_short_recursive := TRUE;
-        }.elseif {cmd.item 2 = 'd'} then {
-          is_shorter  := FALSE;          
-          is_shorter2 := TRUE;
-          is_short_recursive := TRUE;
-	} else {
-	  display_usage;
-	};
-      } else {
-	//
-	// Input name.
-	//
-	(input_name != NULL).if {
-	  display_usage;
-	};
-	string_tmp.copy (COMMAND_LINE.item j);
-	input_name := ALIAS_STR.get string_tmp;	
-      };
-      j := j+1;
-    };
-    
-    (input_name = NULL).if {
-      display_usage;
-    };
-    
-    (format_name != NULL).if {
-      path := `LISAAC_DIRECTORY`:NATIVE_ARRAY[CHARACTER];
-      var_lisaac := STRING_CONSTANT.new_intern path
-      count (path.fast_first_index_of '\0' until 1024);
-      //var_lisaac := ENVIRONMENT.get_environment_variable "LISAAC";
-      //(var_lisaac = NULL).if {
-	//STD_ERROR.put_string "Unable to find `LISAAC' environment variable.\n";
-	//STD_ERROR.put_string "Please, set the environment variable `LISAAC'\n";
-	//STD_ERROR.put_string "with the appropriate absolute path to lisaac \
-	//\root directory.\n";
-	//STD_ERROR.put_string "Example: 'set LISAAC=/lisaac/'\n";
-	//die_with_code exit_failure_code;
-      //};
-      //
-      string_tmp.copy var_lisaac;
-      ((var_lisaac.last != '/') &&
-      {var_lisaac.last != '\\'}).if {
-	string_tmp.add_last '/';
-      };
-      string_tmp.append "shorter/";
-      string_tmp.append format_name;
-      string_tmp.append ".li";
-      PARSER.parse_format (ALIAS_STR.get string_tmp);
-    };
-  );
-  
-  - extract_proto_name st:ABSTRACT_STRING :STRING_CONSTANT <-
-  ( + i:INTEGER;
-    
-    string_tmp.copy st;
-    string_tmp.replace_all '\\' with '/';
-    i := last_index (string_tmp,'/');
-    (i >= string_tmp.lower).if {            
-      string_tmp.remove_first i;
-    };
-    i := last_index (string_tmp,'.');
-    ? {i > string_tmp.lower}; 
-    string_tmp.remove_last (string_tmp.upper-i+1);        
-    string_tmp.to_upper;
-    ALIAS_STR.get string_tmp
-  );
-  
-  - add_ext n:STRING_CONSTANT :STRING_CONSTANT <-
-  ( + txt:STRING_CONSTANT;
-    string_tmp.copy n;    
-    (PARSER.short_dico.fast_has (ALIAS_STR.short_type_file)).if {
-      txt := PARSER.short_dico.fast_at (ALIAS_STR.short_type_file).first;
-      string_tmp.append txt;
-    } else {
-      string_tmp.append ".txt";
-    };
-    ALIAS_STR.get string_tmp
-  );
-  
-  - save_file n:STRING_CONSTANT with buf:STRING <-
-  ( + file:STD_FILE;
-    + entry:ENTRY;
-    
-    (is_short_recursive).if {
-      (output_name != NULL).if {
-        string_tmp.copy output_name;
-        ((string_tmp.last != '/') || {string_tmp.last != '\\'}).if {
-          string_tmp.add_last '/';
-        };
-      } else {
-        string_tmp.clear;
-      };
-      string_tmp.append n;
-    } else {
-      string_tmp.copy output_name;
-    };
-    entry := FILE_SYSTEM.make_file string_tmp;
-    (entry = NULL).if {
-      STD_ERROR.put_string "Error: File ";
-      STD_ERROR.put_string string_tmp;
-      STD_ERROR.put_string " is not created !\n";
-      die_with_code exit_failure_code;
-    };
-    (! entry.open).if {
-      STD_ERROR.put_string "Error: File ";
-      STD_ERROR.put_string string_tmp;
-      STD_ERROR.put_string " is not open !\n";
-      die_with_code exit_failure_code;
-    };
-    file ?= entry;
-    file.write buf from (buf.lower) size (buf.count);
-    file.close;
-  );
-  
-  - check_in entry:ENTRY begin n:INTEGER <-
-  ( + name:STRING_CONSTANT;
-    + tok:STRING_CONSTANT;
-    + tok_lst:LINKED_LIST[STRING_CONSTANT];
-    + dir:DIRECTORY;    
-
-    (! entry.open).if {
-      "Warning: directory `".print;
-      entry.path.print;
-      "\' not open.\n".print;
-    } else {            
-      dir ?= entry;
-      // Directory
-      (dir.lower).to (dir.upper) do { i:INTEGER;
-	(dir.item i.is_directory).if {
-	  check_in (dir.item i) begin n;
-	};
-      };
-      // Lisaac file `.li'
-      (dir.lower).to (dir.upper) do { i:INTEGER;
-	(! dir.item i.is_directory).if {
-	  name := dir.item i.name;
-	  (name.has_suffix ".li").if {
-	    string_tmp.copy name;
-	    string_tmp.remove_last 3;
-	    string_tmp.to_upper;
-	    tok := ALIAS_STR.get string_tmp;
-	    (PARSER.short_dico.fast_has (ALIAS_STR.short_file_list_item)).if {
-	      tok_lst := PARSER.short_dico.fast_at (ALIAS_STR.short_file_list_item);
-	      (tok_lst.lower).to (tok_lst.upper) do { j:INTEGER;
-		(tok_lst.item j = NULL).if {
-		  current_list.append tok;
-		  file_list.append tok;
-		} else {
-		  current_list.append (tok_lst.item j);
-		  file_list.append (tok_lst.item j);
-		};
-	      };
-	    } else {
-	      current_list.append tok;	      
-	      current_list.add_last '\n';
-	      file_list.append tok;
-	      file_list.add_last '\n';
-	    };	
-	    // Creation prototype file.
-	    (PROTOTYPE.prototype_dico.fast_has tok).if {
-	      "Error: Double definition prototype:\n".print;
-	      PROTOTYPE.prototype_dico.fast_at tok.filename.print; '\n'.print;
-	      dir.item i.path.print; '\n'.print;
-	      die_with_code exit_failure_code;
-	    };
-	    proto_input := PROTOTYPE.create (dir.item i.path) name tok generic_count 0;
-	    //
-            PARSER.go_on proto_input;
-            (is_shorter).if {
-              save_file (add_ext tok) with output_code;	    
-            };
-	  };
-	}; // Lisaac file `.li'
-      };     
-      current_list.is_empty.if_false {      
-	(PARSER.short_dico.fast_has (ALIAS_STR.short_file_list_begin)).if {
-	  tok := PARSER.short_dico.fast_at (ALIAS_STR.short_file_list_begin).first;
-	  current_list.prepend tok;
-	};
-	(PARSER.short_dico.fast_has (ALIAS_STR.short_file_list_end)).if {
-	  tok := PARSER.short_dico.fast_at (ALIAS_STR.short_file_list_end).first;
-	  current_list.append tok;
-	};
-	string_tmp.copy (dir.path);
-	string_tmp.remove_first n;
-	string_tmp.is_empty.if_false {
-	  string_tmp.replace_all '/' with '-';      
-	  	  
-	  tok := ALIAS_STR.get string_tmp;            
-	  
-	  (PARSER.short_dico.fast_has (ALIAS_STR.short_directory_list_item)).if {
-	    tok_lst := PARSER.short_dico.fast_at (ALIAS_STR.short_directory_list_item);
-	    (tok_lst.lower).to (tok_lst.upper) do { j:INTEGER;
-	      (tok_lst.item j = NULL).if {
-		directory_list.append tok;
-	      } else {
-		directory_list.append (tok_lst.item j);
-	      };
-	    };
-	  } else {
-	    directory_list.append tok;	      
-	    directory_list.add_last '\n';
-	  };
-	
-	  save_file (add_ext tok) with current_list;
-	  current_list.clear;
-	};
-      };
-    };
-  );
-  
-Section Public  
-  
-  //
-  // Creation.
-  //
-
-  - main <-
-  ( + txt:STRING_CONSTANT;    
-    + p:PROTOTYPE;
-    
-    ALIAS_STR.make;
-    
-    //
-    read_options;
-        
-    // SELF, NULL, VOID, CONTEXT
-    TYPE_NULL.make_null;    
-    TYPE_VOID.make_void;
-    TYPE_CONTEXT.make_context;
-    TYPE_ID.make_type_id; // Pas utile !
-        
-    (is_short_recursive).if {
-      + dir:DIRECTORY;
-      + ent:ENTRY;
-      
-      directory_list := STRING.create 100;
-      file_list      := STRING.create 100;
-      current_list   := STRING.create 100;
-      
-      ent := FILE_SYSTEM.get_entry input_name;
-      ((ent = NULL) || {! ent.is_directory}).if {
-	"Error: directory `".print;
-	input_name.print;
-	"\' not found.\n".print;
-	die_with_code exit_failure_code;
-      };
-      (! ent.open).if {
-        "Error: directory `".print;
-	input_name.print;
-	"\' not open.\n".print;
-	die_with_code exit_failure_code;
-      };
-      dir ?= ent;
-      check_in dir begin (dir.path.count + 1);
-      // index file.
-      (PARSER.short_dico.fast_has (ALIAS_STR.short_index)).if {
-	txt := PARSER.short_dico.fast_at (ALIAS_STR.short_index).first;
-	save_file (add_ext "index") with (txt.to_string);
-      };
-      // Default file.
-      (PARSER.short_dico.fast_has (ALIAS_STR.short_default)).if {
-	txt := PARSER.short_dico.fast_at (ALIAS_STR.short_default).first;
-	save_file (add_ext "default") with (txt.to_string);
-      };
-      // Directory_list file.
-      (PARSER.short_dico.fast_has (ALIAS_STR.short_directory_list_begin)).if {
-	txt := PARSER.short_dico.fast_at (ALIAS_STR.short_directory_list_begin).first;
-	directory_list.prepend txt;
-      };
-      (PARSER.short_dico.has (ALIAS_STR.short_directory_list_end)).if {
-	txt := PARSER.short_dico.at (ALIAS_STR.short_directory_list_end).first;
-	directory_list.append txt;
-      };
-      save_file (add_ext "directory_list") with directory_list;
-      
-      // file_list file.
-      (PARSER.short_dico.fast_has (ALIAS_STR.short_file_list_begin)).if {
-	txt := PARSER.short_dico.fast_at (ALIAS_STR.short_file_list_begin).first;
-	file_list.prepend txt;
-      };
-      (PARSER.short_dico.fast_has (ALIAS_STR.short_file_list_end)).if {
-	txt := PARSER.short_dico.fast_at (ALIAS_STR.short_file_list_end).first;
-	file_list.append txt;
-      };
-      save_file (add_ext "file_list") with file_list;      
-    } else {
-      // Input.                  
-      (input_name.has_suffix ".li").if_false {
-	string_tmp.copy input_name;
-	string_tmp.append ".li";
-	input_name := ALIAS_STR.get string_tmp;
-      };
-            
-      proto_input := PROTOTYPE.create input_name 
-      name (extract_proto_name input_name)
-      generic_count 0;
-      PARSER.go_on proto_input;
-            
-      (output_name = NULL).if {
-	output_name := add_ext (proto_input.name);
-      };    
-      save_file output_name with output_code;	
-    };
-    (is_shorter2).if {
-      (PROTOTYPE.prototype_list.lower).to (PROTOTYPE.prototype_list.upper) do { j:INTEGER;
-        p := PROTOTYPE.prototype_list.item j;
-        output_code.clear;
-        p.shorter_out output_code;
-        save_file (add_ext (p.name)) with output_code;        
-      };
-    };
-  );
-
-
-
-
diff --git a/src/shorter_any/any_option.li b/src/shorter_any/any_option.li
deleted file mode 100644
index f806b4c..0000000
--- a/src/shorter_any/any_option.li
+++ /dev/null
@@ -1,59 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ANY_OPTION;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Public
-  
-  - is_shorter2:BOOLEAN;
-  
-  - is_shorter :BOOLEAN;
-  
-  - is_short_code:BOOLEAN;
-  - is_short_private:BOOLEAN;
-  - is_short_recursive:BOOLEAN;
-  
-  - put tok:ABSTRACT_STRING to buf:STRING like key:STRING_CONSTANT <-
-  ( + lst:LINKED_LIST[STRING_CONSTANT];
-    
-    (key != NULL).if {
-      lst := PARSER.short_dico.fast_reference_at key;
-      (lst != NULL).if {
-        (lst.lower).to (lst.upper) do { j:INTEGER;
-          (lst.item j = NULL).if {          
-            buf.append tok;
-          } else {
-            buf.append (lst.item j);
-          };
-        };
-      };
-    };
-  );
\ No newline at end of file
diff --git a/src/task.li b/src/task.li
deleted file mode 100644
index eed54fe..0000000
--- a/src/task.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name      := TASK;
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Inherit
-
-  - parent_object:OBJECT := OBJECT;
-
-Section Public
-  
-  + message:ABSTRACT_STRING;
-  
-  //
-  // Creation.
-  //
-
-  - create msg:ABSTRACT_STRING :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make msg
-  );
-
-  - make msg:ABSTRACT_STRING :SELF <-
-  ( 
-    message := msg;
-    Self
-  );
-  
-  //
-  // run.
-  //
-  
-  + value:INTEGER;
-  
-  - set_value v:INTEGER <-
-  (
-    value := v;
-  );
-  
-  - wait:BOOLEAN;
-  
-  - run t:INTEGER <-
-  (        
-    1.to 5 do { i:INTEGER;
-      message.print;
-      t.print; 
-      '\n'.print;
-      `usleep(100+rand()%1000)`;
-    };
-  );
-  
diff --git a/src/tools/alias_array.li b/src/tools/alias_array.li
deleted file mode 100644
index 94c747d..0000000
--- a/src/tools/alias_array.li
+++ /dev/null
@@ -1,97 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := ALIAS_ARRAY[E];
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Aliser collection.";
-  
-Section Inherit  
-  
-  - parent_object:ANY := ANY;
-  
-Section Private
-  
-  - bucket:HASHED_SET[FAST_ARRAY[E]] := 
-  HASHED_SET[FAST_ARRAY[E]].create;
-  
-  - free_list:FAST_ARRAY[FAST_ARRAY[E]] := 
-  FAST_ARRAY[FAST_ARRAY[E]].create_with_capacity 5;
-  
-  - empty_list:FAST_ARRAY[E] := FAST_ARRAY[E].create_with_capacity 0;
-  
-Section Public
-    
-  //
-  // Temporary manager.
-  //
-  
-  - new:FAST_ARRAY[E] <-
-  ( + result:FAST_ARRAY[E];
-    
-    (free_list.is_empty).if {
-      result := FAST_ARRAY[E].create_with_capacity 16;
-    } else {
-      result := free_list.last;
-      free_list.remove_last;
-    };
-      
-    result
-  );
-  
-  - alias tmp:FAST_ARRAY[E] :FAST_ARRAY[E] <-
-  ( + result:FAST_ARRAY[E];
-    
-    (tmp.is_empty).if {
-      result := empty_list;
-    } else {
-      result := bucket.reference_at tmp;
-      (result = NULL).if {
-        result := FAST_ARRAY[E].create_with_capacity (tmp.count);
-        result.copy tmp;
-        bucket.fast_add result;
-      };
-    };
-    free tmp;    
-    result
-  );
-  
-  - copy tmp:FAST_ARRAY[E] :FAST_ARRAY[E] <-
-  ( + result:FAST_ARRAY[E];
-        
-    result := FAST_ARRAY[E].create_with_capacity (tmp.count);
-    result.copy tmp;    
-    free tmp;
-    result
-  ); 
-  
-  - free tmp:FAST_ARRAY[E] <-
-  (     
-    tmp.clear;
-    free_list.add_last tmp;
-  );
-
-
-
diff --git a/src/tools/alias_str.li b/src/tools/alias_str.li
deleted file mode 100644
index 87c65f7..0000000
--- a/src/tools/alias_str.li
+++ /dev/null
@@ -1,532 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := ALIAS_STR;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Alias string constant and keyword";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-  
-  - list:HASHED_SET[ABSTRACT_STRING];
-  
-  - free:FAST_ARRAY[STRING] := FAST_ARRAY[STRING].create_with_capacity 5;
-  
-Section Public  
-  
-  - keyword_section  :STRING_CONSTANT := "Section";
-  - keyword_right    :STRING_CONSTANT := "Right";
-  - keyword_left     :STRING_CONSTANT := "Left";
-  - keyword_ldots    :STRING_CONSTANT := "...";
-  - keyword_old      :STRING_CONSTANT := "Old";
-  - keyword_expanded :STRING_CONSTANT := "Expanded";  
-  - keyword_strict   :STRING_CONSTANT := "Strict";  
-  - keyword_result   :STRING_CONSTANT := "Result";
-  
-  - symbol_affect_immediate:STRING_CONSTANT := ":=";
-  - symbol_affect_cast     :STRING_CONSTANT := "?=";
-  - symbol_affect_code     :STRING_CONSTANT := "<-";
-  - symbol_auto_export     :STRING_CONSTANT := "->";
-  - symbol_auto_import     :STRING_CONSTANT := symbol_affect_code;
-  - symbol_equal           :STRING_CONSTANT := "=";
-  - symbol_not_equal       :STRING_CONSTANT := "!=";
-  - symbol_great           :STRING_CONSTANT := ">";
-  - symbol_great_equal     :STRING_CONSTANT := ">=";
-  - symbol_less            :STRING_CONSTANT := "<";
-  - symbol_less_equal      :STRING_CONSTANT := "<=";
-  
-  - operator_equal     :STRING_CONSTANT; 
-  - operator_not_equal :STRING_CONSTANT;
-  
-  - section_header     :STRING_CONSTANT := "Header";
-  - section_inherit    :STRING_CONSTANT := "Inherit";
-  - section_insert     :STRING_CONSTANT := "Insert";
-  - section_public     :STRING_CONSTANT := "Public";
-  - section_private    :STRING_CONSTANT := "Private";
-  - section_interrupt  :STRING_CONSTANT := "Interrupt";
-  - section_mapping    :STRING_CONSTANT := "Mapping";
-  - section_directory  :STRING_CONSTANT := "Directory";
-  - section_external   :STRING_CONSTANT := "External";
-  
-  - section_default    :STRING_CONSTANT := "DEFAULT";
-  - section_common     :STRING_CONSTANT := "Common";
-  
-  - prototype_integer         :STRING_CONSTANT := "INTEGER";
-  - prototype_real            :STRING_CONSTANT := "REAL";
-  - prototype_character       :STRING_CONSTANT := "CHARACTER";
-  - prototype_string_constant :STRING_CONSTANT := "STRING_CONSTANT";  
-  - prototype_string          :STRING_CONSTANT := "STRING";
-  - prototype_native_array    :STRING_CONSTANT := "NATIVE_ARRAY";
-  - prototype_native_array_volatile:STRING_CONSTANT := "NATIVE_ARRAY_VOLATILE";
-  - prototype_block           :STRING_CONSTANT := "BLOCK";
-  - prototype_boolean         :STRING_CONSTANT := "BOOLEAN";
-  - prototype_true            :STRING_CONSTANT := "TRUE";
-  - prototype_false           :STRING_CONSTANT := "FALSE";
-  - prototype_pointer         :STRING_CONSTANT := "POINTER";
-  - prototype_context         :STRING_CONSTANT := "___CONTEXT";
-  - prototype_cop             :STRING_CONSTANT := "___COP";
-  - prototype_generic         :STRING_CONSTANT := "___GENERIC";
-  - prototype_type_id         :STRING_CONSTANT := "___TYPE_ID";
-  - prototype_self            :STRING_CONSTANT := "SELF";
-      
-  - prototype_uinteger_64     :STRING_CONSTANT := "UINTEGER_64";
-  - prototype_uinteger_32     :STRING_CONSTANT := "UINTEGER_32";
-  - prototype_uinteger_16     :STRING_CONSTANT := "UINTEGER_16";
-  - prototype_uinteger_8      :STRING_CONSTANT := "UINTEGER_8";
-  - prototype_integer_64      :STRING_CONSTANT := "INTEGER_64";
-  - prototype_integer_32      :STRING_CONSTANT := "INTEGER_32";
-  - prototype_integer_16      :STRING_CONSTANT := "INTEGER_16";
-  - prototype_integer_8       :STRING_CONSTANT := "INTEGER_8";
-  - prototype_n_a_character   :STRING_CONSTANT := "NATIVE_ARRAY__CHARACTER";
-  - prototype_n_a_n_a_character:STRING_CONSTANT := 
-  "NATIVE_ARRAY__NATIVE_ARRAY__CHARACTER";
-  
-  - variable_self          :STRING_CONSTANT := "Self";  
-  - variable_context       :STRING_CONSTANT := "__pos";
-  - variable_null          :STRING_CONSTANT := "NULL";
-  - variable_void          :STRING_CONSTANT := "VOID";    
-  - variable_tmp           :STRING_CONSTANT := "__tmp";
-  
-  - variable_lisaac     :STRING_CONSTANT := "lisaac";
-  /*
-  - variable_input_file :STRING_CONSTANT := "input_file";
-  - variable_output_file:STRING_CONSTANT := "output_file";
-  - variable_target     :STRING_CONSTANT := "target";
-  */  
-  - slot_name         :STRING_CONSTANT := "name";
-  - slot_export       :STRING_CONSTANT := "export";
-  - slot_import       :STRING_CONSTANT := "import";
-  - slot_external     :STRING_CONSTANT := "external";
-  - slot_default      :STRING_CONSTANT := "default";
-  - slot_type         :STRING_CONSTANT := "type";
-  - slot_version      :STRING_CONSTANT := "version";
-  - slot_date         :STRING_CONSTANT := "date";
-  - slot_comment      :STRING_CONSTANT := "comment";
-  - slot_author       :STRING_CONSTANT := "author";
-  - slot_bibliography :STRING_CONSTANT := "bibliography";
-  - slot_language     :STRING_CONSTANT := "language";
-  - slot_copyright    :STRING_CONSTANT := "copyright";
-  - slot_bug_report   :STRING_CONSTANT := "bug_report";
-  
-  - slot_value        :STRING_CONSTANT := "value";
-  - slot_self         :STRING_CONSTANT := "self";
-  - slot_id           :STRING_CONSTANT := "__id";
-  - slot_clone        :STRING_CONSTANT := "clone";
-  - slot_main         :STRING_CONSTANT := "main";
-  - slot_infix        :STRING_CONSTANT := "__infix";
-  - slot_postfix      :STRING_CONSTANT := "__postfix";
-  - slot_prefix       :STRING_CONSTANT := "__prefix";
-  - slot_to           :STRING_CONSTANT := "to_";
-  - slot_from         :STRING_CONSTANT := "from_";
-  - slot_storage      :STRING_CONSTANT := "storage";
-  - slot_count        :STRING_CONSTANT := "count";
-  
-  // LIP file.
-  - slot_lip          :STRING_CONSTANT := "lip";
-  - slot_if           :STRING_CONSTANT := "if";
-  - slot_else         :STRING_CONSTANT := "else";  
-  - slot_print        :STRING_CONSTANT := "print";
-  - slot_exit         :STRING_CONSTANT := "exit";
-  - slot_run          :STRING_CONSTANT := "run";
-  - slot_path         :STRING_CONSTANT := "path";
-  - slot_front_end    :STRING_CONSTANT := "front_end";
-  - slot_back_end     :STRING_CONSTANT := "back_end";
-  - slot_input_file   :STRING_CONSTANT := "input_file";
-  - slot_debug_level  :STRING_CONSTANT := "debug_level";
-  - slot_debug_with_code:STRING_CONSTANT := "debug_with_code";
-  - slot_is_all_warning:STRING_CONSTANT := "is_all_warning";
-  - slot_is_optimization:STRING_CONSTANT := "is_optimization";
-  - slot_inline_level :STRING_CONSTANT := "inline_level";
-  - slot_is_java      :STRING_CONSTANT := "is_java";
-  - slot_is_statistic :STRING_CONSTANT := "is_statistic";
-  - slot_is_quiet     :STRING_CONSTANT := "is_quiet";    
-  - slot_get_integer  :STRING_CONSTANT := "get_integer";
-  - slot_get_string   :STRING_CONSTANT := "get_string";
-  - slot_is_cop       :STRING_CONSTANT := "is_cop";
-    
-  - c_void           :STRING_CONSTANT := "void";
-  - c_struct         :STRING_CONSTANT := "struct __";
-  - code_empty       :STRING_CONSTANT := "/* NOTHING */";
-  - separate         :STRING_CONSTANT := "__";
-  
-  - path_lisaac      :STRING_CONSTANT := "__PATH_LISAAC_SYSTEM__";
-  - short_format     :STRING_CONSTANT := "__SHORT_LISAAC_FORMAT__";
-  
-  //
-  // Shorter.
-  //
-  
-  - short_type_file   :STRING_CONSTANT := "type_file";
-  - short_token       :STRING_CONSTANT := "token";
-  - short_begin       :STRING_CONSTANT := "begin";
-  - short_end         :STRING_CONSTANT := "end";
-  
-  // Syntax
-  - short_keyword     :STRING_CONSTANT := "keyword";
-  - short_keyword_section:STRING_CONSTANT := "keyword_section";
-  - short_integer     :STRING_CONSTANT := "integer";
-  - short_character   :STRING_CONSTANT := "character";
-  - short_string      :STRING_CONSTANT := "string";
-  - short_operator    :STRING_CONSTANT := "operator";
-  - short_prototype   :STRING_CONSTANT := "prototype";
-  - short_keyprototype:STRING_CONSTANT := "keyprototype";
-  - short_comment_line       :STRING_CONSTANT := "comment_line";
-  - short_comment_slot_line  :STRING_CONSTANT := "comment_slot_line";
-  - short_comment_header_line:STRING_CONSTANT := "comment_header_line";
-  - short_comment     :STRING_CONSTANT := "comment";
-  - short_slot        :STRING_CONSTANT := "slot";
-  - short_slot_call   :STRING_CONSTANT := "slot_call";
-  - short_slot_style  :STRING_CONSTANT := "slot_style";
-  - short_block       :STRING_CONSTANT := "block";
-  - short_external    :STRING_CONSTANT := "external";
-  - short_local       :STRING_CONSTANT := "local";
-  - short_warning     :STRING_CONSTANT := "warning";
-  - short_identifier  :STRING_CONSTANT := "identifier";
-  - short_identifier_slot:STRING_CONSTANT := "identifier_slot";
-  
-  - short_prototype_comment_light:STRING_CONSTANT := "prototype_comment_light";
-  - short_prototype_comment:STRING_CONSTANT := "prototype_comment";
- 
-  - short_title       :STRING_CONSTANT := "title";
-  - short_table_begin :STRING_CONSTANT := "table_begin";
-  - short_table_item  :STRING_CONSTANT := "table_item";
-  - short_table_slot_name    :STRING_CONSTANT := "table_slot_name";
-  - short_table_slot_comment :STRING_CONSTANT := "table_slot_comment";
-  - short_table_end   :STRING_CONSTANT := "table_end";
-  - short_sub_title   :STRING_CONSTANT := "sub_title";
-  - short_slot_title  :STRING_CONSTANT := "slot_title";
-  - short_subsub_title  :STRING_CONSTANT := "subsub_title";
-  - short_prototype_path:STRING_CONSTANT := "prototype_path";
-  
-  
-  - short_index       :STRING_CONSTANT := "index";
-  - short_default     :STRING_CONSTANT := "default";
-  - short_directory_list_begin:STRING_CONSTANT := "directory_list_begin";
-  - short_directory_list_item :STRING_CONSTANT := "directory_list_item";
-  - short_directory_list_end  :STRING_CONSTANT := "directory_list_end";
-  - short_file_list_begin     :STRING_CONSTANT := "file_list_begin";
-  - short_file_list_item      :STRING_CONSTANT := "file_list_item";
-  - short_file_list_end       :STRING_CONSTANT := "file_list_end";
-  
-  - is_integer n:STRING_CONSTANT :BOOLEAN <-
-  (
-    (n = prototype_uinteger_64) ||
-    {n = prototype_uinteger_32} ||
-    {n = prototype_uinteger_16} ||
-    {n = prototype_uinteger_8 } ||
-    {n = prototype_integer_64 } ||
-    {n = prototype_integer_32 } ||
-    {n = prototype_integer_16 } ||
-    {n = prototype_integer_8  } ||
-    {n = prototype_integer    }
-  );
-  
-  - is_section n:STRING_CONSTANT :BOOLEAN <-
-  (
-    (n = section_inherit)   ||
-    {n = section_insert}    ||
-    {n = section_interrupt} ||
-    {n = section_private}   ||
-    {n = section_public}    ||
-    {n = section_mapping}   ||
-    {n = section_directory} ||
-    {n = section_external}
-  );
-  
-  - get str:ABSTRACT_STRING :STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    + tmp:ABSTRACT_STRING;
-    ? {str != NULL};
-    ? {list != NULL};
-   
-    tmp := list.reference_at str;
-    (tmp = NULL).if {
-      result := STRING_CONSTANT.create_copy str;
-      list.fast_add result;
-    } else {
-      result ?= tmp;      
-    };
-    ? {result == str};
-    result
-  );
-  
-  - get_intern str:ABSTRACT_STRING :STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    + v,m:INTEGER;
-    
-    tmp_name.copy str;    
-    tmp_name.append "__";    
-    count_variable := count_variable + 1;
-    v:=count_variable;
-    { v = 0 }.until_do {
-      m := v & 31;
-      (m < 26).if {
-	tmp_name.add_last ('A' +# m);
-      } else {
-	tmp_name.add_last ('0' +# (m-26));
-      };
-      v := v >> 5;
-    };    
-    result := STRING_CONSTANT.create_copy tmp_name;
-    list.fast_add result;
-    result
-  );
-  
-  - new:STRING <-
-  ( + result:STRING;
-    
-    (free.is_empty).if {
-      result := STRING.create 128;
-    } else {
-      result := free.last;
-      free.remove_last;
-    };
-    result
-  );
-  
-  - alias str:STRING :STRING_CONSTANT <-
-  ( + result:STRING_CONSTANT;
-    
-    result := get str;
-    free.add_last str;
-    str.clear;
-    result
-  );
-  
-  - make <-
-  (
-    tmp_name := STRING.create 255;
-    
-    list := HASHED_SET[ABSTRACT_STRING].create;
-    
-    // Keyword list :
-    list.add keyword_section;
-    list.add keyword_right;
-    list.add keyword_left;
-    list.add keyword_ldots;
-    list.add keyword_old;
-    list.add keyword_expanded;    
-    list.add keyword_strict;
-    list.add keyword_result;
-    
-    // Symbol list :
-    list.add symbol_affect_immediate;
-    list.add symbol_affect_cast;
-    list.add symbol_affect_code;
-    list.add symbol_auto_export;
-    list.add symbol_equal;
-    list.add symbol_not_equal;
-    list.add symbol_great;
-    list.add symbol_great_equal;
-    list.add symbol_less;
-    list.add symbol_less_equal;
-    
-    // Section name list :
-    list.add section_header;
-    list.add section_inherit;
-    list.add section_insert;
-    list.add section_interrupt;
-    list.add section_private;    
-    list.add section_public;
-    list.add section_mapping;
-    list.add section_directory;
-    list.add section_external;
-    
-    list.add section_default;
-    list.add section_common;
-    
-    // Les types de base :
-    list.add prototype_integer;
-    list.add prototype_real;
-    list.add prototype_character;
-    list.add prototype_string_constant;
-    list.add prototype_string;
-    list.add prototype_native_array;
-    list.add prototype_native_array_volatile;
-    list.add prototype_block;
-    list.add prototype_boolean;
-    list.add prototype_true;
-    list.add prototype_false;
-    list.add prototype_pointer;
-    list.add prototype_context;
-    list.add prototype_generic;
-    list.add prototype_type_id;
-    list.add prototype_self;
-        
-    // Integers :
-    list.add prototype_uinteger_64;
-    list.add prototype_uinteger_32;
-    list.add prototype_uinteger_16;
-    list.add prototype_uinteger_8;
-    list.add prototype_integer_64;
-    list.add prototype_integer_32;
-    list.add prototype_integer_16;
-    list.add prototype_integer_8;
-    list.add prototype_n_a_character;
-    list.add prototype_n_a_n_a_character;    
-    
-    // Les variables de base :
-    list.add variable_self;    
-    list.add variable_context;
-    list.add variable_null;
-    list.add variable_void;      
-    list.add variable_tmp;
-    
-    list.add variable_lisaac;     
-    /*
-    list.add variable_input_file; 
-    list.add variable_output_file;
-    list.add variable_target;     
-    */
-    
-    // Slot particulier :
-    list.add slot_name;
-    list.add slot_export;
-    list.add slot_import;
-    list.add slot_external;
-    list.add slot_default;
-    list.add slot_type;
-    list.add slot_version;
-    list.add slot_date;
-    list.add slot_comment;
-    list.add slot_author;
-    list.add slot_bibliography;
-    list.add slot_language;
-    list.add slot_copyright;
-    list.add slot_bug_report;
-
-    list.add slot_value;    
-    list.add slot_self;    
-    list.add slot_id;
-    list.add slot_clone;
-    list.add slot_main;
-    list.add slot_infix;
-    list.add slot_postfix;
-    list.add slot_prefix;
-    list.add slot_to;
-    list.add slot_from;
-    list.add slot_storage;
-    list.add slot_count;
-    // Lip.
-    list.add slot_lip;
-    list.add slot_if;
-    list.add slot_else;    
-    list.add slot_print;
-    list.add slot_exit;
-    list.add slot_run;
-    list.add slot_path;
-    list.add slot_front_end;
-    list.add slot_back_end;
-    list.add slot_input_file;
-    list.add slot_debug_level;
-    list.add slot_debug_with_code;
-    list.add slot_is_all_warning;
-    list.add slot_is_optimization;
-    list.add slot_inline_level;
-    list.add slot_is_java;
-    list.add slot_is_statistic;
-    list.add slot_is_quiet;
-    list.add slot_get_integer;
-    list.add slot_get_string;
-    list.add slot_is_cop;    
-          
-    // Type C :
-    list.add c_void;
-    list.add c_struct;
-    list.add code_empty;
-    list.add separate;    
-    
-    list.add path_lisaac;
-    list.add short_format;
-    
-    // Shorter slot :
-    list.add short_token;
-    list.add short_type_file;
-    list.add short_begin;
-    list.add short_end;
-    list.add short_keyword;
-    list.add short_keyword_section;
-    list.add short_integer;
-    list.add short_character;
-    list.add short_string; 
-    list.add short_operator;
-    list.add short_prototype;
-    list.add short_keyprototype;
-    list.add short_comment_line;
-    list.add short_comment_slot_line;
-    list.add short_comment_header_line;
-    list.add short_comment;
-    list.add short_slot;
-    list.add short_slot_call;
-    list.add short_slot_style;
-    list.add short_block;
-    list.add short_external;
-    list.add short_local;
-    list.add short_warning;
-    list.add short_identifier;
-    list.add short_identifier_slot;
-    
-    list.add short_prototype_comment_light;
-    list.add short_prototype_comment;
-    
-    list.add short_title;
-    list.add short_table_begin;
-    list.add short_table_item;
-    list.add short_table_slot_name;
-    list.add short_table_slot_comment;
-    list.add short_table_end;
-    list.add short_sub_title;
-    list.add short_slot_title;
-    list.add short_subsub_title;
-    list.add short_prototype_path;
-    
-    list.add short_index;
-    list.add short_default;
-    list.add short_directory_list_begin;
-    list.add short_directory_list_item;
-    list.add short_directory_list_end;
-    list.add short_file_list_begin;
-    list.add short_file_list_item;
-    list.add short_file_list_end; 
-
-    // Operator '=' and '!=' :
-    operator_equal     := operator slot_infix name symbol_equal;
-    operator_not_equal := operator slot_infix name symbol_not_equal;
-  );
-  
-Section Private  
-  
-  - tmp_name:STRING;
-  
-  - count_variable:INTEGER;
-  
-
-
-
-
diff --git a/src/tools/coupled.li b/src/tools/coupled.li
deleted file mode 100644
index d4c7994..0000000
--- a/src/tools/coupled.li
+++ /dev/null
@@ -1,52 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := COUPLED[E];
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Couple object";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-  
-  + first :E;
-  + second:E;
-  
-  - create elt1:E and elt2:E :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make elt1 and elt2;
-    result
-  );
-  
-  - make elt1:E and elt2:E <-
-  (
-    first  := elt1;
-    second := elt2;
-  ); 
diff --git a/src/tools/position.li b/src/tools/position.li
deleted file mode 100644
index 8a2777b..0000000
--- a/src/tools/position.li
+++ /dev/null
@@ -1,207 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := Expanded POSITION;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Coding position :    \
-  \ 9 bits  : Index prototype [1..511].  \
-  \ 8 bits  : Column          [0..255].  \
-  \ 15 bits : Line            [1..32767].";
-  
-  - type        := `unsigned long`;
-  - default     := ( CONVERT[INTEGER,POSITION].on 0 );
-  
-Section Insert  
-  
-  - parent_any:ANY := ANY;
-    
-Section Public
-  
-  - object_size:INTEGER <- POINTER.object_size;
-  
-  - code:UINTEGER_32 <- CONVERT[POSITION,UINTEGER_32].on Self;
-  
-  //
-  // Creation.
-  //
-  
-  - create proto:PROTOTYPE line l:INTEGER column c:INTEGER :POSITION <-
-  ( + cod:UINTEGER_32;
-    ? {l    .in_range 0 to 131071};
-    ? {c    .in_range 0 to    255};
-    ? {proto.index.in_range 0 to    511};
-    cod := proto.index.to_uinteger_32 | (c << 9) | (l << 17);
-    CONVERT[UINTEGER_32,POSITION].on cod
-  );
-      
-  //
-  // Localization.
-  //
-
-  - prototype:PROTOTYPE <- PROTOTYPE.prototype_list.item (code.to_integer & 01FFh);
-
-  - line:UINTEGER_32       <- code >> 17;
-  
-  - column:UINTEGER_32     <- (code >> 9) & 0FFh;
-
-  //
-  // Information Generation.
-  //
-  
-  - nb_warning:INTEGER;
-
-  - send_error <-
-  (
-    STD_ERROR.put_string msg_err;
-    is_verbose.if {
-      msg_err.print;
-    };
-    (type_error != warning).if {    
-      die_with_code exit_failure_code;
-    };
-  );
-
-  - put_error type:INTEGER text txt:ABSTRACT_STRING <-
-  (
-    type_error := type;
-    msg_err.clear;
-    type
-    .when syntax   then {
-      msg_err.append "--SYNTAX-----------\n";
-    }.when semantic then {
-      msg_err.append "--SEMANTIC---------\n";
-    }.when warning  then {
-      msg_err.append "--WARNING----------\n";
-    }.when message  then {
-      msg_err.append "--MESSAGE----------\n";
-    };
-    msg_err.append txt;
-  );
-  
-  - put_position <-
-  ( + pos:INTEGER;
-    + c,cols:UINTEGER_32;
-    + src:STRING;
-    + char:CHARACTER;
-    ? {code != 0};
-    
-    msg_err.append "\nLine ";
-    line.append_in msg_err;    
-    msg_err.append " column ";
-    column.append_in msg_err;
-    msg_err.append " in ";
-    msg_err.append (prototype.name);    
-    msg_err.add_last '(';
-    msg_err.append (prototype.filename);
-    msg_err.append "):\n";
-    // Search begin line :
-    src := prototype.source;
-    pos := src.lower;
-    1.to (line-1) do { l:INTEGER;
-      {src.item pos = '\n'}.until_do {
-	pos := pos + 1;
-      };
-      pos := pos + 1;
-    };
-    // copy line :
-    string_tmp.clear;
-    cols := column;
-    {(pos > src.upper) || 
-    {src.item pos='\n'}}.until_do {
-      char := src.item pos;
-      msg_err.add_last char;
-      (c < cols).if {
-	(char = '\t').if {
-	  string_tmp.add_last '\t';
-	} else {
-	  string_tmp.add_last ' ';
-	};
-      };
-      c   := c + 1;
-      pos := pos + 1;
-    };
-    msg_err.add_last '\n';
-    msg_err.append string_tmp;
-    msg_err.append "^\n";
-  );
-  
-  - extract_line:STRING <-
-  ( + pos:INTEGER;
-    + src:STRING;
-    + char:CHARACTER;
-
-    // Search begin line :
-    src := prototype.source;
-    pos := src.lower;
-    1.to (line-1) do { l:INTEGER;
-      {src.item pos = '\n'}.until_do {
-	pos := pos + 1;
-      };
-      pos := pos + 1;
-    };
-    // copy line :
-    string_tmp.clear;    
-    {
-      (pos > src.upper) || 
-      {src.item pos='\n'}
-    }.until_do {
-      char := src.item pos;
-      (char)
-      .when '\\' then { string_tmp.add_last '\\'; }
-      .when '"' then { string_tmp.add_last '\\'; };
-      string_tmp.add_last char;      
-      pos := pos + 1;
-    };    
-    (string_tmp.last.code = 0Dh).if {
-      string_tmp.remove_last 1;
-    };
-    STRING.create_from_string string_tmp
-  );
-  
-Section Private  
-  
-  //
-  // Service manager
-  //
-  
-  - type_error:INTEGER;
-  
-  - msg_err:STRING := STRING.create 256;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/tools/slim_array.li b/src/tools/slim_array.li
deleted file mode 100644
index 6fc4e91..0000000
--- a/src/tools/slim_array.li
+++ /dev/null
@@ -1,107 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := SLIM_ARRAY[E]; // BSBS: A mettre en Expanded.
-
-  - copyright := "2003-2008 Sonntag Benoit";
-
-  - author    := "Sonntag Benoit (sonntag at icps.u-strasbg.fr)";
-  - comment   := "The main prototype";
-
-Section Insert
-
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  + list:FAST_ARRAY[E];
-  
-Section Public
-  
-  + first:E;
-  
-  - last:E <-
-  ( + result:E;
-    (list != NULL).if {
-      result := list.last;
-    } else {
-      result := first;
-    };
-    result
-  );
-  
-  - lower:INTEGER <- 0;
-  
-  - upper:INTEGER <- 
-  ( + result:INTEGER;
-    (first = NULL).if {
-      result := -1;
-    }.elseif {list != NULL} then {
-      result := list.count;
-    };
-    result
-  );
-  
-  - count:INTEGER <- upper + 1;
-  
-  - is_empty:BOOLEAN <- first = NULL;
-  
-  - item i:INTEGER :E <-
-  ( + result:E;
-    
-    (i = 0).if {
-      result := first;
-    } else {
-      result := list.item (i-1);
-    };
-    result
-  );
-      
-  - put e:E to i:INTEGER <-
-  (
-    (i = 0).if {
-      first := e;
-    } else {
-      list.put e to (i-1);
-    };
-  );  
-      
-  - add_last e:E <-
-  (
-    (first = NULL).if {
-      first := e;
-    } else {
-      (list = NULL).if {
-        list := FAST_ARRAY[E].create_with_capacity 4;
-      };
-      list.add_last e;
-    };
-  );
-    
-  - make_with_capacity n:INTEGER <-
-  (
-    first := NULL;
-    (n > 1).if {
-      list := FAST_ARRAY[E].create_with_capacity (n-1);
-    };
-  );
-  
diff --git a/src/tools/table.li b/src/tools/table.li
deleted file mode 100644
index 143bbe8..0000000
--- a/src/tools/table.li
+++ /dev/null
@@ -1,113 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  - name        := TABLE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Display array manager.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  - table:FAST_ARRAY2[ABSTRACT_STRING] := FAST_ARRAY2[ABSTRACT_STRING].create (10,10);
-  
-  - size:FAST_ARRAY[INTEGER] := FAST_ARRAY[INTEGER].create_with_capacity 10;
-  
-  - line:INTEGER;
-  - column:INTEGER;
-    
-Section Public
-  
-  - new_table (l,c:INTEGER) <-
-  (
-    table.make (l,c);
-    line := column := 0;    
-  );
-  
-  - add n:ABSTRACT_STRING <-
-  (
-    ? {n != NULL};
-    
-    table.put n to (line,column);
-    (column = table.upper2).if {
-      column := 0;
-      line   := line + 1;
-    } else {
-      column := column + 1;
-    };    
-  );
-  
-  - append_in buffer:STRING <-
-  ( + siz:INTEGER;
-    + append_line,append_bar:BLOCK;
-    
-    // Size column.
-    size.make (table.count2);
-    0.to (table.upper1) do { l:INTEGER;
-      0.to (table.upper2) do { c:INTEGER;
-	siz := table.item (l,c).count;
-	(siz > size.item c).if {
-	  size.put siz to c;
-	};
-      };
-    };
-    
-    // Sub-code for one line.
-    append_line := 
-    { l:INTEGER;
-      + n:ABSTRACT_STRING;
-      buffer.append "// ";
-      0.to (table.upper2) do { c:INTEGER;
-	n := table.item (l,c);
-	buffer.append "| ";	
-	buffer.append n;
-	buffer.extend_multiple ' ' by (size.item c - n.count + 1);
-      };
-      buffer.append "|\n";
-    };
-    append_bar :=
-    {
-      buffer.append "// ";
-      0.to (table.upper2) do { c:INTEGER;
-	buffer.add_last '+';
-	buffer.extend_multiple '-' by (size.item c + 2);
-      };
-      buffer.append "+\n";
-    };
-
-    // Display Header.
-    append_bar.value;
-    append_line.value 0;
-    append_bar.value;
-    // Display table.
-    1.to (table.upper1) do { l:INTEGER;
-      append_line.value l;
-    };
-    // Display End.
-    append_bar.value;
-  );
\ No newline at end of file
diff --git a/src/tools/types.li b/src/tools/types.li
deleted file mode 100644
index 5c6ea2c..0000000
--- a/src/tools/types.li
+++ /dev/null
@@ -1,158 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPES;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Aliser TYPE collection.";
-  
-Section Inherit  
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section TYPES
-  
-  + storage:NATIVE_ARRAY[TYPE];
-  // Internal access to storage location.
-  
-Section LISAAC
-  
-  - size:INTEGER;
-  
-Section Public
-  
-  - lower:INTEGER := 0;
-  
-  + upper:INTEGER := -1; // Upper index bound.
-  
-  - count:INTEGER <- upper + 1;
-  
-  - is_empty:BOOLEAN <- upper = -1;
-  
-  - first:TYPE <- 
-  [ -? {! is_empty}; ]
-  (
-    storage.item 0
-  );
-
-  - second:TYPE <- 
-  [ -? {upper >= 1}; ]
-  (
-    storage.item 1
-  );
-  
-  - last:TYPE <- 
-  [ -? {! is_empty}; ]
-  (
-    storage.item upper
-  );
-  
-  - item i:INTEGER :TYPE <-
-  [ -? {i.in_range lower to upper}; ]
-  (
-    storage.item i
-  )
-  [ +? {Result != NULL};            ];
-
-  - '==' Right 60 other:TYPES :BOOLEAN <-
-  ( 
-    (Self = other) || 
-    {
-      (upper = other.upper) && 
-      {(is_empty) || {storage.fast_memcmp (other.storage) until (upper + 1)}}
-    }
-  );
-
-  - '<=' Right 60 other:TYPES :BOOLEAN <-
-  // True, if `Self' is include in `other'.
-  ( + result:BOOLEAN;
-    + j1,j2:INTEGER;
-    + t:TYPE;
-    
-    (upper <= other.upper).if {
-      j1 := j2 := lower;
-      result := TRUE;
-      {(j1 <= upper) && {result}}.while_do {
-	t := item j1;
-	{(j2 <= other.upper) && {other.item j2 != t}}.while_do {
-	  j2 := j2 + 1;
-	};
-	result := (j2 <= other.upper);
-	j1 := j1 + 1;
-      };      
-    };
-    result    
-  );
-  
-  - hash_code:INTEGER <-
-  ( + result:INTEGER;
-    
-    (! is_empty).if {
-      result := (upper << 8) + last.index;
-    };
-    result
-  );
-  
-  //
-  // Display.
-  //
-  
-  - print <-
-  (
-    (! is_empty).if {
-      (lower).to (upper - 1) do { j:INTEGER;
-	item j.print; 
-	'('.print;
-	item j.index.print;     
-	") x ".print;
-      };
-      last.print;
-      '('.print;
-      last.index.print;     
-      ')'.print;
-    } else {
-      "<Vide>".print;
-    };
-  );
-  
-Section TYPES_TMP
-  
-  - create tab:TYPES_TMP :TYPES <-
-  ( + result:TYPES;
-          
-    result := clone;
-    result.make tab;
-    result
-  );
-  
-  - make tab:TYPES_TMP <-
-  ( + up:INTEGER;
-    
-    up := tab.upper;
-    storage := NATIVE_ARRAY[TYPE].calloc_intern (up + 1);
-    storage.copy_from (tab.storage) until up;
-    upper := up;    
-    size := size + count * 4;    
-  );
\ No newline at end of file
diff --git a/src/tools/types_tmp.li b/src/tools/types_tmp.li
deleted file mode 100644
index 9ddc0bf..0000000
--- a/src/tools/types_tmp.li
+++ /dev/null
@@ -1,246 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPES_TMP;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Aliser TYPE collection.";
-  
-Section Inherit
-  
-  + parent_types:Expanded TYPES;
-  
-Section Private
-  
-  - bucket:HASHED_SET[TYPES] := HASHED_SET[TYPES].create;
-  
-  - free_list:FAST_ARRAY[TYPES_TMP] := FAST_ARRAY[TYPES_TMP].create_with_capacity 5;
-  
-  + capacity:INTEGER;
-  
-  - create_types_tmp:TYPES_TMP <-
-  ( + result:TYPES_TMP;
-    
-    result := clone;
-    result.make_types_tmp;
-    result
-  );
-  
-  - make_types_tmp <-
-  (
-    capacity := 256;
-    storage  := NATIVE_ARRAY[TYPE].calloc_intern capacity;
-  )
-  [ +? {is_empty}; ];
-  
-Section LISAAC
-    
-  - print_types <-
-  (
-    (bucket.lower).to (bucket.upper) do { j:INTEGER;
-      bucket.item j.print; '\n'.print;
-    };
-  );
-  
-Section Public
-  
-  - types_empty:TYPES := TYPES;
-  
-  //
-  // Creation.
-  //
-   
-  - new:TYPES_TMP <-
-  ( + result:TYPES_TMP;
-    
-    (free_list.is_empty).if {
-      result := create_types_tmp;
-    } else {
-      result := free_list.last;
-      free_list.remove_last;
-    };   
-    result
-  );
-  
-  - update t:TYPES :TYPES <-
-  [
-    -? { + tmp:TYPES_TMP; tmp ?= t; tmp = NULL};
-  ]
-  ( + result:TYPES;
-    
-    ((t != NULL) && {t.count = count}).if {
-      result := t;
-      free;
-    } else {
-      result := to_types;
-    };
-    result
-  );
-  
-  - to_types:TYPES <-
-  ( + result:TYPES;
-        
-    (is_empty).if {
-      result := types_empty;    
-    } else {
-      result := bucket.reference_at Self;
-      (result = NULL).if {
-	result := TYPES.create Self;
-	bucket.fast_add result;
-      };
-    };
-    20 ? {result == Self};
-        
-    free;
-    result
-  );
-  
-  - free <-
-  (
-    upper := -1;
-    free_list.add_last Self;
-  );
-  
-  //
-  // Update list.
-  //
-  
-  - remove_first <-
-  (
-    (lower + 1).to upper do { i:INTEGER;
-      storage.put (item i) to (i - 1);
-    };      
-    upper := upper - 1;
-  );
-  
-  - add t:TYPE <-
-  ( + idx:INTEGER;
-        
-    (is_empty).if {
-      add_last t;
-    } else {    
-      idx := search t from 0 to count;
-      (idx > upper).if {
-	add_last t;
-      }.elseif {item idx != t} then {
-	add t to idx;
-      };
-    };
-  )
-  [ 
-    20 ? {order_test}; 
-  ];
-
-  - union other:TYPES <-
-  ( + idx1,idx2,t2idx:INTEGER;
-    + t2:TYPE;
-            
-    {idx2 > other.upper}.until_do {
-      t2    := other.item idx2;
-      t2idx := t2.index;
-      {(idx1 <= upper) && {item idx1.index < t2idx}}.while_do {
-	idx1 := idx1 + 1;
-      };
-      ((idx1 > upper) || {item idx1 != t2}).if {	
-	add t2 to idx1;	
-      };      
-      idx1 := idx1 + 1;
-      idx2 := idx2 + 1;
-    };    
-  )
-  [ 
-    20 ? {order_test}; 
-  ];
-    
-Section Private
-  
-  - add_last t:TYPE <-
-  ( + new_capacity:INTEGER;
-        
-    (upper + 1 > capacity - 1 ).if {
-      new_capacity := capacity * 2;
-      storage := storage.realloc capacity with new_capacity;
-      capacity := new_capacity;      
-    }; 
-    upper := upper + 1;
-    storage.put t to upper;
-  );
-  
-  - add t:TYPE to index:INTEGER <-
-  ( + new_capacity:INTEGER;
-    (index = upper + 1).if {
-      add_last t;
-    } else {
-      (upper + 1 > capacity - 1 ).if {
-	new_capacity := capacity * 2;
-	storage := storage.realloc capacity with new_capacity;
-	capacity := new_capacity;      
-      }; 
-      upper := upper + 1;
-      (upper - 1).downto index do { i:INTEGER;
-	storage.put (item i) to (i + 1);
-      };      
-      storage.put t to index;
-    };
-  );
-  
-  - search t:TYPE from beg:INTEGER to end:INTEGER :INTEGER <-
-  // Dichotomic research.
-  ( + middle,result:INTEGER;
-        
-    ((end - beg) < 2).if {
-      (t.index > item beg.index).if {
-	result := end;
-      } else {
-	result := beg;
-      };
-    } else {      
-      middle := (beg + end) >> 1;
-      (t.index > item middle.index).if {
-	result := search t from middle to end; 
-      } else {
-	result := search t from beg to middle;
-      };
-    };
-    result
-  );
-
-  - order_test:BOOLEAN <-
-  ( + j:INTEGER;
-
-    {(j < upper) && {item j.index < item (j+1).index}}.while_do {
-      j := j + 1;    
-    };
-    j >= upper
-  );
-
-
-
-
-
-
-
-
-
diff --git a/src/type/old/type_block.li b/src/type/old/type_block.li
deleted file mode 100644
index 5809d7d..0000000
--- a/src/type/old/type_block.li
+++ /dev/null
@@ -1,249 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE_BLOCK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Virtual type for BLOCK manager";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Public   
-  
-  - list_block:FAST_ARRAY[TYPE_BLOCK] := FAST_ARRAY[TYPE_BLOCK].create_with_capacity 2048;
-  
-  - clean <-
-  (
-    (list_block.lower).to (list_block.upper) do { j:INTEGER;
-      list_block.item j.remove;
-    };
-  );
-  
-Section Public  
-    
-  - name:STRING_CONSTANT <- ALIAS_STR.prototype_block;
-  
-  - is_context_sensitive:BOOLEAN <- context_extern != NULL;
-  
-  + context_extern:LOCAL;
-  
-  //
-  // Creation.
-  //
-
-  - create base:ITM_BLOCK :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make base;
-    result
-  );
-  
-  - make base:ITM_BLOCK <-
-  ( + var:VARIABLE;
-    + loc:LOCAL;
-    + instr:INSTR;
-    + arg_lower:INTEGER;
-    + list:ITM_LIST;
-    + old_node_list:LINKED_LIST[NODE_TYPE];
-        
-    list_block.add_last Self;
-    profil_list := FAST_ARRAY[PROFIL_SLOT].create_with_capacity 2;
-    node_list := LINKED_LIST[NODE_TYPE].create;
-    //
-    index       := index_count;
-    index_count := index_count + 1;
-    //            
-    list := base.list;
-    CONTEXT.push_intern (list.position);    
-    //
-    old_node_list := NODE.node_list;
-    NODE.set_node_list node_list;
-        
-    // Append arguments.
-    (base.argument != NULL).if {
-      argument_type := ALIAS_ARRAY[TYPE_FULL].new;
-      arg_lower := stack_local.upper + 1;
-      base.argument.to_run stack_local;
-      (arg_lower).to (stack_local.upper) do { j:INTEGER;
-	var   := stack_local.item j;
-	var.set_style '+';
-	argument_type.add_last (var.type);
-	instr := var.write (var.position) value NULL;
-	list_current.add_last instr;
-      };
-      argument_type := ALIAS_ARRAY[TYPE_FULL].alias argument_type;
-    };
-    //
-    (debug_level_option != 0).if {
-      // Debug mode : Add context local.
-      loc := TYPE_CONTEXT.default.new_local (list.position) 
-      name (ALIAS_STR.variable_context) style '+';
-      loc.set_ensure_count 1;
-      stack_local.add_last loc;      
-      list_current.add_last (PUSH.create (list.position) context loc first TRUE);
-    };
-    //
-    list.to_run_base FALSE;    
-    model_list   := list_current;
-    model_result := list.create_result_expr;
-    
-    NODE.set_node_list old_node_list;
-    context_extern := ITM_OBJECT.context_extern;
-    CONTEXT.pop_intern;            
-    //    
-    default := TYPE_FULL.create Self with 0; 
-  );
-  
-  - make_copy other:TYPE_BLOCK <-
-  ( + old_node_list:LINKED_LIST[NODE_TYPE];
-    
-    list_block.add_last Self;
-    profil_list := FAST_ARRAY[PROFIL_SLOT].create_with_capacity 2;
-    node_list   := LINKED_LIST[NODE_TYPE].create;
-    //    
-    index       := index_count;
-    index_count := index_count + 1;
-    //    
-    old_node_list := NODE.node_list;
-    NODE.set_node_list node_list;
-            
-    argument_type  := other.argument_type;
-    //LOCAL.alias_on;
-    model_list     := other.model_list.my_copy;
-    //LOCAL.alias_off;
-    model_result   := other.model_result.my_copy;    
-    context_extern := other.context_extern;    
-    
-    NODE.set_node_list old_node_list;
-    default := TYPE_FULL.create Self with 0;  
-    ? {node_list.count = other.node_list.count};  
-  );
-
-Section Public
-  
-  + profil_list:FAST_ARRAY[PROFIL_SLOT];
-  + node_list:LINKED_LIST[NODE_TYPE];
-  
-  + model_list:LIST;  
-  + copy_list:BOOLEAN;
-  
-  + model_result:EXPR;
-  + copy_result:BOOLEAN;
-  
-  + argument_type:FAST_ARRAY[TYPE_FULL];
-  
-  //
-  // Copy.
-  //
-  
-  - my_copy:SELF <-
-  ( + result:SELF;
-       
-    result := TYPE_BLOCK.clone;    
-    result.make_copy Self;
-        
-    result
-  );
-  
-  //
-  // Block -> List.
-  //
-  
-  - remove <-
-  (            
-    (! copy_list).if {                  
-      model_list.remove;
-      model_result.remove;
-    };
-  );
-  
-  - get_list:LIST <-
-  ( + result:LIST;    
-    
-    (copy_list).if {
-      //LOCAL.alias_on;      
-      result := model_list.my_copy;
-      //LOCAL.alias_off;
-    } else {
-      NODE.node_list.append_collection node_list;       
-      result := model_list;
-      copy_list := TRUE;
-    };            
-        
-    result
-  );
-
-  - get_result:EXPR <-
-  (         
-    model_result
-  );
-    
-  //
-  // BUG !
-  //
-  
-  - prototype:PROTOTYPE <- type_block.prototype;
-  
-  - get_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_slot n
-  );
-  
-  - get_local_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_local_slot n
-  );
-  
-  - get_path_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_path_slot n
-  );
-  
-  - genere_struct; // Nothing.
-         
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <- index.append_in buffer;
-  
-  - put_access_id e:EXPR in buffer:STRING <- 
-  (
-    buffer.append "(int)";
-    e.genere buffer;
-  );
-  
-  - put_value buffer:STRING <- 
-  (
-    buffer.append "(void *)";
-    index.append_in buffer;
-  );
-    
-Section Public
-
-  - is_sub_type other:TYPE :BOOLEAN <- other.name = name;
-  
diff --git a/src/type/old/type_link.li b/src/type/old/type_link.li
deleted file mode 100644
index 5704cd1..0000000
--- a/src/type/old/type_link.li
+++ /dev/null
@@ -1,111 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE_LINK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "TYPE_PARAMETER <-> TYPE_FULL";
-  
-Section Inherit
-  
-  - parent_object:OBJECT := OBJECT;
-  
-Section Private
-  
-  - create t:TYPE_FULL :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make t;
-    result
-  );
-  
-  - make t:TYPE_FULL <-
-  (
-    type_self := t;
-  );
-  
-Section Public
-  
-  + type_self:TYPE_FULL;
-  
-  - create_self s:EXPR :TYPE_LINK <-
-  ( + t:TYPE_FULL;
-    + tg:TYPE_GENERIC;
-    + result:TYPE_LINK;
-    + n:INTEGER;
-        
-    t := s.static_type;
-    tg ?= t;
-    (tg != NULL).if {    
-      n := tg.generic_list.count;
-      (n = 1).if {
-	result := TYPE_LINK_1.create t and 
-	(tg.prototype.idf_generic_list.first,tg.generic_list.first);
-      }.elseif {n = 2} then {
-	result := TYPE_LINK_2.create t and 
-	(tg.prototype.idf_generic_list.first ,tg.generic_list.first) and
-	(tg.prototype.idf_generic_list.second,tg.generic_list.second);
-      } else {
-	result := TYPE_LINK_N.create t and 
-	(tg.prototype.idf_generic_list,tg);
-      };
-    } else {
-      result := create t;
-    };
-    result
-  );
-  
-  - create_for slot:SLOT self s:EXPR with larg:FAST_ARRAY[EXPR] :TYPE_LINK <-
-  ( + t:TYPE_FULL;
-    + tg:TYPE_GENERIC;
-    + result:TYPE_LINK;
-    + n:INTEGER;
-    
-    t := s.static_type;
-    tg ?= t;
-    (tg != NULL).if {
-      n := tg.generic_list.count;
-    };
-    (larg != NULL).if {
-    (larg.lower).to (larg.upper) do { j:INTEGER;
-      
-    };
-  );
-  
-  //
-  // Service.
-  //
-  
-  - install <-
-  (
-    ITM_TYPE_SELF.set_define type_self;
-  );
-  
-  - clean <- 
-  (
-    ITM_TYPE_SELF.set_define TYPE_NULL;
-  );
-  
\ No newline at end of file
diff --git a/src/type/old/type_parameter.li b/src/type/old/type_parameter.li
deleted file mode 100644
index 52ace79..0000000
--- a/src/type/old/type_parameter.li
+++ /dev/null
@@ -1,80 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE_PARAMETER;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Type parameter.";
-  
-Section Inherit  
-  
-  + parent_type_full:TYPE_FULL := TYPE_FULL;
-  
-Section Public
-
-  - fix:TYPE_FULL <- parent_type_full;
-  
-  - is_parameter_type:BOOLEAN <- TRUE;
-  
-  + parameter_name:STRING_CONSTANT;
-  
-  //
-  // Creation.
-  //
-  
-  - create n:STRING_CONSTANT :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make n;
-    result
-  );
-  
-  - make n:STRING_CONSTANT <-
-  (
-    parameter_name := n;
-  );
-  
-  //
-  // Set type.
-  //
-  
-  - set_define t:TYPE_FULL <-
-  (
-    parent_type_full := t;
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_name_in buffer:STRING <-
-  (
-    buffer.append parameter_name;
-    buffer.add_last ':';
-    parent_type_full.append_name_in buffer;
-  );
-  
-
-  
diff --git a/src/type/prototype.li b/src/type/prototype.li
deleted file mode 100644
index 4ae7c00..0000000
--- a/src/type/prototype.li
+++ /dev/null
@@ -1,758 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := PROTOTYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Prototype source code.";
-  
-Section Inherit
-
-  + parent_named:Expanded NAMED;
-  
-Section Public
-  
-  - prototype_list:FAST_ARRAY[PROTOTYPE] :=
-  FAST_ARRAY[PROTOTYPE].create_with_capacity 512;
-  // BSBS: Voir si il faut le conserver !
-  
-  - prototype_dico:HASHED_DICTIONARY[PROTOTYPE,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[PROTOTYPE,STRING_CONSTANT].create;
-  
-Section Public
-  
-  + index:INTEGER; // in `prototype_list', for POSITION.
-  
-  + shortname:STRING_CONSTANT;
-  
-  //
-  // Slots
-  //
-  
-  + slot_list:HASHED_DICTIONARY[ITM_SLOT,STRING_CONSTANT];
-  
-  + first_slot:ITM_SLOT;
-  
-  + last_slot:ITM_SLOT;
-  
-  - add_slot s:ITM_SLOT <-
-  (     
-    slot_list.fast_put s to (s.name);
-    (first_slot = NULL).if {
-      first_slot := s;
-    } else {
-      last_slot.set_next s;
-    };
-    last_slot := s;
-  );    
-  
-  - search_parent n:STRING_CONSTANT :BOOLEAN <-
-  ( + slot:ITM_SLOT;
-    + result:BOOLEAN;
-    
-    slot := first_slot;
-    {
-      (result := (slot != NULL) && {slot.id_section.is_inherit_or_insert}) 
-      && {slot.name != n}
-    }.while_do {
-      slot := slot.next;
-    };
-    result
-  );
-      
-  //
-  // Run Slot.
-  //
-  
-  - init_slot_for typ:TYPE <-
-  ( + cur:ITM_SLOT;
-            
-    // Parent.
-    cur := first_slot;
-    {(cur != NULL) && {cur.id_section.is_inherit_or_insert}}.while_do {      
-      typ.slot_run.add_last (SLOT.create cur type typ);
-      cur := cur.next;
-    };
-    // Mapping.
-    (is_mapping).if {
-      {cur != NULL}.while_do {
-	(cur.id_section.is_mapping).if {
-	  ? {cur.style = '+'};
-	  typ.slot_run.add_last (SLOT.create cur type typ);
-	};
-	cur := cur.next;
-      };
-    };	  
-  );
-	  
-  //
-  // Mapping / Late binding / Expanded
-  //
-  
-  + type_style:STRING_CONSTANT; // Reference / Expanded / Strict.
-  
-  + is_mapping:BOOLEAN;
-
-  - set_mapping <-
-  (
-    is_mapping := TRUE;
-  );
-  
-  - set_type_style s:STRING_CONSTANT <- 
-  ( 
-    type_style := s;
-  );
-  
-  //
-  // Cast information.
-  //
-
-  + export_list:FAST_ARRAY[ITM_TYPE_MONO];
-  + import_list:FAST_ARRAY[ITM_TYPE_MONO];
-
-  - set_export_list s:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    export_list := s;
-  );
-
-  - set_import_list s:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    import_list := s;
-  );
-
-  //
-  // Source file.
-  //
-
-  + filename:STRING_CONSTANT;   // Pathname of prototype.
-
-  + source  : STRING;   // Text source code.
-  
-  + generic_count:INTEGER;
-  
-  + idf_generic_list:FAST_ARRAY[ITM_TYPE_PARAMETER];
-  
-  //
-  // Default value.
-  //
-
-  + default_value:ITM_CODE;
-
-  - set_default_value v:ITM_CODE <-
-  ( 
-    default_value := v; //default_value v to_slot name in Self;
-  );
-  
-  //
-  // Creation.
-  //
-  
-  - create f:STRING_CONSTANT name n:STRING_CONSTANT generic_count c:INTEGER :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make f name n generic_count c;
-    result
-  );
-  
-  - make f:STRING_CONSTANT name n:STRING_CONSTANT generic_count c:INTEGER <-
-  ( //+ file:STD_FILE;
-    //+ entry:ENTRY;
-    + file:POINTER;
-    + sz,idx:INTEGER;
-    ? {! prototype_dico.fast_has n};
-    ? {n != NULL};
-    
-    filename := f;
-    name     := n;    
-    idx := n.fast_last_index_of '.';
-    (idx != 0).if {
-      string_tmp.copy n;
-      string_tmp.remove_first idx;
-      shortname := ALIAS_STR.get string_tmp;
-    } else {
-      shortname := n;
-    };
-    generic_count := c;
-    idf_generic_list := FAST_ARRAY[ITM_TYPE_PARAMETER].create_with_capacity c;
-        
-    // Collection.    
-    index := prototype_list.count;
-    prototype_list.add_last Self;
-    prototype_dico.fast_put Self to f; 
-    
-    // Read file.            
-    //entry := FILE_SYSTEM.get f;        
-    //file ?= entry.open_read_only;
-    //source := STRING.create (file.size);
-    //file.read source size (file.size);
-    //file.close;
-    
-    file := FS_MIN.open_read f;
-    sz := FS_MIN.file_size file;
-    source := STRING.create (sz+1);
-    FS_MIN.read file in source size sz;
-    FS_MIN.close file;
-    
-    // Init.    
-    slot_list := HASHED_DICTIONARY[ITM_SLOT,STRING_CONSTANT].create;        
-    position  := POSITION.create Self line 1 column 0;
-    //
-  );
-
-  //
-  // Execute.
-  //
-            
-  - depend <-
-  ( + slot_main:SLOT;
-    + self_main:EXPR;
-    + base:NODE;
-    + pass_count_depend:INTEGER;
-    + i:INSTR;
-    + cmd:STRING_CONSTANT;
-    
-    + buf:STRING;
-
-    //
-    // Creation list execution.
-    //    
-    list_current := LIST.create position;
-    (debug_level_option != 0).if {
-      // Debug mode : Add context local.
-      context_main := TYPE_CONTEXT.default.new_local position 
-      name (ALIAS_STR.variable_context) style '+';
-      context_main.set_ensure_count 1;      
-      list_current.add_last (PUSH.create position context context_main first TRUE);
-    };
-        
-    // Command argument.
-    (is_ansi).if {      
-      (is_java).if {
-        cmd := "arg = parg";
-      } else {
-        string_tmp.clear;
-        (debug_level_option != 0).if {
-          string_tmp.copy "signal(SIGINT,interrupt_signal);\n  ";
-        };
-        string_tmp.append
-        "arg_count  = argc;\n\
-        \  arg_vector = argv;\n\
-        \#ifdef _PTHREAD_H\n\
-        \  pthread_key_create(&current_thread, NULL);\n\
-        \  pthread_attr_init(&thread_attr);\n\
-        \  /*pthread_attr_setdetachstate(&thread_attr,PTHREAD_CREATE_DETACHED);*/\n\
-        \#endif\n  ";        
-        cmd := ALIAS_STR.get string_tmp;
-      };
-      i := EXTERNAL_C.create position text cmd
-      access NULL persistant TRUE type (TYPE_VOID.default);
-      list_current.add_last i;
-    };
-    // Main Call.
-    slot_main := get_slot_main;
-    self_main := PROTOTYPE_CST.create position type (type_input.default);
-    base := NODE.new_read (slot_main.position) slot slot_main 
-    receiver self_main self self_main intern TRUE;    
-    list_current.add_last base;
-        
-    // Result.    
-    list_current.add_last (INTEGER_CST.create position value 0 type (type_integer.default)); 
-    list_main := list_current;
-            
-    //
-    // Detect life code.
-    //    
-    pass_count := 1;
-    (is_quiet).if_false {
-      STD_ERROR.put_string "Depending pass: .";   
-    };
-    {modify_count != 0}.while_do {
-      modify_count := 0;
-      (is_quiet).if_false {
-	STD_ERROR.put_string ".";
-      };
-      pass_count := pass_count + 1;
-      NODE.extend_pass;
-    };
-    
-    (is_quiet).if_false {
-      STD_ERROR.put_string " (";
-      STD_ERROR.put_integer pass_count;
-      STD_ERROR.put_string ")\n";
-    };
-    
-    buf := STRING.create 2000;
-            
-    (is_verbose).if {
-      PROFIL_LIST.display;
-    };
-    
-    //
-    // Evaluation.
-    //
-    (is_quiet).if_false {
-      STD_ERROR.put_string "Executing pass: ";
-    };
-    pass_count_depend := pass_count;
-    
-    // First pass (recursive)    
-    is_executing_pass := TRUE;            
-    (is_quiet).if_false {
-      STD_ERROR.put_string "*";
-    };
-    pass_count := pass_count + 1;
-    PROFIL_LIST.execute_pass_recursive;
-    // End first pass.    
-    {
-      modify_count := 0;
-      null_counter := 0;
-      (is_quiet).if_false {
-	STD_ERROR.put_string ".";            
-      };
-      pass_count := pass_count + 1;            
-      
-      SWITCH.reset_switch_new_pass;
-      
-      PROFIL_LIST.execute_pass;      
-      
-      (SWITCH.switch_new_pass).if {
-	new_execute_pass;	
-      };
-      
-    }.do_while 
-    //{pass_count < 40};
-    {modify_count != 0};
-    
-    (is_quiet).if_false {
-      STD_ERROR.put_string " (";
-      STD_ERROR.put_integer (pass_count - pass_count_depend);
-      STD_ERROR.put_string ")\n";          
-    };
-    //    
-    (is_verbose).if {
-      list_main.debug_display;
-      PROFIL_LIST.display;
-    };            
-  );
-    
-  //
-  // Type C
-  //
-    
-  + type_c     :STRING_CONSTANT;
-
-  - set_c_type n:STRING_CONSTANT <-
-  (
-    type_c := n;    
-  );
-  
-  //
-  // Shorter.
-  //
-  
-  + comment_slot:STRING_CONSTANT;
-  + comment_header:STRING_CONSTANT;
-  
-  - set_comment_slot t:STRING_CONSTANT <-
-  (
-    comment_slot := t;
-  );
-
-  - set_comment_header t:STRING_CONSTANT <-
-  (
-    comment_header := t;
-  );
-  
-  - shorter_out buf:STRING <-
-  ( + title:STRING_CONSTANT;
-    + s:ITM_SLOT;
-    put name to buf like (ALIAS_STR.short_title);
-    
-    (comment_slot != NULL).if {
-      put comment_slot to buf like (ALIAS_STR.short_prototype_comment_light);
-    };
-    (comment_header != NULL).if {
-      put comment_header to buf like (ALIAS_STR.short_prototype_comment);
-    };
-    
-    list_tmp.clear;
-    shorter_get_all_slot_in list_tmp;
-    
-    // Table.
-    shorter_table list_tmp select { sl:ITM_SLOT; 
-      sl.id_section.is_inherit_or_insert
-    } title "Inherit/Insert Summary" in buf;
-    
-    shorter_table list_tmp select { sl:ITM_SLOT; 
-      sl.name.has_prefix "create"
-    } title "Constructor Summary" in buf;    
-    
-    (list_tmp.lower).to (list_tmp.upper) do { j:INTEGER;
-      s := list_tmp.item j;
-      (s.stat_shorter = 0).if {
-        title := s.comment_chapter;        
-        shorter_table list_tmp select { sl:ITM_SLOT; 
-          sl.comment_chapter = title
-        } title title in buf;    
-      };
-    };
-        
-    // Detail.
-    shorter_detail list_tmp select { sl:ITM_SLOT; 
-      sl.id_section.is_inherit_or_insert
-    } title "Inherit/Insert Detail" in buf;    
-    
-    shorter_detail list_tmp select { sl:ITM_SLOT; 
-      sl.name.has_prefix "create"
-    } title "Constructor Detail" in buf;    
-        
-    (list_tmp.lower).to (list_tmp.upper) do { j:INTEGER;
-      s := list_tmp.item j;
-      (s.stat_shorter = 1).if {
-        title := s.comment_chapter;        
-        shorter_detail list_tmp select { sl:ITM_SLOT; 
-          sl.comment_chapter = title
-        } title title in buf;    
-      };
-    };
-    
-    (list_tmp.lower).to (list_tmp.upper) do { j:INTEGER;
-      list_tmp.item j.set_stat_shorter 0;
-    };
-  );
-  
-Section PROTOTYPE
-  
-  - get_slot_main:SLOT <-
-  ( + result:SLOT;    
-    + s:ITM_SLOT;    
-            
-    s := first_slot;    
-    {  
-      ((s.id_section.is_public) && {s.name = ALIAS_STR.slot_main}).if {	
-	(s.result_type != ITM_TYPE_SIMPLE.type_void).if {
-	  semantic_error ((s.position),"Unix mode: Not value return.");
-	};
-	(s.argument_count != 1).if {
-	  semantic_error ((s.position),"Unix mode: Not argument list.");
-	};	
-	result := type_input.get_slot (s.name);
-      };
-      s := s.next;
-    }.do_while {(s != NULL) && {result = NULL}};
-    
-    (result = NULL).if {
-      semantic_error (position,"Entry point not found (slot `main' in `Section Public').");
-    };        
-    result     
-  );
-  
-  - shorter_get_all_slot_in lst:FAST_ARRAY[ITM_SLOT] <-
-  ( + s:ITM_SLOT; 
-    + ps:ITM_TYPE_SIMPLE;
-    + p:PROTOTYPE;
-    + i:INTEGER;
-    
-    s := first_slot;
-    {s != NULL}.while_do {
-      (is_short_private || {! s.id_section.is_private}).if {
-        i := lst.lower;
-        {(i <= lst.upper) && {lst.item i.name != s.name}}.while_do {
-          i := i + 1;
-        };
-        (i > lst.upper).if {
-          lst.add_last s;
-        };
-      };
-      s := s.next;
-    };
-    
-    // Parent.
-    s := first_slot;
-    {(s != NULL) && {s.id_section.is_inherit_or_insert}}.while_do {      
-      ps ?= s.result_type;
-      ((ps != NULL) && {
-          ({s.style = '+'} && {ps.style = ALIAS_STR.keyword_expanded}) ||
-          {s.name.has_prefix "inherit"} || {s.name.has_prefix "insert"}
-      }).if {
-        p := NULL;
-        i := prototype_list.lower;
-        {(i <= prototype_list.upper) && {p = NULL}}.while_do {
-          (prototype_list.item i.name = ps.name).if {
-            p := prototype_list.item i;
-          };
-          i := i + 1;
-        };
-        (p != NULL).if {            
-          p.shorter_get_all_slot_in lst;
-        };
-      };      
-      s := s.next;
-    };    
-  );
-        
-  - shorter_table lst:FAST_ARRAY[ITM_SLOT] select sel:BLOCK 
-  title t:STRING_CONSTANT in buf:STRING <-
-  ( + is_first_cur:BOOLEAN;
-    + s:ITM_SLOT; 
-    
-    is_first_cur := TRUE;    
-    (lst.lower).to (lst.upper) do { i:INTEGER;
-      s := lst.item i;
-      ((sel.value s) && {s.stat_shorter = 0}).if {
-        (is_first_cur).if {
-          (t = NULL).if {
-            put "Slot Summary" to buf like (ALIAS_STR.short_table_begin);
-          } else {
-            put t to buf like (ALIAS_STR.short_table_begin);
-          };
-          is_first_cur := FALSE;
-        };
-        s.set_stat_shorter 1;
-        string_tmp.clear;
-        string_tmp2.clear;
-        s.pretty_name_in string_tmp2;
-        put string_tmp2 to string_tmp like (ALIAS_STR.short_table_slot_name);
-        (
-          (s.id_section.is_inherit_or_insert) && 
-          {
-            (
-              (s.style != '+') || {
-                + ts:ITM_TYPE_SIMPLE;
-                ts ?= s.result_type;
-                (ts = NULL) || {ts.style != ALIAS_STR.keyword_expanded}
-              }
-            ) && 
-            {! s.name.has_prefix "inherit"} && 
-            {! s.name.has_prefix "insert"}
-          }
-        ).if {
-          put " No developed." to string_tmp like (ALIAS_STR.short_warning);
-        };
-        string_tmp2.clear;        
-        get_all_comment_slot (s.name) in string_tmp2;
-        string_tmp3.clear;
-        shorter_comment string_tmp2 in string_tmp3 light TRUE;        
-        put string_tmp3 to string_tmp like (ALIAS_STR.short_table_slot_comment);
-        put string_tmp to buf like (ALIAS_STR.short_table_item);
-      };     
-    };    
-    (is_first_cur).if_false {
-      put NULL to buf like (ALIAS_STR.short_table_end);
-    };    
-  );
-  
-  - shorter_detail lst:FAST_ARRAY[ITM_SLOT] select sel:BLOCK 
-  title t:STRING_CONSTANT in buf:STRING <-
-  ( + is_first:BOOLEAN;
-    + s:ITM_SLOT;
-      
-    is_first := TRUE;
-    (lst.lower).to (lst.upper) do { i:INTEGER;
-      s := lst.item i;
-      ((sel.value s) && {s.stat_shorter = 1}).if {
-        (is_first).if {
-          (t = NULL).if {
-            put "Detail slot" to buf like (ALIAS_STR.short_sub_title);
-          } else {
-            put t to buf like (ALIAS_STR.short_sub_title);
-          };
-          is_first := FALSE;
-        };
-        s.set_stat_shorter 2;
-        //
-        string_tmp2.clear;
-        s.pretty_name_in string_tmp2;
-        put string_tmp2 to buf like (ALIAS_STR.short_slot_title);
-        string_tmp.copy (s.position.prototype.filename);
-        string_tmp.append " line #";
-        s.position.line.append_in string_tmp;
-        put string_tmp to buf like (ALIAS_STR.short_prototype_path);                
-        //
-        put "Section:" to buf like (ALIAS_STR.short_subsub_title);
-        string_tmp.clear;
-        s.id_section.append_in string_tmp;
-        put string_tmp to buf like (ALIAS_STR.short_keyword_section);
-        //
-        put "Profile:" to buf like (ALIAS_STR.short_subsub_title);
-        s.shorter_profile_in buf;
-        //                
-        string_tmp.clear;
-        get_all_comment_slot (s.name) in string_tmp;        
-        shorter_comment string_tmp in buf light FALSE;        
-      };      
-    };
-  );
-  
-  - get_all_comment_slot n:STRING_CONSTANT in buf:STRING <-
-  ( + s:ITM_SLOT; 
-    + ps:ITM_TYPE_SIMPLE;
-    + p:PROTOTYPE;
-    + i:INTEGER;
-        
-    s := slot_list.fast_reference_at n;
-    ((s != NULL) && {s.comment != NULL}).if {
-      buf.append (s.comment);
-    };
-    // Parent.
-    s := first_slot;
-    {(s != NULL) && {s.id_section.is_inherit_or_insert}}.while_do {      
-      ps ?= s.result_type;
-      (ps != NULL).if {                
-        p := NULL;
-        i := prototype_list.lower;
-        {(i <= prototype_list.upper) && {p = NULL}}.while_do {                              
-          (prototype_list.item i.name = ps.name).if {
-            p := prototype_list.item i;
-          };
-          i := i + 1;
-        };
-        (p != NULL).if {            
-          p.get_all_comment_slot n in buf;
-        };
-      };      
-      s := s.next;
-    };
-  );
-  
-  - list_tmp:FAST_ARRAY[ITM_SLOT] := FAST_ARRAY[ITM_SLOT].create_with_capacity 256;
-  
-  - str_tmp:STRING := STRING.create 512;
-  - str_tmp2:STRING := STRING.create 64;
-  - str_tmp3:STRING := STRING.create 64;
-  
-  - shorter_comment str:STRING in buf:STRING light is_light:BOOLEAN <-
-  ( + cur:INTEGER;
-    + stat,old_stat:INTEGER;
-    + car:CHARACTER;
-    + i:INTEGER;
-    + lst:LINKED_LIST[STRING_CONSTANT];
-    + code_balise:STRING_CONSTANT;
-        
-    cur := str.lower;
-    str_tmp.clear;
-    code_balise := ALIAS_STR.short_comment_slot_line;
-    {cur <= str.upper}.while_do {      
-      car := str.item cur;
-      (stat)
-      .when 0 then {        
-        // Begin.
-        (car = '*').if {          
-          (str_tmp.count > 1).if {
-            (is_light).if {
-              buf.append str_tmp;
-              cur := str.upper + 1;
-            } else {              
-              put "Description:" to buf like (ALIAS_STR.short_subsub_title);
-              put str_tmp to buf like code_balise;
-            };
-          };
-          str_tmp.clear;
-          stat := 1;
-        }.elseif {car = '`'} then {
-          old_stat := stat;
-          stat := 2;          
-          str_tmp2.clear;
-        } else {
-          str_tmp.add_last car;
-        };
-      }
-      .when 1 then {
-        // Begin slot.
-        (car.to_lower.in_range 'a' to 'z').if {        
-          str_tmp.add_last (car.to_lower);
-        }.elseif {(car = ' ') && {!str_tmp.is_empty}} then {
-          str_tmp.add_last '_';          
-        }.elseif {car = ':'} then {
-          (str_tmp.count != 0).if {            
-            code_balise := ALIAS_STR.get str_tmp;                     
-            lst := PARSER.short_dico.fast_reference_at code_balise;
-            (lst = NULL).if {                          
-              code_balise := NULL;
-            } else {
-              str_tmp.replace_all '_' with ' ';
-              str_tmp.add_last ':';
-              str_tmp.put (str_tmp.first.to_upper) to 1;
-              put str_tmp to buf like (ALIAS_STR.short_subsub_title);
-            };
-          };
-          str_tmp.clear;
-          stat := 3;
-        };
-      }
-      .when 2 then {
-        // Begin ref.
-        (car = '\'').if {
-          (code_balise != NULL).if {
-            i := list_tmp.lower;
-            {
-              (i <= list_tmp.upper) && {
-                str_tmp3.clear;
-                list_tmp.item i.pretty_name_in str_tmp3;
-                ! (str_tmp3 == str_tmp2)
-              }
-            }.while_do {
-              i := i + 1;
-            };
-            (i <= list_tmp.upper).if {
-              put str_tmp2 to str_tmp like (ALIAS_STR.short_identifier_slot);
-            } else {
-              put str_tmp2 to str_tmp like (ALIAS_STR.short_identifier);
-            };
-          };          
-          stat := old_stat;
-        } else {
-          str_tmp2.add_last car;
-        };
-      }
-      .when 3 then {
-        // Read slot.
-        (car = '*').if {
-          (str_tmp.count > 1).if {            
-            put str_tmp to buf like code_balise;
-          };
-          str_tmp.clear;
-          stat := 1;          
-        }.elseif {car = '`'} then {
-          old_stat := stat;
-          stat := 2;          
-          str_tmp2.clear;
-        } else {
-          str_tmp.add_last car;
-        };        
-      };
-      cur := cur + 1;
-    };
-    (str_tmp.count > 1).if {            
-      (is_light).if {
-        buf.append str_tmp;
-      } else {
-        (stat = 0).if {
-          put "Description:" to buf like (ALIAS_STR.short_subsub_title);
-        };
-        put str_tmp to buf like code_balise;
-      };
-    };
-  );
\ No newline at end of file
diff --git a/src/type/type.li b/src/type/type.li
deleted file mode 100644
index 5485744..0000000
--- a/src/type/type.li
+++ /dev/null
@@ -1,1038 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Type without style";
-  
-Section Inherit
-  
-  - parent_hashable:HASHABLE := HASHABLE;
-  
-  + parent_any:Expanded ANY;
-  
-  - parent_parameter_to_type:Expanded PARAMETER_TO_TYPE;
-  
-Section TYPE
-  
-  - dico_type:HASHED_DICTIONARY[TYPE,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[TYPE,STRING_CONSTANT].create;
-    
-  - index_count:INTEGER;
-    
-Section Public
-  
-  + param_count:INTEGER;
-  
-  - set_param n:INTEGER <-
-  (
-    param_count := param_count.max n;
-  );
-  
-  + subtype_list:HASHED_SET[TYPE];
-  
-  + default:TYPE_FULL;
-  
-  + size:INTEGER;
-  
-  - position:POSITION <- prototype.position;
-  
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  ( 
-    NULL
-  );
-  
-  //
-  //
-  //
-  
-  + last_pass_binding:INTEGER;
-  
-  - is_late_binding:BOOLEAN <- pass_count = last_pass_binding;
-  
-  - set_late_binding <-
-  (    
-    last_pass_binding := pass_count;
-  );
-  
-  //
-  //
-  //
-  
-  + itm_type:ITM_TYPE_SIMPLE;
-
-  + prototype:PROTOTYPE;
-  
-  - type_c:STRING_CONSTANT <- prototype.type_c;
-  
-  + slot_run:FAST_ARRAY[SLOT];
-  
-  + index:INTEGER;
-  
-  + intern_name:STRING_CONSTANT;
-    
-  - name:STRING_CONSTANT <- prototype.name;
-    
-  - hash_code:INTEGER <- intern_name.hash_code;
-  
-  - key:STRING_CONSTANT <- prototype.filename;
-      
-  //
-  // Get.
-  //
-    
-  - get itm_typ:ITM_TYPE_SIMPLE :TYPE_FULL <-  
-  ( + result:TYPE_FULL;    
-    + base:TYPE;
-    + styl:STRING_CONSTANT;    
-    + proto:PROTOTYPE;
-        
-    proto := load_prototype (itm_typ.name) generic_count 0;            
-    base := dico_type.fast_reference_at (proto.filename);
-    (base = NULL).if {      
-      base := TYPE.clone;
-      dico_type.fast_put base to (proto.filename);
-      base.make itm_typ with proto;
-    };
-    //        
-    styl := itm_typ.style;
-    (styl = NULL).if {           
-      result := base.default;
-    } else {
-      (styl = ALIAS_STR.keyword_expanded).if {	
-	result := base.default + TYPE_FULL.expanded_bit;	
-      } else {	
-	result := base.default + TYPE_FULL.strict_bit;
-      };
-    };
-    result
-  );
-  
-  //
-  // Contract
-  //
-  
-  - last_type_contract:TYPE;
-  
-  - search_require n:STRING_CONSTANT :ITM_SLOT <-
-  ( + j:INTEGER;
-    + result:ITM_SLOT;
-    + typ:TYPE;
-    + ts:ITM_TYPE_SIMPLE;
-        
-    j := slot_run.lower;
-    {
-      (j <= slot_run.upper) && 
-      {slot_run.item j.id_section.is_inherit_or_insert} &&
-      {result = NULL}	
-    }.while_do {
-      ts     ?= slot_run.item j.result_type;
-      typ    := ts.to_run_for Self.raw;
-      result := typ.prototype.slot_list.fast_reference_at n;
-      ((result = NULL) || {result.require = NULL}).if {
-	result := typ.search_require n;
-      } else {
-	last_type_contract := typ;
-      };
-      j := j + 1;
-    };
-    result
-  );
-
-  - search_ensure n:STRING_CONSTANT :ITM_SLOT <-
-  ( + j:INTEGER;
-    + result:ITM_SLOT;
-    + typ:TYPE;
-    + ts:ITM_TYPE_SIMPLE;
-            
-    j := slot_run.lower;
-    {
-      (j <= slot_run.upper) && 
-      {slot_run.item j.id_section.is_inherit_or_insert} &&
-      {result = NULL}	
-    }.while_do {
-      ts     ?= slot_run.item j.result_type;
-      typ    := ts.to_run_for Self.raw;
-      result := typ.prototype.slot_list.fast_reference_at n;
-      ((result = NULL) || {result.ensure = NULL}).if {
-	result := typ.search_ensure n;
-      } else {
-	last_type_contract := typ;
-      };
-      j := j + 1;
-    };
-    result
-  );
-
-  //
-  // Searching.
-  //
-  
-  - add_subtype t:TYPE <-  
-  ( + j:INTEGER;
-    + it:ITM_TYPE_MONO;
-    
-    (! subtype_list.fast_has t).if {    
-      subtype_list.fast_add t;
-      j := slot_run.lower;
-      {
-	(j <= slot_run.upper) && 
-	{slot_run.item j.id_section.is_inherit_or_insert}      
-      }.while_do {
-        (slot_run.item j.id_section.is_inherit).if {
-          it ?= slot_run.item j.result_type;
-          it.to_run_for Self.raw.add_subtype t;
-	};
-	j := j + 1;
-      };
-    };
-  );
-  
-  - get_slot n:STRING_CONSTANT :SLOT <-
-  // Static lookup algorithm.
-  ( + result:SLOT;
-    + j:INTEGER;
-    + it:ITM_TYPE_MONO;
-        
-    result := get_local_slot n;
-    (result = NULL).if {
-      j := slot_run.lower;
-      {
-	(j <= slot_run.upper) && 
-	{slot_run.item j.id_section.is_inherit_or_insert} &&
-	{result = NULL}	
-      }.while_do {
-        it ?= slot_run.item j.result_type;
-	result := it.to_run_for Self.get_slot n;
-	j := j + 1;
-      };
-    };
-    result
-  );
-  
-  - get_local_slot n:STRING_CONSTANT :SLOT <-
-  ( + j:INTEGER;
-    + itm_slot:ITM_SLOT;
-    + result:SLOT;
-        
-    j := slot_run.lower;
-    {(j <= slot_run.upper) && {slot_run.item j.name != n}}.while_do {
-      j := j + 1;
-    };
-    (j <= slot_run.upper).if {
-      result := slot_run.item j;
-    } else {
-      itm_slot := prototype.slot_list.fast_reference_at n;
-      (itm_slot != NULL).if {	
-	result := SLOT.create itm_slot type Self;
-	slot_run.add_last result;		
-      };
-    };
-    result
-  );  
-    
-  - get_path_slot n:STRING_CONSTANT :SLOT <-
-  ( + result:SLOT;
-    + j:INTEGER;
-    + it:ITM_TYPE_MONO;
-    
-    j := slot_run.lower;
-    {result = NULL}.while_do {
-      ? {j <= slot_run.upper}; 
-      ? {slot_run.item j.id_section.is_inherit_or_insert};
-      it ?= slot_run.item j.result_type;
-      result := it.to_run_for Self.get_slot n;
-      j := j + 1;
-    };
-    ? {result != NULL};
-    slot_run.item (j-1)
-  );
-  
-  //
-  // Import / Export
-  //
-  
-  - last_cast_name:STRING := STRING.create 32;
-  
-  - is_export_to t:TYPE_FULL :BOOLEAN <-
-  (         
-    is_cast t with (ALIAS_STR.slot_to) on (prototype.export_list)
-  );
-
-  - is_import_to t:TYPE_FULL :BOOLEAN <-
-  (         
-    is_cast t with (ALIAS_STR.slot_from) on (prototype.import_list)
-  );
-  
-Section Private
-  
-  - is_cast t:TYPE_FULL with msg:STRING_CONSTANT on lst:FAST_ARRAY[ITM_TYPE_MONO] :BOOLEAN <-
-  ( + result:BOOLEAN; 
-    + j:INTEGER;
-            
-    (lst != NULL).if {
-      j := lst.lower;
-      {(j <= lst.upper) && {lst.item j.to_run_for profil_slot != t}}.while_do {
-	j := j + 1;
-      };	
-      (j <= lst.upper).if {
-	result := TRUE;
-	last_cast_name.copy msg;
-	lst.item j.append_cast_name_in last_cast_name;	
-      };      
-    };
-    result      
-  );
-    
-Section Public
-    
-  //
-  // Genere.
-  //
-  
-  - genere_list:FAST_ARRAY[TYPE] := FAST_ARRAY[TYPE].create_with_capacity 128;
-  
-  - add_genere_list <-
-  ( 
-    ((slot_run != NULL) && {(slot_run.is_empty) || {slot_run.first != NULL}}).if {
-      (genere_list.fast_first_index_of Self > genere_list.upper).if { // BSBS: a revoir !!
-	genere_list.add_last Self;
-      };
-    };
-  );
-  
-  - genere_all_struct <-
-  (
-    TYPE_NULL.genere_typedef;    
-    (genere_list.lower).to (genere_list.upper) do { j:INTEGER;            
-      genere_list.item j.genere_typedef;      
-    };
-    TYPE_NULL.genere_struct;
-    (genere_list.lower).to (genere_list.upper) do { j:INTEGER;            
-      genere_list.item j.genere_struct;      
-    };
-    (debug_level_option != 0).if {
-      TYPE_CONTEXT.genere_typedef;
-      TYPE_CONTEXT.genere_struct;
-    };
-  );
-  
-  - id_counter_with_type:INTEGER    := 4;
-  - id_counter_without_type:INTEGER := 0;
-   
-  - slot_size:FAST_ARRAY[FAST_ARRAY[SLOT_DATA]] :=
-  ( + result:FAST_ARRAY[FAST_ARRAY[SLOT_DATA]];
-    
-    result := FAST_ARRAY[FAST_ARRAY[SLOT_DATA]].create_with_capacity 5;
-    0.to 4 do { j:INTEGER;
-      result.add_last (FAST_ARRAY[SLOT_DATA].create_with_capacity 8);
-    };
-    result
-  );  
-  
-  + detect_recursivity_generation:BOOLEAN;
-  
-  - genere_struct <-
-  ( + slot_data:SLOT_DATA;    
-    + slot:SLOT;
-    + tab:FAST_ARRAY[SLOT_DATA];
-    + action:BLOCK;
-    + tg:TYPE_GENERIC;
-    + count_slot:SLOT_DATA;
-    + storage_slot:SLOT_DATA;
-        
-    ((slot_run.is_empty) || {slot_run.first != NULL}).if {                        
-      (detect_recursivity_generation).if {
-        string_tmp.copy "Compiler limit: Cyclic depending structure definition for ";
-        append_name_in string_tmp;
-        string_tmp.add_last '.';
-        semantic_error (position,string_tmp);
-      };
-      detect_recursivity_generation := TRUE;
-      // Depending.
-      (slot_run.lower).to (slot_run.upper) do { j:INTEGER;
-	slot := slot_run.item j;
-	((slot.style = '+') && {slot.lower_style = 0}).if {
-          action := { s:SLOT_DATA;
-	    (
-	      (
-		(s.ensure_count > 0) || 
-		{s.id_section.is_mapping}
-	      ) && 
-	      {s.type.raw != Self} &&
-	      {(s.type.is_expanded) || {s.type.raw.is_block}}
-            ).if {	                    
-              s.type.raw.genere_struct;                           
-            };
-	  };
-	  (slot.slot_data_list != NULL).if {
-	    (slot.slot_data_list.lower).to (slot.slot_data_list.upper) do { k:INTEGER;
-	      action.value (slot.slot_data_list.item k);
-	    };
-	  };
-	  action.value (slot.slot_data);
-	};
-      };
-      // Sort slot.
-      (slot_run.lower).to (slot_run.upper) do { j:INTEGER;
-	slot := slot_run.item j;		
-	(slot.style = '+').if {
-	  // In struct.
-	  (slot.lower_style = 0).if {
-	    action := { s:SLOT_DATA;
-	      (
-		(s.id_section.is_mapping) || 
-		{s.ensure_count > 0}
-	      ).if {
-		add_slot_struct s;
-	      };
-	    };
-	    (slot.slot_data_list != NULL).if {
-	      (slot.slot_data_list.lower).to (slot.slot_data_list.upper) do { k:INTEGER;
-		action.value (slot.slot_data_list.item k);
-	      };
-	    };
-	    action.value (slot.slot_data);
-	  };
-	  slot_data := slot.slot_id;
-	  ((slot_data != NULL) && {slot_data.ensure_count > 0}).if {
-	    add_slot_struct slot_data;
-	  };
-	} else {	    
-	  // In global.
-	  (slot.lower_style = 0).if {
-	    action := { s:SLOT_DATA;
-	      (s.ensure_count > 0).if {
-		s.genere output_glob;
-	      };
-	    };
-	    (slot.slot_data_list != NULL).if {
-	      (slot.slot_data_list.lower).to (slot.slot_data_list.upper) do { k:INTEGER;
-		action.value (slot.slot_data_list.item k);
-	      };
-	    };
-	    action.value (slot.slot_data);
-	  };
-	  slot_data := slot.slot_id;
-	  ((slot_data != NULL) && {slot_data.ensure_count > 0}).if {
-	    slot_data.slot_id.genere output_glob;
-	  };
-	};
-      };
-      
-      (
-	(prototype.name = ALIAS_STR.prototype_native_array) || 
-	{prototype.name = ALIAS_STR.prototype_native_array_volatile}
-      ).if {
-	tg ?= Self;
-	tg.generic_list.first.raw.genere_struct;
-      } else {              
-	(type_c != NULL).if {
-	  0.to 4 do { j:INTEGER;
-	    tab := slot_size.item j;
-	    // BSBS: A tester sont utilité !
-	    (! tab.is_empty).if {
-	      semantic_error ((tab.first.position),"Slot is not possible with a type C");
-	    };	  
-          };
-          (is_java).if_false {            
-            ((name = ALIAS_STR.prototype_true) || 
-            {name = ALIAS_STR.prototype_false}).if {
-              output_decl.append "#define ";
-              output_decl.append intern_name;
-              output_decl.append "__ ";
-              output_decl.add_last ((name = ALIAS_STR.prototype_true).to_character);
-              output_decl.add_last '\n';            
-            }.elseif {is_late_binding} then {	    
-              semantic_error ((tab.first.position),"Late binding is not possible with a type C");
-            };            
-          };
-        } else {	  
-          output_decl.append "// ";
-          output_decl.append intern_name;
-          output_decl.add_last '\n';
-          (is_java).if {
-            output_decl.append "static private int __";
-            output_decl.append intern_name;
-            output_decl.append "__ = ";
-          } else {
-            output_decl.append "#define __";
-            output_decl.append intern_name;
-            output_decl.append "__ ";
-          };
-	  string_tmp.clear;
-	  (is_late_binding).if {	  
-	    id_counter_with_type.append_in output_decl;	  
-            id_counter_with_type := id_counter_with_type + 1;
-            (prototype.style != '-').if {
-              string_tmp.append "  unsigned long __id;\n";
-            };
-	    (prototype.is_mapping).if {	    
-	      semantic_error ((prototype.position),	    
-	      "Late binding is not possible with `mapping' object.");
-	    };
-	  } else {	  
-	    id_counter_without_type.append_in output_decl;	  
-	    id_counter_without_type := id_counter_without_type + 1;	  
-          };
-          (is_java).if {
-            output_decl.add_last ';';
-          };
-          output_decl.add_last '\n';	
-          (prototype.style = '-').if {
-            string_tmp.append "  lith_object thread;\n";
-            (param_count != 0).if {              
-              1.to param_count do { n:INTEGER;
-                string_tmp.append "  int param_";
-                (n-1).append_in string_tmp;
-                string_tmp.append ";\n";
-              };
-            };
-          };
-	  4.downto 0 do { j:INTEGER;
-	    tab := slot_size.item j;
-	    (tab.lower).to (tab.upper) do { i:INTEGER;
-	      slot_data := tab.item i;	      
-	      ((prototype.is_mapping) && {slot_data.type.is_expanded_c}).if {
-		string_tmp.append "  volatile ";
-	      } else {
-		string_tmp.append "  ";	    
-	      };
-	      slot_data.genere string_tmp;
-	    };
-	    tab.clear;
-	  };            
-	  	  
-	  (Self = type_block).if {
-	    string_tmp.append "  void *self;\n";
-	  };
-	  
-	  (string_tmp.is_empty).if {
-	    string_tmp.append "  void *Nothing;\n";
-	  };
-          
-          (is_java).if {
-            output_decl.append "static class __";
-            output_decl.append intern_name;
-            (is_late_binding).if {
-              output_decl.append " extends __OBJ";
-            };
-            output_decl.append " {\n";  
-            output_decl.append string_tmp;
-            (prototype.is_mapping).if {
-              semantic_error (position,"Mapping is not yet implemented for Java code.");
-            };
-            (Self = type_string_constant).if {
-              // STRING_CONSTANT constructor.
-              output_decl.append "\n  public __";
-              output_decl.append intern_name;
-              output_decl.add_last '(';
-              (is_late_binding).if {
-                output_decl.append "int pid,";
-              };
-              storage_slot := get_local_slot (ALIAS_STR.slot_storage).slot_data_intern;
-              count_slot   := get_local_slot (ALIAS_STR.slot_count).slot_data_intern;              
-              (count_slot.ensure_count != 0).if {
-                output_decl.append "int pcount,";
-              };
-              (storage_slot.ensure_count != 0).if {
-                output_decl.append "String pstorage,";
-              };
-              output_decl.remove_last 1;
-              output_decl.append ")\n  {\n    ";              
-              (is_late_binding).if {
-                output_decl.append "__id = pid;\n";
-              };
-              (count_slot.ensure_count != 0).if {
-                output_decl.append (count_slot.intern_name);
-                output_decl.append " = pcount;\n";
-              };
-              (storage_slot.ensure_count != 0).if {
-                output_decl.append (storage_slot.intern_name);
-                output_decl.append " = pstorage.toCharArray();\n";
-              };
-              output_decl.append "  };\n";  
-            };
-            // Basic Constructor.
-            output_decl.append "\n  public __";
-            output_decl.append intern_name;
-            output_decl.add_last '(';
-            (is_late_binding).if {              
-              output_decl.append "int pid";
-            };
-            output_decl.append ")\n  {\n    ";
-            (is_late_binding).if {
-              output_decl.append "__id = pid;\n";
-            } else {
-              output_decl.append "super();\n";
-            };
-            output_decl.append "  };\n};\n";  
-          } else {            
-            output_decl.append "struct ";
-            output_decl.append intern_name;
-            output_decl.append "_struct {\n";
-            output_decl.append string_tmp;
-            (prototype.is_mapping).if {
-              output_decl.append "} __attribute__ ((packed));\n";
-            } else {
-              output_decl.append "};\n";
-            };
-	  };	    
-          // Prototype declaration.
-          (is_java).if {
-            output_glob.append "private static __";
-            output_glob.append intern_name;
-            output_glob.add_last ' ';
-            output_glob.append intern_name;
-            output_glob.append "_=new __";
-            output_glob.append intern_name;
-            output_glob.add_last '(';
-            (is_late_binding).if {
-              output_glob.append "__";
-              output_glob.append intern_name;
-              output_glob.append "__";
-            };
-            output_glob.append ");\n";
-          } else {
-            output_glob.append "__";
-            output_glob.append intern_name;
-            output_glob.add_last ' ';
-            output_glob.append intern_name;
-            output_glob.add_last '_';
-            (is_late_binding).if {
-              output_glob.append "={__";
-              output_glob.append intern_name;
-              output_glob.append "__}";
-            };
-            output_glob.append ";\n"; 	            
-            output_glob.append "#define ";
-            output_glob.append intern_name;
-            output_glob.append "__ (&";
-            output_glob.append intern_name;
-            output_glob.append "_)\n\n";	  
-          };
-	};
-      };
-      
-      // Flag on:
-      slot_run.force NULL to 0;
-    };    
-  );
-  
-  - genere_typedef <-
-  ( + tg:TYPE_GENERIC;              
-    
-    (
-      (prototype.name = ALIAS_STR.prototype_native_array) || 
-      {prototype.name = ALIAS_STR.prototype_native_array_volatile}
-    ).if {
-      tg ?= Self;
-      tg.generic_list.first.raw.genere_typedef;
-    } else {      
-      output_decl.append "typedef ";
-      (type_c != NULL).if {        
-        output_decl.append type_c;
-      } else {
-        output_decl.append "struct ";
-        output_decl.append intern_name;
-        output_decl.append "_struct";
-      };
-      output_decl.append " __";
-      output_decl.append intern_name;	  
-      output_decl.append ";\n";      
-    };    
-  );
-    
-Section Private  
-  
-  - add_slot_struct s:SLOT_DATA <-
-  (     
-    (prototype.is_mapping).if {
-      (s.id_section.is_mapping).if { 
-	slot_size.first.add_last s;
-      } else {
-	semantic_error (s.position,"Slot is not in `Mapping' section.");
-      };
-    } else {      
-      ((s.type.is_expanded) && {! s.type.is_default_expanded}).if {
-	slot_size.item 4.add_last s;
-      } else {
-	slot_size.item (s.type.size).add_last s;
-      };
-    };
-  );
-  
-Section Public  
-  
-  //
-  // Declaration generation.
-  //
-    
-  - put_reference_declaration buffer:STRING <-
-  (        
-    buffer.append "__";
-    buffer.append intern_name;        
-    add_genere_list;
-  );
-  
-  - put_reference_star_declaration buffer:STRING <-
-  (    
-    (is_block).if_false { // BSBS: A mettre dans TYPE_BLOCK
-      (is_java).if {
-        buffer.append "[]";
-      } else {
-        buffer.add_last '*';
-      };
-    };
-  );
-  
-  - put_expanded_declaration buffer:STRING <-
-  (    
-    ((is_java) && {type_c != NULL}).if {
-      buffer.append type_c;
-    } else {
-      buffer.append "__";
-      buffer.append intern_name;          
-    };
-    add_genere_list;
-  );
-  
-  - put_generic_declaration buffer:STRING <-
-  (         
-    (is_block).if { // BSBS: A mettre dans TYPE_BLOCK
-      put_expanded_declaration buffer;
-    } else {
-      (is_java).if {
-        buffer.append "__OBJ ";    
-      } else {
-        buffer.append (ALIAS_STR.c_void);    
-      };
-    };
-  );
-  
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <-
-  (
-    buffer.append (ALIAS_STR.separate); // <=> "__"
-    buffer.append intern_name;
-    buffer.append (ALIAS_STR.separate);
-  );
-
-  - put_access_id e:EXPR in buffer:STRING <-
-  // For switch.
-  ( + t:TYPE;
-    
-    t := e.static_type.raw;
-    (t = type_boolean).if {
-      e.genere buffer;  
-    }.elseif {t = type_block} then {
-      e.genere buffer;
-      //buffer.append ".__id";
-    } else {
-      (is_java).if {        
-        e.genere buffer;
-        buffer.append ".__id";
-      } else {
-        buffer.append "((struct ___OBJ *)";
-        e.genere buffer;
-        buffer.append ")->__id";
-      };
-    };
-  );
-  
-  - put_value buffer:STRING <-
-  (
-    buffer.append intern_name;
-    buffer.append (ALIAS_STR.separate);
-    add_genere_list;
-  );
-    
-  //
-  // Display.
-  //
-  
-  - append_name_in buf:STRING <-
-  (
-    buf.append name;
-  );
-  
-  - print <-
-  (
-    string_tmp.clear;
-    append_name_in string_tmp;
-    string_tmp.print;
-  );
-  
-Section Public
-  
-  - is_block:BOOLEAN := FALSE;
-  
-  - '==' Right 60 other:TYPE :BOOLEAN <- (Self = other);
-  
-  - is_sub_type other:TYPE :BOOLEAN <-
-  ( + result:BOOLEAN;
-               
-    (Self = other).if {
-      result := TRUE;
-    }.elseif {other.subtype_list != NULL} then {
-      result := other.subtype_list.fast_has Self;
-    };
-    result
-  );
-
-  - is_sub_type_with_name n:STRING_CONSTANT :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + idx:INTEGER;
-    + type_parent:TYPE;
-    + ts:ITM_TYPE_SIMPLE;
-            
-    (n = prototype.name).if {
-      result := TRUE;
-    } else {
-      idx := slot_run.lower;
-      {
-	(idx <= slot_run.upper) && 
-	{slot_run.item idx.id_section.is_inherit_or_insert}  &&
-	{! result}
-      }.while_do {
-        (slot_run.item idx.id_section.is_inherit).if {
-          ts ?= slot_run.item idx.result_type;
-	  type_parent := ts.to_run_for Self.raw;	
-	  result := type_parent.is_sub_type_with_name n;
-	};
-	idx := idx + 1;
-      };
-    };
-    result
-  );
-  
-Section TYPE
-
-  - load_prototype n:STRING_CONSTANT generic_count gen_count:INTEGER :PROTOTYPE <-
-  ( + j,idx_path,idx_name,idx_name_old,idx_path_old:INTEGER;
-    + entry:POINTER; 
-    + result:PROTOTYPE;
-    + path,found:STRING_CONSTANT;
-    + cn,cp:CHARACTER;
-    + read_char:BLOCK;
-    
-    result := dico_name_to_prototype.fast_reference_at n;        
-    (result = NULL).if {
-      read_char := {
-        cn := n.item idx_name;
-        (cn = '.').if {
-          (
-            (idx_name > n.lower+1) && 
-            {n.item (idx_name-1) = '.'} && 
-            {n.item (idx_name-2) = '.'}
-          ).if {
-            idx_name := idx_name - 2;
-            cn := '*';
-          } else {
-            cn := '/';
-          };
-        } else {
-          cn := cn.to_lower;
-        };
-      };
-      j := path_file.lower;      
-      {(j > path_file.upper) || {result != NULL}}.until_do {      
-        path := path_file.item j;            
-        idx_name := n.upper;
-        idx_path := path.upper-3; // ".li"
-        {
-          read_char.value;
-          cp := path.item idx_path;
-          idx_name := idx_name - 1;
-          idx_path := idx_path - 1;
-        }.do_while {
-          (idx_name >= n.lower) && 
-          {idx_path >= path.lower} && 
-          {cn = cp}
-        };
-        ((idx_name < n.lower) && {cn = cp}).if {
-          ((idx_path < path.lower) || {path.item idx_path = '/'}).if {
-            found := path;            
-          };
-        }.elseif {(cn = '*') && {cp = '/'}} then {        
-          idx_name_old := idx_name+1;
-          idx_path_old := idx_path+1;
-          {(idx_name >= n.lower) && {idx_path >= path.lower}}.while_do {          
-            read_char.value; 
-            cp := path.item idx_path;          
-            (cn = cp).if {            
-              // Nothing.            
-            }.elseif {(cn = '*') && {cp = '/'}} then {                        
-              idx_name_old := idx_name;
-              idx_path_old := idx_path;
-            } else {            
-              idx_name := idx_name_old;
-              idx_path := idx_path_old;
-              {
-                idx_path := idx_path - 1;
-              }.do_while {(idx_path >= path.lower) && {path.item idx_path != '/'}};            
-              idx_path_old := idx_path;
-            };
-            idx_name := idx_name - 1;
-            idx_path := idx_path - 1;                
-          };
-          (idx_name < n.lower).if {
-            found := path;
-          };
-        };        
-        (found != NULL).if {          
-          result := PROTOTYPE.prototype_dico.fast_reference_at found;
-          (result = NULL).if {
-            entry := FS_MIN.open_read found;
-            ((entry != NULL) /*&& {entry.is_file}*/).if {
-              // Load prototype.
-              FS_MIN.close entry;
-              result := PROTOTYPE.create found name n generic_count gen_count;
-              PARSER.go_on result;              
-            } else {
-              string_tmp.copy "Cannot open `";
-              string_tmp.append found;
-              string_tmp.append "'.";
-              semantic_error (last_position,string_tmp);
-            };
-          };
-          dico_name_to_prototype.add result to n;      
-        };
-        j := j + 1;
-      };
-      (result = NULL).if {
-        string_tmp.copy n;
-        string_tmp.append " is not found.";
-        POSITION.put_error semantic text string_tmp;
-        (list_current != NULL).if {
-          list_current.position.put_position;
-        };
-        POSITION.send_error;
-      };	
-    };
-    (result.generic_count != gen_count).if {        
-      //crash;      
-      POSITION.put_error semantic text "Incorrect genericity definition.";
-      result.position.put_position;
-      (last_position.code != 0).if {
-        last_position.put_position;
-      } else {
-        ? {crash; TRUE};
-      };
-      POSITION.send_error;
-    };
-    result
-  );
-  
-  - make itm_typ:ITM_TYPE_SIMPLE with proto:PROTOTYPE <-
-  ( + mask_bit:UINTEGER_8;    
-    
-    index       := index_count;
-    index_count := index_count + 1;
-    prototype   := proto;
-    string_tmp.copy name;
-    string_tmp.replace_all '.' with '_';
-    intern_name := ALIAS_STR.get_intern string_tmp;
-    itm_type    := itm_typ;    
-    slot_run    := FAST_ARRAY[SLOT].create_with_capacity 10; // BSBS: A voir.    
-    (prototype.type_style = ALIAS_STR.keyword_expanded).if {
-      // Expanded.
-      mask_bit := TYPE_FULL.expanded_bit | TYPE_FULL.default_expanded_bit;
-    }.elseif {prototype.type_style = ALIAS_STR.keyword_strict} then {
-      // Strict.
-      mask_bit := TYPE_FULL.strict_bit | TYPE_FULL.default_strict_bit;
-    };
-    default := TYPE_FULL.create Self with mask_bit;
-    prototype.init_slot_for Self;    
-    //
-    subtype_list := HASHED_SET[TYPE].create;
-    subtype_list.fast_add TYPE_NULL;
-    add_subtype Self;
-    // Size.
-    (POINTER.object_size = 4).if {
-      size := 2; // 32 bits
-    } else {
-      size := 3; // 64 bits
-    };
-    name
-    .when (ALIAS_STR.prototype_integer) then {
-      size := 2; // 32 bits
-    }
-    .when (ALIAS_STR.prototype_integer_8) or (ALIAS_STR.prototype_uinteger_8) then {
-      size := 0; // 8 bits
-    }
-    .when (ALIAS_STR.prototype_character) or (ALIAS_STR.prototype_boolean) then {
-      size := 0; // 8 bits
-    }
-    .when (ALIAS_STR.prototype_integer_16) or (ALIAS_STR.prototype_uinteger_16) then {
-      size := 1; // 16 bits
-    }
-    .when (ALIAS_STR.prototype_integer_32) or (ALIAS_STR.prototype_uinteger_32) then {
-      size := 2; // 32 bits
-    }
-    .when (ALIAS_STR.prototype_integer_64) or (ALIAS_STR.prototype_uinteger_64) then {
-      size := 3; // 64 bits
-    };
-  );
-  
-  - dico_name_to_prototype:HASHED_DICTIONARY[PROTOTYPE,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[PROTOTYPE,STRING_CONSTANT].create;
-  
-Section TYPE, TYPE_FULL
-    
-  + type_full_list:FAST_ARRAY[TYPE_FULL];
-  
-  - get_with flg:UINTEGER_8 :TYPE_FULL <-
-  ( + result:TYPE_FULL;
-    + i:INTEGER;
-        
-    (flg = default.flag).if {
-      result := default;
-    } else {
-      (type_full_list = NULL).if {
-	type_full_list := FAST_ARRAY[TYPE_FULL].create_with_capacity 2;
-	result := TYPE_FULL.create Self with flg;
-	type_full_list.add_last result;
-      } else {
-	{(i <= type_full_list.upper) && {type_full_list.item i.flag != flg}}.while_do {
-	  i := i + 1;
-	};
-	(i <= type_full_list.upper).if {
-	  result := type_full_list.item i;
-	} else {
-	  result := TYPE_FULL.create Self with flg;
-	  type_full_list.add_last result;
-	};
-      };
-    };
-    result
-  );
-  
-  
-  
\ No newline at end of file
diff --git a/src/type/type_block.li b/src/type/type_block.li
deleted file mode 100644
index 67902aa..0000000
--- a/src/type/type_block.li
+++ /dev/null
@@ -1,226 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE_BLOCK;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Virtual type for BLOCK manager";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Private   
-  
-  - dico:FAST_ARRAY[TYPE_BLOCK] := FAST_ARRAY[TYPE_BLOCK].create_with_capacity 2048;
-  
-Section TYPE_BLOCK //,PROFIL_BLOCK
-    
-  //
-  // Creation.
-  //
-
-  - create a_list:FAST_ARRAY[TYPE_FULL] and_result r_list:FAST_ARRAY[TYPE_FULL] :SELF <-
-  ( + result:SELF;
-    result := clone;
-    result.make a_list and_result r_list;
-    result
-  );
-  
-  - make a_list:FAST_ARRAY[TYPE_FULL] and_result r_list:FAST_ARRAY[TYPE_FULL] <-
-  ( 
-    argument_list := a_list;
-    result_list   := r_list;
-    default := TYPE_FULL.create Self with 0; 
-  );
-  
-Section Public
-  
-  - intern_name:STRING_CONSTANT <- type_block.intern_name;
-  
-  - is_block:BOOLEAN := TRUE;
-
-  + argument_list:FAST_ARRAY[TYPE_FULL];
-  + result_list:FAST_ARRAY[TYPE_FULL];  
-  
-  - get_expr_for p:POSITION :EXPR <- 
-  ( + result:EXPR;
-    + lst:FAST_ARRAY[EXPR];
-    
-    (result_list.count > 1).if {
-      lst := FAST_ARRAY[EXPR].create_with_capacity (result_list.count);
-      (result_list.lower).to (result_list.upper) do { j:INTEGER;
-        lst.add_last (result_list.item j.get_temporary_expr p);
-      };
-      result := EXPR_MULTIPLE.create lst;
-    }.elseif {result_list.count = 1} then {      
-      result := result_list.first.get_temporary_expr p;
-    } else {
-      result := PROTOTYPE_CST.create p type (TYPE_VOID.default);
-    };
-    result
-  );        
-  
-  - get t:ITM_TYPE_BLOCK with p:PARAMETER_TO_TYPE :TYPE_FULL <-
-  ( + a_list:FAST_ARRAY[TYPE_FULL];
-    + r_list:FAST_ARRAY[TYPE_FULL];
-        
-    // Argument.    
-    a_list := ALIAS_ARRAY[TYPE_FULL].new;
-    (t.type_argument != NULL).if {
-      t.type_argument.to_run_in a_list for p;
-    };
-    a_list := ALIAS_ARRAY[TYPE_FULL].alias a_list;
-    // Result.
-    r_list := ALIAS_ARRAY[TYPE_FULL].new;
-    (t.type_result != NULL).if {      
-      t.type_result.to_run_in r_list for p;
-    };    
-    r_list := ALIAS_ARRAY[TYPE_FULL].alias r_list;
-    //    
-    get_direct a_list and_result r_list.default
-  );
-    
-  - get_direct a_list:FAST_ARRAY[TYPE_FULL] and_result r_list:FAST_ARRAY[TYPE_FULL] :TYPE_BLOCK <-
-  ( + idx:INTEGER;
-    + result:TYPE_BLOCK;
-    
-    idx := dico.lower;
-    {
-      (idx <= dico.upper) && {
-        {dico.item idx.argument_list != a_list} ||
-        {dico.item idx.result_list   != r_list}
-      }
-    }.while_do {
-      idx := idx + 1;
-    };    
-    (idx <= dico.upper).if {
-      result := dico.item idx;
-    } else {
-      result := create a_list and_result r_list;
-      dico.add_last result;
-    };
-    result
-  );
-  
-  - prototype:PROTOTYPE <- type_block.prototype;
-  
-  - get_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_slot n
-  );
-  
-  - get_local_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_local_slot n
-  );
-  
-  - get_path_slot n:STRING_CONSTANT :SLOT <-
-  (
-    type_block.get_path_slot n
-  );
-  
-  - genere_struct <- type_block.genere_struct;
-         
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <- index.append_in buffer;
-  
-  - put_access_id e:EXPR in buffer:STRING <- 
-  (
-    buffer.append "(int)";
-    e.genere buffer;
-  );
-  
-  - put_value buffer:STRING <- 
-  (
-    buffer.append "(void *)";
-    index.append_in buffer;
-  );
-    
-  - is_sub_type other:TYPE :BOOLEAN <-
-  ( + me:TYPE_BLOCK;
-    
-    me ?= other;
-    (me != NULL) && 
-    {me.argument_list = argument_list} && 
-    {me.result_list = result_list}
-  );
-  
-  - is_sub_type_result other:TYPE_BLOCK :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    (result_list = other.result_list) ||
-    {
-      (result_list != NULL) && 
-      {other.result_list != NULL} && 
-      {result_list.count = other.result_list.count} && 
-      {
-        result := TRUE;
-        j := result_list.lower;
-        {(j <= result_list.upper) && {result}}.while_do {
-          result := result_list.item j.is_sub_type (other.result_list.item j);
-          j := j + 1;
-        };
-        result
-      }
-    }
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_name_in buf:STRING <-
-  (
-    buf.add_last '{';        
-    (argument_list.is_empty).if_false {
-      (argument_list.count > 1).if {
-        buf.add_last '(';
-        (argument_list.lower).to (argument_list.upper-1) do { j:INTEGER;
-          argument_list.item j.display buf;
-          buf.add_last ',';
-        };    
-        argument_list.last.display buf;
-        buf.add_last ')';
-      } else {
-        argument_list.first.display buf;
-      };
-      buf.add_last ';';
-      buf.add_last ' ';
-    };        
-    (result_list.is_empty).if_false {
-      (result_list.lower).to (result_list.upper-1) do { j:INTEGER;
-        result_list.item j.display buf;
-        buf.add_last ',';
-      };    
-      result_list.last.display buf;      
-    };
-    buf.add_last '}';    
-    // Debug
-    buf.append "(TYPE_BLOCK)";
-  );
diff --git a/src/type/type_context.li b/src/type/type_context.li
deleted file mode 100644
index 5d57fb6..0000000
--- a/src/type/type_context.li
+++ /dev/null
@@ -1,70 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPE_CONTEXT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type Context for debug mode";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Public
-  
-  - name:STRING_CONSTANT <- ALIAS_STR.prototype_context;
-  
-  - intern_name:STRING_CONSTANT <- name;
-  
-  - type_c:STRING_CONSTANT <- "_____CONTEXT";
-  
-  //
-  // Creation.
-  //
-    
-  - make_context <-
-  (     
-    dico_type.fast_put Self to name;        
-    //slot_run := FAST_ARRAY[SLOT].create_with_capacity 1; // BSBS: Plus utile !
-    default := TYPE_FULL.create Self with (TYPE_FULL.expanded_bit);
-  );
-
-  - genere_typedef <-
-  (
-    // Nothing.
-  );
-  
-  - genere_struct <-
-  ( 
-    output_decl.append 
-    "// ___CONTEXT\n\
-    \typedef struct ___CONTEXT_struct _____CONTEXT; \n\
-    \struct ___CONTEXT_struct {\n\
-    \  unsigned long code; \n\
-    \  _____CONTEXT *back; \n\
-    \};\n\
-    \_____CONTEXT *top_context; \n\n";
-  );
-   
\ No newline at end of file
diff --git a/src/type/type_full.li b/src/type/type_full.li
deleted file mode 100644
index caebd27..0000000
--- a/src/type/type_full.li
+++ /dev/null
@@ -1,393 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name    := TYPE_FULL;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-  
-  - author  := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment := "Type with attribute flags.";
-  
-Section Inherit  
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-    
-  + the_parent_type:TYPE; // BSBS: Passer en héritage + Insert mode.
-  
-Section TYPE, TYPE_FULL
-  
-  - get_with flg:UINTEGER_8 :TYPE_FULL <- the_parent_type.get_with flg;
-  
-Section Public  
-  
-  - get_slot n:STRING_CONSTANT :SLOT <- the_parent_type.get_slot n;
-    
-  - hash_code:INTEGER <- raw.name.hash_code;
-  
-  - size:INTEGER <- the_parent_type.size;
-  
-  - prototype:PROTOTYPE <- the_parent_type.prototype;
-  
-  - is_sub_type other:TYPE_FULL :BOOLEAN <- the_parent_type.is_sub_type (other.raw);
-      
-  - slot_run:FAST_ARRAY[SLOT] <- the_parent_type.slot_run;
-  
-  - is_late_binding:BOOLEAN <- the_parent_type.is_late_binding;
-
-Section TYPE
-      
-  + flag:UINTEGER_8;
-  // 7 6 5 4 3 2 1 0
-  //     | | | | | +- 0:Reference / 1:Expanded
-  //     | | | | +--- 0:Reference / 1:Expanded (by default)
-  //     | | | +----- 0:Normal    / 1:Strict
-  //     | | +------- 0:Normal    / 1:Strict (by default)
-  //     | +--------- 0:Normal    / 1:Temporary
-  //     +----------- 0:Normal    / 1:Old generic
-
-  //
-  // Creation.
-  //
-  
-  - create typ:TYPE with code:UINTEGER_8 :SELF <-
-  [ 
-    -? {typ != NULL}; 
-  ]
-  ( + result:SELF;
-    
-    result := clone;
-    result.make typ with code;
-    result    
-  );
-  
-  - make typ:TYPE with code:UINTEGER_8 <-
-  (
-    the_parent_type := typ;
-    flag := code;       
-    ((raw != NULL) && {raw.name != NULL} && {raw.name == "INTEGER"} && {! is_expanded}).if {
-      crash;
-    };
-    ? {is_expanded -> (! is_strict)};
-  );
-  
-Section Public
-  
-  - is_parameter_type:BOOLEAN <- FALSE;
-  
-  - raw:TYPE <- the_parent_type;
-   
-  //
-  // Set.
-  //
-  
-  - expanded_bit        :UINTEGER_8 := 000001b;  
-  - default_expanded_bit:UINTEGER_8 := 000010b;  
-  - strict_bit          :UINTEGER_8 := 000100b;
-  - default_strict_bit  :UINTEGER_8 := 001000b;
-  - expanded_ref_bit    :UINTEGER_8 := 010000b;
-  - generic_bit         :UINTEGER_8 := 100000b;
-    
-  //
-  // Access.
-  //
-  
-  - is_expanded          :BOOLEAN <- (flag & expanded_bit        ) != 0;
-  - is_default_expanded  :BOOLEAN <- (flag & default_expanded_bit) != 0;
-  - is_strict            :BOOLEAN <- (flag & strict_bit          ) != 0;
-  - is_default_strict    :BOOLEAN <- (flag & default_expanded_bit) != 0;
-  - is_expanded_ref      :BOOLEAN <- (flag & expanded_ref_bit    ) != 0;
-  - is_generic           :BOOLEAN <- (flag & generic_bit         ) != 0;
-  
-  - is_expanded_c:BOOLEAN <- (is_expanded) && {raw.type_c != NULL};
-  
-  - '==' Right 60 other:TYPE_FULL :BOOLEAN <-
-  (
-    (Self = other) || {(raw = other.raw) && {(flag & 01111b) = (other.flag & 01111b)}}
-  );
-  
-  - '!==' Right 60 other:TYPE_FULL :BOOLEAN <- ! (Self == other);
-  
-  - append_name_in buffer:STRING <-
-  (
-    (is_strict).if {
-      buffer.append "Strict ";
-    };
-    (is_expanded).if {
-      buffer.append "Expanded ";
-    };    
-    raw.append_name_in buffer;
-  //  buffer.append (raw.name);
-  );
-  
-  //
-  // Operation.
-  //
-  
-  - '+' other:UINTEGER_8 :TYPE_FULL <- get_with (flag | other);
-  
-  - '-' other:UINTEGER_8 :TYPE_FULL <- get_with (flag & ~other);
-  
-  - to_strict:TYPE_FULL <-
-  ( + result:TYPE_FULL;
-    
-    (is_expanded).if {
-      result := Self;
-    } else {      
-      result := get_with (flag | strict_bit);     
-    };
-    result
-  );
-
-  - to_no_strict:TYPE_FULL <-
-  ( + result:TYPE_FULL;
-    
-    (is_expanded).if {
-      result := Self;
-    } else {      
-      result := get_with (flag & ~strict_bit);     
-    };
-    result
-  );
-  
-  //
-  // Variable product.
-  //
-
-  - new_local p:POSITION
-      name    n:STRING_CONSTANT
-      style   s:CHARACTER
-      result  r:BOOLEAN         :LOCAL <-
-  (
-    LOCAL.create p name n style s type Self result r
-  );
-
-  - new_local p:POSITION name n:STRING_CONSTANT style s:CHARACTER :LOCAL <-
-  (
-    LOCAL.create p name n style s type Self
-  );
-  
-  - get_temporary_expr p:POSITION :EXPR <-
-  ( + result:EXPR;  
-    
-    (raw = TYPE_VOID).if {
-      result := PROTOTYPE_CST.create p type (TYPE_VOID.default); //BSBS: Alias.
-    } else {
-      result := get_temporary p.read p;
-    };
-    result
-  );
-  
-  - get_temporary p:POSITION :LOCAL <-
-  (     
-    new_local p name (ALIAS_STR.variable_tmp) style '+'
-  );  
-
-  - get p:POSITION result n:INTEGER :LOCAL <-
-  ( + intern:STRING_CONSTANT;
-    string_tmp.copy (ALIAS_STR.keyword_result);
-    (n != 0).if {
-      string_tmp.add_last '_';
-      n.append_in string_tmp;
-    };
-    intern := ALIAS_STR.get string_tmp;    
-    new_local p name intern style '+'
-  );  
-    
-  //
-  // Type Control.
-  //
-  
-  //+----------+----------+----------+----------+
-  //| A := B-->| Reference| Expanded | Strict   |
-  //| V        | TYPE     | TYPE     | TYPE     |
-  //+----------+----------+----------+----------+
-  //| Reference| B.sub A  | FALSE    | B.sub A  |
-  //| TYPE     |          |          |          |
-  //+----------+----------+----------+----------+
-  //| Expanded | FALSE    | A = B    | A = B    |
-  //| TYPE     |          |          |          |
-  //+----------+----------+----------+----------+
-  //| Strict   | FALSE    | FALSE    | A = B    |
-  //| TYPE     |Sauf NULL |          |          |
-  //+----------+----------+----------+----------+
-  - affect_with other:TYPE_FULL :BOOLEAN <-
-  ( + result:BOOLEAN;
-        
-    (other == Self).if {
-      result := TRUE;
-    } else {            
-      (is_strict).if {
-        // A: Strict.
-        result := other.raw = TYPE_NULL;
-      }.elseif {is_expanded} then {
-        // A: Expanded.
-        result := 
-        ((other.is_strict)    && {raw == other.raw      }) ||
-        {(raw = type_boolean) && {other.is_sub_type Self}} ||
-        {(raw = type_pointer) && {other.raw = TYPE_NULL }};	  
-      } else {
-        // A: Reference.
-        result := 
-        (
-          (! other.is_expanded) || 
-          { + tb:TYPE_BLOCK;
-            tb ?= raw;            
-            (tb != NULL)
-          }
-        ) && {other.is_sub_type Self}; 
-      };	
-    };
-    result
-  );
-  
-  //
-  // Import / Export manager.
-  //
-    
-  - is_export_to t:TYPE_FULL :BOOLEAN <- raw.is_export_to t;
-      
-  - is_import_to t:TYPE_FULL :BOOLEAN <- raw.is_import_to t;
-  
-  //
-  // Default value.
-  //
-  + recursivity_test:BOOLEAN;
-  - default_value p:POSITION :EXPR <- 
-  ( + result:EXPR;
-    
-    ((prototype != NULL) && {prototype.default_value != NULL}).if {
-      // Prototype User definition.	            
-      (recursivity_test).if {
-        crash;
-        POSITION.put_error semantic text 
-        "Recursivity without end (default used default, ...).";
-        list_current.position.put_position;
-        prototype.default_value.position.put_position;
-        POSITION.send_error;        
-      } else {
-        recursivity_test := TRUE;
-        result := prototype.default_value.to_run_expr;
-        recursivity_test := FALSE;
-      };
-    } else {
-      (is_expanded).if {      
-	// Copy of model prototype.
-	result := PROTOTYPE_CST.create p type Self;
-      } else {
-	result := PROTOTYPE_CST.create p type (TYPE_NULL.default);
-      };      
-    };
-    
-    result
-  );
-  
-  //
-  // Declaration generation.
-  //
- 
-  - genere_declaration buffer:STRING <-
-  ( 
-    (is_expanded).if {      
-      raw.put_expanded_declaration buffer;
-    }.elseif {is_strict} then {
-      raw.put_reference_declaration buffer;
-    } else {      
-      raw.put_generic_declaration buffer;      
-    };
-  );
-      
-  - genere_star_declaration buffer:STRING <-
-  ( 
-    ((! is_expanded) || {is_expanded_ref}).if {      
-      raw.put_reference_star_declaration buffer;      
-    };
-  );
-  
-  //
-  // Generation code.
-  //
-  
-  - genere_value buffer:STRING <-
-  ( + tb:PROFIL_BLOCK;
-    (
-      (is_expanded) && {! is_expanded_ref} && 
-      {raw != type_true} && {raw != type_false} &&
-      {tb ?= raw; tb = NULL}
-    ).if {
-      buffer.append "(*";
-      raw.put_value buffer;
-      buffer.add_last ')';      
-    } else {
-      raw.put_value buffer;
-    };
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buf:STRING <-
-  (
-    (is_generic).if {
-      buf.append "Generic ";
-    };
-    append_name_in buf;
-  );
-  
-  - print <-
-  (
-    string_tmp.clear;
-    display string_tmp;
-    string_tmp.print;
-  );
-  
-  - print_full <-
-  (
-    string_tmp.clear;
-    display string_tmp;
-    string_tmp.add_last ' ';
-    string_tmp.add_last '[';
-    (is_expanded).if {
-      string_tmp.add_last 'e';
-    };
-    (is_default_expanded).if {
-      string_tmp.add_last 'E';
-    };
-    (is_strict).if {
-      string_tmp.add_last 's';
-    };
-    (is_default_strict).if {
-      string_tmp.add_last 'S';
-    };
-    (is_temporary).if {
-      string_tmp.add_last 'T';
-    };
-    (is_generic).if {
-      string_tmp.add_last 'G';
-    };
-    string_tmp.add_last ']';
-    //
-    string_tmp.print;
-  );
-  
diff --git a/src/type/type_generic.li b/src/type/type_generic.li
deleted file mode 100644
index 67213b5..0000000
--- a/src/type/type_generic.li
+++ /dev/null
@@ -1,299 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPE_GENERIC;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Type generic";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-    
-Section Private  
-  
-  // BSBS: Vu que les ITM_TYPE sont aliaser, il n'est pas necessary d'aliaser les TYPE !
-  // Mais attention au pb des TYPE_GENERIC et de leur alias de slot_run...
-  
-  - dicog_type:HASHED_DICTIONARY[TYPE_GENERIC,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[TYPE_GENERIC,STRING_CONSTANT].create;
-    
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + key:STRING_CONSTANT;
-  
-  + generic_list:FAST_ARRAY[TYPE_FULL];  
-  
-  - parameter_to_type p:ITM_TYPE_PARAMETER :TYPE_FULL <-
-  ( + idx:INTEGER;
-    + tab:FAST_ARRAY[ITM_TYPE_PARAMETER];
-    + result:TYPE_FULL;
-        
-    tab := prototype.idf_generic_list;
-    idx := tab.fast_first_index_of p;
-    (idx <= tab.upper).if {
-      result := generic_list.item idx;
-    };
-    result
-  );
-
-  //
-  // Import / Export
-  //
-    
-  - is_export_to t:TYPE_FULL :BOOLEAN <-
-  (         
-    is_cast t with (ALIAS_STR.slot_to) on export_list and (prototype.import_list)
-  );
-
-  - is_import_to t:TYPE_FULL :BOOLEAN <-
-  (         
-    is_cast t with (ALIAS_STR.slot_from) on import_list and (prototype.import_list)
-  );
-  
-Section Private
-  
-  + export_list:FAST_ARRAY[TYPE_FULL];
-  + import_list:FAST_ARRAY[TYPE_FULL];
-  
-  - is_cast t:TYPE_FULL with msg:STRING_CONSTANT 
-  on  lst:FAST_ARRAY[TYPE_FULL] 
-  and lstp:FAST_ARRAY[ITM_TYPE_MONO] :BOOLEAN <-
-  ( + result:BOOLEAN; 
-    + j:INTEGER;
-            
-    (lst != NULL).if {
-      j := lst.fast_first_index_of t;      
-      (j <= lst.upper).if {
-	result := TRUE;
-	last_cast_name.copy msg;
-	lstp.item j.append_cast_name_in last_cast_name;	
-      };      
-    };
-    result      
-  );
-  
-Section Public
-  
-  //
-  // Get
-  //
-  
-  - get itm_typ:ITM_TYPE_SIMPLE :TYPE_FULL <-  
-  (
-    crash_with_message "`get' in TYPE_GENERIC !";
-    NULL
-  );
-  
-  - get itm_typ:ITM_TYPE_SIMPLE with gen:FAST_ARRAY[TYPE_FULL] :TYPE_FULL <-
-  ( + base:TYPE_GENERIC;    
-    + result,t:TYPE_FULL;
-    + styl,k:STRING_CONSTANT;
-    + proto:PROTOTYPE;
-    
-    proto := load_prototype (itm_typ.name) generic_count (gen.count);    
-    string_tmp.copy (proto.filename);    
-    (gen.lower).to (gen.upper) do { j:INTEGER;
-      string_tmp.add_last ' ';
-      t := gen.item j;
-      (t.flag & 1111b).append_in string_tmp;
-      string_tmp.append (t.raw.key);  // BSBS: transformer la key par un numero de fichier...
-      // BSBS: parce que la, tu as des key immense !
-    };
-    k := ALIAS_STR.get string_tmp;
-    //
-    base := dicog_type.fast_reference_at k;
-    (base = NULL).if {      
-      base := TYPE_GENERIC.clone;
-      dicog_type.fast_put base to k;
-      base.make itm_typ with proto generic gen key k;
-    };
-    //            
-    styl := itm_typ.style;
-    (styl = NULL).if {           
-      result := base.default;
-    } else {
-      (styl = ALIAS_STR.keyword_expanded).if {	
-	result := base.default + TYPE_FULL.expanded_bit;	
-      } else {	
-	result := base.default + TYPE_FULL.strict_bit;
-      };
-    };    
-    result
-  );
-
-  //
-  // Life Type for collection (see PUT_TO and ITEM)
-  // BSBS: A revoir : il n'y a que NATIVE_ARRAY qui a besoin de ca,
-  // il faudrai plutot stocker ca ailleurs... ou? chépa!
-  //
-  
-  + put_to_list:FAST_ARRAY[PUT_TO];
-  
-  - add_put_to n:PUT_TO <-
-  (    
-    (put_to_list = NULL).if {
-      put_to_list := FAST_ARRAY[PUT_TO].create_with_capacity 16;
-    };
-    put_to_list.add_last n;
-  );
-  
-  - remove_put_to n:PUT_TO <-
-  ( + idx:INTEGER;
-    
-    idx := put_to_list.fast_first_index_of n;    
-    put_to_list.swap idx with (put_to_list.upper);
-    put_to_list.remove_last;
-  );
-  
-  + recursive_test:BOOLEAN;
-  
-  + old_type:TYPES;
-  
-  - get_type t:TYPES_TMP <-
-  ( + typ:TYPE_FULL;
-    + tmp_type:TYPES_TMP;
-                
-    typ := generic_list.first;
-    (typ.is_expanded && {typ.raw != type_boolean}).if {    
-      t.add (typ.raw);
-    } else {      
-      (put_to_list != NULL).if {
-	(! recursive_test).if { 
-	  recursive_test := TRUE;
-	  tmp_type := TYPES_TMP.new;
-	  (put_to_list.lower).to (put_to_list.upper) do { j:INTEGER;
-	    put_to_list.item j.value.get_type tmp_type;
-	  };	  
-	  old_type := tmp_type.update old_type;
-	  recursive_test := FALSE;
-	};
-	t.union old_type;
-      };
-    };
-  );
-  
-  //
-  // Declaration generation.
-  //
-  
-  - put_reference_declaration buffer:STRING <-
-  (    
-    (prototype.name = ALIAS_STR.prototype_native_array).if {      
-      generic_list.first.genere_declaration buffer;
-    }.elseif {prototype.name = ALIAS_STR.prototype_native_array_volatile} then {
-      buffer.append "volatile ";
-      generic_list.first.genere_declaration buffer;
-    } else {
-      parent_type.put_reference_declaration buffer;
-    };
-  );
-  
-  - put_reference_star_declaration buffer:STRING <-
-  (     
-    (
-      (prototype.name = ALIAS_STR.prototype_native_array) ||
-      {prototype.name = ALIAS_STR.prototype_native_array_volatile}
-    ).if {      
-      (is_java).if {
-        buffer.append "[]";
-      } else {
-        buffer.add_last '*';
-      };
-      generic_list.first.genere_star_declaration buffer;
-    } else {
-      parent_type.put_reference_star_declaration buffer;
-    };
-  );
-       
-Section Public  
-  
-  - make itm_typ:ITM_TYPE_SIMPLE <-
-  (
-    crash_with_message "TYPE_GENERIC.make";
-  );
-
-  - make itm_typ:ITM_TYPE_SIMPLE with proto:PROTOTYPE 
-  generic gen:FAST_ARRAY[TYPE_FULL] key k:STRING_CONSTANT <-
-  ( + mask_bit:UINTEGER_8;    
-    
-    index        := index_count;
-    index_count  := index_count + 1;
-    //
-    string_tmp.copy (itm_typ.name);
-    string_tmp.add_last '[';    
-    (gen.lower).to (gen.upper - 1) do { j:INTEGER;      
-      gen.item j.append_name_in string_tmp;
-      string_tmp.add_last ',';
-    };    
-    gen.last.append_name_in string_tmp;
-    string_tmp.add_last ']';            
-    name := ALIAS_STR.get string_tmp;
-    key := k;
-    generic_list := gen;
-    string_tmp.copy name;
-    string_tmp.replace_all ',' with 'x';
-    string_tmp.replace_all '[' with 'o';
-    string_tmp.replace_all ']' with 'o';
-    string_tmp.replace_all ' ' with '_';
-    string_tmp.replace_all '.' with '_';
-    intern_name := ALIAS_STR.get_intern string_tmp;
-    //
-    prototype   := proto;
-    itm_type    := itm_typ;    
-    slot_run    := FAST_ARRAY[SLOT].create_with_capacity 10; // BSBS: A voir.    
-    (prototype.type_style = ALIAS_STR.keyword_expanded).if {
-      // Expanded.
-      mask_bit := TYPE_FULL.expanded_bit | TYPE_FULL.default_expanded_bit;
-    }.elseif {prototype.type_style = ALIAS_STR.keyword_strict} then {
-      // Strict.
-      mask_bit := TYPE_FULL.strict_bit | TYPE_FULL.default_strict_bit;
-    };
-    default := TYPE_FULL.create Self with mask_bit;
-    prototype.init_slot_for Self;    
-    //
-    subtype_list := HASHED_SET[TYPE].create;
-    subtype_list.fast_add TYPE_NULL;
-    add_subtype Self;
-    // BSBS: Size ???
-    
-    // Import / Export.
-    (prototype.export_list != NULL).if {
-      export_list := FAST_ARRAY[TYPE_FULL].create_with_capacity (prototype.export_list.count);
-      (prototype.export_list.lower).to (prototype.export_list.upper) do { j:INTEGER;
-        export_list.add_last (prototype.export_list.item j.to_run_for Self);
-      };
-    };
-    (prototype.import_list != NULL).if {
-      import_list := FAST_ARRAY[TYPE_FULL].create_with_capacity (prototype.import_list.count);
-      (prototype.import_list.lower).to (prototype.import_list.upper) do { j:INTEGER;
-        import_list.add_last (prototype.import_list.item j.to_run_for Self);
-      };
-    };
-  );
-
- 
\ No newline at end of file
diff --git a/src/type/type_id.li b/src/type/type_id.li
deleted file mode 100644
index 4dd8f89..0000000
--- a/src/type/type_id.li
+++ /dev/null
@@ -1,104 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPE_ID;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Virtual type style slot segregation";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Private  
-  
-  - list_id:FAST_ARRAY[TYPE_ID];
-  
-  - create i:INTEGER :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make i;
-    result
-  );
-      
-  - make i:INTEGER <-
-  (
-    index := i;
-    default := TYPE_FULL.create Self with 0;
-  );
-  
-Section Public    
-    
-  - name:STRING_CONSTANT <- ALIAS_STR.prototype_type_id;
-  
-  - intern_name:STRING_CONSTANT <- name;
-  
-  - get_index idx:INTEGER :TYPE_ID <-
-  ( + result:TYPE_ID;
-    
-    (idx > list_id.upper).if {
-      result := TYPE_ID.create idx;
-      list_id.add_last result;
-      ? {list_id.upper = idx};
-    } else {
-      result := list_id.item idx;
-    };      
-    result
-  );
-
-  - make_type_id <-  
-  ( 
-    list_id := FAST_ARRAY[TYPE_ID].create_with_capacity 3;
-    list_id.add_last (create 0);
-    list_id.add_last (create 1);
-  );
-  
-  - add_genere_list; // Nothing.
-  
-  - genere_struct; // Nothing.
-
-  - is_sub_type other:TYPE :BOOLEAN <- 
-  ( 
-    other.name = name
-  );
-  
-  //
-  // Declaration generation.
-  //
-  
-  - put_generic_declaration buffer:STRING <- buffer.append "int";
-  
-  - put_reference_star_declaration buffer:STRING; // Nothing.
-  
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <- index.append_in buffer;
-  
-  - put_access_id e:EXPR in buffer:STRING <- e.genere buffer;
-  
-  - put_value buffer:STRING <- index.append_in buffer;
\ No newline at end of file
diff --git a/src/type/type_null.li b/src/type/type_null.li
deleted file mode 100644
index a1cac69..0000000
--- a/src/type/type_null.li
+++ /dev/null
@@ -1,130 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPE_NULL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Special type NULL";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Public
-  
-  - name:STRING_CONSTANT <- ALIAS_STR.variable_null;
-  
-  - intern_name:STRING_CONSTANT <- name;
-    
-  //
-  // Creation.
-  //
-
-  - make_null <-
-  ( 
-    index       := index_count;
-    index_count := index_count + 1;
-    dico_type.fast_put Self to name;    
-    slot_run := FAST_ARRAY[SLOT].create_with_capacity 1; // BSBS: Plus utile !
-    default := TYPE_FULL.create Self with 0;
-  );
-  
-  - get_local_slot n:STRING_CONSTANT :SLOT <- NULL; 
-  
-  - get_path_slot n:STRING_CONSTANT :SLOT <- NULL;
-  
-  //
-  // Error.
-  //
-  
-  //- bug:INTEGER;
-  
-  - product_error p:POSITION in lst:LIST <-
-  ( + ctext:LOCAL;
-    
-    (debug_level_option != 0).if {      
-      (profil_current = NULL).if {
-	ctext := context_main;
-      } else {
-	ctext := profil_current.context;
-      };
-      lst.add_last (
-	PUSH.create p context ctext first FALSE
-      );      
-    };    
-    lst.add_last CALL_NULL;        
-  );
-  
-Section Public
-  
-  //
-  // Import / Export
-  //
-    
-  - is_export_to t:TYPE_FULL :BOOLEAN <- FALSE;
-
-  - is_import_to t:TYPE_FULL :BOOLEAN <- FALSE;
-  
-  //
-  //
-  //
-  
-  - is_sub_type other:TYPE :BOOLEAN <- TRUE;  
-  
-  - genere_typedef <-
-  (
-  );
-  
-  - genere_struct <-
-  (
-    (is_java).if_false {
-      output_decl.append 
-      "// NULL\n\
-      \#ifndef NULL\n\
-      \#define NULL ((void *)0)\n\
-      \#endif\n\n";
-    };
-  );
-  
-  //
-  // Code source generation.
-  //
-  
-  - put_id buffer:STRING <- 
-  (
-    put_value buffer;
-  );
-  
-  - put_access_id e:EXPR in buffer:STRING <- e.genere buffer;   
-  
-  - put_value buffer:STRING <- 
-  ( 
-    (is_java).if {
-      buffer.append "null";
-    } else {
-      buffer.append name;
-    };
-  );
-  
\ No newline at end of file
diff --git a/src/type/type_void.li b/src/type/type_void.li
deleted file mode 100644
index 556a828..0000000
--- a/src/type/type_void.li
+++ /dev/null
@@ -1,76 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := TYPE_VOID;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Special virtual Void type";
-  
-Section Inherit
-  
-  + parent_type:Expanded TYPE;
-  
-Section Public
-  
-  - name:STRING_CONSTANT <- ALIAS_STR.variable_void;
-  
-  - intern_name:STRING_CONSTANT <- name;    
-  
-  //
-  // Creation.
-  //
-    
-  - make_void <-
-  ( 
-    dico_type.fast_put Self to name;    
-    default := TYPE_FULL.create Self with 0;
-  );
-  
-  //
-  // Import / Export
-  //
-    
-  - is_export_to t:TYPE_FULL :BOOLEAN <- FALSE;
-
-  - is_import_to t:TYPE_FULL :BOOLEAN <- FALSE;
-  
-  //
-  // Genere.
-  //
-
-  - genere_typedef <-
-  (
-    // Nothing.
-  );
-  
-  - genere_struct <-
-  (
-    // Nothing.
-  );
-  
-Section Public
-  
-  - is_sub_type other:TYPE :BOOLEAN <- FALSE;  
-
diff --git a/src/update b/src/update
deleted file mode 100755
index 436f67f..0000000
--- a/src/update
+++ /dev/null
@@ -1,3 +0,0 @@
-gcc ./lisaac.c  -o ./lisaac -O2
-cp -f lisaac.c ../bin/.
-cp -f lisaac ../bin/.
diff --git a/src/variable/argument.li b/src/variable/argument.li
deleted file mode 100644
index e054ab3..0000000
--- a/src/variable/argument.li
+++ /dev/null
@@ -1,82 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ARGUMENT;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Argument runnable";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + type:TYPE_FULL;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL :SELF <-
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p name n type t;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL <-
-  (
-    position := p;
-    name := n;
-    type := t;
-  );
-  
-  //
-  // To profil
-  //
-  
-  - to_local:LOCAL <-
-  (
-    LOCAL.create position name name style ' ' type (type.fix)
-  );
-  
-  //
-  // Display.
-  //
-  
-  - print <-
-  (    
-    string_tmp.clear;
-    string_tmp.append name;
-    string_tmp.add_last ':';
-    type.append_name_in string_tmp;
-    string_tmp.print;
-  );
-    
-  
\ No newline at end of file
diff --git a/src/variable/local.li b/src/variable/local.li
deleted file mode 100644
index 6b27f19..0000000
--- a/src/variable/local.li
+++ /dev/null
@@ -1,394 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LOCAL;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Local slot";
-  
-Section Inherit
-  
-  + parent_variable:Expanded VARIABLE;
-  
-Section Public  
-  
-  // BSBS: Doit pas etre utile.
-  
-  + is_result :BOOLEAN := FALSE;
-
-  - set_result r:BOOLEAN <- is_result := r;
-  
-  //
-  // Copy alias manager.
-  //
-  
-  - is_alias:BOOLEAN;
-  
-  - alias_on <-  
-  (
-    is_alias := TRUE;
-  );
-  
-  - alias_off <-
-  (
-    (list_alias.lower).to (list_alias.upper) do { j:INTEGER;
-      list_alias.item j.set_my_alias NULL;
-    };
-    list_alias.clear;
-    is_alias := FALSE;
-  );
-  
-  - list_alias:FAST_ARRAY[LOCAL] := FAST_ARRAY[LOCAL].create_with_capacity 64;
-  
-  - get_alias:LOCAL <-
-  (
-    (my_alias = NULL).if {
-      my_alias := my_copy;
-      my_alias.set_type_list type_list;
-      list_alias.add_last Self;	
-    };
-    my_alias
-  );
-  
-  + my_alias:LOCAL;
-  
-  - set_my_alias new_loc:LOCAL <-
-  (
-    my_alias := new_loc;
-  );
-    
-  - write p:POSITION with r:EXPR value val:EXPR :WRITE <-
-  ( + result:WRITE;
-    
-    (my_alias != NULL).if {      
-      result := my_alias.write_direct p with NULL value val;
-    }.elseif {is_alias} then {
-      result := get_alias.write_direct p with NULL value val;
-    } else {
-      result := write_direct p with NULL value val;
-    };
-    result
-  );
-  
-  - read p:POSITION with r:EXPR :READ <-
-  ( + result:READ;
-        
-    (my_alias != NULL).if {      
-      result := my_alias.read_direct p with NULL;
-    }.elseif {is_alias} then { // BSBS: voir Mildred
-      result := get_alias.read_direct p with NULL; // BSBS: cas impossible !!!
-    } else {
-      //? {! is_alias};
-      result := read_direct p with NULL;
-    };        
-    result
-  );
-  
-  //
-  // Sequence optimizer
-  //
-  
-  + last_seq:LOCAL_SEQ;
-  
-  - reset_last_write w:WRITE <-
-  (  
-    ((last_seq != NULL) && {last_seq.last_write = w}).if {
-      last_seq.set_last_write NULL;
-    };
-  );
-  
-  - set_last_seq s:LOCAL_SEQ <-
-  (
-    last_seq := s;
-  );
-  
-  - set_write w:WRITE <-
-  (                
-    (last_seq = NULL).if {
-      LOCAL_SEQ.new Self;
-      //"LOCAL:".print;
-      //intern_name.print; '\n'.print;
-    };
-    (
-      (! PROFIL.mode_recursive) &&
-      {loop_invariant = NULL} &&
-      {last_seq.last_write != NULL} &&            
-      {last_seq.last_index != -1} &&
-      {last_seq.last_list_current = list_current} &&
-      {last_seq.last_index < list_current.index}  &&
-      {last_seq.last_seq_call_local_and_loop = seq_call_local_and_loop} &&
-      {list_current.item (last_seq.last_index) = last_seq.last_write} // BSBS: Voir pourquoi pas tjrs le cas
-    ).if {                         
-      list_current.put (last_seq.last_write.value) to (last_seq.last_index);
-      unwrite (last_seq.last_write);      
-      new_execute_pass;
-    };    
-    // Save context
-    last_seq.set_seq w;
-  );
-  
-  - set_read <-
-  (
-    (last_seq != NULL).if {
-      last_seq.set_last_index (-1);
-    };
-  );
-  
-  - get_last_index:INTEGER <- last_seq.last_index;
-  
-  - is_invariant:BOOLEAN <-
-  (
-    (loop_seq_call_local_and_loop = seq_call_local_and_loop) &&
-    {
-      (
-	(last_seq != NULL) && {last_seq.last_write != NULL} &&
-	{last_seq.last_seq_index <= loop_seq_index}
-      ) || {style = ' '}
-    }
-  );
-  
-  - get_last_value rec:EXPR :EXPR <-
-  [
-    ? {rec = NULL};
-  ]
-  ( + result:EXPR;
-    + val:EXPR;
-    + rd:READ;
-    + l:LOCAL;
-    + g:SLOT_DATA;
-    /*
-    + bug:BOOLEAN;
-    
-    (intern_name == "__tmp__TC").if {
-      bug:=TRUE;
-      "0\n".print;
-      (last_seq = NULL).if {
-        "last seq NULL\n".print;
-        crash;
-      } else {
-        (last_seq.last_write = NULL).if {
-          "last_write null\n".print;
-        };
-      };
-    };
-     */ 
-    
-    
-    (
-      (! PROFIL.mode_recursive) && {loop_invariant = NULL} && 
-      {last_seq != NULL} && {last_seq.last_write != NULL}
-    ).if {      
-      /*
-      (bug).if {
-        "1\n".print;
-      };
-      */
-      (
-	(is_seq_list (last_seq.last_list_current)) &&
-	{
-	  (last_seq.last_seq_call_local_and_loop = seq_call_local_and_loop) ||
-	  {require_count = 1}
-	}
-      ).if {
-	val := last_seq.last_write.value;
-	rd  ?= val;
-	(rd != NULL).if {
-	  l ?= rd.variable;
-	  g ?= rd.variable;
-	};
-	(
-	  ( // Constant propagation.
-	    val.is_constant 
-	  ) || 
-	  { // Local propagation.
-	    (l != NULL) && {
-	      (
-		(l.last_seq != NULL) && {l.last_seq.last_write != NULL} && 
-		{l.last_seq.last_seq_index < last_seq.last_seq_index} && 
-		{last_seq.last_seq_call_local_and_loop = seq_call_local_and_loop} 
-	      ) || {l.require_count <= 1} || {l.style = ' '}
-	    }
-	  } ||
-	  { // Global propagation.
-	    (g != NULL) && {g.style = '-'} && {
-	      (		
-		(g.last_write != NULL) && {g.last_seq_index < last_seq.last_seq_index} && 
-		{last_seq.last_seq_call_and_loop = seq_call_and_loop} && 
-		{is_seq_list (g.last_list_current)}
-	      ) || {g.require_count = 1}
-	    }
-	  }
-	).if {	  	  
-	  result := val.my_copy;
-	}.elseif {
-	  // Propagation step by step.
-	  (last_seq.last_seq_or_and = seq_or_and) &&
-	  {ensure_count = 1} &&
-	  {list_current.index > list_current.lower} && 
-	  {list_current.item (list_current.index - 1) = last_seq.last_write} 
-	} then {    	  
-	  unwrite (last_seq.last_write);
-	  last_seq.set_last_write NULL;
-	  list_current.put NOP to (list_current.index - 1);	  
-	  result := val;
-	};
-      };      
-    };
-    result
-  );
-  
-  - set_type_list t:TYPES <-
-  (
-    type_list := t;
-  );
-  
-  //
-  //
-  //
-    
-  - is_local:BOOLEAN <- TRUE;
-    
-  //
-  // Creation.
-  //
-    
-  - create p:POSITION name n:STRING_CONSTANT 
-  style c:CHARACTER type t:TYPE_FULL result r:BOOLEAN :SELF<-
-  ( + result:SELF;
-    result := clone;    
-    result.make p name n style c type t result r;
-    result
-  );
-    
-  - create p:POSITION name n:STRING_CONSTANT 
-  style c:CHARACTER type t:TYPE_FULL :SELF<-
-  ( + result:SELF;
-    result := clone;    
-    result.make p name n style c type t result FALSE;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT 
-  style c:CHARACTER type t:TYPE_FULL result r:BOOLEAN <-
-  ( + tmp:TYPES_TMP;
-    ? {p.code != 0};
-    ? {t != NULL};
-
-    position    := p;
-    name        := n;
-    is_result   := r;
-    intern_name := ALIAS_STR.get_intern n; 
-       
-    ((t.is_expanded) && {! t.is_expanded_c}).if {
-      type := t + TYPE_FULL.expanded_ref_bit;
-    } else {
-      type := t;
-    };
-    style := c;
-    
-    (is_static).if {      
-      tmp := TYPES_TMP.new;      
-      tmp.add (t.raw);      
-      type_list := tmp.to_types;
-    } else {
-      type_list := TYPES_TMP.types_empty;
-    };
-    
-    (
-      + tb:TYPE_BLOCK;
-      
-      tb ?= type.raw;
-      ((tb != NULL) && {name = ALIAS_STR.variable_self}).if {
-        "************ ERROR : ".print;
-        intern_name.print;
-        " ************\n".print;
-        crash_with_message "ERROR TYPE BLOCK!!!!";
-      };
-    );    
-    
-  );
-  
-  - my_copy:LOCAL <-
-  ( + result:LOCAL;
-    
-    result := LOCAL.create position name name style style type type;
-    result
-  );
-  
-  //
-  // Value.
-  //
-
-  - init <-
-  ( + val:EXPR;
-    + i:INSTR;    
-    + int:INTEGER_CST;    
-    
-    val := type.default_value position;    
-    (ALIAS_STR.is_integer (type.raw.name)).if { 
-      int ?= val;
-      (int != NULL).if {	  
-	int.cast_type type;
-      }; 
-    } else {
-      val := val.check_type type with position;
-    };
-    i := write position value val;
-    list_current.add_last i;    
-  );
-    
-  - set_intern_name n:STRING_CONSTANT <-
-  (
-    intern_name := n;
-  );
-    
-Section VARIABLE
-  
-  - new_read p:POSITION with r:EXPR :READ <- 
-  [ -? {r = NULL}; ]
-  (
-    READ_LOCAL.create p with Self
-  );
-  
-  - new_write p:POSITION with r:EXPR value v:EXPR :WRITE <-
-  [ -? {r = NULL}; ]
-  (
-    WRITE_LOCAL.create p with v in Self
-  );
-  
-  /*
-  - new_access r:EXPR :ACCESS <- 
-  (
-    ACCESS_LOCAL.create Self
-  );
-  */
-
-
-
-
-
-
-
-
diff --git a/src/variable/local_seq.li b/src/variable/local_seq.li
deleted file mode 100644
index c5081b1..0000000
--- a/src/variable/local_seq.li
+++ /dev/null
@@ -1,103 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := LOCAL_SEQ;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Local slot";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Private
-  
-  - list_busy:FAST_ARRAY[LOCAL] := FAST_ARRAY[LOCAL].create_with_capacity 512;
-  
-  - list_free:FAST_ARRAY[LOCAL_SEQ] := FAST_ARRAY[LOCAL_SEQ].create_with_capacity 512;
-  
-  - clean <-
-  (
-    last_write := NULL;
-  );
-  
-Section Public  
-    
-  + last_write:WRITE;
-  + last_seq_index:UINTEGER_32;
-  + last_seq_or_and:UINTEGER_32;
-  + last_seq_call_and_loop:UINTEGER_32;  
-  + last_seq_call_local_and_loop:UINTEGER_32;
-  
-  + last_list_current:LIST;
-  + last_index:INTEGER;
-  
-  - set_last_write w:WRITE <-
-  (
-    last_write := w;
-  );
-  
-  - set_last_index i:INTEGER <-
-  (
-    last_index := i;
-  );
-  
-  - new l:LOCAL <-
-  ( + result:LOCAL_SEQ;
-    
-    (list_free.is_empty).if {
-      result := clone;
-    } else {
-      result := list_free.last;
-      list_free.remove_last;
-    };
-    result.clean;
-    list_busy.add_last l;
-    l.set_last_seq result;
-  );
-  
-  - set_seq w:WRITE <-
-  (
-    // Save context
-    last_write                  := w;
-    last_seq_index              := seq_index;
-    last_seq_or_and             := seq_or_and;
-    last_seq_call_and_loop      := seq_call_and_loop;
-    last_seq_call_local_and_loop:= seq_call_local_and_loop;    
-    //
-    last_list_current := list_current;
-    last_index        := list_current.index; 
-  );
-  
-  - clear <-
-  ( + l:LOCAL;
-    
-    (list_busy.upper).downto (list_busy.lower) do { j:INTEGER;
-      l := list_busy.item j;
-      list_free.add_last (l.last_seq);      
-      l.set_last_seq NULL;
-    };
-    list_busy.clear;
-  );
diff --git a/src/variable/named.li b/src/variable/named.li
deleted file mode 100644
index b6653a4..0000000
--- a/src/variable/named.li
+++ /dev/null
@@ -1,63 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := NAMED;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all slot";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-
-  //
-  // Data.
-  //
-
-  + style:CHARACTER;  // '+': Clonable, 
-                      // '-': Shared.
-		      // ' ': Argument
-		      // 'T': Temporary
-		      // 'C': Cast
-  
-  + name:STRING_CONSTANT;
-
-  - set_style s:CHARACTER <-
-  (
-    style := s;
-  );
-  
-  //
-  // Hashable.
-  //
-  
-  - hash_code: INTEGER <- name.hash_code;
-
-
-
-
-
diff --git a/src/variable/old/argument.li b/src/variable/old/argument.li
deleted file mode 100644
index c0e4535..0000000
--- a/src/variable/old/argument.li
+++ /dev/null
@@ -1,85 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := ARGUMENT;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Argument runnable";
-  
-Section Inherit
-  
-  + parent_itm_object:Expanded ITM_OBJECT;
-  
-Section Public
-  
-  + name:STRING_CONSTANT;
-  
-  + type:TYPE_FULL;
-  
-  //
-  // Creation.
-  //
-  
-  - create p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL :SELF <-
-  [ 
-    -? {t != NULL}; 
-  ]
-  ( + result:SELF;
-    
-    result := clone;
-    result.make p name n type t;
-    result
-  );
-  
-  - make p:POSITION name n:STRING_CONSTANT type t:TYPE_FULL <-
-  (
-    position := p;
-    name := n;
-    type := t;
-  );
-  
-  //
-  // To profil
-  //
-  
-  - to_local:LOCAL <-
-  (
-    LOCAL.create position name name style ' ' type (type.fix)
-  );
-  
-  //
-  // Display.
-  //
-  
-  - print <-
-  (    
-    string_tmp.clear;
-    string_tmp.append name;
-    string_tmp.add_last ':';
-    type.append_name_in string_tmp;
-    string_tmp.print;
-  );
-    
-  
\ No newline at end of file
diff --git a/src/variable/old/slot.li b/src/variable/old/slot.li
deleted file mode 100644
index 253acd2..0000000
--- a/src/variable/old/slot.li
+++ /dev/null
@@ -1,256 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for slot runnable";
-  
-Section Inherit
-  
-  - parent_itm_object:ITM_OBJECT := ITM_OBJECT;
-  
-Section Public
-  
-  - common_slot:SLOT <- Self;
-  
-  + base_slot:ITM_SLOT;
-
-  - name:STRING_CONSTANT          <- base_slot.name;  
-  - id_section:SECTION_           <- base_slot.id_section;    
-  - priority_and_level:INTEGER    <- base_slot.priority_and_level;  
-  - priority:INTEGER              <- base_slot.priority;
-  - associativity:STRING_CONSTANT <- base_slot.associativity;  
-  - style:CHARACTER               <- base_slot.style;
-  
-  + receiver_type:TYPE;
-        
-  + slot_id:SLOT_DATA;
-  
-//  + arguments:FAST_ARRAY[ARGUMENT];
-//  + results_type:FAST_ARRAY[TYPE_FULL];
-//  + result_type:TYPE_FULL;
-  
-  //
-  // Result / Argument manager.
-  //
-/*    
-  - get_expr_result:EXPR <-
-  ( + result:EXPR;
-    + lst:FAST_ARRAY[EXPR];
-    + typ:TYPE_FULL;
-    
-    (id_section.is_interrupt).if {
-      typ := type_pointer.default;
-      result := typ.get_temporary_expr position;
-    } else {
-      (results_type != NULL).if { 
-	lst := FAST_ARRAY[EXPR].create_with_capacity (results_type.count+1);
-	(results_type.lower).to (results_type.upper) do { k:INTEGER;	  
-	  lst.add_last (results_type.item k.get_temporary_expr position);
-	};
-	lst.add_last (result_type.get_temporary_expr position);
-	result := EXPR_MULTIPLE.create lst;
-      } else {	
-	result := result_type.get_temporary_expr position;
-      };      
-    };
-    result
-  );
-      
-  - check_argument_type_for larg:FAST_ARRAY[EXPR] <-  
-  ( + new_expr:EXPR;
-          
-    (larg.lower + 1).to (larg.upper) do { i:INTEGER;      
-      new_expr := larg.item i.check_type (arguments.item i.type) with position;
-      larg.put new_expr to i;
-    };            
-  );
-*/      
-  //
-  // Creation.
-  //
-  
-  - create s:ITM_SLOT type t:TYPE :SLOT <-
-  ( + result:SLOT;
-    
-    result := clone;
-    result.make s type t    
-  );
-  
-  - make s:ITM_SLOT type t:TYPE :SLOT <-
-  ( + styl:SLOT;
-    + item_lst:FAST_ARRAY[ITM_ARGUMENT];  
-    + typ:TYPE_FULL;
-    + type_multiple:ITM_TYPE_MULTI;
-    + type_mono:ITM_TYPE_MONO;
-    + old_data:DTA_RD;
-    
-    base_slot := s;
-    receiver_type := t;
-    position  := s.position;
-    //
-/*    old_data := data_current;
-    data_current := data_tmp;
-    data_current.set_generic t;    
-    data_current.set_self (t.default);
-    // Arguments.
-    item_lst  := base_slot.argument_list; 
-    arguments := FAST_ARRAY[ARGUMENT].create_with_capacity (base_slot.argument_count);    
-    (item_lst.lower).to (item_lst.upper) do { j:INTEGER;
-      item_lst.item j.to_run arguments;
-    };    
-    // Result(s).    
-    type_multiple ?= base_slot.type;
-    (type_multiple != NULL).if {  
-      results_type := FAST_ARRAY[TYPE_FULL].create_with_capacity (type_multiple.count - 1);	
-      0.to (type_multiple.upper - 1) do { k:INTEGER;	  
-	typ := type_multiple.item k.to_run;	
-	results_type.add_last typ;
-      };
-      result_type := type_multiple.last.to_run;	
-    } else {
-      type_mono ?= base_slot.type;
-      result_type := type_mono.to_run;
-    };      
- */   
-    //
-    (s.affect = '<').if {
-      // Code.      
-      styl := slot_code_intern := SLOT_CODE.create Self with (base_slot.value);      
-    } else {
-      // Data      
-      create_slot_data;
-      styl := slot_data_intern;
-    };    
-//    data_current := old_data;
-    //
-    styl
-  );
-    
-  //
-  // Style.
-  //
-  
-  - lower_style:INTEGER <-
-  ( + result:INTEGER;
-    (slot_data_intern = NULL).if {
-      result := 1;
-    };
-    result
-  );
-  
-  - upper_style:INTEGER <- 
-  ( + result:INTEGER;
-    (slot_code_intern != NULL).if {      
-      (slot_code_list != NULL).if {
-	result := slot_code_list.upper + 2;
-      } else {
-	result := 1;
-      };
-    };
-    result
-  );
-  
-  - slot_data:SLOT_DATA <-
-  (     
-    (slot_data_intern = NULL).if {
-      create_slot_data;      
-      (slot_id = NULL).if {
-	slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 1.default);
-	slot_id.init;
-      };
-    };
-    slot_data_intern
-  );
-    
-  - slot_code idx:INTEGER :SLOT_CODE <-
-  ( + result:SLOT_CODE;
-    
-    (idx = 1).if {
-      result := slot_code_intern;
-    } else {
-      result := slot_code_list.item (idx-2);
-    };
-    result
-  );
-
-  - add_style v:ITM_CODE :INTEGER <-
-  ( + slot:SLOT_CODE;
-    + result:INTEGER;
-           
-    slot := SLOT_CODE.create common_slot with v;
-    (slot_code_intern = NULL).if {
-      slot_code_intern := slot;
-      slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 0.default);
-      slot_id.init;
-      result := 1;
-    } else {
-      (slot_code_list = NULL).if {
-	slot_code_list := FAST_ARRAY[SLOT_CODE].create_with_capacity 1;
-      };
-      slot_code_list.add_last slot;
-      (slot_id = NULL).if {
-	slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 1.default);
-	slot_id.init;
-      };
-      result := slot_code_list.upper + 2;
-    };    
-    result
-  );
-
-  //
-  // Display.
-  //
-  
-  - display_all <-
-  (
-    (lower_style).to (upper_style) do { j:INTEGER;
-      item_style j.display_all;
-    };
-  );
-
-Section Public
-  
-  + slot_data_intern:SLOT_DATA; // Index 0
-  + slot_code_intern:SLOT_CODE; // Index 1
-  
-  + slot_code_list:FAST_ARRAY[SLOT_CODE]; // Index x+2
-  + slot_data_list:FAST_ARRAY[SLOT_DATA]; // Vector data slot  
-  
-  - create_slot_data <-
-  ( + typ:TYPE_FULL;
-                
-    (results_type != NULL).if {            
-      slot_data_list := FAST_ARRAY[SLOT_DATA].create_with_capacity (results_type.count);
-      (results_type.lower).to (results_type.upper) do { k:INTEGER;	
-	typ := results_type.item k;
-	slot_data_list.add_last (
-	  SLOT_DATA.create common_slot type typ
-	);
-      };      
-    };
-    slot_data_intern := SLOT_DATA.create common_slot type result_type;    
-  );
\ No newline at end of file
diff --git a/src/variable/old/slot_code.li b/src/variable/old/slot_code.li
deleted file mode 100644
index c81b613..0000000
--- a/src/variable/old/slot_code.li
+++ /dev/null
@@ -1,297 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := SLOT_CODE;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Slot with method";
-  
-Section Inherit
-  
-  + parent_slot:SLOT := SLOT;
-  
-Section Public
-  
-  - common_slot:SLOT <- parent_slot;
-
-  - position:POSITION <- base_slot.position;
-  
-  + index:INTEGER;
-  
-  //
-  // Static and Dynamic profil.
-  //
-  
-  + value:ITM_CODE;
-         
-  //
-  // Dynamic profil.
-  //
-
-  + profil:FAST_ARRAY[PROFIL_SLOT];
-    
-  - get_profil args:FAST_ARRAY[EXPR] self type_self:TYPE_FULL :(PROFIL, FAST_ARRAY[WRITE]) <-
-  ( + result:PROFIL_SLOT;    
-    + res_lst:FAST_ARRAY[WRITE];
-    + pro:PROFIL_SLOT;
-    + j,i:INTEGER;
-    + loc:LOCAL;
-    + typ:TYPE_FULL;
-    + typ_block:PROFIL_BLOCK;
-    + typ_list:TYPES_TMP;
-    + pro_list:FAST_ARRAY[PROFIL_SLOT];    
-    + is_new:BOOLEAN;
-        
-    // Block Detect.
-    j := args.lower;
-    {(j <= args.upper) && {(typ = NULL) || {! (typ.raw == type_block)}}}.while_do {
-      typ := args.item j.static_type;
-      (typ.raw == type_block).if {
-	typ_list := TYPES_TMP.new;
-	args.item j.get_type typ_list;
-	(typ_list.first = TYPE_NULL).if {
-	  (typ_list.count > 1).if {
-	    typ_block ?= typ_list.second;
-	  } else {
-	    typ := NULL;
-	  };
-	} else {
-	  typ_block ?= typ_list.first;
-	};
-	typ_list.free;
-      };
-      j := j + 1;
-    };
-
-    (typ_block != NULL).if {
-      pro_list := typ_block.profil_list;
-      i := pro_list.lower;
-      {(i <= pro_list.upper) && {result = NULL}}.while_do {
-	pro := pro_list.item i;
-	(
-	  (pro.slot = Self) && {
-	    (pro.type_self = NULL) || {pro.type_self == type_self}
-	  } // BSBS: il fo aussi tester les args comme plus bas...
-	).if {
-	  result := pro; // Rmq. : It's limit for dispatching (See...)
-	};
-	i := i + 1;
-      };
-            
-      (result = NULL).if {
-	result := PROFIL_SLOT.clone;	
-	result.set_context_sensitive;
-	typ_block.profil_list.add_last result;
-	is_new := TRUE;	
-      };
-    } else {	    
-      // Select classic Profil (no block).
-      j := profil.lower;      
-      {(j <= profil.upper) && {result = NULL}}.while_do {
-	pro := profil.item j;					
-	((pro.type_self = NULL) || {pro.type_self == type_self}).if {
-	  result := pro;
-	  i := args.lower + 1;
-	  {(i <= args.upper) && {result != NULL}}.while_do {
-	    typ := args.item i.static_type;
-	    loc := pro.argument_list.item i;	    	    
-	    (
-	      (loc != NULL) && 
-	      {(typ.is_expanded) || {loc.type.is_expanded       }} && 
-	      {typ !== loc.type} && {loc.type.raw != type_boolean}
-	    ).if {
-	      result := NULL;	      	      	      
-	    };
-	    i := i + 1;    
-	  };
-	};
-	j := j + 1;
-      };
-      (result = NULL).if {	
-	result := PROFIL_SLOT.clone;		
-	profil.add_last result;
-	((id_section.is_external) && {profil.count > 1}).if {
-	  semantic_error (position,"Polymorphic External slot is not possible.");
-	};
-	is_new := TRUE;
-      };
-    };
-    (is_new).if {            
-      res_lst := result.make Self with (type_self, args) verify (profil.count = 1);      
-    } else {
-      res_lst := result.write_argument args;
-    };
-    result, res_lst
-  );
-
-  //
-  // Constructeur.
-  //
-  
-  - create base:SLOT with val:ITM_CODE :SLOT_CODE <-
-  ( + result:SELF;
-    result := clone;
-    result.make base with val;
-    result
-  );
-  
-  - make base:SLOT with val:ITM_CODE <-
-  ( 
-    parent_slot := base;
-    value := val;
-    profil := FAST_ARRAY[PROFIL_SLOT].create_with_capacity 1;    
-  );
-      
-  //
-  // Execute.
-  //
-  
-  + last_type_contract:TYPE; 
-  + is_require:BOOLEAN;
-  
-  - previous_contract:ITM_LIST <-
-  ( + slot:ITM_SLOT;
-    + contract:ITM_LIST;
-    
-    (is_require).if {
-      slot := last_type_contract.search_require name;
-    } else {
-      slot := last_type_contract.search_ensure name;
-    };
-    (slot != NULL).if {
-      (is_require).if {
-	contract := slot.require;
-      } else {
-	contract := slot.ensure;
-      };
-      last_type_contract := last_type_contract.last_type_contract;
-    };          
-    contract
-  );
-  
-  - create_code is_first:BOOLEAN <-
-  ( + contract:ITM_LIST;
-    + slot:ITM_SLOT;
-    + instr:INSTR;
-                
-    verify := is_first;
-    
-    // Require
-    is_require := TRUE;
-    contract := base_slot.require;
-    last_type_contract := receiver_type;
-    (contract = NULL).if {
-      slot := receiver_type.search_require name;
-      (slot != NULL).if {
-	(verify).if {
-	  base_slot.is_equal_profil slot;
-	};
-	contract := slot.require;
-	last_type_contract := receiver_type.last_type_contract;
-      };      
-    };
-    (contract != NULL).if {      
-      list_current.add_last (contract.to_run_contract);
-    };
-    
-    // Body.
-    value.to_run_extern;
-    
-    // Ensure
-    is_require := FALSE;
-    contract := base_slot.ensure;
-    last_type_contract := receiver_type;
-    (contract = NULL).if {
-      slot := receiver_type.search_ensure name;
-      (slot != NULL).if {
-	(verify).if {
-	  base_slot.is_equal_profil slot;
-	};
-	contract := slot.ensure;
-	last_type_contract := receiver_type.last_type_contract;
-      };      
-    };
-    (contract != NULL).if {            
-      list_current.add_last (contract.to_run_contract);
-    };
-    // Result.
-    (profil_slot.result_last != NULL).if {
-      instr := profil_slot.result_last.read position;    
-    } else {
-      (id_section.is_interrupt).if {
-	list_current.add_first (
-	  EXTERNAL_C.create position text "__BEGIN_INTERRUPT__" access NULL
-	  persistant TRUE type (TYPE_VOID.default)
-	);
-	list_current.add_last (
-	  EXTERNAL_C.create position text "__END_INTERRUPT__" access NULL
-	  persistant TRUE type (TYPE_VOID.default)
-	);
-      };
-      instr := PROTOTYPE_CST.create position type (TYPE_VOID.default);
-    };    
-    list_current.add_last instr;    
-  );
-  
-  - remove_profil prof:PROFIL_SLOT <-
-  ( + idx:INTEGER;
-    
-    idx := profil.fast_first_index_of prof;
-    (idx <= profil.upper).if { // Else, This profil is in BLOCK      
-      profil.remove idx;
-    };
-  );
-    
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append name;
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;       
-      buffer.add_last ' ';
-      argument_list.item j.display buffer;
-    }; 
-    buffer.add_last ' ';
-    buffer.add_last ':';
-    type.display buffer;    
-  );    
-  
-  - display_all <-
-  ( + prof:PROFIL;
-    
-    string_tmp.clear;    
-    (profil != NULL).if {
-      (profil.upper).downto (profil.lower) do { k:INTEGER;
-	prof := profil.item k;
-	prof.display_all string_tmp;
-      };
-    };
-    string_tmp.print;
-  );
-  
-
-  
\ No newline at end of file
diff --git a/src/variable/old/slot_data.li b/src/variable/old/slot_data.li
deleted file mode 100644
index d651a4a..0000000
--- a/src/variable/old/slot_data.li
+++ /dev/null
@@ -1,500 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SLOT_DATA;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Slot with data style";
-  
-Section Inherit
-  
-  + parent_variable:Expanded VARIABLE;
-
-  + parent_slot:SLOT := SLOT;      
-  
-Section Public
-  
-  // BUG COMPILO 0.11
-  
-  - id_section:SECTION_ <- 
-  ( + result:SECTION_;
-    
-    (parent_slot != NULL).if {
-      result := parent_slot.id_section;
-    } else {
-      result := SECTION_.get_name (ALIAS_STR.section_private);
-    };
-    result
-  );
-  
-  - receiver_type:TYPE <-
-  ( + result:TYPE;
-    
-    (parent_slot != NULL).if {
-      result := parent_slot.receiver_type;
-    } else {
-      result := type_block;
-    };
-    result
-  );
-  
-  
-  //
-  
-  - common_slot:SLOT <- parent_slot;
-  
-  //
-  // Sequence optimizer
-  //
-  
-  + last_write:WRITE;
-  + last_seq_index:UINTEGER_32;
-  + last_seq_or_and:UINTEGER_32;  
-  + last_seq_call_and_loop:UINTEGER_32;
-  + last_seq_call_local_and_loop:UINTEGER_32;
-    
-  + last_list_current:LIST;
-  + last_index:INTEGER;
-
-  - is_invariant rec:EXPR :BOOLEAN <-
-  (
-    ((rec = NULL) || {rec.is_invariant}) &&
-    {last_write != NULL} &&
-    {loop_seq_call_and_loop = seq_call_and_loop} &&
-    {last_seq_index <= loop_seq_index}
-  );
-  
-  - reset_last_write w:WRITE <-
-  (  
-    (last_write = w).if {
-      last_write := NULL;
-    };
-  );
-  
-  - set_read <-
-  (
-    last_index := -1;
-  );
-  
-  - get_last_index:INTEGER <- last_index;
-  
-  - set_write w:WRITE <-
-  (                
-    /* A FAIRE
-    (
-      (! PROFIL.mode_recursive) &&
-      {style = '-'} &&
-      {last_write != NULL} &&      
-      {last_index < list_current.index} &&
-      {last_sequence = sequence_global}      
-    ).if {       
-      ? {list_current.item last_index = last_write};
-      list_current.put (last_write.value) to last_index;
-      unwrite last_write;      
-      new_execute_pass;
-    };    
-    */
-    last_write                  := w;
-    last_seq_index              := seq_index;
-    last_seq_or_and             := seq_or_and;    
-    last_seq_call_and_loop      := seq_call_and_loop;
-    last_seq_call_local_and_loop:= seq_call_local_and_loop;
-    //
-    last_list_current := list_current;
-    last_index        := list_current.index;
-  );
-  
-  - get_last_value rec:EXPR :EXPR <-
-  ( + result:EXPR;
-    + val:EXPR;
-    + rd:READ;
-    + rd_loc:READ_LOCAL;
-    + wrt_slot:WRITE_SLOT;
-    + l:LOCAL;
-    + g:SLOT_DATA;
-    + is_rec_ok:BOOLEAN;
-    + my_require_count:INTEGER;
-    + pb:PROFIL_BLOCK;
-    + i:INSTR;
-    
-    ((! PROFIL.mode_recursive) && {loop_invariant = NULL} && {last_write != NULL}).if {
-      
-      my_require_count := require_count;
-      (rec != NULL).if {
-	// Block exception.
-	pb ?= rec.static_type.raw;
-	((pb != NULL) && {require_list != NULL}).if {
-	  rd_loc ?= rec;
-	  l      := rd_loc.local;
-	  wrt_slot ?= require_first;
-	  rd_loc ?= wrt_slot.receiver;
-	  (rd_loc.local = l).if {	      
-	    my_require_count := 1;
-	  } else {
-	    my_require_count := 0;
-	  };
-	  (require_list.lower).to (require_list.upper) do { j:INTEGER;
-	    wrt_slot ?= require_list.item j;
-	    rd_loc   ?= wrt_slot.receiver;
-	    (rd_loc.local = l).if {	      
-	      my_require_count := my_require_count + 1;
-	    };
-	  };
-	};
-      };
-      
-      (
-	(
-	  (last_seq_call_and_loop = seq_call_and_loop) && 
-	  {is_seq_list last_list_current}
-	) || {my_require_count = 1}
-      ).if {
-	// Receiver test.
-	(rec = NULL).if {
-	  is_rec_ok := TRUE;	
-	}.elseif {rec.is_constant} then {	
-	  wrt_slot ?= last_write;
-	  is_rec_ok := rec == wrt_slot.receiver;
-	} else {
-	  rd ?= rec;
-	  (rd != NULL).if {
-	    l ?= rd.variable;
-	    g ?= rd.variable;
-	    wrt_slot ?= last_write;
-	    rd ?= wrt_slot.receiver;
-	    is_rec_ok := (rd != NULL) && {
-	      (	      		
-		{l = rd.variable} && {is_seq_list last_list_current} && {
-		  (
-		    (l.last_seq != NULL) && {l.last_seq.last_write != NULL} && 
-		    {l.last_seq.last_seq_index < last_seq_index} &&
-		    {last_seq_call_local_and_loop = seq_call_local_and_loop}
-		  ) || {l.require_count <= 1} || {l.style = ' '}
-		}
-	      ) || 
-	      {
-		{g = rd.variable} && {g.style = '-'} && {
-		  (
-		    (g.last_write != NULL) && {g.last_seq_index < last_seq_index} &&
-		    {last_seq_call_and_loop = seq_call_and_loop} && 
-		    {is_seq_list (g.last_list_current)}
-		  ) || {g.require_count = 1}
-		}
-	      }
-	    };	    
-	  };
-	};
-	(is_rec_ok).if {
-	  val := last_write.value;
-	  rd  ?= val;
-	  (rd = NULL).if {
-	    l := NULL;
-	    g := NULL;	    
-	  } else {
-	    l ?= rd.variable;
-	    g ?= rd.variable;
-	  };
-	  (
-	    ( // Constant propagation.
-	      val.is_constant
-	    ) || 
-	    { // Local propagation.	      
-	      (l != NULL) && {is_seq_list last_list_current} && {				
-		(
-		  (l.last_seq != NULL) && {l.last_seq.last_write != NULL} && 
-		  {l.last_seq.last_seq_index < last_seq_index} &&
-		  {last_seq_call_local_and_loop = seq_call_local_and_loop}
-		) || {l.require_count <= 1} || {l.style = ' '}
-	      }
-	    } ||
-	    { // Global propagation.
-	      (g != NULL) && {g.style = '-'} && {
-		(
-		  (g.last_write != NULL) && {g.last_seq_index < last_seq_index} && 
-		  {last_seq_call_and_loop = seq_call_and_loop} &&
-		  {is_seq_list (g.last_list_current)}
-		) || {g.require_count = 1}
-	      }
-	    }
-	  ).if {	  
-	    (rec != NULL).if {
-	      rec.remove;
-	    };	    	    
-	    result := val.my_copy;
-	  }.elseif {
-	    // Propagation step by step.
-	    (last_seq_or_and = seq_or_and) &&
-	    {ensure_count = 1} &&
-	    {list_current.index > list_current.lower} && 
-	    {list_current.item (list_current.index - 1) = last_write} 
-	  } then {    	  	    
-	    (rec != NULL).if {
-	      rec.remove;
-	      wrt_slot ?= last_write;
-	      wrt_slot.receiver.remove;
-	    };
-	    unwrite last_write;
-	    list_current.put NOP to (list_current.index - 1);
-	    result := val;
-	  }.elseif {
-	    (rec != NULL) && {is_seq_list last_list_current} && 
-	    {my_require_count = 1} && {ensure_count = 1} &&
-	    {last_index.in_range (last_list_current.lower) to (last_list_current.upper)} &&
-	    {last_list_current.item last_index = last_write} 
-	  } then {
-	    // Local conversion.	    
-	    l := type.get_temporary position;
-	    i := l.write (last_write.position) value val;
-	    last_list_current.put i to last_index;
-	    result := l.read (rec.position);
-	    //	    
-	    rec.remove;
-	    wrt_slot ?= last_write;
-	    wrt_slot.receiver.remove;
-	    unwrite last_write;	    
-	  };
-	};
-      };      
-    };
-    result
-  );
-  
-  //
-  // Constructeur.
-  //
-  
-  - create b:SLOT type t:TYPE_FULL :SELF <-
-  ( 
-    create (b.position) name (b.name) style (b.style) base b type t
-  );
-  
-  - create pos:POSITION name n:STRING_CONSTANT 
-  style s:CHARACTER base b:SLOT type t:TYPE_FULL :SELF <-
-  // BSBS: N'est plus utilise' !!!
-  ( + result:SELF;
-    result := clone;
-    result.make pos name n style s base b type t;
-    result
-  );
-
-  - make pos:POSITION name n:STRING_CONSTANT style s:CHARACTER base b:SLOT type t:TYPE_FULL <-
-  ( + tmp:TYPES_TMP;
-    parent_slot := b;
-    //
-    position    := pos;
-    name        := n;
-    style       := s;
-    intern_name := ALIAS_STR.get_intern name;
-    //    
-    type := t;      
-    (is_static).if {
-      tmp := TYPES_TMP.new;      
-      tmp.add (type.raw);
-      type_list := tmp.to_types;
-    } else {
-      type_list := TYPES_TMP.types_empty;
-    };
-    ? {type != NULL};            
-  );
-    
-  //
-  // Context
-  //  
-  
-  + value:LIST;
-  
-  - init <-
-  ( + self_var:LOCAL;
-    + val,rec:EXPR;
-    + wrt:WRITE;
-        
-    // BSBS: Dois être differe et linear => mettre a plat!!!
-    // Il faut le rentrer dans le model des NODEs...
-    ((value = NULL) && {(base_slot.affect != '<') || {Self = slot_id}}).if {                  
-      // Context.      
-      //old_data := data_current;
-      //(old_data = data_tmp).if {
-      //  crash_with_message "SLOT_DATA : Context en cascade !!! (à faire)";
-      //};
-      //data_current := data_tmp;
-      //data_current.set_self (receiver_type.default.to_strict);
-      //data_current.set_generic receiver_type;
-      //
-      not_yet_implemented;
-      value := list_current;      
-      (Self = slot_id).if {
-	val := PROTOTYPE_CST.create position type type;
-      } else {
-	// Self argument.
-	self_var := LOCAL.create position name (ALIAS_STR.variable_self) 
-	style '+' type (receiver_type.default);
-	stack_local.add_last self_var;
-	val := PROTOTYPE_CST.create position type (receiver_type.default);
-	wrt := self_var.write position value val;
-	list_current.add_last wrt;      
-	// Code.
-	(base_slot.value = NULL).if {	  	  	  
-	  val := type.default_value position;
-	} else {
-	  val := base_slot.value.to_run_expr;
-	};
-	val := val.check_type type with position;		
-      };      
-      (style = '+').if {
-	rec := PROTOTYPE_CST.create position type (receiver_type.default);
-      };      
-      (debug_level_option != 0).if {
-	list_current.add_last (
-	  PUSH.create position context context_main first FALSE 
-	);
-      };
-      wrt := write position with rec value val;
-      list_current.add_last wrt;    
-      list_current.add_last (PROTOTYPE_CST.create position type (TYPE_VOID.default)); // BSBS: Alias
-      // Context.
-      //data_current := old_data;
-    };
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute <-
-  ( + lst:FAST_ARRAY[SLOT];
-    + slot:SLOT_DATA;
-    + s:SLOT;
-    + val:LIST;
-    + old_list_current:LIST;
-    //+ old_profil_current:PROFIL_SLOT;
-    + insert_index:INTEGER;
-    
-    val := value;
-    value := NULL;    
-    insert_index := list_main.index;
-    list_main.add val to insert_index;
-    
-    (type.is_expanded).if {      
-      lst := type.slot_run;
-      (lst != NULL).if {
-	(lst.lower).to (lst.upper) do { j:INTEGER;
-	  s := lst.item j;
-	  (s.style = '+').if {
-	    slot := s.slot_data_intern;	    
-	    ((slot != NULL) &&  {slot.value != NULL}).if {
-	      slot.execute;
-	    };
-	    slot := s.slot_id;
-	    ((slot != NULL) &&  {slot.value != NULL}).if {
-	      slot.execute;
-	    };
-	  };
-	};
-      };     
-    };
-      
-    old_list_current   := list_current;
-    //old_profil_current := profil_current;
-    list_current   := NULL;
-    //profil_current := NULL;
-        
-    val.execute_link;
-    list_main.inc_index;
-      
-    list_current   := old_list_current;
-    //profil_current := old_profil_current;        
-  );  
-
-  //
-  // Genere
-  //
-    
-  - genere buffer:STRING <-
-  (     
-    type.genere_declaration buffer;
-    buffer.add_last ' ';
-    type.genere_star_declaration buffer;
-    buffer.append intern_name;    
-    buffer.append ";\n";
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append intern_name;     
-    buffer.add_last ' ';
-    buffer.add_last ':';
-    type.display buffer;    
-  );    
-  
-  - display_all <-
-  ( 
-    string_tmp.clear;
-    display string_tmp;
-    string_tmp.print;
-  );
-  
-Section VARIABLE
-  
-  - new_read p:POSITION with r:EXPR :READ <-   
-  ( + result:READ;
-    (style = '-').if {
-      ? {r = NULL};
-      result := READ_GLOBAL.create p with Self;
-    } else {
-      ? {r != NULL};
-      result := READ_SLOT.create p with (r,Self);
-    };
-    result
-  );
-  
-  - new_write p:POSITION with r:EXPR value v:EXPR :WRITE <-
-  ( + result:WRITE;
-    (style = '-').if {
-      ? {r = NULL};
-      result := WRITE_GLOBAL.create p with v in Self;
-    } else {
-      ? {r != NULL};
-      result := WRITE_SLOT.create p with v in (r,Self);
-    };
-    result
-  );
-  
-  /*
-  - new_access r:EXPR :ACCESS <- 
-  ( + result:ACCESS;
-        
-    (style = '-').if {
-      result := ACCESS_GLOBAL.create Self;
-    } else {
-      result := ACCESS_SLOT.create Self with r;
-    };
-    result
-  );
-*/
-  
\ No newline at end of file
diff --git a/src/variable/section_.li b/src/variable/section_.li
deleted file mode 100644
index 724390f..0000000
--- a/src/variable/section_.li
+++ /dev/null
@@ -1,173 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SECTION_;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Test Section protection";
-  
-Section Inherit
-  
-  - parent_any:ANY := ANY;
-  
-Section Public
-
-  + name:STRING_CONSTANT;
-  
-  + type_list:FAST_ARRAY[ITM_TYPE_MONO];
-  
-  //
-  // Creation.
-  // 
-
-  - get_name n:STRING_CONSTANT :SECTION_ <-
-  ( + result:SECTION_;
-    
-    result := bucket_name.fast_reference_at n;
-    (result = NULL).if {
-      result := clone;
-      result.make n list NULL;
-      bucket_name.fast_put result to n;
-    };
-    result
-  );
-  
-  - get_type_list l:FAST_ARRAY[ITM_TYPE_MONO] :SECTION_ <-
-  ( + result:SECTION_;
-    
-    result := bucket_list.fast_reference_at l;
-    (result = NULL).if {
-      result := clone;
-      result.make NULL list l;
-      bucket_list.fast_put result to l;
-    };
-    result    
-  );
-  
-  //
-  // Consultation
-  //
-  
-  - is_mapping:BOOLEAN   <- name = ALIAS_STR.section_mapping;
-  
-  - is_private:BOOLEAN   <- name = ALIAS_STR.section_private;
-  
-  - is_public:BOOLEAN    <- name = ALIAS_STR.section_public;
-  
-  - is_header:BOOLEAN    <- name = ALIAS_STR.section_header;
-  
-  - is_inherit:BOOLEAN   <- name = ALIAS_STR.section_inherit;
-  
-  - is_insert:BOOLEAN    <- name = ALIAS_STR.section_insert;
-  
-  - is_inherit_or_insert:BOOLEAN <- (is_inherit) || {is_insert};
-  
-  - is_interrupt:BOOLEAN <- name = ALIAS_STR.section_interrupt;
-
-  - is_directory:BOOLEAN <- name = ALIAS_STR.section_directory;
-  
-  - is_external:BOOLEAN  <- name = ALIAS_STR.section_external;
-  
-  - is_private_style:BOOLEAN <-
-  (
-    ? {! is_header};
-    (! is_public) && {type_list = NULL}
-  );
-  
-  //
-  // Display.
-  //
-  
-  - append_in buf:STRING <-
-  ( 
-    (name != NULL).if {
-      buf.append name;
-    } else {
-      (type_list.lower).to (type_list.upper - 1) do { j:INTEGER;
-        type_list.item j.append_in buf;
-        buf.add_last ',';
-        buf.add_last ' ';	
-      };      
-      type_list.last.append_in buf;
-    };
-  );
-  
-  //
-  // Access test.
-  //
-  
-  - access me:TYPE with client:TYPE :BOOLEAN <-
-  ( + result:BOOLEAN;
-    + j:INTEGER;
-    + ts:ITM_TYPE_SIMPLE;
-    ? {! is_header};
-    
-    ((me = client) || {is_public} || {is_external}).if {
-      result := TRUE;
-    }.elseif {is_directory} then {
-      string_tmp.copy (me.prototype.filename);
-      j := string_tmp.last_index_of '/';
-      string_tmp.keep_head j;      
-      result := client.prototype.filename.has_prefix string_tmp;
-    }.elseif {type_list != NULL} then {
-      j := type_list.lower;
-      {(j <= type_list.upper) && {! result}}.while_do {
-	ts ?= type_list.item j;
-	result := client.is_sub_type_with_name (ts.name); 	
-	j := j + 1;
-      };
-    };
-    result
-  );
-  
-Section Public
-  
-  - hash_code:INTEGER <-
-  ( + result:INTEGER;
-    
-    (name != NULL).if {      
-      result := name.hash_code;
-    } else {
-      result := type_list.hash_code;
-    };
-    result
-  );
-
-Section SECTION_
-  
-  // BSBS: Tu devrais créer deux sous-proto section_name, section_list.
-  
-  - bucket_name:HASHED_DICTIONARY[SECTION_,STRING_CONSTANT] := 
-  HASHED_DICTIONARY[SECTION_,STRING_CONSTANT].create;
-  
-  - bucket_list:HASHED_DICTIONARY[SECTION_,FAST_ARRAY[ITM_TYPE_MONO]] := 
-  HASHED_DICTIONARY[SECTION_,FAST_ARRAY[ITM_TYPE_MONO]].create;
-  
-  - make n:STRING_CONSTANT list t:FAST_ARRAY[ITM_TYPE_MONO] <-
-  (
-    name      := n;
-    type_list := t;
-  );
-  
\ No newline at end of file
diff --git a/src/variable/slot.li b/src/variable/slot.li
deleted file mode 100644
index ce24408..0000000
--- a/src/variable/slot.li
+++ /dev/null
@@ -1,182 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SLOT;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for slot runnable";
-  
-Section Inherit
-  
-  + parent_itm_slot:ITM_SLOT := ITM_SLOT;
-  
-Section Public
-  
-  - common_slot:SLOT <- Self;
-  
-  + slot_id:SLOT_DATA;
-  
-  + receiver_type:TYPE;
-  
-  //
-  // Creation.
-  //
-  
-  - create s:ITM_SLOT type t:TYPE :SLOT <-
-  ( + result:SLOT;
-    
-    result := clone;
-    result.make s type t    
-  );
-  
-  - make s:ITM_SLOT type t:TYPE :SLOT <-
-  ( + result:SLOT;
-        
-    parent_itm_slot := s;
-    receiver_type := t;
-    //
-    (affect = '<').if {
-      // Code.      
-      result := slot_code_intern := SLOT_CODE.create Self with value;      
-    } else {
-      // Data      
-      create_slot_data;
-      result := slot_data_intern;
-    };    
-    //
-    result
-  );
-    
-  //
-  // Style.
-  //
-  
-  - lower_style:INTEGER <-
-  ( + result:INTEGER;
-    (slot_data_intern = NULL).if {
-      result := 1;
-    };
-    result
-  );
-  
-  - upper_style:INTEGER <- 
-  ( + result:INTEGER;
-    (slot_code_intern != NULL).if {      
-      (slot_code_list != NULL).if {
-	result := slot_code_list.upper + 2;
-      } else {
-	result := 1;
-      };
-    };
-    result
-  );
-  
-  - slot_data:SLOT_DATA <-
-  (     
-    (slot_data_intern = NULL).if {
-      create_slot_data;      
-      (slot_id = NULL).if {
-	slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 1.default);
-	slot_id.init;
-      };
-    };
-    slot_data_intern
-  );
-    
-  - slot_code idx:INTEGER :SLOT_CODE <-
-  ( + result:SLOT_CODE;
-    
-    (idx = 1).if {
-      result := slot_code_intern;
-    } else {
-      result := slot_code_list.item (idx-2);
-    };
-    result
-  );
-
-  - add_style v:ITM_CODE :INTEGER <-
-  ( + slot:SLOT_CODE;
-    + result:INTEGER;
-           
-    slot := SLOT_CODE.create common_slot with v;
-    (slot_code_intern = NULL).if {
-      slot_code_intern := slot;
-      slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 0.default);
-      slot_id.init;
-      result := 1;
-    } else {
-      (slot_code_list = NULL).if {
-	slot_code_list := FAST_ARRAY[SLOT_CODE].create_with_capacity 1;
-      };
-      slot_code_list.add_last slot;
-      (slot_id = NULL).if {
-	slot_id := SLOT_DATA.create common_slot type (TYPE_ID.get_index 1.default);
-	slot_id.init;
-      };
-      result := slot_code_list.upper + 2;
-    };    
-    result
-  );
-
-  //
-  // Display.
-  //
-  
-  - display_all <-
-  (
-    (lower_style).to (upper_style) do { j:INTEGER;
-      item_style j.display_all;
-    };
-  );
-
-Section Public
-  
-  + slot_data_intern:SLOT_DATA; // Index 0
-  + slot_code_intern:SLOT_CODE; // Index 1
-  
-  + slot_code_list:FAST_ARRAY[SLOT_CODE]; // Index x+2
-  + slot_data_list:FAST_ARRAY[SLOT_DATA]; // Vector data slot  
-  
-  - create_slot_data <-
-  ( + typ:TYPE_FULL;
-    + tm:ITM_TYPE_MULTI;            
-    + ts:ITM_TYPE_MONO;
-    
-    tm ?= result_type;    
-    (tm != NULL).if {            
-      slot_data_list := FAST_ARRAY[SLOT_DATA].create_with_capacity (tm.count-1);
-      (tm.lower).to (tm.upper-1) do { k:INTEGER;	
-	typ := tm.item k.to_run_for receiver_type;
-	slot_data_list.add_last (
-	  SLOT_DATA.create common_slot type typ
-	);
-      };      
-      typ := tm.last.to_run_for NULL;
-    } else {
-      ts ?= result_type;
-      typ := ts.to_run_for receiver_type;
-    };
-    slot_data_intern := SLOT_DATA.create common_slot type typ;    
-  );
\ No newline at end of file
diff --git a/src/variable/slot_code.li b/src/variable/slot_code.li
deleted file mode 100644
index 2fb6b6c..0000000
--- a/src/variable/slot_code.li
+++ /dev/null
@@ -1,326 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name      := SLOT_CODE;
-
-  - copyright := "2003-2007 Benoit Sonntag";
-
-  
-  - author    := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment   := "Slot with method";
-  
-Section Inherit
-  
-  + parent_slot:SLOT := SLOT;
-  
-Section Public
-  
-  - common_slot:SLOT <- parent_slot;
-
-  + index:INTEGER;
-  
-  //
-  // Static and Dynamic profil.
-  //
-  
-  + value:ITM_CODE;
-         
-  //
-  // Dynamic profil.
-  //
-
-  + profil:FAST_ARRAY[PROFIL_SLOT];
-    
-  - get_profil args:FAST_ARRAY[EXPR] self type_self:TYPE_FULL :(PROFIL, FAST_ARRAY[WRITE]) <-
-  [
-    -? {type_self != NULL};
-  ]
-  ( + result:PROFIL_SLOT;    
-    + res_lst:FAST_ARRAY[WRITE];
-    + pro:PROFIL_SLOT;
-    + j,i:INTEGER;
-    + loc:LOCAL;
-    + typ:TYPE_FULL;
-    + typ_block:PROFIL_BLOCK;
-    + typ_list:TYPES_TMP;
-    + pro_list:FAST_ARRAY[PROFIL_SLOT];    
-    + is_new:BOOLEAN;
-        
-    // Block Detect.
-    j := args.lower;
-    {(j <= args.upper) && {(typ = NULL) || {! typ.raw.is_block}}}.while_do {
-      typ := args.item j.static_type;
-      (typ.raw.is_block).if {
-	typ_list := TYPES_TMP.new;
-	args.item j.get_type typ_list;
-	(typ_list.first = TYPE_NULL).if {
-	  (typ_list.count > 1).if {
-	    typ_block ?= typ_list.second;
-	  } else {
-	    typ := NULL;
-	  };
-	} else {
-	  typ_block ?= typ_list.first;
-	};
-	typ_list.free;
-      };
-      j := j + 1;
-    };
-
-    (typ_block != NULL).if {
-      pro_list := typ_block.profil_list;
-      i := pro_list.lower;
-      {(i <= pro_list.upper) && {result = NULL}}.while_do {
-	pro := pro_list.item i;
-	(
-	  (pro.slot = Self) && {
-	    (pro.type_self = NULL) || {pro.type_self == type_self}
-	  } // BSBS: il fo aussi tester les args comme plus bas...
-	).if {
-	  result := pro; // Rmq. : It's limit for dispatching (See...)
-	};
-	i := i + 1;
-      };
-            
-      (result = NULL).if {
-	result := PROFIL_SLOT.clone;	
-	result.set_context_sensitive;
-	typ_block.profil_list.add_last result;
-	is_new := TRUE;	
-      };
-    } else {	    
-      // Select classic Profil (no block).
-      j := profil.lower;      
-      {(j <= profil.upper) && {result = NULL}}.while_do {
-	pro := profil.item j;					
-	((pro.type_self = NULL) || {pro.type_self == type_self}).if {
-	  result := pro;
-	  i := args.lower + 1;
-	  {(i <= args.upper) && {result != NULL}}.while_do {
-	    typ := args.item i.static_type;
-	    loc := pro.argument_list.item i;	    	    
-	    (
-	      (loc != NULL) && 
-	      {(typ.is_expanded) || {loc.type.is_expanded       }} && 
-	      {typ !== loc.type} && {loc.type.raw != type_boolean}
-	    ).if {
-	      result := NULL;	      	      	      
-	    };
-	    i := i + 1;    
-	  };
-	};
-	j := j + 1;
-      };
-      (result = NULL).if {	
-	result := PROFIL_SLOT.clone;		
-	profil.add_last result;
-	((id_section.is_external) && {profil.count > 1}).if {
-	  semantic_error (position,"Polymorphic External slot is not possible.");
-	};
-	is_new := TRUE;
-      };
-    };
-    (is_new).if {            
-      res_lst := result.make Self with (type_self, args) verify (profil.count = 1);      
-    } else {
-      res_lst := result.write_argument args;
-    };
-    result, res_lst
-  );
-
-  //
-  // Constructeur.
-  //
-  
-  - create base:SLOT with val:ITM_CODE :SLOT_CODE <-
-  ( + result:SELF;
-    result := clone;
-    result.make base with val;
-    result
-  );
-  
-  - make base:SLOT with val:ITM_CODE <-
-  ( 
-    parent_slot := base;
-    value := val;
-    profil := FAST_ARRAY[PROFIL_SLOT].create_with_capacity 1;    
-  );
-      
-  //
-  // Execute.
-  //
-  
-  + last_type_contract:TYPE; 
-  + is_require:BOOLEAN;
-  
-  - previous_contract:ITM_LIST <-
-  ( + slot:ITM_SLOT;
-    + contract:ITM_LIST;
-    
-    (is_require).if {
-      slot := last_type_contract.search_require name;
-    } else {
-      slot := last_type_contract.search_ensure name;
-    };
-    (slot != NULL).if {
-      (is_require).if {
-	contract := slot.require;
-      } else {
-	contract := slot.ensure;
-      };
-      last_type_contract := last_type_contract.last_type_contract;
-    };          
-    contract
-  );
-  
-  - create_code is_first:BOOLEAN <-
-  ( + contract:ITM_LIST;
-    + slot:ITM_SLOT; 
-    + result:EXPR;
-    + mul:EXPR_MULTIPLE;
-    + nb_result_list:INTEGER;
-                
-    verify := is_first;
-    // Require
-    is_require := TRUE;
-    contract := require;
-    last_type_contract := receiver_type;
-    (contract = NULL).if {
-      slot := receiver_type.search_require name;
-      (slot != NULL).if {
-	(verify).if {
-	  is_equal_profil slot;
-	};
-	contract := slot.require;
-	last_type_contract := receiver_type.last_type_contract;
-      };      
-    };
-    (contract != NULL).if {      
-      contract.to_run_expr;
-    };
-    
-    // Body.
-    result := value.to_run_expr;
-    (result.static_type.raw != TYPE_VOID).if {      
-      mul ?= result;
-      (mul != NULL).if {
-        nb_result_list := mul.count;
-      } else {
-        nb_result_list := 1;
-      };
-    } else {
-      list_current.add_last result;
-    };
-    (profil_slot.result_list.count != nb_result_list).if {
-      string_tmp.copy "Incorrect value result (slot:";
-      profil_slot.result_list.count.append_in string_tmp;
-      string_tmp.append ", list:";
-      nb_result_list.append_in string_tmp;
-      string_tmp.append ").";
-      semantic_error (result.position,string_tmp);
-    };
-    (nb_result_list = 1).if {
-      put_result result in (profil_slot.result_list.first);
-    }.elseif {nb_result_list > 1} then {
-      (mul.lower).to (mul.upper) do { j:INTEGER;
-        put_result (mul.item j) in (profil_slot.result_list.item j);
-      };      
-    };
-    
-    // Ensure
-    is_require := FALSE;
-    contract := ensure;
-    last_type_contract := receiver_type;
-    (contract = NULL).if {
-      slot := receiver_type.search_ensure name;
-      (slot != NULL).if {
-	(verify).if {
-	  is_equal_profil slot;
-	};
-	contract := slot.ensure;
-	last_type_contract := receiver_type.last_type_contract;
-      };      
-    };
-    (contract != NULL).if {            
-      contract.to_run_expr;
-    };
-    // Result.
-    (id_section.is_interrupt).if {
-      list_current.add_first (
-        EXTERNAL_C.create position text "__BEGIN_INTERRUPT__" access NULL
-        persistant TRUE type (TYPE_VOID.default)
-      );
-      list_current.add_last (
-        EXTERNAL_C.create position text "__END_INTERRUPT__" access NULL
-        persistant TRUE type (TYPE_VOID.default)
-      );
-    };      
-  );
-  
-  - remove_profil prof:PROFIL_SLOT <-
-  ( + idx:INTEGER;
-    
-    idx := profil.fast_first_index_of prof;
-    (idx <= profil.upper).if { // Else, This profil is in BLOCK      
-      profil.remove idx;
-    };
-  );
-    
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append name;
-    (argument_list.lower).to (argument_list.upper) do { j:INTEGER;       
-      buffer.add_last ' ';
-      argument_list.item j.display buffer;
-    }; 
-    buffer.add_last ' ';
-    buffer.add_last ':';
-    type.display buffer;    
-  );    
-  
-  - display_all <-
-  ( + prof:PROFIL;
-    
-    string_tmp.clear;    
-    (profil != NULL).if {
-      (profil.upper).downto (profil.lower) do { k:INTEGER;
-	prof := profil.item k;
-	prof.display_all string_tmp;
-      };
-    };
-    string_tmp.print;
-  );
-  
-Section Private
-  
-  - put_result e:EXPR in v:LOCAL <-
-  ( + val:EXPR;
-    + wrt:WRITE;
-    val := e.check_type (v.type) with (v.position);
-    wrt := v.write position value val;
-    list_current.add_last wrt;    
-  );
-  
\ No newline at end of file
diff --git a/src/variable/slot_data.li b/src/variable/slot_data.li
deleted file mode 100644
index cf70eb0..0000000
--- a/src/variable/slot_data.li
+++ /dev/null
@@ -1,514 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := SLOT_DATA;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Slot with data style";
-  
-Section Inherit
-  
-  + parent_variable:Expanded VARIABLE;
-
-  + parent_slot:SLOT := SLOT;      
-  
-Section Public
-  
-  // BUG COMPILO 0.11
-  
-  - id_section:SECTION_ <- 
-  ( + result:SECTION_;
-    
-    (parent_slot != NULL).if {
-      result := parent_slot.id_section;
-    } else {
-      result := SECTION_.get_name (ALIAS_STR.section_private);
-    };
-    result
-  );
-
-  - receiver_type:TYPE <-
-  ( + result:TYPE;
-    
-    (parent_slot != NULL).if {
-      result := parent_slot.receiver_type;
-    } else {
-      result := type_block;
-    };
-    result
-  );
-  
-  //
-  
-  - common_slot:SLOT <- parent_slot;
-  
-  //
-  // Sequence optimizer
-  //
-  
-  + last_write:WRITE;
-  + last_seq_index:UINTEGER_32;
-  + last_seq_or_and:UINTEGER_32;  
-  + last_seq_call_and_loop:UINTEGER_32;
-  + last_seq_call_local_and_loop:UINTEGER_32;
-    
-  + last_list_current:LIST;
-  + last_index:INTEGER;
-
-  - is_invariant rec:EXPR :BOOLEAN <-
-  (
-    ((rec = NULL) || {rec.is_invariant}) &&
-    {last_write != NULL} &&
-    {loop_seq_call_and_loop = seq_call_and_loop} &&
-    {last_seq_index <= loop_seq_index}
-  );
-  
-  - reset_last_write w:WRITE <-
-  (  
-    (last_write = w).if {
-      last_write := NULL;
-    };
-  );
-  
-  - set_read <-
-  (
-    last_index := -1;
-  );
-  
-  - get_last_index:INTEGER <- last_index;
-  
-  - set_write w:WRITE <-
-  (                
-    /* A FAIRE
-    (
-      (! PROFIL.mode_recursive) &&
-      {style = '-'} &&
-      {last_write != NULL} &&      
-      {last_index < list_current.index} &&
-      {last_sequence = sequence_global}      
-    ).if {       
-      ? {list_current.item last_index = last_write};
-      list_current.put (last_write.value) to last_index;
-      unwrite last_write;      
-      new_execute_pass;
-    };    
-    */
-    last_write                  := w;
-    last_seq_index              := seq_index;
-    last_seq_or_and             := seq_or_and;    
-    last_seq_call_and_loop      := seq_call_and_loop;
-    last_seq_call_local_and_loop:= seq_call_local_and_loop;
-    //
-    last_list_current := list_current;
-    last_index        := list_current.index;
-  );
-  
-  - get_last_value rec:EXPR :EXPR <-
-  ( + result:EXPR;
-    + val:EXPR;
-    + rd:READ;
-    + rd_loc:READ_LOCAL;
-    + wrt_slot:WRITE_SLOT;
-    + l:LOCAL;
-    + g:SLOT_DATA;
-    + is_rec_ok:BOOLEAN;
-    + my_require_count:INTEGER;
-    + pb:PROFIL_BLOCK;
-    + i:INSTR;
-    
-    ((! PROFIL.mode_recursive) && {loop_invariant = NULL} && {last_write != NULL}).if {
-      
-      my_require_count := require_count;
-      (rec != NULL).if {
-	// Block exception.
-	pb ?= rec.static_type.raw;
-	((pb != NULL) && {require_list != NULL}).if {
-	  rd_loc ?= rec;
-	  l      := rd_loc.local;
-	  wrt_slot ?= require_first;
-	  rd_loc ?= wrt_slot.receiver;
-	  (rd_loc.local = l).if {	      
-	    my_require_count := 1;
-	  } else {
-	    my_require_count := 0;
-	  };
-	  (require_list.lower).to (require_list.upper) do { j:INTEGER;
-	    wrt_slot ?= require_list.item j;
-	    rd_loc   ?= wrt_slot.receiver;
-	    (rd_loc.local = l).if {	      
-	      my_require_count := my_require_count + 1;
-	    };
-	  };
-	};
-      };
-      
-      (
-	(
-	  (last_seq_call_and_loop = seq_call_and_loop) && 
-	  {is_seq_list last_list_current}
-	) || {my_require_count = 1}
-      ).if {
-	// Receiver test.
-	(rec = NULL).if {
-	  is_rec_ok := TRUE;	
-	}.elseif {rec.is_constant} then {	
-	  wrt_slot ?= last_write;
-	  is_rec_ok := rec == wrt_slot.receiver;
-	} else {
-	  rd ?= rec;
-	  (rd != NULL).if {
-	    l ?= rd.variable;
-	    g ?= rd.variable;
-	    wrt_slot ?= last_write;
-	    rd ?= wrt_slot.receiver;
-	    is_rec_ok := (rd != NULL) && {
-	      (	      		
-		{l = rd.variable} && {is_seq_list last_list_current} && {
-		  (
-		    (l.last_seq != NULL) && {l.last_seq.last_write != NULL} && 
-		    {l.last_seq.last_seq_index < last_seq_index} &&
-		    {last_seq_call_local_and_loop = seq_call_local_and_loop}
-		  ) || {l.require_count <= 1} || {l.style = ' '}
-		}
-	      ) || 
-	      {
-		{g = rd.variable} && {g.style = '-'} && {
-		  (
-		    (g.last_write != NULL) && {g.last_seq_index < last_seq_index} &&
-		    {last_seq_call_and_loop = seq_call_and_loop} && 
-		    {is_seq_list (g.last_list_current)}
-		  ) || {g.require_count = 1}
-		}
-	      }
-	    };	    
-	  };
-	};
-	(is_rec_ok).if {
-	  val := last_write.value;
-	  rd  ?= val;
-	  (rd = NULL).if {
-	    l := NULL;
-	    g := NULL;	    
-	  } else {
-	    l ?= rd.variable;
-	    g ?= rd.variable;
-	  };
-	  (
-	    ( // Constant propagation.
-	      val.is_constant
-	    ) || 
-	    { // Local propagation.	      
-	      (l != NULL) && {is_seq_list last_list_current} && {				
-		(
-		  (l.last_seq != NULL) && {l.last_seq.last_write != NULL} && 
-		  {l.last_seq.last_seq_index < last_seq_index} &&
-		  {last_seq_call_local_and_loop = seq_call_local_and_loop}
-		) || {l.require_count <= 1} || {l.style = ' '}
-	      }
-	    } ||
-	    { // Global propagation.
-	      (g != NULL) && {g.style = '-'} && {
-		(
-		  (g.last_write != NULL) && {g.last_seq_index < last_seq_index} && 
-		  {last_seq_call_and_loop = seq_call_and_loop} &&
-		  {is_seq_list (g.last_list_current)}
-		) || {g.require_count = 1}
-	      }
-	    }
-	  ).if {	  
-	    (rec != NULL).if {
-	      rec.remove;
-	    };	    	    
-	    result := val.my_copy;
-	  }.elseif {
-	    // Propagation step by step.
-	    (last_seq_or_and = seq_or_and) &&
-	    {ensure_count = 1} &&
-	    {list_current.index > list_current.lower} && 
-	    {list_current.item (list_current.index - 1) = last_write} 
-	  } then {    	  	    
-	    (rec != NULL).if {
-	      rec.remove;
-	      wrt_slot ?= last_write;
-	      wrt_slot.receiver.remove;
-	    };
-	    unwrite last_write;
-	    list_current.put NOP to (list_current.index - 1);
-	    result := val;
-	  }.elseif {
-	    (rec != NULL) && {is_seq_list last_list_current} && 
-	    {my_require_count = 1} && {ensure_count = 1} &&
-	    {last_index.in_range (last_list_current.lower) to (last_list_current.upper)} &&
-	    {last_list_current.item last_index = last_write} 
-	  } then {
-	    // Local conversion.	    
-	    l := type.get_temporary position;
-	    i := l.write (last_write.position) value val;
-	    last_list_current.put i to last_index;
-	    result := l.read (rec.position);
-	    //	    
-	    rec.remove;
-	    wrt_slot ?= last_write;
-	    wrt_slot.receiver.remove;
-	    unwrite last_write;	    
-	  };
-	};
-      };      
-    };
-    result
-  );
-  
-  //
-  // Constructeur.
-  //
-  
-  - create b:SLOT type t:TYPE_FULL :SELF <-
-  ( 
-    create (b.position) name (b.name) style (b.style) base b type t
-  );
-  
-  - create pos:POSITION name n:STRING_CONSTANT 
-  style s:CHARACTER base b:SLOT type t:TYPE_FULL :SELF <-
-  // BSBS: N'est plus utilise' !!!
-  ( + result:SELF;
-    result := clone;
-    result.make pos name n style s base b type t;
-    result
-  );
-
-  - make pos:POSITION name n:STRING_CONSTANT style s:CHARACTER base b:SLOT type t:TYPE_FULL <-
-  ( + tmp:TYPES_TMP;
-    parent_slot := b;
-    //
-    position    := pos;
-    name        := n;
-    style       := s;
-    intern_name := ALIAS_STR.get_intern name;       
-    //    
-    type := t;      
-    (is_static).if {
-      tmp := TYPES_TMP.new;      
-      tmp.add (type.raw);
-      type_list := tmp.to_types;
-    } else {
-      type_list := TYPES_TMP.types_empty;
-    };
-    ? {type != NULL};            
-  );
-    
-  //
-  // Context
-  //  
-  
-  + value_init:LIST;
-  
-  - init <-
-  ( + val,rec:EXPR;
-    + wrt:WRITE;    
-    + old_list:LIST;
-    + rd:ITM_READ_ARG1;
-   /* 
-    string_tmp.copy "init : ";
-    string_tmp.append name; 
-    warning_error (position,string_tmp);
-     */       
-    ((value_init = NULL) && {(affect != '<') || {Self = slot_id}}).if {
-      // Context.      
-      old_list := list_current;
-      value_init := list_current := LIST.create position;      
-      
-      (Self = slot_id).if {
-	val := PROTOTYPE_CST.create position type type;
-      } else {		
-        // Code.	
-        (value != NULL).if {
-          rd ?= value;
-          ((rd != NULL) && {rd.arg = NULL}).if {
-            rec := PROTOTYPE_CST.create position type (receiver_type.default);
-            val := rd.to_run_with_self (rec,FALSE,FALSE) args NULL;
-          } else {
-            val := value.to_run_expr;
-          };
-        } else {
-          val := type.default_value position;
-        };
-	val := val.check_type type with position;		
-      };      
-      (style = '+').if {
-	rec := PROTOTYPE_CST.create position type (receiver_type.default);
-      } else {
-        rec := NULL;
-      };
-      (debug_level_option != 0).if {
-        list_current.add_last (
-          PUSH.create position context context_main first FALSE 
-        );
-      };
-      wrt := write position with rec value val;
-      (is_zero val).if {
-        wrt.set_quiet_generation;
-      };            
-      list_current.add_last wrt;    
-      list_current.add_last (PROTOTYPE_CST.create position type (TYPE_VOID.default)); // BSBS:Alias
-      
-      list_current := old_list;
-    };
-  );
-  
-  //
-  // Execute.
-  //
-  
-  - execute <-
-  ( + lst:FAST_ARRAY[SLOT];
-    + slot:SLOT_DATA;
-    + s:SLOT;
-    + val:LIST;
-    + old_list_current:LIST;
-    //+ old_profil_current:PROFIL_SLOT;
-    + insert_index:INTEGER;
-    
-    (value_init != NULL).if {
-      val := value_init;
-      value_init := NULL;    
-      insert_index := list_main.index;
-      list_main.add val to insert_index;
-      
-      (type.is_expanded).if {      
-        lst := type.slot_run;
-        (lst != NULL).if {
-          (lst.lower).to (lst.upper) do { j:INTEGER;
-            s := lst.item j;
-            (s.style = '+').if {
-              slot := s.slot_data_intern;	    
-              (slot != NULL).if {
-                slot.execute;
-              };
-              slot := s.slot_id;
-              (slot != NULL).if {
-                slot.execute;
-              };
-            };
-          };
-        };     
-      };
-      
-      old_list_current   := list_current;
-      //old_profil_current := profil_current;
-      list_current   := NULL;
-      //profil_current := NULL;
-      
-      val.execute;
-      list_main.inc_index;
-      
-      list_current   := old_list_current;
-      //profil_current := old_profil_current;        
-    };
-  );  
-
-  //
-  // Genere
-  //
-    
-  - genere buffer:STRING <-
-  (     
-    type.genere_declaration buffer;
-    buffer.add_last ' ';
-    type.genere_star_declaration buffer;
-    buffer.append intern_name;    
-    buffer.append ";\n";
-  );
-  
-  //
-  // Display.
-  //
-  
-  - display buffer:STRING <-
-  (
-    buffer.append intern_name;     
-    buffer.add_last ' ';
-    buffer.add_last ':';
-    type.display buffer;    
-  );    
-  
-  - display_all <-
-  ( 
-    string_tmp.clear;
-    display string_tmp;
-    string_tmp.print;
-  );
-  
-Section VARIABLE
-  
-  - new_read p:POSITION with r:EXPR :READ <-   
-  ( + result:READ;
-    (style = '-').if {
-      ? {r = NULL};
-      result := READ_GLOBAL.create p with Self;
-    } else {
-      ? {r != NULL};
-      result := READ_SLOT.create p with (r,Self);
-    };
-    result
-  );
-  
-  - new_write p:POSITION with r:EXPR value v:EXPR :WRITE <-
-  ( + result:WRITE;
-    (style = '-').if {
-      ? {r = NULL};
-      result := WRITE_GLOBAL.create p with v in Self;
-    } else {
-      ? {r != NULL};
-      result := WRITE_SLOT.create p with v in (r,Self);
-    };
-    result
-  );
-  
-  /*
-  - new_access r:EXPR :ACCESS <- 
-  ( + result:ACCESS;
-        
-    (style = '-').if {
-      result := ACCESS_GLOBAL.create Self;
-    } else {
-      result := ACCESS_SLOT.create Self with r;
-    };
-    result
-  );
-  */
-  - is_zero e:EXPR :BOOLEAN <-
-  ( + pro:PROTOTYPE_CST;
-    + int:INTEGER_CST;
-    (
-      pro ?= e;
-      (pro != NULL) && {
-        (pro.static_type.raw = TYPE_NULL) ||
-        {pro.static_type.raw = type_false}
-      }
-    ) || {
-      int ?= e;
-      (int != NULL) && {int.value = 0}
-    }
-  );
\ No newline at end of file
diff --git a/src/variable/variable.li b/src/variable/variable.li
deleted file mode 100644
index 4ca5a21..0000000
--- a/src/variable/variable.li
+++ /dev/null
@@ -1,406 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-//                             Lisaac Compiler                               //
-//                                                                           //
-//                   LSIIT - ULP - CNRS - INRIA - FRANCE                     //
-//                                                                           //
-//   This program is free software: you can redistribute it and/or modify    //
-//   it under the terms of the GNU General Public License as published by    //
-//   the Free Software Foundation, either version 3 of the License, or       //
-//   (at your option) any later version.                                     //
-//                                                                           //
-//   This program is distributed in the hope that it will be useful,         //
-//   but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-//   GNU General Public License for more details.                            //
-//                                                                           //
-//   You should have received a copy of the GNU General Public License       //
-//   along with this program.  If not, see <http://www.gnu.org/licenses/>.   //
-//                                                                           //
-//                     http://isaacproject.u-strasbg.fr/                     //
-///////////////////////////////////////////////////////////////////////////////
-Section Header
-  
-  + name        := VARIABLE;
-
-  - copyright   := "2003-2007 Benoit Sonntag";
-
-  
-  - author      := "Sonntag Benoit (bsonntag at loria.fr)";
-  - comment     := "Parent for all variable";
-  
-Section Inherit
-  
-  + parent_named:Expanded NAMED;
-  
-Section Public
-
-  - is_local:BOOLEAN <- FALSE;
-      
-  //
-  //
-  //
-  
-  + intern_name:STRING_CONSTANT;
-  
-  - set_intern_name n:STRING_CONSTANT <-
-  (
-    intern_name := n;
-  );
-  
-  - is_argument:BOOLEAN <- (style = ' ');
-  
-  //
-  // Type.
-  //
-
-  + type:TYPE_FULL;
-    
-  - set_type t:TYPE_FULL <-
-  (
-    ? {t != NULL};
-    type      := t;    
-  );
-  
-  - init <- deferred;
-  
-  //
-  // Typing Context.
-  //
-  
-  - is_static:BOOLEAN <- 
-  ((type.is_expanded) && {type.raw != type_boolean}) || 
-  {name = ALIAS_STR.variable_self};
-  
-  + type_list:TYPES;
-
-  + ensure_count:INTEGER;
-
-  - set_ensure_count c:INTEGER <-
-  // Necessary for `context' local, `External' argument slot and `BLOCK' manager.
-  (
-    ensure_count := c;
-  );
-  
-  + require_list:FAST_ARRAY[WRITE];
-  + require_first:WRITE;
-  - require_count:INTEGER <- 
-  ( + result:INTEGER;
-    (require_first != NULL).if {
-      (require_list != NULL).if {
-	result := 1 + require_list.count;
-      } else {
-	result := 1;
-      };
-    };
-    result
-  );
-
-  + level_type:INTEGER;
-  - level_pass:INTEGER;
-
-  - update <- 
-  (
-    level_pass := level_pass + 1; 
-  );
-  
-  // BSBS: BIG OPTIMISATION.  
-  // Les listes de types s'auto-entretien (références cyclique)
-  // Il faut absolument régler ca !!!
-  // Nous avons le même pb avec 'item' et 'put__to'
-  // Il faudrai uniformiser la chose (item et put_to travailleraient
-  // avec une variable virtuel...)
-  // Aussi, il faut que tu profite de last_write pour optimiser...
-  - get_type t:TYPES_TMP <-
-  ( + tmp_type:TYPES_TMP;
-    + typ:TYPE;
-           
-    (level_type < level_pass).if {
-      (! is_static).if {          
-	typ := type.raw;
-	(
-	  (is_executing_pass) || {
-	    (require_first != NULL)/* && 
-	    {
-	      ((typ.subtype_list = NULL) || {typ.subtype_list.count > type_list.count}) ||
-	      {typ = type_block}
-	    }*/
-	}).if {	  
-	  level_type := level_pass;
-	  tmp_type := TYPES_TMP.new;      
-          (require_first != NULL).if {	
-                        
-	    require_first.get_type tmp_type;		
-	    (require_list != NULL).if {
-	      (require_list.lower).to (require_list.upper) do { j:INTEGER;	    
-		require_list.item j.get_type tmp_type;
-	      };  
-            };                       
-	  };	  
-	  type_list := tmp_type.update type_list;
-	};
-      };
-    };    
-    t.union type_list;
-  );
-  
-  //
-  // Sequence optimizer
-  //
-
-  - reset_last_write w:WRITE <-
-  (  
-    deferred;
-  );
-  
-  - set_write w:WRITE <-
-  (                
-    deferred;
-  );
-  
-  - set_read <-
-  (
-    deferred;
-  );
-  
-  - get_last_index:INTEGER <- deferred;
-  
-  - get_last_value rec:EXPR :EXPR <-
-  ( 
-    deferred;
-    NULL
-  );
-  
-  //
-  // Writing.
-  //
-  
-  - write p:POSITION value val:EXPR :WRITE <-
-  ( 
-    write p with NULL value val
-  );
-
-  - write p:POSITION with r:EXPR value val:EXPR :WRITE <-
-  (
-    write_direct p with r value val
-  );
-    
-  - write_direct p:POSITION with r:EXPR value val:EXPR :WRITE <-
-  ( + e:WRITE;
-    + tmp_type:TYPES_TMP;    
-    
-    e := new_write p with r value val;        
-    // Update require list.
-    (require_first = NULL).if {
-      require_first := e;      
-    } else {
-      (require_list = NULL).if {
-	require_list := FAST_ARRAY[WRITE].create_with_capacity 1; 
-      };
-      require_list.add_last e;
-    };
-            
-    // Update type list.
-    ((! is_static) && {e.value != NULL} && {! is_executing_pass}).if {
-      tmp_type := TYPES_TMP.new;
-      (type_list != NULL).if {
-	tmp_type.union type_list;
-      };	
-      e.value.get_type tmp_type;       
-      type_list := tmp_type.update type_list;		
-    };         
-    
-    e.set_create;
-    /*
-    (intern_name == "Self__GB").if {
-      "Creat :".print;
-      e.debug_display;
-      warning_error (e.position,"LA");
-    };
-    */
-    
-    e
-  );
-    
-  - unwrite e:WRITE <-
-  ( + idx:INTEGER;
-    /*
-    (intern_name == "Self__GB").if {
-      e.debug_display;
-      warning_error (e.position,"LA");
-    };
-    */
-    
-    (! e.is_create).if {
-      crash;
-    };
-    
-    (e.is_delete).if {
-      crash;
-    };
-    
-    e.set_delete;    
-    
-    reset_last_write e;
-        
-    // Require list.
-    (require_first = e).if {
-      (require_list != NULL).if {
-	require_first := require_list.first;
-	require_list.remove_first;
-	(require_list.is_empty).if {
-	  require_list := NULL;
-	};
-      } else {
-	require_first := NULL;
-      };
-    } else {            
-      ? {require_list != NULL};
-      //e.debug_display;
-      (require_list = NULL).if {
-	intern_name.print; '\n'.print;
-	crash_with_message "******** VARIABLE.unwrite : BUG require_list = NULL **********\n";
-      };
-      
-      idx := require_list.fast_first_index_of e;
-      ? {idx <= require_list.upper};
-      
-      (idx > require_list.upper).if {
-	intern_name.print; '\n'.print;
-	/*
-	e.to_pointer.print; ' '.print;
-	
-	e.debug_display;
-	"\n--------\n".print;
-	require_first.debug_display;
-	(require_list.lower).to (require_list.upper) do { j:INTEGER;
-	  require_list.item j.debug_display;
-	};
-	*/
-	crash_with_message "******** VARIABLE.unwrite : BUG !!! **********\n";
-      };
-      
-      require_list.remove idx;
-      (require_list.is_empty).if {
-	require_list := NULL;
-      };
-    };
-  );
-
-  //
-  // Reading.
-  //
-  
-  - read p:POSITION :READ <-
-  ( 
-    read p with NULL
-  );
-  //[ ? {ensure_count := Old ensure_count + 1}; ];
-  
-  - read p:POSITION with r:EXPR :READ <-
-  (
-    read_direct p with r
-  );
-    
-  - read_direct p:POSITION with r:EXPR :READ <-
-  ( + result:READ;
-        
-    result := new_read position with r;   
-    ensure_count := ensure_count + 1;    
-    /*
-    (intern_name == "Result__ID").if {
-      "VARIABLE create :".print;
-      result.debug_display;      
-      (result.object_id = 6).if {
-       // crash;
-      };
-    };
-    */
-    
-    result
-  );
-  //[ ? {ensure_count := Old ensure_count + 1}; ];
-  
-  - unread e:READ <-
-  (    
-        
-    ensure_count := ensure_count - 1;
-    (ensure_count < 0).if {
-      "C'est : ".print;
-      e.debug_display;
-      "\n dans :\n".print;
-      list_current.debug_display;
-      '\n'.print;
-      crash;
-    };
-  /*  
-    (intern_name == "Result__ID").if {
-      "VARIABLE delete :".print;
-      e.debug_display;
-    };
-*/
-    
-    ? {ensure_count >= 0};
-  );
-    
-  //
-  // Display.
-  //
-  
-  - display_require buffer:STRING <-
-  ( + rd:READ;
-    
-    (require_first != NULL).if {
-      buffer.append indent;      
-      require_first.display buffer;
-      buffer.add_last '\n';
-      rd ?= require_first.value;
-      (rd != NULL).if {
-        indent.append "  ";
-        rd.variable.display_require buffer;
-        indent.remove_last 2;
-      };
-      (require_list != NULL).if {
-        (require_list.lower).to (require_list.upper) do { i:INTEGER;
-          buffer.append indent;      
-          require_list.item i.display buffer;
-          buffer.add_last '\n';
-          rd ?= require_list.item i.value;
-          (rd != NULL).if {
-            indent.append "  ";
-            rd.variable.display_require buffer;
-            indent.remove_last 2;
-          };
-        };
-      };
-    };
-  );
-
-  - display buffer:STRING <-
-  (
-    buffer.append intern_name;
-    buffer.add_last ':';
-    type.append_name_in buffer;
-    //buffer.append (type.intern_name);
-  );
-  
-  - display_type buffer:STRING <-
-  (
-    buffer.add_last '{';
-    (type_list.is_empty).if_false {
-      (type_list.lower).to (type_list.upper - 1) do { j:INTEGER;
-	buffer.append (type_list.item j.intern_name);
-	buffer.add_last 'x';
-      };      
-      buffer.append (type_list.last.intern_name);
-    };
-    buffer.add_last '}';
-  );
-  
-  
-  
-
-
-
-
-
-
diff --git a/src/wc_all b/src/wc_all
deleted file mode 100755
index 535f61d..0000000
--- a/src/wc_all
+++ /dev/null
@@ -1,14 +0,0 @@
-cat ./*.li
-cat ./compiler_any/*.li
-cat ./lip/*.li
-cat ./constant/*.li
-cat ./dispatcher/*.li
-cat ./external/*.li
-cat ./external/comparison/*.li
-cat ./external/logic/*.li
-cat ./external/arithmetic/*.li
-cat ./item/*.li
-cat ./tools/*.li
-cat ./type/*.li
-cat ./variable/*.li
-cat ./code_life/*.li

-- 
Lisaac compiler



More information about the Lisaac-commits mailing list