PERFORCE change 215017 for review
Brooks Davis
brooks at FreeBSD.org
Fri Jul 27 20:12:34 UTC 2012
http://p4web.freebsd.org/@@215017?ac=10
Change 215017 by brooks at brooks_ecr_current on 2012/07/27 20:12:24
Alter browser to be pinch-to-exit. In the process add
additional debouncing of inputs since otherwise closing text or
png files being read resulted in closing the application.
Affected files ...
.. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libde4tc/de4tc.c#12 edit
.. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libde4tc/de4tc.h#10 edit
.. //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#16 edit
.. //depot/projects/ctsrd/beribsd/src/ctsrd/browser/images/browser.png#4 edit
.. //depot/projects/ctsrd/beribsd/src/ctsrd/pictview/img/browser-thumb.png#2 edit
Differences ...
==== //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libde4tc/de4tc.c#12 (text+ko) ====
@@ -1,5 +1,6 @@
/*-
* Copyright (c) 2012 Simon W. Moore
+ * Copyright (c) 2012 SRI International
* All rights reserved.
*
* This software was developed by SRI International and the University of
@@ -56,6 +57,7 @@
volatile u_int32_t *pfbp;
static volatile u_int16_t *tfbp;
volatile u_int32_t *mtlctrl;
+static struct tsstate *sp = NULL;
// fade timing (for crude timing loop)
static const int fb_cross_fade_time = 500;
@@ -153,7 +155,6 @@
ts_poll(void)
{
struct timespec stime = {0, 1000000};
- static struct tsstate *sp = NULL;
int init = 0, first_pass = 1;
int check_release = 0;
struct tsstate tmp_s, rel_s;
@@ -217,6 +218,27 @@
}
+void
+ts_drain(void)
+{
+ struct timespec stime = {0, 1000000};
+ int noprevtouch = 0;
+
+ if (sp == NULL || sp->ts_count == 0)
+ noprevtouch = 1;
+
+ for (;;) {
+ nanosleep(&stime, NULL);
+ if ((int32_t)le32toh(mtlctrl[7]) < 0) {
+ if (noprevtouch)
+ return;
+ else
+ noprevtouch++;
+ }
+ }
+}
+
+
/*****************************************************************************
* frame buffer routines
* TODO: put in seperate library
@@ -612,6 +634,7 @@
char *textdup;
u_int32_t *textbuf, *titlebuf;
struct tsstate *ts;
+ struct timespec stime;
titlewidth = strlen(title) * fb_get_font_width() * 2;
if (titlewidth + FBD_BORDER_WIDTH * 2 > fb_width)
@@ -708,13 +731,19 @@
free(textbuf);
free(lines);
+ /* Ignore all input for a quarter second to let the display settle. */
+ stime.tv_sec = 0;
+ stime.tv_nsec = 250 * 1000 * 1000;
+ nanosleep(&stime, NULL);
+ ts_drain();
+
switch (type) {
case FBDT_PINCH2CLOSE:
for (;;) {
ts = ts_poll();
if (ts->ts_gesture == TSG2_ZOOM_OUT) {
- while (ts_poll()->ts_count != 0)
- /* do nothing */;
+ if (ts_poll()->ts_count != 0)
+ ts_drain();
return(FBDA_OK);
}
}
@@ -723,18 +752,18 @@
ts = ts_poll();
switch (ts->ts_gesture) {
case TSG2_ZOOM_OUT:
- while (ts_poll()->ts_count != 0)
- /* do nothing */;
+ if (ts_poll()->ts_count != 0)
+ ts_drain();
return(FBDA_OK);
case TSG_NORTH:
case TSG2_NORTH:
- while (ts_poll()->ts_count != 0)
- /* do nothing */;
+ if (ts_poll()->ts_count != 0)
+ ts_drain();
return(FBDA_DOWN);
case TSG_SOUTH:
case TSG2_SOUTH:
- while (ts_poll()->ts_count != 0)
- /* do nothing */;
+ if (ts_poll()->ts_count != 0)
+ ts_drain();
return(FBDA_UP);
}
}
==== //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libde4tc/de4tc.h#10 (text+ko) ====
@@ -102,6 +102,7 @@
void multitouch_filter(void);
void multitouch_release_event(void);
struct tsstate* ts_poll(void);
+void ts_drain(void);
void fb_init(void);
void fb_fini(void);
u_int32_t fb_colour(int r, int g, int b);
==== //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#16 (text+ko) ====
@@ -562,12 +562,19 @@
static int
get_action(void)
{
+ struct timespec stime;
struct tsstate *ts;
int col, i, row;
if (verbose)
printf("entering get_action\n");
+ /* Ignore all input for a quarter second to let the display settle. */
+ stime.tv_sec = 0;
+ stime.tv_nsec = 250 * 1000 * 1000;
+ nanosleep(&stime, NULL);
+ ts_drain();
+
for (;;) {
ts = ts_poll();
if (verbose)
@@ -599,11 +606,19 @@
return (ACT_REFRESH);
}
}
- }
- if (ts->ts_gesture == TSG_EAST)
+ } else if(ts->ts_gesture == TSG2_ZOOM_OUT) {
+ if (ts->ts_count != 0)
+ ts_drain();
+ return (ACT_QUIT);
+ } else if (ts->ts_gesture == TSG_EAST) {
+ if (ts->ts_count != 0)
+ ts_drain();
return (ACT_PREV);
- if (ts->ts_gesture == TSG_WEST)
+ } else if (ts->ts_gesture == TSG_WEST) {
+ if (ts->ts_count != 0)
+ ts_drain();
return (ACT_NEXT);
+ }
}
/* NOTREACHED */
return (ACT_QUIT);
@@ -614,6 +629,7 @@
{
int fd, ret = 0;
u_int32_t *image, *previmage;
+ struct tsstate *ts;
image = malloc(sizeof(u_int32_t) * fb_width * fb_height);
previmage = malloc(sizeof(u_int32_t) * fb_width * fb_height);
@@ -632,9 +648,14 @@
}
/* read_png_fd() closes the descriptor */
fb_post(image);
- for (;;)
- if(ts_poll()->ts_gesture == TSG2_ZOOM_OUT)
+ for (;;) {
+ ts = ts_poll();
+ if(ts->ts_gesture == TSG2_ZOOM_OUT) {
+ if (ts->ts_count != 0)
+ ts_drain();
break;
+ }
+ }
end:
fb_post(previmage);
free(previmage);
@@ -654,11 +675,8 @@
const size_t maxbuflen = 32 * 1024 - 1;
u_int32_t *image;
- printf("entering show_text_file\n");
-
if ((fd = openat(dfd, name, O_RDONLY)) < 0)
return (-1);
- printf("fd = %d\n", fd);
fbuf = malloc(maxbuflen + 1);
if (fbuf == NULL)
@@ -682,7 +700,6 @@
else
fbuf[fbuflen] = '\0';
- printf("fbuf = '%s'\n", fbuf);
nlines = 0;
while (nlines <= 1024 &&
(lines[nlines] = strsep(&fbuf, "\n")) != NULL) {
@@ -907,6 +924,7 @@
}
fb_init();
+ ts_drain();
busy_indicator();
fb_fade2on();
fb_load_syscons_font(NULL, "/usr/share/syscons/fonts/iso-8x16.fnt");
@@ -939,5 +957,7 @@
while (dfd != -1)
dfd = browsedir(dfd);
+ ts_drain();
+ fb_fini();
return (0);
}
==== //depot/projects/ctsrd/beribsd/src/ctsrd/browser/images/browser.png#4 (text+ko) ====
@@ -1,10 +1,10 @@
PNG
--ËB>4ÿJé vXì»ï¾qÞyçÅÂ
[l;kÖ¬<xpÌ=;vÝu×hß¾}ÍvÛn»m|ÿûß#FÄÃ?C¾}û¶8ßîݻǹç·ß~{<üðÃqé¥Æ¡Zóá¾=öØ#G}tDDüñqÏ=÷Ä/~ñØk¯½â.c=v÷ÁâÆm¶Yá\pA:4:uê]ºt믿>|òÉèÝ»wvzh\ýõñïÿ;Æ7ß|sxâͶå¤N¡CÆ Aà 'C³Ï>»Ù¸í·ß>ßûÞ÷ªÃêëëãN;î¸#}öÙxôÑGãºë®C=´Åí¬««ã;.~ùË_Æ#<7ÞxcvÚi±å[Öl¿¬Û°¦«Üµ¤Þ±V䶫Åö¦Rkb
:433dzBó©\ùÖ·¾Uý{q³gÏÎþýû7îè£Î3gÖ|(ü¦nʶmÛ6iòÉ'gfæ¯~õ«¼è¢ªmGK}IW@Ö^{í8qbff~ï{ßk2î7ÞÈÌÌ=öØ£z(3s÷ÝwÏÈ6mÚäÏþóêðÆÆÆ\°`Aõ¿zè¡&·¶wÞyùØc5[W_}533çÎíÚµk2nÈ!ùË_þ²ºÎ=ôPu9~øa}8tèЬ««k2
6Ø ïºë®û|Ú´i¹ÿþû7[§¥m¿RJi¹ä+ýû÷Ï©S§6»Â±´+Ë:ÿXÝ;@)¥ÖÔºóÎ;k°/oUBGccc92m´Q~îsËÇ{,33_ýõ&'Ãp at ffÎ??[o½u~æ3É/ùËÕð{ï½·Ér*dܸq¹páÂ|äGòüóÏÏÃ;,#Z@:wîýúõË»ï¾;33ÇÛìÄ¿r>vìØ|ï½÷rØ°aùÝï~7?óÏdÄGÁ`æÌ9hÐ ìرc¶oß>8à|ùå3ó£Ù§OÌÌ7o^®»îºÕáݺuk>ÿùÏ7Y~833¿ð
/dÄGAæ¹ç˽÷Þ;×^{í\wÝusÐ A9eÊÌÌ<òÈ#Ì£rËÝèÑ£sàÀÙ©S§Üu×]ó+®¨®ÓÀkûRjM«eÍÂƲeÿêß J)µ&Ö1c23óÊ+¯\¡ùTÈرc³M6MÆõîÝ»zB½ÝvÛeDäZkÏ<óLff~úé
Íæ×µk×ê<wÞyçêðJ®O?ýt¼ñƱÅ[Äg?ûÙfdIÖZkÇUº«]< Í93{ì±èß¿ì¾ûîѵk×xà""â¾ûîc=6öÛo¿xúé§c]v1cÆÄ Ì{Ø°aqÝu×E¿~ýâÀý÷ß?úöíûì³Oì³Ï>±Í6ÛÄ
^ØäjÎÅ_¼ÄÀ1fÌeÞvOZ]í>ôÐCqäG®"--kyrÈ!Ñ¡Cø(-ÍóÏ?GydÍ«
Õ19²É¸J 0`@0 Þ}÷Ýêü&L&LÝwß=?üð&í#"ºví3fÌW_}5þÖ6eÊ8ýôÓ#3c½õÖõ×_?">ÚïvXÍmÙe]búôéñÚk¯E6miû>Iå%´zY«ýI|¥ZSkã7ÎÉ'W»gíÛ·o³6_øª=]=þøãÍz®ªk©ÖÊþ:è ê°Êû(kµVöGydf.ê6w«¶ª¯ôµø;5¯Ö¼¤¾¾>{ôè§vZÎ=;33yä&m*½@Õzñ^ª/ç«ÕKTå
&LhÖSUeßT^ xÓM75÷«_ýªIï]¾ò¹}ü]ºÌÌ4iRuXåÝ+~øaî´ÓNMÚwêÔ©ú,Þ[×Ò¶_)¥ÖĪÕKÕò¼çcií¡Õ¿RjM®#8"çÌSíö·ÞÊ#Fä]wÝU=ÉÍ\ô®]»6¾5dçw®ð?þøã9dÈüÁ~·Ýv[uyï.vEH梮v?^»ç{rM6i2ýÒNÀ?þøê|þú׿æàÁsðàÁÕÎ;·ú×õ×__]öÇ»1>î¸ãªãn»í¶fÓ~÷»ßÍÌE/s¼ækòäOÎSN9%o¸á5kVÍy><3½þÚk¯Í3Î8#/»ì²êËÇ;v\®íWJ©5>7|,m:D)¥VBuíÚ5o¿ýö¬å½÷ÞËsÎ9§ÙJµ&DDöìÙ3|òÉfË{úé§óCi6@>nþüùùÂ/äÿüç<í´Ój¾dYNÀ=ôÐ|÷ÝwÍâĹç{¶8ÝGQm[yQc¥6Ùdj°9é¤M[__CÉ>ø ÙrgÍ?üákN3xðà7o^ö|ðA^~ùå¹á¶jûRjMªÌBkÃǦ_|
þµªîÿÿÀ2Ø`
¢wïÞѳgÏ6mZ<óÌ31aÂUö x}}}ôìÙ3!
úôé묳N¼òÊ+ñÐC5ëº÷ mÛ¶±ã;ÆÎ;ï³fÍÑ£GÇË/¿¼Ê²ßl³Íbçw·Þ:23Æ£F©S§¶8MçΣO>±ÝvÛÅ)SâñÇ_¡ßøÒ¾?þø
-¯3- %÷Mk¾«¢ÆW^ye«ç±Ï>ûdfí_Òëëëó
^ÈÌÌo}ë[Õá- J)õ©©å`YÞ¹èÖ#8¢É´-\ùõµ¢k×®Õ_w/¹ä꯫1þüèÒ¥Ki.ºè¢0`@³Û~:uêW]uUtîÜ9î¾ûîêÕüä'qÜqÇ5[sÏ=7ÖYgxåWªè.iù+kWÄ.»ì?ûÙÏâg?ûYtêÔi
ç·"þüç?ÇÝwßmÚ´©>ó±øIqÉ}Óïƪòï|'¦L={ö'|2úöí۬;ð
xðÁ£M6ñÄOÄW^n/ª<P9Ah×®]üéOu×]wËÿÙÏ~[n¹ea§~zì¶Ûn1mÚ´øÃþ¯½öZÌ??ºví_þòÍgûí·ºººxë·Z|H9bù±ÊÊ;í´S|ö³¶««?þñ±Þzë-qûÖd+òÙ¯
-kµV¬·ÞzËTK{ö¦%«ë¬³ÎR¿\ No newline at end of file
++È2¼¿?ø#ã9Ã&¼@ü|ªª±ûíî·OÆþÞ*""+÷üò¿,ûRÉ{î¹'"VÜ´å[®ÑúPÊ{@+äé§(ÊÊÊ:g?V¶lÙ²xî¹çÓn³Í61hÐ 8õÔSãg?ûY\{íµ1kÖ¬={vlµÕV1cƸ뮻Öhý×kkkcÔ¨Q%몪b·Ýv¶mÛFÛ¶mãàã?>FùûÀæiKáÈÙg]v|óæÍÓUW]UüÕëÂ/Ü j-¶(û\®ZÕò·Ùf´×^{¥êêê47t|¤àÈ#¬·½3 _ÔXüÌ{î¹´ÓN;´©ªªJwÜqGJ)¥ÚÚÚU~¶R}ö±í×÷7ß|sÖ£pdîܹõ¶©¨¨H={öLÓ§OO)¥ôÊ+¯´qD)¥¾µÞoBÿì³Ïâk®¿ÿýïqäG®ïEl6fΣGÉ'oì®dõÔSOEDÄí·ßM4ÙȽÙôýêW¿×ÔvØaeï¡Z¶lY\vÙeññÇGeee0 w7×É×uXSÿÉÛþËRJñÏþ³ØÿýöÛ/5k¶{ÀÆ°Î`Î?þñ8â#¢sçÎÅaûï¿zê©ñÊ+¯Ä<gyfqÆñÎ;ïÄE]Tl׺uë¸øâãßøFtéÒ%¦Lo¼ñFüú׿I&Ûýð?.]ºÿ{àÀ±`ÁøùÏ^çfÇ8í´ÓâànݺÅ)Sbøðáñè£Æ)SÊö»í¶K.¹$zôè»í¶[L:5F555ÅKV·ü<08â7n\Üÿýu濦ëXpýõ×Ç[l_~yl¹åqöÙgÇþûï[n¹e¼úê«ñཡ]»vѯ_¿¸÷Þ{cáÂ
å7ØztÑEÅ?þñèСC\yåqÅW¬Õô¹>uûn¬OÇ{l|ðÁqåW®òrÅùóçÇbÐ A±ï¾ûF³fÍbÁÅñmÛ¶óÏ??ºwï;ì°CÌ93&Lüãã¥^ª3¯-[Æ%\-o¼1öÙg8î¸ãâÈ#
Æ+¯¼¿þõ¯®¬²²2Î<óÌøö·¿»í¶[Ì??FûÛßâñǯÓvUûÀìc+~Ä8ꨣâõ×_!Cô稣#<2F>ø`qxá{qÝu×EãÆãÄO
o}ë[1cÆxäGbØ°a±páÂØe]⬳Î^½zEeeeüãÿ»ï¾{oÿõ¹í7'¯½öZD|qYÖo¼±{ÀÆ°V§LVw V¡~ûÛߦR1bDqعçRJéî»ïN×\sMñÒaÃÛôìÙ3M4©8nñâÅÅ¿?ûì³tÞyçÛ>õÔS%ý¤ê\Æ°ÕV[¥G}´l»Ù³g§~ýúô½wïÞéÃ?,¶[¾|yñïO?ý4í¹çk´üúnÀ]u,Ô§~RZqÅ)SJ¹hÑ¢tÄGLwꩧ۴iÓfJ[ù¬-Z¤óÎ;/¥Ò%K×ÊUß%X9?uùn¬ïª©©I)¥4vìد4c=6-]º´ØÿÏ?ÿ¼ÎúÔÔÔÔi¿Ë.»×ó¬³ÎJµµµ%ÁÄS×®]ëL×°aÃôÂ/¬r9+?¡¾}`M÷±HL)¥tï½÷]÷¥bõV+S-J'NLßúÖ·R6mRïÞ½Ó¿ÿýïRJÓ¦M+y×Æ
+ ÅÏ~øðá%ý*@r6kûÝØõÈ#|GÖ¶6m>ûì³RJ×]w]Új«REEEêÒ¥KúÅ/~QÜ.ݺu+NS µµµiùòåéþûïO}úôI[o½uêß¿zã7RJ)3¦ÎþtåW¦R=ztêÕ«WjØ°ajÚ´iêß¿9sfJ)¥N:©Ø¾Ü>°6ûXÄW /NÏ<óL:øàSuuuºøâkÉ%i é¤NJ;vLgyfúøãSJ)ÝpÃ
ü¶_9xâi§vZe½õÖ[)¥@xàRJO>ùdÉ8D)¥¾6µvÈ
7ÜúôéS§Î<óÌô?ü¡xáÒ.»ìR¶@RJiÐ A%7ÞxcJ)¥§~:UVV,û7¿ùMñ±0lU7rÊ))¥&O7o^ïü~øáâ°ÂÁç¿ÿýïÔ¤I:íwÛm·âKÇW»ür_ë²_L7.5k֬θ½÷Þ»ØÎ;×ײeËÔ¥KÔ¥K:뻾@""í±ÇÅ3ç{nöåHÎÏf]¾¢ÆRJéÖ[o]çytÐA)¥ò¿¤WVV¦·ß~;¥Ò~ðâðB+÷ÜsÏ*÷µÝǾj¼AwUË__ëøUtëÖ-n¾ùæ¸ùæ£U«V_y~_Å_þòxì±Ç¢Q£FÅ{>V>(ÎùÙ¬ËwcCùÑ~3gÎN:Å«¯¾=zô(ióÍo~3þùhÔ¨Q¼òÊ+që·FÄË
+÷P4iþó£iÓ¦«\þÍ7ß»ì²Ka^xaì·ß~1{öìøãÿ'O¥KFuuu|ûÛß.Ï{ì1}úôzoRXû}¬p£ò>ûì{ï½w±mEEEüéO-Z¬rý6e_eÛo
4-Z¬QîÞúÎnn±Å«ýnðkµ¦oB/W
Çð{ôeÄGÚÞYðÑG¥[o½5þùé¶Ûn+¾Øðå_.yügáÝ&LHCóØÔÂc,Xî¸ãtÑE¥o¼±Îóè[¶lYlß°aÃôÏþ³Ø»îº+
8°ø(Ó¥K¼q¸¾å{麮cá¢:u*ûÙM81¥ÒGYgøÆza}ívÝu×⺤ÒÕW_½Ñ>µýnlÈ:áN)¥éÓ§§aÃ¥G}4Í1£8|Ä©ºººÎ´×_}ññ¦>ø`ºäKÒþð4eÊ4gÎôøã§Rúç?ÿYÜoW~ï'|>ùä4dÈtÅW¤Ç{¬8îôÓO¯³¬ÿøÇÅý`ðàÁéÜsÏMçw^:thñ߯[nXÛ}¬ªª*M<9¥´âñÞCMCIÓ§OOË//¾Íþ®»îZãïÅàÁSJ¥£Ô·oßâ²6õm¿¾ß¾6VÞÖæEp at q=zô(»Oz¯RJýÇ×ÚM°!HD¤-ZÑÿe·ß~{jÔ¨QÉ4§~zZ²dI±ÝÊÚiÀuƧ´âÙ7ÝtSÚzëKæ׸qãôÿ÷Ågæ3&}ôÑk¼ür_ëºÿ)$"Ò%\Rl»r\ No newline at end of file
==== //depot/projects/ctsrd/beribsd/src/ctsrd/pictview/img/browser-thumb.png#2 (text+ko) ====
@@ -1,32 +1,54 @@
PNG
--þtUݲ-;óaÔþMåû7¢(ª¸V||¼RJ©mÛ¶)»Ýît½råÊ©sçÎ)¥Z¹re¾eÅ%8+³-.0Üà©©©îs©\¹rÞXû£U»ví¼~xà%"Êf³©³gÏ=öRJ©#G(¥<yrÞ²Ò¥K«ÌÌLuõêÕ¼{öcøðáúÍ
E_~ùeÞÏ|ðA¥R'NPeÊ)ð>úH)¥Ô÷ßoyû)¢cY "¿Q£FYÛ÷ý@QU+÷åøñãÔNîð#FXæïï¯233R¿Ï.Õ½{w¥RçÎszã{îÙ)S¦äý,7\¼xQ.]ºÀkÌHVVJKKËW×®]Ë 999jöìÙªjÕª
¾O&LpÚçÖ[¾?±±±J)¥fÎ÷³/¾øB)¥Ôo¾Yàg>ú¨RJ©øøø¼e=zôPJ)µxñâ¼mØ°A)¥ÔüùóU@@@÷=888ßܳQ#G,t7
µ´ýEQű¬Q£FRC5Êcíó-Ý{ï½WRRRäÄR¢D KÛ-Ì\»ÌÙ¹øëÞ½{ÞÏrG1{ölåççoý*¥®O[³fͼçÎuã35n,wb·ÛUýúõÕÈ#Õ+WRJ_¿>ß:¹³@öà½2eÊä=¯°Y¢rxìر3Uå¾7¹;wn¾eþy¾Ù»n~}î~»ùY"קTJ©3gÎäý,÷Ù+ªyóæùÖÎÛ'7ÎÖe¶ýEQű
-¥Êç|oa-ß¿ EQŹî¿ÿ~uõêÕ¼éhÏ=«bccÕ?ü÷!W©ëÏÉ/ðzwÈ=÷Ü÷Ó¦MjÒ¤Iê¥^RóçÏÏëïæéb@º>ÕîÍu£eË©J*å{½ÙðG}4¯%K¨ñãÇ«ñãÇç=Ü0333ï 7×g}×÷ÍÓ?òÈ#yËæÏ_àµÏ?ÿ¼RêúÃ?þøcõÔSO©#F¨o¾ùF¥¥¥ÚæìÙ³R×NÿÉ'¨Q£F©÷Þ{/ïáRåÊsiû)¢[Ý\
f¯#PEy ÂÃÃÕTa.]º¤^{íµg*rË-nm?EQTq*¥~î£×ßØ~aeû¿ÿ-¥ØíÎöA-¤råÊR¥J .äUjjªäääøz-ÊÉÉ¡CNYZ¹re8±mÛ6Ùµká:5jÔp{:_++¹9¿?ø&KHîÌÜäÞs¼ÇçñÐÌÜsÎÜ û¾3sÆ&"J+ãرcJ)¥²²²T@@@e&MRJ)5}úôü1¯^½:¿ÌÌÌïall¬²ÙlÚ¨T©úé§|ÏÏ?¯bbb
+Élû)¢¨BåõPEÊúïÿ[ävW+/t8 ºvíªBCCUëÖÕºuëRJ8q¢ÀáîÝ»+¥ºzõª4iªW¯ªZµª8p`þðeËè'/<xPåæ檵kת'ª~ýú)âàà`Õ±cGµpáB¥Rû÷ï/ôÁ?ïøþýûÕÅÕ3Ô³Ï>«ªVªDþ.\¸
¤*V¬¨Ê+§ºwï®:T $TJ)ó^§N [·nƱfÍ¥R}ûöU"ÿ2»víRíÛ·W~~~*00P
4H%''+¥<xp6RJmß¾]uíÚU©-[ª©S§æ©k×®.m?EQU¨¼>+ÔõÖ[§
+'ïxZZZ¡í«V?ÖÎ;zmݺuóû¹ï¾û(ͦN>](d<òÈ#J)¥>¬RjòäÉùËÊ+§²²²Ô+WòRÞÙ#Gê7/}ùåù?»ÿþûRJ?~\/_¾Ðk¦M¦RêÇ´¼ýEQTáâ+""EÞx^S¦Lììì?;pà@þϪV*""ݺuæÍËÙ³geÆ
Ú9~ü¸¬\¹RD®M|£ôôtyùåE)åÒøìv{¡ÊÉÉÉ_Þ¶m[1cF¡{@òÄÆÆÆWDäü£/_^6oÞ,«W¯.ô£GʺuëDD¤G""¢EHçÎó×Íûï7ÞxCDDºté¿ì{îY¹r¥dddȵGôïß_üüü
+ôûöÛoKpp°=:ÿgy÷¼ûî»E>TòË/¿k÷
XÚ~+ý,''G¤fÍ "×n¦¹|ò>ßèܹs""Ò¼yóBËvîÜ)/_vy|ÿûßÝÜíëë+õêÕvíÚÉÔ©SeøðáÒ°aCiß¾}¡g¬_¿¾P
6¥K:íwëÖÒ§OÈÿY\\9R:uêÿ³.]ºHJJ|óÍ7òÁHTTHFFtëÖ-ÿuyfÏ-íÛ·AÉ©S§ä»ï¾+VÈ+äüùóráÂ
ãÈ{ßË-+½zõ*4NÍ&R¶lYiܸq¡í-jû+ F|||.Ë®öúváÂY·ntêÔI¢¢¢$<<\D$ÿÒ³åËË>(]ºtmÛ¶ÉÝwß-{÷î£Gh{Æòé§JÇ¥G#mÚ´:H¤~ýúòæo8óÖ[o&½{÷ZÞv+¬/".iiirìرüÑó$''ËsÏ='J)©P¡Bþ
åyï{¿~ýÜ»ï¾[RSSåøñãâïïoiû+¬¿OfÎiyû)¢¨"Ëë (*Õuï½÷ª+W®ä?ãôéÓ*..NýôÓOùró^èõÅ wÝuWþþõë׫I&©_|QýðÃùý=º@;%
J)[¨®·dÉU¥J¯7ûðͲINNäädIJJääd9}ú´;vLÛ+
+òöPò
ÈdÔ¨QÞ
+pSkѢ
ÄÇÇKpp°·++Í7=zHûöí¥}ûöR½zuÃõ/\¸ [·nøøxíÛ·Îçiwq»òú\ÀTé)???uêÔ)Óg¼ñÆ^ëõõÂ/yØ°aÚ*îs at BBBÔË/¿¬N8a:¢$&&ª>ø@
j}ïìv»6l?¾KOÉÎãp8ÔÒ¥KÕ#T¹rå<2F£ç¾üío+ò5ê7ÞP/^túÚsçÎ9í³iÓ¦jß¾}N+..Îåí(MϹ¾Þÿ}ÓqEDDÜûÍJ
¨)S¦¨sçÎn·åË«öíÛh<ÁÁÁêêÕ«ýÌ9Ó-ûúÅ_4ݦþÙm¿[K.5ì«qãÆ.·éëë«xààÒ¾*ÊéÓ§ÕÛo¿*T¨ õßÇ]}ï5UjËë JQÅÄÄX:ð¶U®\Ymß¾]íܹÓi=ÿüóÚ*N+T-Z´P'OVG±¼
ï¿ÿ~±Çov-ò[o½ey×»ï©Q£émCuîÜù¦ÚoyU¥J˳\mÞ¼Y=ûì³*,,Ì°M???uß}÷©~úIåääXjûûï¿·|OÈÀ
Ûr8*88¸XûÂn·«óçÏ[sü.öïßß°íÑ£G¶hiVÁuï½÷*»ÝnÚfxx¸7n¥v¯^½Z¬ÙßòãnѸú¿òú+(VûþóMÇ\¢g
©¸¸8Ó~:¤|}}]nßè¡3.]R¯¿þz±g´¹ÕHZµÔ3Ï<£V®\iéý[²dòóó+QÞØo"¢{ì1Ó~ÕÝwß]¢í´4«ÃáP5²Ôæ²eËÛzï½÷5Ö1cÆXÞyJò<£p¶gÏKm:tÈp|Ï>ûlÿ]6Ì°ÜÜÜbýä¸ëĨ[ª¼>+
+2=Øÿãÿp¹]³edd¨ÈÈH·½wUªTQ'O4ìóøñã.¸uåáÂ
}¶ÈßOoÊÊÊRùË_Üöüoì·W_}Õ´/+÷¸úï×ìììlU»vmÓ¶7nlØÎÕ«W]~òµÍfszÉÑ«RªM6.¿>ø a]»v5mã¥^2lãÝwßuÛþkÐ áïê¢E\jã.EY*¯*%eåƶÛáÛ
«äÈ#ªlÙ²nëwñâÅý-_¾Ü¥ö"""L¯o~â'ÜþþuïÞÝô½{à\jÓêÂß~ûÍ-ßÜ[ù=¸ÕH||¼[¾õæ~óõõU¿ÿþ»a_ëÖsûï¼ÈµK)Íþ½ýýï·ÔÙ±¸G.ÍèlÂ?ÿùOètùK/½äò{ñÙg9mïÂ
.í>}ºá{PÜ{?Ñè]yb;Ç]²V<ù¬<D(==]ÃHn}ôQ§Æ½Þüùó
»:Ïú/¼ 6Íéò-[¶È¬Y³\jÓeËÉÎ;
×éÑ£ÛûÍÌÌáÃKvv¶ÛÛ¾Õ¥¥¥ÉìÙ³åèÑ£Úûvç~»÷Þ{¥VZë¼ñÆ%î§(+W®4}`ã£>jéAzf%tu:^£gz¬X±B/_^¬×:cô+ní·sçÎ}:uÊr[*U2]«¸³éX©g}Ö°ï£GºÔoâþö·¿iý=¸ÕÎ(¥Ô'Ô/¼àò%>¥e¿}Tñï°ZO?ý´éöFEE¶Ó¯_?Ã6Ö¬YãÒ¸¾ÿþ{§mÕªUK=üðÃN»zH:uÇþØc¹e_®ZµÊû®iÓ¦êW^qZ7N©^TqÜ¥(Êë JAùúúhRSS½>Ne%|ýõ×nï·Y³f}fgg[në'0lëСC}Õ+WÇP¿~}Ëíý!ÌÌÌTÕªUÓú{p+<)))êÑG-ñ{¨s¿)ÃaØßã?îÑßûªU«ÁÊ%M*##Ãð}³zù§Ífsú<*Q5kÖ4³+÷<þøãNÛÉÍÍUÕ«W·ÔÙáYYY%zF'ã.EY/.Á\{ð
×±ú4ßÛÁÆÝÞfJJár???ËOÃíر£ár³K<J*--Íôr£Ë4\µ`Á9sæÛÚ»ÝUªTIþùÏÊ7ß|ãÒ]åÎý-v»ó?iC,Xà¾9{ö¬¬Y³Æp+O]¹rEVZåty2e$::
ÚÒ4iâôòÍ+WÈÉ'eß¾}NÛpå2¬§Ë¶mÛ&§O¶ÔÎñãÇ
ûûûË5kä®»î²<6Oã¸Xg~1*nçÏ7ü[®\9£)Ý6mÚäö6ÍHhh¨iPñþB]»vIïÞ½.wç¥Kº-o;pà\¹r¥DmØl6
+
+J*I
+¯I72lØ0Þ½{Ë¡CJ4¦¢¸s¿µk×Îpù5k$99Ùmý9óÃ?~`ïСØívÉÍÍ5l'..ÎðßO§NL?l¼+ ñññ.ÁòꫯJ=^VéÙ³§ôìÙSD®}a´víZY½zµ¬Y³F¶nÝ*Ã¥qXÁqp
ù¬'NhMéUÚÙ·«!!!²páBM£q.((Hl6(¥JÔNFFFtûQJÉìÙ³e÷îݲjÕ*©X±¢áú&Mü±ÄûLĽû-$$Äpù¥KLojv¤¤$ÉÍÍ5üæÝÊã+
+
+r:j£F¤zõêE.»ñþ<²nÝ:§ý]Òå®éw¹té<õÔSR¿~}>}ºG.jØ°¡¼ûî»räÈùË_þâÒ»k È·qãFÓK0Js+¬²2[Ù½º}è,îJÅaå9®~H6:бcÇ"ovvdûöíýoÙ²ÅéD*TVZúyLLÓö-ZäYÓ¤¥¥É9sdèС*-[¶qãÆÉÿû_Â^Qî¸ãùòË/M'Âqp
X #Gôü@\Ô·o_Óu¶oß®a$ÞgöÐl¾zÜÞ~ÿýwÓun¶+p¹¯åp8\îïg)Ñ6Ö[×°ýU³fM·þÞØl6Ãû'rssUZµ,ý»â¸KQÊë JyU¨PAmß¾Ýðàv½«W¯ª)S¦¨
+*¸¥ÿ+ QóæÍÓx8-ÚñãÇKtÃyQu«Q=ôÊÌÌtç.0túôiÕµk׿/}~øá·ÍÐS>ÀôìÙ³ØײeËTÙ²e=º]³g϶4×^{Ä}½öÚkúúáܾeÊQ7o.Éî(¶üãnÙ»Udy}+*¨_~Y>}Úí×3gΨY³f©
z|;náééÜÜ\ܼyS*v
+vvv ADD"""àêê\»v
DYYY{WÑ,Rh-Kν½½=
++îß¿ßä6äååá~P§+çÉgÏEuu5+
+B\\\{WÚHG:÷555¸}ûvÊjý»^[[évvv8p |}}áëë±cÇbòäÉ8yòd«ëLDDYòä¥^Òïêê*Ë/Wõ?¾U3(Í_äô¦¶ß½{w<x°øøø´{¦iíhøDÓhy>ù1F¥³£G···I;;;Ùºu«ÔÖÖ6yl;R<Jm =Î}[?¹xñ¢Eû¡<)))i´Á`#FH^^$''áÁx4¢Í_B/++ÃÊ+ñïÿ
-îÝ»Kß¾}¥~ýúR¥J©R¥+WNDD®]»&§N'OÊ'd÷îÝ2gίѧË222$##Ãéò°°02dôíÛW"##ó¶EDäèÑ£|³/"¦ë¸ótöâ¾ßìv»´mÛVþð?Hÿþý¥aæ¯IMM+VÈ%K$..NN>]äqøùùIÙ²e
×IOOÌÌÌ"÷ ¥K6\'33Óc¥dÉN_¹r¥H¡ Y³fÒ[7i×®´k×NªVj¸þÅeûöí'qqq`:·qÜÅÊçsSŧÔ3gL
ðÆoø|¬7Ö/¾h:æ!CXjËÝçªW^yE<yÒt,
9uê2eªX±¢Ö÷În·«!C¨
ºôì\C-_¾\
6L.]Ú+c4zîËßÿþ÷B_¤Þxã
uéÒ%§¯=þ¼Ó>4i¢öïßï´bcc]Þâôë½÷Þ3WÃ
oýf¥BCCÕ´iÓÔùóçM·ÛÌÊ+U»ví4uíÚ5Ã~fÎé}ýÒK/nÓ?þè±ßåËöÕ¨Q#Ûô÷÷W=ôwi_æìÙ³ê¯ý«*[¶¬Öswõ½×T±-*FcéÀWÜLV¡B víÚå´Fe©-wÈþô'uåÊÓ÷ÎS§N©N:iyßî»ï>µ}ûv[)¥.]º¤&O¬J,éÑqºú°N:*!!Át¼FÍ~öíÛçòv×-
õh»wü Èc·Û¥M6¦ëmÞ¼YÃh7»Ý.sæ̱ØâwÞñè¦VZI||¼T¯^Ýcm:c·ÛeôèÑòÃ?Njà 5kÖåËKXX×ûº>Üto¿ýÖký{{¿ÅÄÄÈòåË=þÒHÿþýeË-nù5»ví2½©¸¨ÄPá-´¤7o®&O¬=jyÞ{ï=·Çov-ò[o½ey7ºï©VémCEGGßRû-·*Uªdy«þY=ÿüó*,,Ì°Íáò%JȺuëä{î±<6oã¸Xg~1*î.\0ü[ºti£)Þ¶nÝêñ6ÍHÅM¢ïÿìÞ½[zöìét¹'?8,_¾ÜcmùÚÁåêÕ«EjÃf³Ipp°/_^Ê-kxMº!CHTTôìÙS>\¤1ÆûmÛ¶
Ë×['IIIëÏùóç~`oß¾½ØívÉÉÉ1l'66ÖðßOÇM?lÜ-Kãùïÿki<ðÓõ¬ÞÒ¤IÃ1»òìÒ¥K«/¿7øé§ÔÃ?ìñ{ó¬Ç]r¸y̾·Ûí^½ãV"^iÛì[Q+̾
s8ræÌ"÷cf÷îÝË«U«æ±¾N>í±¶n7CdÏ=òÉ'È A$,,Lbbb,É»ûî»eÎ9nIqÆSûÍf³^d6C§üöÛo¦ëXqððáÃrèÐ!§ËÛ´i#¦ítìرÐïß¿?ßå3«W¯vzü)W®DDDöetö#))É¥KW¯\¹"_}õåõ[·n-sçΤ¤$Ñ£GË=÷ÜcxY'qÜ\Ã%XÈsáÂÓuBBBîø©x\åK
40\&=zôðú8
M³iUFF\¾|Ù#mÝ)rrrdõêÕ%C÷ß_*V¬høÞ½{Ë< ,ðÈ<¹ßBCCMïÚ¹s§Gú2sþüyÓu*T¨`©ØØX=zt¡ËJ.-ZµM69}}£F¤råÊ
.»ñò+ë÷lÛ¶MZ·n]èú:u2
¬F$..Îå/X^{í5éÖÓKÃ
-S¢D éÞ½»tïÞ]D®a´~ýzY»v¬[·N¶oß.Ã¥qXÁqp
y¬'OjMñUÜÙ·«¡¡¡²xñbM£q.88Xl6(¥ÔNzzºFtçQJÉìÙ³eÏ=²fÍ)W®áú&Mï¿ÿ¾ÈûLijû-44ÔpùåËMojöÄÄDÉÉÉ1üæÝÊã-n¾ÄÙåWCâããMû3ºäæçDGG;½§`ýúõ¦÷çè%Ë-ç{NªU«&=ô>|Øôu
64ü⸸ÔW_}¥{î95hÐ Õ¡CÕ°aC¢*T¨ 5k¦zôè¡®&O¬vïÞíV?¯½öG¶ÓÈtDDTݺuUjjªé{£>ÿüsU§NKíúùù©={NûkÏ=ncy')nÆãö{è«oPK,iù¬íÞ½{UïÞ½U@@¥¶ÔÿøGµoß>Kí?ýôÓß>+߰ߨcÇn÷ÕµkWú2eG¶ÑÏÏO8pÀ´¿ãÇ«'xBùùù¹Ô~©R¥ÔСCÕ¦MLûHHHp¹}»e\¶ÿûÀ~ýúÉÄß¿x<»ví<ýôÓfò1axózll¬ôéÓ§ÈýæêÕ«ßf5iÒÄtªÈÂ<ðÀ²`ÁËëïÙ³G~üñG9tè?^Î?/%KJ*I*U¤}ûöÒ£G
µÔ^rr²´k×N<èòØED²²²Nõ"åËw«]#f¿û÷ï»ï¾Û¥6
fiúèâbôèÑòÑG¹ýz_ì·\M6þYJ,iiý.È¢E$>>^Î=+çΩX±¢T¯^]ªU«&2hÐ Óør-\¸PàñÚ´i#6m²´nzzºHVV[}JJJå÷1&&¦Hg\n4pà@7o¥uO8!qqq²fÍÙ¼y³üöÛorõêռ塡¡R³fM¹ë®»¤K.òè£ZþýëÒ¥[7ñsÜù<Q·Vµk×ÎòÍà:¤¦¦ªmßív$·^~ùe¯÷«W¯ª¶mÛé}á^êÙg-ò{èëoP
¤2335¾s¿õè=
-7Ýn7½î?×+ÜߪU«,õuñâEËg¬ÖÇìö>ÈÈÈPgÏU.]r» &iüw)Êiù|- 7@nnnnnnnnnnnnnlE¤½ë@DDDDD-***]§zõê
òòrdeeU""ê\Ĩ¨¨Ü¾}[VZ%fÛÒpuuWWW1ºl¯µÛóÍ7EDä믿nzéÁÁÁêù¿uëüâ¿h¶ü¾}ûDDdùòåí^÷CÌÌÌ&ÛÕµk×ä·¿ým»×ÓxÚ@{ûþýû«eÂÃÃ[ÜNjjª¼÷Þ{FÓÿøÇ?¶øïúOõë×O]þW^i±|}}½äææÊW_}%~~~õÛ¶m$''·û9a0õÂì' ÜÜ\MëÝ»7|||àêê¥K"""ááᨯ¯·t3-²··ÇíÛ·
-Rÿ;..÷îÝÃ;ï¼cô²£Á`À/¼ñãÇ#$$ùùùHIIÁ={¯Yÿ>}ú &&aaað÷÷GAA?øøxµBKÛ3f"##
;w¿µû¨X³f
ìíí±dɸ»»ã¥^ÂO<www>}»víÒìÎàëë'5Ëé}l̽6¬õ½ììlxzz¢wïÞ¯£°°P=ÉÕÕ#G|}}¡¾èÜÌÌLÍéééé-???-¬üúªðööVÝ]³fúëj]]jkk-e^¡/!mo\¿~]6lØ ,7ª6<zô¨ÉðÊ· ²³³eûöíFæ*Ã:Þ»wO6mÚ$-uëÖGïêêªïÚµ«:uJÃ-[$..NÊ´¶¶ÖäÃMm_kRK÷QRtÈ!Ç.''GDD¢¢¢¦·×*7`À+pùòedgg·wUtuèÐ!+«ó}}}1oÞ<DDD W¯^(((@FF>ýôS|÷ÝwFërwwÇ¢EPYYuëÖ!,,&MBLL***>ø@í^Ø
fÍ
g}Dii)._¾¯¿þß|óQÙ¦Ú@KÚPÿ#Æ pîÜ9ÄÇÇÔg ÁÉ'±{÷nuºr]¬^½:u*yæܽ{{öìÁþýûQQQ~ýúaöìÙ=z4lllpêÔ)|ôÑGV?ÿmyî;³gÏø±[Ö
Ú¹FDDÔÌzdÒ\,%þö·¿È'ÔisæÌ>úHV®\©vØ¿¿ZfÄ¥Î{øð¡úwYYÌ;W-{èÐ!n?"bÔ¡k×®²wï^ÍrEEE2~üxºGFFÊÍ7Õruuuêß÷ïßÐÐÐm¿±pÍÙG%îß¿/"õÝ,rrrL¶YYY)ÑÑÑ&ËÅÆƪeúôécµGi
»`¹¹¹ÉܹsED¤ªªJ=^
£±.XzK®¶õë×ÈÕ«W[µ'JuuµZÿíÏúõëÊ÷ë×OÝÏÙ³gKmmÉ1ÈÌÌ!C-×¥KùÏþÓävÆÐXhi qqq""¨¹ïï¼ólÛ¶Móºxþù票¨Èdÿöïß/aaaFõP\¿~]³;TG;÷©ãÇúöÜ¥K£yìÅ`0L·@KîÝ»«76mR§+ HFFÔÕÕÉwß}'Ë
/'
+
-ÌÌL£å+**äÍ7ß4ÙÄÅÅIUUI+**äÏþ³Qù¦Ú¹mlÀjrª¸yó¦Ì;W^~ùeé¼ ÈÃûÎôë×O]ÇÑ£Gæ1a0G#ÿÿGÓ¿ÀÓÓ¸páB³ßpvvÊËË5tssChh(?~¼Å÷îÝ»#;;/_n²ëOKÛo}|èyl,¹6¬©G
+Á ò¿üEDêû@9R
-Â!CPVV. 77·Ång Ayy9;ft¼Fëׯ#77^^^øáP__¯v¥ñññÁ¸qãPRRÿýïMk4¼«1|øp8"¤¦¦6ÛõJ9m\ No newline at end of file
+Âúõëñâ/jÓûØ{mXë{èÓ§zôèañ:nݺ¥äîîaÃÁ××~~~R_tnLZZæôÔÔT+___<xW®\iv
µõ>v&o½õ&M+@}¿íüXéâ1qâDÍùááá(..Fvv6ìíí¯v×xòÉ'MÊ÷îÝØ°aE¿ÞZc;,\¸+'''|þùçpvvnrû6l@¿~ý¦Í?Ã
CQQ>ýôS+e^¡/ú!moäççËÆeÞ¼y²iÓ&õÃÇ7þSù6AFF$$$
ªëX^^.[·nȺuëÆ£wwwWËwéÒEN>Öaûöí§eZ]]mòÅáƶ¯5©¥û¨)¨yì233ED$&&Æhz{}°±rýû÷W÷EDäí·ßn·ccîµaÍ2e:\°H^^ìß¿_öîÝ+wïÞU§8qB|||]³f:¼éîÝ»eÑ¢E²cÇÉÉÉââbùæoDDäôéÓj»m8ï;wäÎ;/K.}ûö©ófÌa´?üáj;زeÌ3GæÎ+ ê¿
×Õjæ¶1;;;ÉÎÎúá½$>>^òòò¤®®NýýöíÛ[|]lÙ²EDL£ QQQê¶:ú¹oë/¡£a{2çC#GT×1|øpÍ6Éaxãgæ-`͸¹¹©côÿÔ~(ööö&ËÌ1CªªªÔr
o´mlldñâÅFóEê¿ýÞ{ïI·nÝLÖçèè(ÿøÇ?Ô1ó©©©òôÓO·xûZ7_îãÏ% -RË6L@ô>6\Öù׿þ¥¹ï÷ïß%K|PØÛÛË;Ê×ÖÖÊñãÇÅßß_
$©©©ê5 =$$DÒÒÒ/--7ß|Ód[666'&u,--?ÿùÏFåk涱þýû«É©âÎ;2{ölyùåE¤ó& 9÷1éÝ»·ºãÇÍcÂ`0Fþÿ§oß¾G>}påÊ\¼x±Éo¸ººÂ××%%%ÃHzzz"""
BAAN<Ùì{®®®222píÚµF»þ4·ý¶ØÇGÇÆkúví¢¨¨/^DVVV³ÝÎ8qÂèx9ùùùÈÊÊB¿~ýðÃ? ®®
NíJãëë1cÆ \ No newline at end of file
More information about the p4-projects
mailing list