aб ЖХn}гЬыъхфурлк鹄÷—–ѕ…ƒ√ЊљЉіЃђ™§ЮЬЪЦРОИЖА~xvpnhfd`ZXRPJHB@>цроижд≈њљЈµѓ≠І•£~xvpnlGA?975 ющуслйзЋ≈√љїєЭЧХПНЛoige_YWQOIGE yvro3,)"баЎ’≈¬ЄµЯШХОЛДБ~if\YSPDA5.+$!ючфсз№ў“ѕћЭЦУМЙВxusmj]VSNKHE>;41."  эъурйжя№’“ѕ√Єµ™І†ЭЦУРДyvkh]ZSPIF?<52+(% €ьщнвя‘—∆√Љєґ™ЯЬХТЛИБ~{odaVSLIB?85.+(щцпмевџЎ—ќ«ƒљЇ≥∞©¶ЯЬХТЛИЕyrodaZWPMFC<92/,! ъчрнжгаЎ—ќЋЅЇЈіІ†ЭЪОГАurkheWPMJ92/(%шсоздЁЏ„ √јєґ≥≠¶£ЬЩТПИЕ~{xleb[XQNK>741%ышсогаЁ—∆√ЄµЃЂ§°ЪЧРНЖГ|yrohebVKH=:/,%" эцпмйЁ“ѕƒЅЇЈ∞≠ҐЯШХТЖ{xqngd]ZSPIFC92/(%€ьхтлиеџ‘— «ƒЄ±ЃІ§°ЫШРЙЖГxqngd]ZSPIF?<52+(%  €шхолдбЏ„–Ќ∆√јі≠™£°ЪЧФОЗД}zwqjgdHA>74-*# эъурнг№ў“ѕ»≈Њїі±Ѓ†ЩЦФУМЙВБ}zцпмевяЅЇЈ∞≠¶£ЬЩШХТ*¬R O_TRUNC O_WRONLY creat SEEK_CUR SEEK_END SEEK_SET S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID S_IWGRP S_IWOTH S_IWUSR)], float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP FLT_DIG FLT_EPSILON FLT_MANT_DIG FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_ROUNDS LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)], grp_h => [qw()], limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX _POSIX_STREADM_MAX _POSIX_TZNAME_MAX)], locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME NULL localeconv setlocale)], math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod frexp ldexp log10 modf pow sinh tan tanh)], pwd_h => [qw()], setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)], signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK raise sigaction signal sigpending sigprocmask sigsuspend)], stdarg_h => [qw()], stddef_h => [qw(NULL offsetof)], stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET STREAM_MAX TMP_MAX stderr stdin stdout clearerr fclose fdopen feof ferror fflush fgetc fgetpos fgets fopen fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell fwrite getchar gets perror putc putchar puts remove rewind scanf set10016-d.cursor16100+d.cursor11230+d.cursor+*TO READ CONTENTS OF A CELL-- q or Q opens a Quad window. Ctrl-k opens the window in the Mule editor.235237n230235+d.3235231+d.3231235-d.3234233-d.3+*FLAGS IN USE HERE +There are more cells behind here in d.3 (so go forward, if you want, with d or k) *There are words in this cell you don't see part of (at width 12) \/ There's stuff below this cell in d.2, probably a list /\ There's stuff above this cell in d.2, probably a list233232233+d.3232231-d.3+*BASIC TRAVEL OPERATIONS-- UP e, i, up-arrow. DOWN c, (,), down-arrow. LEFT s, j RIGHT f, l(small L) FORWARD d, k BACK D, K231HQ200230-d.2229129-d.1I15132229-d.2Movie G'zation228228103+d.1103228-d.1123227+d.2227223+d.2223227-d.2Appliances226226225+d.2225224+d.1S'ware UBIQUITY224224223-d.2224131+d.2131160+d.2160131-d.2223222-d.1*POLITICS OF STANDARDIZATION222219221-d.2Laurel220219220-d.1220219+d.1Brenda219117219-d.199218-d.2107218+d.2STATE DESIGN217217115-d.2197129-d.3196129+d.3129196-d.3198196+d.3196198-d.3197198+d.3+VIRT OF--129215216-d.2Rooms215215214+d.2211209-d.2211190+d.1190211-d.1210209+d.2209210-d.2212210+d.2210212-d.2"Door Slam"213213212+d.2Handling211Wipers208208207+d.2206207-d.2Start & Stop206206205+d.2204205-d.2Fwd & Back204189204-d.1204189+d.1202203-d.2Suspense202202201+d.2184128-d.2128184+d.2200199+d.2Characters200186185+d.3195185-d.3186187-d.3195187+d.3186198+d.1197198-d.cloneClone of 197198197187-d.1197196+d.clone185196+d.1196185-d.1129196-d.clone196129+d.cloneClone of 129196195129+d.1+Movies185+Cars187107102-d.2+d.117119194+d.1194193+d.2128194-d.clone194190-d.clone190194+d.cloneClone of 128194102188-d.2188102+d.2193109-d.1193108+d.2108193-d.2189128+d.2190191-d.2192191+d.2190192-d.clone192190+d.cloneClone of 190192191189-d.clone188159-d.2159188+d.2Clone of 128190187189-d.1189187+d.1Clone of 188189184185+d.1(Tim Johnson)183178183-d.1183178+d.1175181+d.1Dim.Examples181181166+d.2178180-d.2178179+d.2179177+d.2177179-d.23D CAD178175177-d.2177175+d.2(Ron Baecker)176175176-d.1172175-d.2170166-d.2Form of Conc.Structure174113174-d.1172173+d.2173171+d.2171173-d.2'The Spreadsheet'172171170+d.1Space Examples170169168+d.2165169-d.clone169165+d.cloneClone of 165169168163+d.1CrissCrossing167166161-d.1Nonlooping165165164+d.2Discrete163163162+d.2161150-d.1150161+d.1150162-d.2Forms of CONNECTION161CONTENTS >>138138130+d.1130138-d.1131138+d.1123113-d.2103113+d.2160130-d.clone149159+d.2- SCHEDULE -118152153-d.2155153+d.2153155-d.2118105+d.1105118-d.1149111-d.2111151-d.2151111+d.2156157-d.2156155+d.2116115+d.2116117-d.2123158-d.clone158123+d.cloneClone of 123158151142-d.2142151+d.2117157-d.4157117+d.4116156-d.clone156116+d.cloneClone of 116156115155-d.4155115+d.4154113+d.4113154-d.cloneClone of 113154112153-d.4153112+d.clone103152-d.clone152103+d.cloneClone of 103152131150-d.cloneClone of 131150Clone of 105149105144-d.2105100+d.2130148+d.2147137-d.2145133-d.2148147+d.clone145147-d.clone147145+d.cloneClone of 145147140146-d.2146140+d.2143145-d.clone145143+d.cloneClone of 143145134133+d.2143106-d.2100106+d.2106100-d.2100101+d.11010+d.10101-d.1100143-d.cloneClone of 100143142139-d.2139142+d.2d.41411413+d.2136140-d.2Why not both?136Midden99114139+d.2114122-d.2137130+d.3136135+d.2*This represents portions of the intended book.134106130-d.3133130+d.cloneTwo parts:132108132+d.1127122+d.2Clone of 106130125124+d.2127126-d.2124123+d.1Clone of 102127Movie Design125MOVIES123VIRTUALITY103Emotional perceptions121121120+d.2119120-d.2120119+d.2NOTATIONAL ENGINEERING116VIRTUALITY114ACCESS STRUCTURE112h.C.Mind0*"Metaphor" is a term often used for the ideas in software.110109110-d.1110109+d.1*By "conceptual structure" I mean the ideas of the software.109FEEL107*Computers deal with imaginary worlds. Therefore software design is the design of imaginary worlds. This is not generally understood.101+The Course105199-d.19091-d.1#D-View toggle view_raster_toggle(1);918590-d.29085+d.28085-d.2#Shear807475-d.1#O-Hop atcursor_hop(1, 'O');757473+d.17273-d.1#D-Hop atcursor_hop(1, 'D');737271+d.17071-d.1#R-Hop atcursor_hop(1, 'R');718070+d.26070-d.2#Mark605655+d.15455-d.1#I-break atcursor_break_link(1, 'I');555453+d.15253-d.1#U-break atcursor_break_link(1, 'U');535251+d.15051-d.1#L-break atcursor_break_link(1, 'L');516050+d.24050-d.24544+d.14344-d.1#I-ins atcursor_insert(1, 'I');444342+d.14142-d.1#U-ins atcursor_insert(1, 'U');424140+d.1#L-ins atcursor_insert(1, 'L');404030+d.21920-d.12019+d.11819-d.1+d.3191817+d.11617-d.11116-d.21415-d.11413+d.11213-d.1+d.2131211+d.1Action111110+d.2d.cursor887+d.267-d.2d.mark665+d.245-d.2d.containment423-d.2d.2221+d.281-d.2p€ьчхройигвбёўЎ„ ≈ƒњЊљґ±∞Ђ™®ЭЧЦРОИЖДАzxrpnjdb\ZXTNLFD><:#тмкдваЅїє≥±ѓРКИЖkeca<64.,*€эчхуќ»∆јЊЄґіШТРОrljdb`D><64.,&$"цроздЁЏ„ќЋ≈¬≥∞•ҐTQKH:30-%" €шхоли№ў–…∆√љЇ≥ђ©¶ЪПМЕВ{xqnkWPMJ>30%"эъурйжгё„‘Ќ «©Ґ°ЬЩТСПЛИ|qnk_XUNKDA>эъога’“«ƒљЇ≥∞©¶ЯЬХТЗДБunkda^RGD=:/,%"ъчрнжга‘…∆їЄ±ЃІ§ЭЪУРЙЖ|urkha^WTMJC@96/,%" щолаЁ“ѕћНЖГ|yrolc\YROHE>;81*'  €ьщнвя‘— «јљґ≥∞£ЬЩЦЕ~{tqjg`]VSPIB?<6/,%"эъч «ЉєЃЂЭЦУРД}zspmaVSLIB?85.+$!щцлиЁЏ”–≈¬їЄ±ЃЂІ†ЭЦУМЙВxunkda^QN?852&щцпмевџЎ—ќЋ«јљґ≥ђ©ҐЯШХТИБ~wtqleb_SLIB?<6/,)$! ъчрнжг№ў“ѕћјљ∞©¶ЯЬХТЛИБ~{xqnhe^[TQNC@1*'   эцумйжџ‘— «јљЇЭЦУОЛИleb_ЫФСКЗДѓ®•ЮЫФСКЗА}zЧМЙ £Й С{ mwise, it uses the package of its caller. Regardless, global variable names (e.g. "STDOUT", "ENV", "SIG") are always qualfied with "main::". Qualification applies only to symbol names (strings). References are left unchanged under the assumption that they are glob references, which are qualified by their nature. C is just like C except that it returns a glob ref rather than a symbol name, so you can use the result even if C is in effect. =cut BEGIN { require 5.002; } require Exporter; @ISA = qw(Exporter); @EXPORT = qw(gensym ungensym qualify qualify_to_ref); $VERSION = 1.02; my $genpkg = "Symbol::"; my $genseq = 0; my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT); # # Note that we never _copy_ the glob; we just make a ref to it. # If we did copy it, then SVf_FAKE would be set on the copy, and # glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work. # sub gensym () { my $name = "GEN" . $genseq++; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; } sub ungensym ($) {} sub qualify ($;$) { my ($name) = @_; if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) { my $pkg; # Global names: special character, "^x", or other. if ($name =~ /^([^a-z])|(\^[a-z])$/i || $global{$name}) { $pkg = "main"; } else { $pkg = (@_ > 1) ? $_[1] : caller; } $name = $pkg . "::" . $name; } $name; } sub qualify_to_ref ($;$) { return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } 1; undef' d_getlogin='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' d_getppid='define' d_getprior='define' d_gettimeod='define' d_gnulibc='undef' d_htonl='define' d_index='undef' d_inetaton='undef' d_isascii='define' d_killpg='define' d_link='define' d_locconv='define' d_lockf='define' d_lstat='define' d_mblen='define' d_mbstowcs='define' d_mbtowc='define' d_memcmp='define' d_memcpy='define' d_memmove='define' d_memset='define' d_mkdir='define' d_mkfifo='define' d_mktime='define' d_msg='define' d_msgctl='define' d_msgget='define' d_msgrcv='define' d_msgsnd='define' d_mymalloc='define' d_nice='define' d_oldarchlib='undef' d_oldsock='undef' d_open3='define' d_pathconf='define' d_pause='define' d_phostname='undef' d_pipe='define' d_poll='define' d_portable='define' d_pwage='define' d_pwchange='undef' d_pwclass='undef' d_pwcomment='defin23111-d.cursor16101+d.cursor23011-d.cursor+*ONE FUN WAY TO READ Put both cursors on the same cell. Open the left Quad window. Type the same arrow moves simultaneously with both hands. That way you see the overview in one window and the window contents in the other.236234236+d.3236234-d.3236230+d.3230236-d.3235230-d.3+* EXPECTED ENVIRONMENT Try to use this on the largest Unix screen you can find. At full width, a cell should be 12 characters wide. With the Quad window open, you should be able to read 14 short lines of text.234233234+d.3233232-d.3+* TO GO HOME-- g, G AND TO GO ANYWHERE ELSE-- (number of cell)g, (number of cell)G Examples: 312g 44G Note that this is a way to get both cursors onto the same cell, or into the same zone.232231232+d.3+*How to Read this Document.2302300+d.2129229+d.1*EVERYTHING HAS A VIRTUALITY.229229132+d.2132228+d.2228132-d.2- - - - - -227227123-d.2225226-d.2Computers225224225-d.1223224+d.2131224-d.2222223+d.1S'ware INDUSTRY223"Bell Labs"221221219+d.2219117+d.121899+d.2218107-d.2218218112217-d.2217112+d.2115217+d.2129197+d.3198197-d.3Building Type214Arrangements216216215+d.2214215-d.2191214-d.1214191+d.1209211+d.2212213-d.2Smell212Shine, surface210Color209207208-d.2Lights207207206+d.2205206-d.2Left & Right205205204+d.2Humor203203202+d.2201202-d.2Atmosphere201128201-d.1201128+d.1199200-d.2184199-d.1199184+d.1Plot199185186-d.3185195+d.3187186+d.3187195-d.3198186-d.1198197+d.clone187197+d.1196197-d.cloneClone of 196197129195-d.1+Various Things195+Architecture186125185-d.2185125+d.2103129-d.2129103+d.2129112-d.2112129+d.2102107+d.2FEEL128194119-d.1193194-d.2194128+d.clone109193+d.1184193-d.clone193184+d.clone193191-d.clone191193+d.cloneClone of 184193128189-d.2191190+d.2191192-d.2186191-d.1191186+d.1189191+d.cloneClone of 184191189190-d.2190189+d.2Clone of 184188185184-d.1CONC.STRUCTURE1843D 'Layers'1802D 'Layers'179*(Ivan Sutherland, Secret 1960 project at GM)182177182-d.1182177+d.1181175-d.1166181-d.2180178+d.2179178-d.22D CAD177176175+d.12 1/2 D175175172+d.2166170+d.2174170-d.2170174+d.2174113+d.1'Word Processing'173173172-d.2'The Desktop'171170171-d.1168169-d.2163168-d.1164168-d.clone168164+d.cloneClone of 164168163167-d.2167163+d.2DIMENSIONS166161166+d.1164165-d.2Looping164162164-d.1164162+d.1162163-d.2162150+d.2Euclidean162138131-d.1113123+d.2113103-d.2*CINEMA OF THE MIND: Software as The Design of Imaginary Worlds100106160-d.clone160106+d.clone130160+d.cloneClone of 106160159149-d.2159159158154+d.2154158-d.2154118+d.2118154-d.2152158+d.2158152-d.2153152+d.2111149+d.2118105+d.4105118-d.4157156+d.2155156-d.2115116-d.2117116+d.2123158-d.4158123+d.4117157-d.clone157117+d.cloneClone of 117157116156-d.4156116+d.4115155-d.clone155115+d.cloneClone of 115155113154-d.4154113+d.clone153112+d.4112153-d.cloneClone of 112153103152-d.4152103+d.4Clone of 123151150131+d.clone144105+d.2100105-d.2148130-d.2137147+d.2133145+d.2147148-d.clone148144-d.clone144148+d.cloneClone of 147148*Maybe later it'll be a book; they're still selling those things.146133134-d.2106143+d.2101100-d.1Clone of 143144143100+d.cloneClone of 103142+d.2183141-d.21414-d.24141+d.2*You're reading the hypertext.140140136+d.2139114-d.2hi139139122114+d.2137135-d.1135137+d.1133137+d.3137133-d.3130137-d.3133137-d.clone137133+d.cloneClone of 133137135136-d.2Why not a hypertext?135130106+d.3106133+d.3133106-d.3130133-d.cloneClone of 130133132108-d.1 \/108 \/131122127-d.2+THE BOOK106(c) T.Nelson104124125-d.2126127+d.2123124-d.1IDEAS:126Imaginary Worlds124THE BOOK122120121-d.2Responsiveness120Tuning119*CONCEP.STRUCTURE By "conceptual structure" I mean the ideas of the software.102OTHER VIEWS117CONSTRUCT LOGIC115SPACES113\/ TOPICS111106104-d.1104106+d.19190+d.1#A-View toggle view_raster_toggle(0);90#Chug858580+d.27080-d.27574+d.17374-d.1#I-Hop atcursor_hop(1, 'I');747372+d.17172-d.1#U-Hop atcursor_hop(1, 'U');727170+d.1#L-Hop atcursor_hop(1, 'L');707060+d.25060-d.25556-d.1#O-break atcursor_break_link(1, 'O');565554+d.15354-d.1#D-break atcursor_break_link(1, 'D');545352+d.15152-d.1#R-break atcursor_break_link(1, 'R');525150+d.1#Delete atcursor_delete(1);504445-d.1#O-ins atcursor_insert(1, 'O');454443+d.14243-d.1#D-ins atcursor_insert(1, 'D');434241+d.14041-d.1#R-ins atcursor_insert(1, 'R');415040+d.23040-d.2#Edit atcursor_edit(1);301918+d.11718-d.11716+d.1Data161514+d.11314-d.1+d.3141312+d.11112-d.1+d.1121611+d.21011-d.2110+d.1Cursor home1018+d.278-d.2d.clone776+d.256-d.2d.contentlist554+d.2d.3332+d.212-d.2991+d.1101-d.1d.11€€€э€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€