home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume13 / imagemagic / part05 < prev    next >
Internet Message Format  |  1991-05-22  |  75KB

  1. Path: uunet!cs.utexas.edu!sun-barr!newstop!exodus!dupont.com!cristy
  2. From: cristy@dupont.com
  3. Newsgroups: comp.sources.x
  4. Subject: v13i021: ImageMagick - Graphics display programs, Part05/21
  5. Message-ID: <13791@exodus.Eng.Sun.COM>
  6. Date: 22 May 91 08:57:36 GMT
  7. References: <csx-13i017:imagemagic@uunet.UU.NET>
  8. Sender: news@exodus.Eng.Sun.COM
  9. Lines: 2002
  10. Approved: argv@sun.com
  11.  
  12. Submitted-by: cristy@dupont.com
  13. Posting-number: Volume 13, Issue 21
  14. Archive-name: imagemagic/part05
  15.  
  16. #!/bin/sh
  17. # this is img.05 (part 5 of ImageMagick)
  18. # do not concatenate these parts, unpack them in order with /bin/sh
  19. # file ImageMagick/image.c continued
  20. #
  21. if test ! -r _shar_seq_.tmp; then
  22.     echo 'Please unpack part 1 first!'
  23.     exit 1
  24. fi
  25. (read Scheck
  26.  if test "$Scheck" != 5; then
  27.     echo Please unpack part "$Scheck" next!
  28.     exit 1
  29.  else
  30.     exit 0
  31.  fi
  32. ) < _shar_seq_.tmp || exit 1
  33. if test ! -f _shar_wnt_.tmp; then
  34.     echo 'x - still skipping ImageMagick/image.c'
  35. else
  36. echo 'x - continuing file ImageMagick/image.c'
  37. sed 's/^X//' << 'SHAR_EOF' >> 'ImageMagick/image.c' &&
  38. X              count+=(q->length+1);
  39. X              q++;
  40. X            }
  41. X          /*
  42. X            Guarentee the correct number of runlength packets.
  43. X          */
  44. X          if (count > (image->columns*image->rows))
  45. X            {
  46. X              Warning("insufficient image data in file",image->filename);
  47. X              DestroyImage(image);
  48. X              return((Image *) NULL);
  49. X            }
  50. X          else
  51. X            if (count < (image->columns*image->rows))
  52. X              {
  53. X                Warning("too much image data in file",image->filename);
  54. X                DestroyImage(image);
  55. X                return((Image *) NULL);
  56. X              }
  57. X          break;
  58. X        }
  59. X      }
  60. X      break;
  61. X    }
  62. X  }
  63. X  (void) free((char *) pixels);
  64. X  if (image->file != stdin)
  65. X    if (strcmp(image->filename+strlen(image->filename)-2,".Z") != 0)
  66. X      (void) fclose(image->file);
  67. X    else
  68. X      (void) pclose(image->file);
  69. X  return(image);
  70. }
  71. X
  72. /*
  73. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  74. %                                                                             %
  75. %                                                                             %
  76. %                                                                             %
  77. %   R e d u c e I m a g e                                                     %
  78. %                                                                             %
  79. %                                                                             %
  80. %                                                                             %
  81. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  82. %
  83. %  Function ReduceImage creates a new image that is a integral size less than
  84. %  an existing one.  It allocates the memory necessary for the new Image
  85. %  structure and returns a pointer to the new image.
  86. %
  87. %  ReduceImage scans the reference image to create a reduced image by computing
  88. %  the weighted average of a 4x4 cell centered at each reference pixel.  The
  89. %  target pixel requires two columns and two rows of the reference pixels.
  90. %  Therefore the reduced image columns and rows become:
  91. %
  92. %    number_columns/2
  93. %    number_rows/2
  94. %
  95. %  Weights assume that the importance of neighboring pixels is inversely
  96. %  proportional to the square of their distance from the target pixel.
  97. %
  98. %  The scan only processes pixels that have a full set of neighbors.  Pixels
  99. %  in the top, bottom, left, and right pairs of rows and columns are omitted
  100. %  from the scan.
  101. %
  102. %  The format of the ReduceImage routine is:
  103. %
  104. %      reduced_image=ReduceImage(image)
  105. %
  106. %  A description of each parameter follows:
  107. %
  108. %    o reduced_image: Function ReduceImage returns a pointer to the image
  109. %      after reducing.  A null image is returned if there is a a memory
  110. %      shortage or if the image size is less than IconSize*2.
  111. %
  112. %    o image: The address of a structure of type Image.
  113. %
  114. %
  115. */
  116. Image *ReduceImage(image)
  117. Image
  118. X  *image;
  119. {
  120. #define Rsum(weight) \
  121. X  total_red+=weight*(s->red); \
  122. X  total_green+=weight*(s->green); \
  123. X  total_blue+=weight*(s->blue); \
  124. X  s++;
  125. X
  126. X  ColorPacket
  127. X    *scanline;
  128. X
  129. X  Image
  130. X    *reduced_image;
  131. X
  132. X  register ColorPacket
  133. X    *s,
  134. X    *s0,
  135. X    *s1,
  136. X    *s2,
  137. X    *s3;
  138. X
  139. X  register RunlengthPacket
  140. X    *p,
  141. X    *q;
  142. X
  143. X  register unsigned int
  144. X    x;
  145. X
  146. X  unsigned char
  147. X    blue,
  148. X    green,
  149. X    red;
  150. X
  151. X  unsigned int
  152. X    y;
  153. X
  154. X  unsigned long
  155. X    total_blue,
  156. X    total_green,
  157. X    total_red;
  158. X
  159. X  if ((image->columns < 4) || (image->rows < 4))
  160. X    {
  161. X      Warning("unable to reduce image","image size must exceed 3x3");
  162. X      return((Image *) NULL);
  163. X    }
  164. X  /*
  165. X    Initialize reduced image attributes.
  166. X  */
  167. X  reduced_image=CopyImage(image,image->columns >> 1,image->rows >> 1);
  168. X  if (reduced_image == (Image *) NULL)
  169. X    {
  170. X      Warning("unable to reduce image","memory allocation failed");
  171. X      return((Image *) NULL);
  172. X    }
  173. X  reduced_image->class=DirectClass;
  174. X  /*
  175. X    Allocate image buffer and scanline buffer for 4 rows of the image.
  176. X  */
  177. X  scanline=(ColorPacket *) malloc(4*image->columns*sizeof(ColorPacket));
  178. X  if (scanline == (ColorPacket *) NULL)
  179. X    {
  180. X      Warning("unable to reduce image","memory allocation failed");
  181. X      DestroyImage(reduced_image);
  182. X      return((Image *) NULL);
  183. X    }
  184. X  /*
  185. X    Preload the first 2 rows of the image.
  186. X  */
  187. X  p=image->pixels;
  188. X  image->runlength=p->length+1;
  189. X  s=scanline;
  190. X  for (x=0; x < (2*image->columns); x++)
  191. X  {
  192. X    if (image->runlength > 0)
  193. X      image->runlength--;
  194. X    else
  195. X      {
  196. X        p++;
  197. X        image->runlength=p->length;
  198. X      }
  199. X    s->red=p->red;
  200. X    s->green=p->green;
  201. X    s->blue=p->blue;
  202. X    s->index=p->index;
  203. X    s++;
  204. X  }
  205. X  /*
  206. X    Reduce each row.
  207. X  */
  208. X  p=image->pixels;
  209. X  image->runlength=p->length+1;
  210. X  reduced_image->packets=0;
  211. X  q=reduced_image->pixels;
  212. X  q->length=MaxRunlength;
  213. X  for (y=0; y < (image->rows-1); y+=2)
  214. X  {
  215. X    /*
  216. X      Initialize sliding window pointers.
  217. X    */
  218. X    s0=scanline+image->columns*((y+0) % 4);
  219. X    s1=scanline+image->columns*((y+1) % 4);
  220. X    s2=scanline+image->columns*((y+2) % 4);
  221. X    s3=scanline+image->columns*((y+3) % 4);
  222. X    /*
  223. X      Read another scan line.
  224. X    */
  225. X    s=s2;
  226. X    for (x=0; x < image->columns; x++)
  227. X    {
  228. X      if (image->runlength > 0)
  229. X        image->runlength--;
  230. X      else
  231. X        {
  232. X          p++;
  233. X          image->runlength=p->length;
  234. X        }
  235. X      s->red=p->red;
  236. X      s->green=p->green;
  237. X      s->blue=p->blue;
  238. X      s->index=p->index;
  239. X      s++;
  240. X    }
  241. X    /*
  242. X      Read another scan line.
  243. X    */
  244. X    s=s3;
  245. X    for (x=0; x < image->columns; x++)
  246. X    {
  247. X      if (image->runlength > 0)
  248. X        image->runlength--;
  249. X      else
  250. X        {
  251. X          p++;
  252. X          image->runlength=p->length;
  253. X        }
  254. X      s->red=p->red;
  255. X      s->green=p->green;
  256. X      s->blue=p->blue;
  257. X      s->index=p->index;
  258. X      s++;
  259. X    }
  260. X    for (x=0; x < (image->columns-1); x+=2)
  261. X    {
  262. X      /*
  263. X        Compute weighted average of target pixel color components.
  264. X
  265. X        These particular coefficients total to 128.  Use 128/2-1 or 63 to
  266. X        insure correct round off.
  267. X      */
  268. X      total_red=0;
  269. X      total_green=0;
  270. X      total_blue=0;
  271. X      s=s0;
  272. X      Rsum(3); Rsum(7);  Rsum(7);  Rsum(3);
  273. X      s=s1;
  274. X      Rsum(7); Rsum(15); Rsum(15); Rsum(7);
  275. X      s=s2;
  276. X      Rsum(7); Rsum(15); Rsum(15); Rsum(7);
  277. X      s=s3;
  278. X      Rsum(3); Rsum(7);  Rsum(7);  Rsum(3);
  279. X      s0+=2;
  280. X      s1+=2;
  281. X      s2+=2;
  282. X      s3+=2;
  283. X      red=(total_red+63) >> 7;
  284. X      green=(total_green+63) >> 7;
  285. X      blue=(total_blue+63) >> 7;
  286. X      if ((red == q->red) && (green == q->green) && (blue == q->blue) &&
  287. X          (q->length < MaxRunlength))
  288. X        q->length++;
  289. X      else
  290. X        {
  291. X          if (reduced_image->packets > 0)
  292. X            q++;
  293. X          reduced_image->packets++;
  294. X          q->red=red;
  295. X          q->green=green;
  296. X          q->blue=blue;
  297. X          q->index=0;
  298. X          q->length=0;
  299. X        }
  300. X    }
  301. X  }
  302. X  (void) free((char *) scanline);
  303. X  reduced_image->pixels=(RunlengthPacket *) realloc((char *)
  304. X    reduced_image->pixels,reduced_image->packets*sizeof(RunlengthPacket));
  305. X  return(reduced_image);
  306. }
  307. X
  308. /*
  309. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  310. %                                                                             %
  311. %                                                                             %
  312. %                                                                             %
  313. %   R e f l e c t I m a g e                                                   %
  314. %                                                                             %
  315. %                                                                             %
  316. %                                                                             %
  317. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  318. %
  319. %  Function ReflectImage creates a new image that refelects each scanline of an
  320. %  existing one.  It allocates the memory necessary for the new Image structure
  321. %  and returns a pointer to the new image.
  322. %
  323. %  The format of the ReflectImage routine is:
  324. %
  325. %      reflected_image=ReflectImage(image)
  326. %
  327. %  A description of each parameter follows:
  328. %
  329. %    o reflected_image: Function ReflectImage returns a pointer to the image
  330. %      after reflecting.  A null image is returned if there is a memory
  331. %      shortage.
  332. %
  333. %    o image: The address of a structure of type Image.
  334. %
  335. %
  336. */
  337. Image *ReflectImage(image)
  338. Image
  339. X  *image;
  340. {
  341. X  ColorPacket
  342. X    *scanline;
  343. X
  344. X  Image
  345. X    *reflected_image;
  346. X
  347. X  register ColorPacket
  348. X    *s;
  349. X
  350. X  register RunlengthPacket
  351. X    *p,
  352. X    *q;
  353. X
  354. X  register unsigned int
  355. X    x,
  356. X    y;
  357. X
  358. X  /*
  359. X    Initialize reflected image attributes.
  360. X  */
  361. X  reflected_image=CopyImage(image,image->columns,image->rows);
  362. X  if (reflected_image == (Image *) NULL)
  363. X    {
  364. X      Warning("unable to scale image","memory allocation failed");
  365. X      return((Image *) NULL);
  366. X    }
  367. X  /*
  368. X    Allocate scan line buffer and column offset buffers.
  369. X  */
  370. X  scanline=(ColorPacket *) malloc(image->columns*sizeof(ColorPacket));
  371. X  if (scanline == (ColorPacket *) NULL)
  372. X    {
  373. X      Warning("unable to mirror image","memory allocation failed");
  374. X      DestroyImage(reflected_image);
  375. X      return((Image *) NULL);
  376. X    }
  377. X  /*
  378. X    Reflect each row.
  379. X  */
  380. X  p=image->pixels;
  381. X  image->runlength=p->length+1;
  382. X  reflected_image->packets=0;
  383. X  q=reflected_image->pixels;
  384. X  q->length=MaxRunlength;
  385. X  for (y=0; y < reflected_image->rows; y++)
  386. X  {
  387. X    /*
  388. X      Read a scan line.
  389. X    */
  390. X    s=scanline;
  391. X    for (x=0; x < image->columns; x++)
  392. X    {
  393. X      if (image->runlength > 0)
  394. X        image->runlength--;
  395. X      else
  396. X        {
  397. X          p++;
  398. X          image->runlength=p->length;
  399. X        }
  400. X      s->red=p->red;
  401. X      s->green=p->green;
  402. X      s->blue=p->blue;
  403. X      s->index=p->index;
  404. X      s++;
  405. X    }
  406. X    /*
  407. X      Reflect each column.
  408. X    */
  409. X    s=scanline+image->columns;
  410. X    for (x=0; x < reflected_image->columns; x++)
  411. X    {
  412. X      s--;
  413. X      if ((s->red == q->red) && (s->green == q->green) &&
  414. X          (s->blue == q->blue) && (q->length < MaxRunlength))
  415. X        q->length++;
  416. X      else
  417. X        {
  418. X          if (reflected_image->packets > 0)
  419. X            q++;
  420. X          reflected_image->packets++;
  421. X          q->red=s->red;
  422. X          q->green=s->green;
  423. X          q->blue=s->blue;
  424. X          q->index=s->index;
  425. X          q->length=0;
  426. X        }
  427. X    }
  428. X  }
  429. X  (void) free((char *) scanline);
  430. X  reflected_image->pixels=(RunlengthPacket *) realloc((char *)
  431. X    reflected_image->pixels,reflected_image->packets*sizeof(RunlengthPacket));
  432. X  return(reflected_image);
  433. }
  434. X
  435. /*
  436. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  437. %                                                                             %
  438. %                                                                             %
  439. %                                                                             %
  440. %   S c a l e I m a g e                                                       %
  441. %                                                                             %
  442. %                                                                             %
  443. %                                                                             %
  444. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  445. %
  446. %  Function ScaleImage creates a new image that is a scaled size of an
  447. %  existing one using pixel replication.  It allocates the memory necessary
  448. %  for the new Image structure and returns a pointer to the new image.
  449. %
  450. %  The format of the ScaleImage routine is:
  451. %
  452. %      scaled_image=ScaleImage(image,columns,rows)
  453. %
  454. %  A description of each parameter follows:
  455. %
  456. %    o scaled_image: Function ScaleImage returns a pointer to the image after
  457. %      scaling.  A null image is returned if there is a memory shortage.
  458. %
  459. %    o image: The address of a structure of type Image.
  460. %
  461. %    o columns: An integer that specifies the number of columns in the scaled
  462. %      image.
  463. %
  464. %    o rows: An integer that specifies the number of rows in the scaled
  465. %      image.
  466. %
  467. %
  468. */
  469. Image *ScaleImage(image,columns,rows)
  470. Image
  471. X  *image;
  472. X
  473. unsigned int
  474. X  columns,
  475. X  rows;
  476. {
  477. X  ColorPacket
  478. X    *scanline;
  479. X
  480. X  Image
  481. X    *scaled_image;
  482. X
  483. X  register ColorPacket
  484. X    *s;
  485. X
  486. X  register RunlengthPacket
  487. X    *p,
  488. X    *q;
  489. X
  490. X  register unsigned int
  491. X    x;
  492. X
  493. X  unsigned int
  494. X    *x_offset,
  495. X    y,
  496. X    *y_offset;
  497. X
  498. X  unsigned long
  499. X    scale_factor;
  500. X
  501. X  if ((columns*rows) == 0)
  502. X    {
  503. X      Warning("unable to scale image","image dimensions are zero");
  504. X      return((Image *) NULL);
  505. X    }
  506. X  if ((columns*rows) > MaxImageSize)
  507. X    {
  508. X      Warning("unable to scale image","image too large");
  509. X      return((Image *) NULL);
  510. X    }
  511. X  /*
  512. X    Initialize scaled image attributes.
  513. X  */
  514. X  scaled_image=CopyImage(image,columns,rows);
  515. X  if (scaled_image == (Image *) NULL)
  516. X    {
  517. X      Warning("unable to scale image","memory allocation failed");
  518. X      return((Image *) NULL);
  519. X    }
  520. X  /*
  521. X    Allocate scan line buffer and column offset buffers.
  522. X  */
  523. X  scanline=(ColorPacket *) malloc(image->columns*sizeof(ColorPacket));
  524. X  x_offset=(unsigned int *) malloc(scaled_image->columns*sizeof(unsigned int));
  525. X  y_offset=(unsigned int *) malloc(scaled_image->rows*sizeof(unsigned int));
  526. X  if ((scanline == (ColorPacket *) NULL) ||
  527. X      (x_offset == (unsigned int *) NULL) ||
  528. X      (y_offset == (unsigned int *) NULL))
  529. X    {
  530. X      Warning("unable to scale image","memory allocation failed");
  531. X      DestroyImage(scaled_image);
  532. X      return((Image *) NULL);
  533. X    }
  534. X  /*
  535. X    Initialize column pixel offsets.
  536. X  */
  537. X  scale_factor=(image->columns << 14)/scaled_image->columns;
  538. X  columns=0;
  539. X  for (x=0; x < scaled_image->columns; x++)
  540. X  {
  541. X    x_offset[x]=((x*scale_factor) >> 14)-columns;
  542. X    columns+=x_offset[x];
  543. X  }
  544. X  /*
  545. X    Initialize row pixel offsets.
  546. X  */
  547. X  scale_factor=(image->rows << 14)/scaled_image->rows;
  548. X  rows=0;
  549. X  for (y=0; y < scaled_image->rows; y++)
  550. X  {
  551. X    y_offset[y]=((y*scale_factor) >> 14)-rows;
  552. X    rows+=y_offset[y];
  553. X  }
  554. X  /*
  555. X    Preload first scanline.
  556. X  */
  557. X  p=image->pixels;
  558. X  image->runlength=p->length+1;
  559. X  s=scanline;
  560. X  for (x=0; x < image->columns; x++)
  561. X  {
  562. X    if (image->runlength > 0)
  563. X      image->runlength--;
  564. X    else
  565. X      {
  566. X        p++;
  567. X        image->runlength=p->length;
  568. X      }
  569. X    s->red=p->red;
  570. X    s->green=p->green;
  571. X    s->blue=p->blue;
  572. X    s->index=p->index;
  573. X    s++;
  574. X  }
  575. X  /*
  576. X    Scale each row.
  577. X  */
  578. X  scaled_image->packets=0;
  579. X  q=scaled_image->pixels;
  580. X  q->length=MaxRunlength;
  581. X  scale_factor=(image->rows << 14)/scaled_image->rows;
  582. X  for (y=0; y < scaled_image->rows; y++)
  583. X  {
  584. X    if (y_offset[y] > 0)
  585. X      {
  586. X        /*
  587. X          Skip a scan line.
  588. X        */
  589. X        for (x=0; x < (image->columns*(y_offset[y]-1)); x++)
  590. X          if (image->runlength > 0)
  591. X            image->runlength--;
  592. X          else
  593. X            {
  594. X              p++;
  595. X              image->runlength=p->length;
  596. X            }
  597. X        /*
  598. X          Read a scan line.
  599. X        */
  600. X        s=scanline;
  601. X        for (x=0; x < image->columns; x++)
  602. X        {
  603. X          if (image->runlength > 0)
  604. X            image->runlength--;
  605. X          else
  606. X            {
  607. X              p++;
  608. X              image->runlength=p->length;
  609. X            }
  610. X          s->red=p->red;
  611. X          s->green=p->green;
  612. X          s->blue=p->blue;
  613. X          s->index=p->index;
  614. X          s++;
  615. X        }
  616. X      }
  617. X    /*
  618. X      Scale each column.
  619. X    */
  620. X    s=scanline;
  621. X    for (x=0; x < scaled_image->columns; x++)
  622. X    {
  623. X      if ((s->red == q->red) && (s->green == q->green) &&
  624. X          (s->blue == q->blue) && (q->length < MaxRunlength))
  625. X        q->length++;
  626. X      else
  627. X        {
  628. X          if (scaled_image->packets > 0)
  629. X            q++;
  630. X          scaled_image->packets++;
  631. X          q->red=s->red;
  632. X          q->green=s->green;
  633. X          q->blue=s->blue;
  634. X          q->index=s->index;
  635. X          q->length=0;
  636. X        }
  637. X      s+=x_offset[x];
  638. X    }
  639. X  }
  640. X  (void) free((char *) scanline);
  641. X  (void) free((char *) x_offset);
  642. X  (void) free((char *) y_offset);
  643. X  scaled_image->pixels=(RunlengthPacket *) realloc((char *)
  644. X    scaled_image->pixels,scaled_image->packets*sizeof(RunlengthPacket));
  645. X  return(scaled_image);
  646. }
  647. X
  648. /*
  649. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  650. %                                                                             %
  651. %                                                                             %
  652. %                                                                             %
  653. %   T r a n s f o r m I m a g e                                               %
  654. %                                                                             %
  655. %                                                                             %
  656. %                                                                             %
  657. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  658. %
  659. %  Function TransformImage creates a new image that is a transformed size of
  660. %  of existing one as specified by the clip, image and scale geometries.  It
  661. %  allocates the memory necessary for the new Image structure and returns a
  662. %  pointer to the new image.
  663. %
  664. %  If a clip geometry is specified a subregion of the image is obtained.
  665. %  If the specified image size, as defined by the image and scale geometries,
  666. %  is smaller than the actual image size, the image is first reduced to an
  667. %  integral of the specified image size with an antialias digital filter.  The
  668. %  image is then scaled to the exact specified image size with pixel
  669. %  replication.  If the specified image size is greater than the actual image
  670. %  size, the image is first enlarged to an integral of the specified image
  671. %  size with bilinear interpolation.  The image is then scaled to the exact
  672. %  specified image size with pixel replication.
  673. %
  674. %  The format of the TransformImage routine is:
  675. %
  676. %      transformed_image=TransformImage(image,clip_geometry,image_geometry,
  677. %        scale_geometry)
  678. %
  679. %  A description of each parameter follows:
  680. %
  681. %    o transformed_image: Function TransformImage returns a pointer to the
  682. %      image after clipping and scaling it.  The original image is returned if
  683. %      there is a memory shortage.
  684. %
  685. %    o image: The address of a structure of type Image.
  686. %
  687. %    o clip_geometry: Specifies a pointer to a clip geometry string.
  688. %      This geometry defined a subregion of the image.
  689. %
  690. %    o image_geometry: Specifies a pointer to a image geometry string.
  691. %      The specified width and height of this geometry string are absolute.
  692. %
  693. %    o scale_geometry: Specifies a pointer to a scale geometry string.
  694. %      The specified width and height of this geometry string are relative.
  695. %
  696. %
  697. */
  698. Image *TransformImage(image,clip_geometry,image_geometry,scale_geometry)
  699. Image
  700. X  *image;
  701. X
  702. char
  703. X  *clip_geometry,
  704. X  *image_geometry,
  705. X  *scale_geometry;
  706. {
  707. X  int
  708. X    flags,
  709. X    x,
  710. X    y;
  711. X
  712. X  unsigned int
  713. X    height,
  714. X    width;
  715. X
  716. X  if (clip_geometry != (char *) NULL)
  717. X    {
  718. X      Image
  719. X        *clipped_image;
  720. X
  721. X      /*
  722. X        Clip image to a user specified size.
  723. X      */
  724. X      x=0;
  725. X      y=0;
  726. X      flags=XParseGeometry(clip_geometry,&x,&y,&width,&height);
  727. X      if ((flags & WidthValue) == 0)
  728. X        width=(unsigned int) ((int) image->columns-x);
  729. X      if ((flags & HeightValue) == 0)
  730. X        height=(unsigned int) ((int) image->rows-y);
  731. X      clipped_image=ClipImage(image,x,y,width,height);
  732. X      if (clipped_image != (Image *) NULL)
  733. X        {
  734. X          DestroyImage(image);
  735. X          image=clipped_image;
  736. X        }
  737. X    }
  738. X  /*
  739. X    Scale image to a user specified size.
  740. X  */
  741. X  width=image->columns;
  742. X  height=image->rows;
  743. X  if (scale_geometry != (char *) NULL)
  744. X    {
  745. X      float
  746. X        scale_height,
  747. X        scale_width;
  748. X
  749. X      scale_width=0.0;
  750. X      scale_height=0.0;
  751. X      (void) sscanf(scale_geometry,"%fx%f",&scale_width,&scale_height);
  752. X      if (scale_height == 0.0)
  753. X        scale_height=scale_width;
  754. X      width*=scale_width;
  755. X      height*=scale_height;
  756. X    }
  757. X  if (image_geometry != (char *) NULL)
  758. X    (void) XParseGeometry(image_geometry,&x,&y,&width,&height);
  759. X  while ((image->columns >= (width << 1)) && (image->rows >= (height << 1)))
  760. X  {
  761. X    Image
  762. X      *reduced_image;
  763. X
  764. X    /*
  765. X      Reduce image with a antialias digital filter.
  766. X     */
  767. X    reduced_image=ReduceImage(image);
  768. X    if (reduced_image == (Image *) NULL)
  769. X      break;
  770. X    else
  771. X      {
  772. X        DestroyImage(image);
  773. X        image=reduced_image;
  774. X      }
  775. X  }
  776. X  while ((image->columns <= (width >> 1)) && (image->rows <= (height >> 1)))
  777. X  {
  778. X    Image
  779. X      *zoomed_image;
  780. X
  781. X    /*
  782. X      Zoom image with bilinear interpolation.
  783. X    */
  784. X    zoomed_image=ZoomImage(image);
  785. X    if (zoomed_image == (Image *) NULL)
  786. X      break;
  787. X    else
  788. X      {
  789. X        DestroyImage(image);
  790. X        image=zoomed_image;
  791. X      }
  792. X  }
  793. X  if ((image->columns != width) || (image->rows != height))
  794. X    {
  795. X      Image
  796. X        *scaled_image;
  797. X
  798. X      /*
  799. X        Scale image with pixel replication.
  800. X      */
  801. X      scaled_image=ScaleImage(image,width,height);
  802. X      if (scaled_image != (Image *) NULL)
  803. X        {
  804. X          DestroyImage(image);
  805. X          image=scaled_image;
  806. X        }
  807. X    }
  808. X  return(image);
  809. }
  810. X
  811. /*
  812. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  813. %                                                                             %
  814. %                                                                             %
  815. %                                                                             %
  816. %   W r i t e I m a g e                                                       %
  817. %                                                                             %
  818. %                                                                             %
  819. %                                                                             %
  820. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  821. %
  822. %  Function WriteImage writes an image to a file on disk.
  823. %
  824. %  The format of the WriteImage routine is:
  825. %
  826. %      status=WriteImage(image)
  827. %
  828. %  A description of each parameter follows:
  829. %
  830. %    o status: Function WriteImage return True if the image is written.
  831. %      False is returned is there is a memory shortage or if the image file
  832. %      fails to write.
  833. %
  834. %    o image: A pointer to a Image structure.
  835. %
  836. %
  837. */
  838. unsigned int WriteImage(image)
  839. Image
  840. X  *image;
  841. {
  842. X  register int
  843. X    i,
  844. X    j;
  845. X
  846. X  register long int
  847. X    count;
  848. X
  849. X  register RunlengthPacket
  850. X    *p;
  851. X
  852. X  register unsigned char
  853. X    *q;
  854. X
  855. X  unsigned char
  856. X    *colormap,
  857. X    *pixels;
  858. X
  859. X  unsigned int
  860. X    packets,
  861. X    packet_size;
  862. X
  863. X  /*
  864. X    Open output image file.
  865. X  */
  866. X  if (*image->filename == '-')
  867. X    image->file=stdout;
  868. X  else
  869. X    if (strcmp(image->filename+strlen(image->filename)-2,".Z") != 0)
  870. X      image->file=fopen(image->filename,"w");
  871. X    else
  872. X      {
  873. X        char
  874. X          command[256];
  875. X
  876. X        /*
  877. X          Image file is compressed-- uncompress it.
  878. X        */
  879. X        (void) sprintf(command,"compress -c > %s",image->filename);
  880. X        image->file=(FILE *) popen(command,"w");
  881. X      }
  882. X  if (image->file == (FILE *) NULL)
  883. X    {
  884. X      (void) fprintf(stderr,"%s: unable to write image, cannot open %s.\n",
  885. X        application_name,image->filename);
  886. X      return(False);
  887. X    }
  888. X  /*
  889. X    Allocate pixel buffer.
  890. X  */
  891. X  count=0;
  892. X  switch (image->class)
  893. X  {
  894. X    case DirectClass:
  895. X    {
  896. X      /*
  897. X        Transfer pixels to DirectClass image pixel buffer.
  898. X      */
  899. X      switch (image->compression)
  900. X      {
  901. X        case NoCompression:
  902. X        {
  903. X          packet_size=3;
  904. X          packets=image->columns*image->rows;
  905. X          pixels=(unsigned char *) malloc((unsigned int) packets*packet_size);
  906. X          if (pixels == (unsigned char *) NULL)
  907. X            {
  908. X              Warning("unable to write image","memory allocation failed");
  909. X              return(False);
  910. X            }
  911. X          p=image->pixels;
  912. X          q=pixels;
  913. X          for (i=0; i < image->packets; i++)
  914. X          {
  915. X            for (j=0; j <= p->length; j++)
  916. X            {
  917. X              *q++=p->red;
  918. X              *q++=p->green;
  919. X              *q++=p->blue;
  920. X            }
  921. X            count+=(p->length+1);
  922. X            p++;
  923. X          }
  924. X          break;
  925. X        }
  926. X        case QEncodedCompression:
  927. X        {
  928. X          extern unsigned int
  929. X            QEncodeImage();
  930. X
  931. X          unsigned char
  932. X            *compressed_pixels;
  933. X
  934. X          packet_size=3;
  935. X          pixels=(unsigned char *)
  936. X            malloc((unsigned int) (image->columns*image->rows*packet_size));
  937. X          if (pixels == (unsigned char *) NULL)
  938. X            {
  939. X              Warning("unable to write image","memory allocation failed");
  940. X              return(False);
  941. X            }
  942. X          p=image->pixels;
  943. X          q=pixels;
  944. X          for (i=0; i < image->packets; i++)
  945. X          {
  946. X            for (j=0; j <= p->length; j++)
  947. X            {
  948. X              *q++=p->red;
  949. X              *q++=p->green;
  950. X              *q++=p->blue;
  951. X            }
  952. X            count+=(p->length+1);
  953. X            p++;
  954. X          }
  955. X          compressed_pixels=(unsigned char *)
  956. X            malloc((unsigned int) (image->columns*image->rows*packet_size));
  957. X          if (compressed_pixels == (unsigned char *) NULL)
  958. X            {
  959. X              Warning("unable to write image","memory allocation failed");
  960. X              return(False);
  961. X            }
  962. X          packets=QEncodeImage(pixels,compressed_pixels,
  963. X            image->columns*(int) packet_size,image->rows);
  964. X          packet_size=1;
  965. X          (void) free((char *) pixels);
  966. X          pixels=compressed_pixels;
  967. X          break;
  968. X        }
  969. X        case RunlengthEncodedCompression:
  970. X        {
  971. X          packet_size=4;
  972. X          packets=image->packets;
  973. X          pixels=(unsigned char *) malloc((unsigned int) packets*packet_size);
  974. X          if (pixels == (unsigned char *) NULL)
  975. X            {
  976. X              Warning("unable to write image","memory allocation failed");
  977. X              return(False);
  978. X            }
  979. X          p=image->pixels;
  980. X          q=pixels;
  981. X          for (i=0; i < image->packets; i++)
  982. X          {
  983. X            *q++=p->red;
  984. X            *q++=p->green;
  985. X            *q++=p->blue;
  986. X            *q++=p->length;
  987. X            count+=(p->length+1);
  988. X            p++;
  989. X          }
  990. X          break;
  991. X        }
  992. X        default:
  993. X        {
  994. X          Warning("unable to write image","unknown compression type");
  995. X          return(False);
  996. X        }
  997. X      }
  998. X      break;
  999. X    }
  1000. X    case PseudoClass:
  1001. X    {
  1002. X      /*
  1003. X        Transfer pixels from PseudoClass image pixel buffer.
  1004. X      */
  1005. X      switch (image->compression)
  1006. X      {
  1007. X        case NoCompression:
  1008. X        {
  1009. X          packet_size=1;
  1010. X          if (image->colors > 256)
  1011. X            packet_size++;
  1012. X          packets=image->columns*image->rows;
  1013. X          pixels=(unsigned char *) malloc((unsigned int) packets*packet_size);
  1014. X          if (pixels == (unsigned char *) NULL)
  1015. X            {
  1016. X              Warning("unable to write image","memory allocation failed");
  1017. X              return(False);
  1018. X            }
  1019. X          p=image->pixels;
  1020. X          q=pixels;
  1021. X          if (image->colors <= 256)
  1022. X            for (i=0; i < image->packets; i++)
  1023. X            {
  1024. X              for (j=0; j <= p->length; j++)
  1025. X                *q++=(unsigned char) p->index;
  1026. X              count+=(p->length+1);
  1027. X              p++;
  1028. X            }
  1029. X          else
  1030. X            {
  1031. X              register unsigned char
  1032. X                xff00,
  1033. X                xff;
  1034. X
  1035. X              for (i=0; i < image->packets; i++)
  1036. X              {
  1037. X                xff00=(unsigned char) (p->index >> 8);
  1038. X                xff=(unsigned char) p->index;
  1039. X                for (j=0; j <= p->length; j++)
  1040. X                {
  1041. X                  *q++=xff00;
  1042. X                  *q++=xff;
  1043. X                }
  1044. X                count+=(p->length+1);
  1045. X                p++;
  1046. X              }
  1047. X            }
  1048. X          break;
  1049. X        }
  1050. X        case QEncodedCompression:
  1051. X        {
  1052. X          extern unsigned int
  1053. X            QEncodeImage();
  1054. X
  1055. X          unsigned char
  1056. X            *compressed_pixels;
  1057. X
  1058. X          /*
  1059. X            Sort image colormap by increasing intensity.
  1060. X          */
  1061. X          LinearColormap(image);
  1062. X          packet_size=1;
  1063. X          if (image->colors > 256)
  1064. X            packet_size++;
  1065. X          pixels=(unsigned char *)
  1066. X            malloc((unsigned int) (image->columns*image->rows*packet_size));
  1067. X          if (pixels == (unsigned char *) NULL)
  1068. X            {
  1069. X              Warning("unable to write image","memory allocation failed");
  1070. X              return(False);
  1071. X            }
  1072. X          p=image->pixels;
  1073. X          q=pixels;
  1074. X          if (image->colors <= 256)
  1075. X            for (i=0; i < image->packets; i++)
  1076. X            {
  1077. X              for (j=0; j <= p->length; j++)
  1078. X                *q++=(unsigned char) p->index;
  1079. X              count+=(p->length+1);
  1080. X              p++;
  1081. X            }
  1082. X          else
  1083. X            {
  1084. X              register unsigned char
  1085. X                xff00,
  1086. X                xff;
  1087. X
  1088. X              for (i=0; i < image->packets; i++)
  1089. X              {
  1090. X                xff00=(unsigned char) (p->index >> 8);
  1091. X                xff=(unsigned char) p->index;
  1092. X                for (j=0; j <= p->length; j++)
  1093. X                {
  1094. X                  *q++=xff00;
  1095. X                  *q++=xff;
  1096. X                }
  1097. X                count+=(p->length+1);
  1098. X                p++;
  1099. X              }
  1100. X            }
  1101. X          compressed_pixels=(unsigned char *)
  1102. X            malloc((unsigned int) (image->columns*image->rows*packet_size));
  1103. X          if (compressed_pixels == (unsigned char *) NULL)
  1104. X            {
  1105. X              Warning("unable to write image","memory allocation failed");
  1106. X              return(False);
  1107. X            }
  1108. X          packets=QEncodeImage(pixels,compressed_pixels,
  1109. X            image->columns*(int) packet_size,image->rows);
  1110. X          packet_size=1;
  1111. X          (void) free((char *) pixels);
  1112. X          pixels=compressed_pixels;
  1113. X          break;
  1114. X        }
  1115. X        case RunlengthEncodedCompression:
  1116. X        {
  1117. X          packet_size=2;
  1118. X          if (image->colors > 256)
  1119. X            packet_size++;
  1120. X          packets=image->packets;
  1121. X          pixels=(unsigned char *) malloc((unsigned int) packets*packet_size);
  1122. X          if (pixels == (unsigned char *) NULL)
  1123. X            {
  1124. X              Warning("unable to write image","memory allocation failed");
  1125. X              return(False);
  1126. X            }
  1127. X          p=image->pixels;
  1128. X          q=pixels;
  1129. X          if (image->colors <= 256)
  1130. X            for (i=0; i < image->packets; i++)
  1131. X            {
  1132. X              *q++=(unsigned char) p->index;
  1133. X              *q++=p->length;
  1134. X              count+=(p->length+1);
  1135. X              p++;
  1136. X            }
  1137. X          else
  1138. X            for (i=0; i < image->packets; i++)
  1139. X            {
  1140. X              *q++=(unsigned char) (p->index >> 8);
  1141. X              *q++=(unsigned char) p->index;
  1142. X              *q++=p->length;
  1143. X              count+=(p->length+1);
  1144. X              p++;
  1145. X            }
  1146. X          break;
  1147. X        }
  1148. X        default:
  1149. X        {
  1150. X          Warning("unable to write image","unknown compression type");
  1151. X          return(False);
  1152. X        }
  1153. X      }
  1154. X      /*
  1155. X        Allocate colormap.
  1156. X      */
  1157. X      colormap=(unsigned char *) malloc((unsigned int) image->colors*3);
  1158. X      if (colormap == (unsigned char *) NULL)
  1159. X        {
  1160. X          Warning("unable to write image","memory allocation failed");
  1161. X          return(False);
  1162. X        }
  1163. X      q=colormap;
  1164. X      for (i=0; i < image->colors; i++)
  1165. X      {
  1166. X        *q++=image->colormap[i].red;
  1167. X        *q++=image->colormap[i].green;
  1168. X        *q++=image->colormap[i].blue;
  1169. X      }
  1170. X      break;
  1171. X    }
  1172. X    default:
  1173. X    {
  1174. X      Warning("unable to write image","unknown image class");
  1175. X      return(False);
  1176. X    }
  1177. X  }
  1178. X  /*
  1179. X    Guarentee the correct number of runlength packets.
  1180. X  */
  1181. X  if (count < (image->columns*image->rows))
  1182. X    {
  1183. X      Warning("insufficient image data in",image->filename);
  1184. X      return(False);
  1185. X    }
  1186. X  else
  1187. X    if (count > (image->columns*image->rows))
  1188. X      {
  1189. X        Warning("too much image data in",image->filename);
  1190. X        return(False);
  1191. X      }
  1192. X  /*
  1193. X    Write header and runlength encoded image to disk.
  1194. X  */
  1195. X  if (image->comments != (char *) NULL)
  1196. X    (void) fprintf(image->file,"{%s}\n",image->comments);
  1197. X  (void) fprintf(image->file,"id=ImageMagick\n");
  1198. X  if (image->class == DirectClass)
  1199. X    (void) fprintf(image->file,"class=DirectClass\n");
  1200. X  else
  1201. X    (void) fprintf(image->file,"class=PseudoClass  colors=%d\n",image->colors);
  1202. X  if (image->compression == RunlengthEncodedCompression)
  1203. X    (void) fprintf(image->file,"compression=RunlengthEncoded  packets=%d\n",
  1204. X      packets);
  1205. X  else
  1206. X    if (image->compression == QEncodedCompression)
  1207. X      (void) fprintf(image->file,"compression=QEncoded  packets=%d\n",packets);
  1208. X  (void) fprintf(image->file,"columns=%d  rows=%d\n",image->columns,
  1209. X    image->rows);
  1210. X  if (image->scene > 0)
  1211. X    (void) fprintf(image->file,"scene=%d\n",image->scene);
  1212. X  (void) fprintf(image->file,"\f\n:\n");
  1213. X  if (image->class == PseudoClass)
  1214. X    {
  1215. X      count=fwrite((char *) colormap,sizeof(unsigned char),
  1216. X        (int) image->colors*3,image->file);
  1217. X      if (count != (image->colors*3))
  1218. X        {
  1219. X          Warning("unable to write image","file write error");
  1220. X          return(False);
  1221. X        }
  1222. X      (void) free((char *) colormap);
  1223. X    }
  1224. X  count=fwrite((char *) pixels,(int) packet_size,(int) packets,image->file);
  1225. X  if (count != packets)
  1226. X    {
  1227. X      Warning("unable to write image","file write error");
  1228. X      return(False);
  1229. X    }
  1230. X  (void) free((char *) pixels);
  1231. X  if (image->file != stdin)
  1232. X    if (strcmp(image->filename+strlen(image->filename)-2,".Z") != 0)
  1233. X      (void) fclose(image->file);
  1234. X    else
  1235. X      (void) pclose(image->file);
  1236. X  return(True);
  1237. }
  1238. X
  1239. /*
  1240. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1241. %                                                                             %
  1242. %                                                                             %
  1243. %                                                                             %
  1244. %   Z o o m I m a g e                                                         %
  1245. %                                                                             %
  1246. %                                                                             %
  1247. %                                                                             %
  1248. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1249. %
  1250. %  Function ZoomImage creates a new image that is a integral size greater
  1251. %  than an existing one.  It allocates the memory necessary for the new Image
  1252. %  structure and returns a pointer to the new image.
  1253. %
  1254. %  ZoomImage scans the reference image to create a zoomed image by bilinear
  1255. %  interpolation.  The zoomed image columns and rows become:
  1256. %
  1257. %    number_columns << 1
  1258. %    number_rows << 1
  1259. %
  1260. %  The format of the ZoomImage routine is:
  1261. %
  1262. %      zoomed_image=ZoomImage(image)
  1263. %
  1264. %  A description of each parameter follows:
  1265. %
  1266. %    o zoomed_image: Function ZoomImage returns a pointer to the image after
  1267. %      zooming.  A null image is returned if there is a a memory shortage.
  1268. %
  1269. %    o image: The address of a structure of type Image.
  1270. %
  1271. %
  1272. */
  1273. Image *ZoomImage(image)
  1274. Image
  1275. X  *image;
  1276. {
  1277. X  ColorPacket
  1278. X    *scanline;
  1279. X
  1280. X  Image
  1281. X    *zoomed_image;
  1282. X
  1283. X  register ColorPacket
  1284. X    *cs,
  1285. X    *ns,
  1286. X    *s;
  1287. X
  1288. X  register RunlengthPacket
  1289. X    *p,
  1290. X    *q;
  1291. X
  1292. X  register unsigned int
  1293. X    x;
  1294. X
  1295. X  unsigned char
  1296. X    blue,
  1297. X    green,
  1298. X    red;
  1299. X
  1300. X  unsigned int
  1301. X    y;
  1302. X
  1303. X  if (((image->columns*image->rows) << 1) > MaxImageSize)
  1304. X    {
  1305. X      Warning("unable to zoom image","image size too large");
  1306. X      return((Image *) NULL);
  1307. X    }
  1308. X  /*
  1309. X    Initialize scaled image attributes.
  1310. X  */
  1311. X  zoomed_image=CopyImage(image,image->columns << 1,image->rows << 1);
  1312. X  if (zoomed_image == (Image *) NULL)
  1313. X    {
  1314. X      Warning("unable to zoom image","memory allocation failed");
  1315. X      return((Image *) NULL);
  1316. X    }
  1317. X  zoomed_image->class=DirectClass;
  1318. X  /*
  1319. X    Allocate scan line buffer.
  1320. X  */
  1321. X  scanline=(ColorPacket *) malloc(4*image->columns*sizeof(ColorPacket));
  1322. X  if (scanline == (ColorPacket *) NULL)
  1323. X    {
  1324. X      Warning("unable to zoom image","memory allocation failed");
  1325. X      DestroyImage(zoomed_image);
  1326. X      return((Image *) NULL);
  1327. X    }
  1328. X  /*
  1329. X    Preload a scan line and interpolate.
  1330. X  */
  1331. X  p=image->pixels;
  1332. X  image->runlength=p->length+1;
  1333. X  s=scanline;
  1334. X  for (x=0; x < image->columns; x++)
  1335. X  {
  1336. X    s->red=p->red;
  1337. X    s->green=p->green;
  1338. X    s->blue=p->blue;
  1339. X    s++;
  1340. X    if (image->runlength > 0)
  1341. X      {
  1342. X        image->runlength--;
  1343. X        s->red=p->red;
  1344. X        s->green=p->green;
  1345. X        s->blue=p->blue;
  1346. X      }
  1347. X    else
  1348. X      {
  1349. X        p++;
  1350. X        image->runlength=p->length;
  1351. X        s->red=(p->red+(s-1)->red) >> 1;
  1352. X        s->green=(p->green+(s-1)->green) >> 1;
  1353. X        s->blue=(p->blue+(s-1)->blue) >> 1;
  1354. X      }
  1355. X    s++;
  1356. X  }
  1357. X  /*
  1358. X    Zoom each row.
  1359. X  */
  1360. X  p=image->pixels;
  1361. X  image->runlength=p->length+1;
  1362. X  zoomed_image->packets=0;
  1363. X  q=zoomed_image->pixels;
  1364. X  q->length=MaxRunlength;
  1365. X  for (y=0; y < image->rows; y++)
  1366. X  {
  1367. X    cs=scanline+image->columns*((y+0) % 2)*2;
  1368. X    ns=scanline+image->columns*((y+1) % 2)*2;
  1369. X    /*
  1370. X      Read a scan line and interpolate.
  1371. X    */
  1372. X    s=ns;
  1373. X    for (x=0; x < image->columns; x++)
  1374. X    {
  1375. X      s->red=p->red;
  1376. X      s->green=p->green;
  1377. X      s->blue=p->blue;
  1378. X      s++;
  1379. X      if (image->runlength > 0)
  1380. X        {
  1381. X          image->runlength--;
  1382. X          s->red=p->red;
  1383. X          s->green=p->green;
  1384. X          s->blue=p->blue;
  1385. X        }
  1386. X      else
  1387. X        {
  1388. X          p++;
  1389. X          image->runlength=p->length;
  1390. X          s->red=(p->red+(s-1)->red) >> 1;
  1391. X          s->green=(p->green+(s-1)->green) >> 1;
  1392. X          s->blue=(p->blue+(s-1)->blue) >> 1;
  1393. X        }
  1394. X      s++;
  1395. X    }
  1396. X    /*
  1397. X      Dump column interpolation values.
  1398. X    */
  1399. X    s=cs;
  1400. X    for (x=0; x < zoomed_image->columns; x++)
  1401. X    {
  1402. X      if ((s->red == q->red) && (s->green == q->green) &&
  1403. X          (s->blue == q->blue) && (q->length < MaxRunlength))
  1404. X        q->length++;
  1405. X      else
  1406. X        {
  1407. X          if (zoomed_image->packets > 0)
  1408. X            q++;
  1409. X          zoomed_image->packets++;
  1410. X          q->red=s->red;
  1411. X          q->green=s->green;
  1412. X          q->blue=s->blue;
  1413. X          q->index=0;
  1414. X          q->length=0;
  1415. X        }
  1416. X      s++;
  1417. X    }
  1418. X    /*
  1419. X      Dump row interpolation values.
  1420. X    */
  1421. X    for (x=0; x < zoomed_image->columns; x++)
  1422. X    {
  1423. X      red=(cs->red+ns->red) >> 1;
  1424. X      green=(cs->green+ns->green) >> 1;
  1425. X      blue=(cs->blue+ns->blue) >> 1;
  1426. X      if ((red == q->red) && (green == q->green) && (blue == q->blue) &&
  1427. X          (q->length < MaxRunlength))
  1428. X        q->length++;
  1429. X      else
  1430. X        {
  1431. X          if (zoomed_image->packets > 0)
  1432. X            q++;
  1433. X          zoomed_image->packets++;
  1434. X          q->red=red;
  1435. X          q->green=green;
  1436. X          q->blue=blue;
  1437. X          q->index=0;
  1438. X          q->length=0;
  1439. X        }
  1440. X      cs++;
  1441. X      ns++;
  1442. X    }
  1443. X  }
  1444. X  (void) free((char *) scanline);
  1445. X  zoomed_image->pixels=(RunlengthPacket *) realloc((char *)
  1446. X    zoomed_image->pixels,zoomed_image->packets*sizeof(RunlengthPacket));
  1447. X  return(zoomed_image);
  1448. }
  1449. SHAR_EOF
  1450. echo 'File ImageMagick/image.c is complete' &&
  1451. chmod 0755 ImageMagick/image.c ||
  1452. echo 'restore of ImageMagick/image.c failed'
  1453. Wc_c="`wc -c < 'ImageMagick/image.c'`"
  1454. test 121441 -eq "$Wc_c" ||
  1455.     echo 'ImageMagick/image.c: original size 121441, current size' "$Wc_c"
  1456. rm -f _shar_wnt_.tmp
  1457. fi
  1458. # ============= ImageMagick/images/swan.miff.Z ==============
  1459. if test ! -d 'ImageMagick/images'; then
  1460.     echo 'x - creating directory ImageMagick/images'
  1461.     mkdir 'ImageMagick/images'
  1462. fi
  1463. if test -f 'ImageMagick/images/swan.miff.Z' -a X"$1" != X"-c"; then
  1464.     echo 'x - skipping ImageMagick/images/swan.miff.Z (File already exists)'
  1465.     rm -f _shar_wnt_.tmp
  1466. else
  1467. > _shar_wnt_.tmp
  1468. echo 'x - extracting ImageMagick/images/swan.miff.Z (Binary)'
  1469. sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
  1470. begin 600 ImageMagick/images/swan.miff.Z
  1471. M'YV0>Q2``)&D#9PW<NB4(0/"C)PW;4!,J>,&A)PP<Q3*`9&F39@S972`$)-&
  1472. M#IDY"OHH2$.F1\&/99I\3#-FC8(Q;##.Z0%E3IDZ9-X,R3EGSL`Q;]@@W"GC
  1473. M)D0X<LH43?/&30\I%-F4<7.&#IHB;I"263@03IB:9>CLK('C1@T:3MG4:>-F
  1474. MYPT;.`8^O+/3!@T8"A@HT*$`@.%_B`$,"&#X`F,`!1X'>+R8\63&""8#T+Q9
  1475. M\N,%G@U'-BS`\X#.C`\$.!V9\6("AC6KEFRXQ.,0CQ4\'O%8T>/2A@D$$`#@
  1476. M!F?*FB?#WDPZP`$`$AZW&`Y`>/#'PAF7MHR]NV'<AHW#YDPCM.+'$'Y3OXPZ
  1477. M-FT`F;DSM@X`@WK##AXS!V``N>'-I^VGVFFV???8"X]U<!\`4CQFP6,R:%99
  1478. M;`W$5D!U^GD&VV*&'?$8`^;15QIQ&3S6GV$Y'(?`>0;$=MIQU'GP6&:&J=8<
  1479. M=\W]EZ&.J6D&W'G:/4:!>JX]IAIQ)V+HWGLT=F98B36&^)@2"3Y&R8X`@)@C
  1480. MD+'IJ..+JW5&W&+$[0<@`$Q\2%UII^EFV`./C=:EDP#HD-QQQ&5WGH[$<?:C
  1481. MGAP"`*=A&Y@WX7Z@;0GCEB4R!AIK$CH'0`*/%6I8H(L"\,%GN]WV6!DS4A<=
  1482. M<2!D6"2/7.YW:)AGGN!=E@M&=UV1;3Y&Z:6R/=:#J73NU]^I<SKYXWY_:C8H
  1483. M`#]R9B-_>-+))K*&KFF>DPH:IN6<RPI7)J<X3FJB?P`LNQ]X`"!H&!B/;6I8
  1484. M$0$LT%F`T8[9+&?TR0K`@X:1$"=U;@(P`;B[RD>GG#$\9J^?X!)KWG;N.8NE
  1485. M@HZ&F>1K=,8'0`,+8MSPG)0R-N2;C\EHH&&[&F8G<3\&&NA^4#*[I(L#8TDG
  1486. M=9MM:Q@,K]*+Y6P`]*MGDT[^N_%^._#*GLY1;DP??8&VG!^J##.\V(5GMD8G
  1487. M"X_!R9ANQ&D,`&C`<N:DG#_^\)A]6ZK\F!6:45JK82)H)B?2D`70XF:P1;:M
  1488. M>:P>=]W?`)3'V*WP10OLA/11&66W2=)'.`=J&D8XPMVJJIFV<PYK'L1?APFB
  1489. M9,0U66VXFJD+0"V/>;ULH`Q'T+=A3;(^;6XR9UI[G[:F?O:K]#F),<I8TL>9
  1490. MWM`R]C0`1/CMLI(-]P<FR(8E6KBUG@G<.W+C5=_K8QIHAO'@ZIWVN)&:E1K]
  1491. M8Y`;A@GYN+XLYWYR`DV[>]O:/'U[D\&K(VP%0N?CY09#3I"\U)GL4<\P2`C3
  1492. M^W*&GOD!P'4O"]3U!#8S`IZ)/6?2G,`L!8#\&$\S_4+;G#BSLD4MJP*1`\#'
  1493. MZG8C?RTH/4D#@-EPQ1BK$0Y?=6-,DO:3F0L1[TQGVN%Q[A8`J@%P8S@D&^V"
  1494. MQ!B1>2LTOZ)3H#H&@(+!+@!Y8^"6F/88VVPM5Y*;7?MFAC[-@(@XUSJ3Q=)'
  1495. M.O`1\$?'D]Z/8`@M^LUI!H\Q`;A,!T$`I&<^_S-,%-W6P5#5D&:\NB#?'H-"
  1496. MT0C)>P(L7GOVDRF>,8P^R[+:LI9E+^E1L7&SD]?&?O0CPGD-?FJB(`!%V3#;
  1497. M+>Q;6QK=\?9#N-$M,(P><U"H-B8[QJ"!?85C3"-)YTC`V:M)#+-:S9A5.436
  1498. MST(88@R"`!E#^5T1,QG"W1>+N2?FU8!7<DK2L1A&1>DUZ5HDC*3FA@8N)Z:'
  1499. M.-D*$PIV"0`G2F]"7@N4U?002`"XBI5P.LV$'#/&F2WG.`?=F`B/144JTDU`
  1500. ML)2DDY+$GB;11P6Z,TQT#@DU+"4+@,"2D_3DJ#S+X<Z"6*SC".]DF'DRYG<`
  1501. M2,&^"&A%.ME+:EE;T+(\V#G#U%1ZW1/DJX+:LTCVQUW+=-)D6L3&$@&/B<2<
  1502. M4[_2"<C#.5`(U(D;8\RGTLD1B4O$XTR3.-,H6+TT3"(\WCP/"`"",F^%@?+"
  1503. M@O;#0>DYD8M71!7>H$G)XURH6(;!&BZ+NK&I2@FJ5)0=-XTCU#'^*$E#^B#@
  1504. MV".GN?4S4.*2UF0?\T_F#>A^QSM>91_C5LY<JTF$Y`P;T[0EGST&HX"CX_#"
  1505. MA"E@KFIC,%(E=TX*@/[Q!G@$G-"/>,:>?BTKBOVCHYR&6<(8)FE9R(SHA-CC
  1506. M.'`MK8M')-UI1/B]^RTKLCUU84%GJD)ZVB"`CNP6'@TC6YU21X*O,E,BP_31
  1507. M+[7R,2YP[R@UT\?]N':,EAT9`.)F&*^EDYOK9*8?R=>MU5TV4L'E;"HOICSN
  1508. M1E1HL#*,$^L+@)8-]S$>BJ$3(U3@!4TP-@<%76SVUID6B;!?U^I7@L,*S$WF
  1509. M+H:E3"%OV/M5^HR6,7V\EA!QFUT]S2Q/FYLP)LWC-1&2$H2:V2AA[T5>.':'
  1510. M,3ALV3Q)])CSPG.1S=G6<Y*:H3$WRVM.Y(QQ$[:OW9+Q97JRVE@=>#Q]]<@P
  1511. M,LUK&]M#4L`)SSQK-2N%N5SB+>E+SS^24V;UC,,?L8N&177SHZ>LP:@FB<,(
  1512. MB_"6]NHUM\[9,/V:T.<D:5&0!C/#`#AO:]O63\L1D(T_ZK.WD+RE'YG.:Q@[
  1513. MC1-M##[&V(M<<BHM,`-MKV.=B0T9NA`&$4G$9X)2HPN"+^"DYZ0F+2MEU/FC
  1514. M)#F#89SA)Z)X%=1CCA=K,_;S1_WJU_$(!UCM4KFQ405O'^]IR&`A<HR!ZB-G
  1515. M5O`8`D/KF:-S*QTMQAFPS<G8$17;?&%#1SI&YS11>U6"E?5*:K+PB2LU#!MW
  1516. M#``V#M-KE<YL:#(#W&YFBHZ.&>"@`1#H8<Z;O,\-V6.\#8!27<B);B5J>QD#
  1517. MHM/TIT7Y6W'@W@MEQM!Q1"I-DIQ<91B.QYR;]'$=D,'UV$51D6&9II-,IT[`
  1518. M0#?ITA#N<$XW)J=&@^MXN[KY8QB+Z@K2"<.6*PS'TQC1)`TSSF4$7+_R_&[F
  1519. M'?V12@/SE*=K'M@V[$>YGK*]3@BND6HFNAL;<EM?>3[&X("\RUP",.%$'*X)
  1520. M.HI]A0U#R3OJ*;[*P=WBC('S/O3W)(E<>F22X<CX'C8VZ4$1(Q0C&QA&7D8T
  1521. MP4X*E.%_Q(,PT;Q)&(T8;(@KMR*B6.R&`>\EN25)ANWGSX;!L+2A/V4.NII.
  1522. M7+0XAJ^EI^,9=E;,,QMQ"">]%,$[4.]L6'/G-$P;\SBPFMF"`Q7+I>-)?IG*
  1523. MT4V'UDT_<BP4!VDB)TG79AY!P'M1E6/H=UROTB32HQMALT@ZY$"$$S_@XGE)
  1524. M=&/+XS5:LSSZ]"J$!SAD<&4`4'SA`67N<1I_YG/X15Y>161A)B87MWJ]%EX<
  1525. M1C@7]2T]4B0JQW[EPU*TEW[!XX#S1V(\"&Y@5%Y;<CPG(W17`'A2Q"E;8D[2
  1526. M462:`79"*$F!@F&?-'8```7@\FGW\S/DY37T,4,7)T(B15K214^9%$DU533[
  1527. M`P#Z9QC?=!VPP6Z/42KV$T77A4V]IU+]\@3D=2P<1''`\G($E'7T<2Q-XD7B
  1528. M%3.'&$5T-#$@F"2$TR]ZM#$\)3K9-">!`$S$0S$*QQAN17Z_%TG7,DZ:-2=-
  1529. MLD)T9'L1=7U&ZPQBF(SW+HF81E5_;M&"*HE]S@FO@PHM]AWLJ-5LH4HI.
  1530. M,@5R>(@^R&!U@R3@PAF&!U[8%U6<\6+FT2_#Y(Q5MS&@P5NFAV?F\8F/T4<M
  1531. M8X'>`CV19G)DV"1]I#;TN!_=<V>%E(&&P57R=1I)X"F,\2\\1QW$DR1S-V[1
  1532. M@F,+$CL.5$E2PDVV6&]6PQZ$@V%*=!J+MR"$LT+3@4T6ISI&*%^2!0`<9'Z/
  1533. M`7?DE6[-QQB\H6)M\!@#*$Z/45:&U2U>8S7T85@&Y#]ZUV:7N(E8XE80M3BG
  1534. M]G?71(M86!Q80E3#Q'?T@4-N)6720RYDQAAN8(4\)2?](CU\)R<EJ')6HT3"
  1535. MM#O2](J@%E$QUI*[ETN'R'%*U(M1=2UX2&%P0T^<`8^Z,B5D");4$2'=4H/=
  1536. M9%DE1SD7YS0'LHWF$8L+PHE;1$\HQ!@BM!],-R?Y11QL1#C'LWJ%-H\J)2>8
  1537. MHR>Q!P#DPD$%:1@X))'OL6_]9)BS58SG.&7]DD\+PF_'N"7V<G4/N3SK]AAF
  1538. M>(A9\!B7IVDYY$^U8WF-R5$K2!VZF9P<ACC-QT[I-2>!,FKT(3TLB)W:PQXM
  1539. MDR3EH6=\AYN&$8H```1/R1E<=33@XBK=DI>LI9SVXU9WYQE/U4U)(CVFI8*3
  1540. M(2\"]1C=^7VJ!TQ@9QBCXP0@J1DB1'.;\AZ>)Y#:\R,NU3!Y.9X`$)UQZ$-,
  1541. MAEYTLBS_M3PB8AX2V$Q[28_J9H3)1!W?B&T69WC]TH!MR58(QYH1=6M88B_A
  1542. M9C6"U1Z#H$4<`RZN4W(<Y#5"1E[T83&8!DQT$RC^YE:RYF%`FB3^=BVV5B5N
  1543. MA&K+<BS'TB\WZ9#0QA@XPQB)8)/XV4V!,DR<047!2(9(]XWL\2,K=&#A%9T3
  1544. M4I?+LT*6A67OF%$`@%7<Q)1"^4#D150'*)I>HW18,B$+M2!N&)VGM88.-*)C
  1545. ME"0UA74FQJ*"=UV&D9GTL5YTPD9X*B=TI)4F^!@8^B/:9Q['J9<+AD8+(G4Q
  1546. M91YK8!YL-TSYM5\)"2QZTJ:`$RA.9">UIF184FJ&@:&Z>']S,H`BE"1LUUVR
  1547. M.DN/D2*\E09&DT<O5)T`,$PRTBUA2)1MRA@&>)*F@8D`D)=/!I$Q=(UC="WD
  1548. MPAD^((>&N#S^EGR$NILJ)4O_PQCJJ7M-&2A)<CP7^6W6>3_^5H`)%TF*&4^`
  1549. MP[#@V&\-Q%O#"0!J$%'3T1@@R#/#)#CV9AA52#VLA)XCZ#7]DID\8VU45Y$X
  1550. M:#4L.:,`\$W=@FTQ=$MTTB^^\AA8PXHS!Z;,LQ\]2A_H:7]U\AC].F!8LD+#
  1551. M)"=LN"!R`K/V:'%T&J[=U"^RJ1Z\E74,<Z#E4BED&"@%\QXE`P`I"&"YH[,^
  1552. M!2Y?$"9L1SCN"&\7ZZI>U2TCFGL?VH&4UTWFXC!*69O'PG%69AA$-0=6B$-&
  1553. MP"MSQAA40!V@2A_]J%++@D-=ZH0-^U4K:H//N#L;@YZ@J5*R"#+`PH0BA)ZF
  1554. M(R?]PW<M\[;[L4(UU3*JUH1LE:YU>Z)O-B=)VD_,.'%&"(B&@06QHAGM91A-
  1555. MX(#@14=HMH4$1')153065Z/;NK,P^!@R6A]SQ;7P5FE6JH+1!;5&&*<+$FJ:
  1556. M4;C5VVI&N$+DLD(K=#QNU96'R!Y(:1Z_!0!=0!TAIE+@A;)ZQH&`TU<72+=H
  1557. MJ5+^192$@UF/D4!#:(7G=9"/096+&IFOTD=$Y58KM(`EQAB6**WG0S)AHGF&
  1558. M,4Q*I1E\MZ:"5YOM%B@<Q#`RYD#NUU74L9H-LRQYB:=.M*HWP[6,,8#T407T
  1559. M]1CQNE\O@X:4FCD[@UW.>7ZS2Q]15'4J)X_7$T.H%)K78CH'BZJ:P<)]"`"&
  1560. M=SQTY*NS6P>/H05DN,3*^7[?27TGEG4=[)PC:,3@8C6MFG6DN2#":!BMVJIJ
  1561. MK&>C,Y^CXT1.XG&Z9!B@LB5O6W`\6Z`)&4,*%WU8<BU%^WWT$:F&D9=C\!C@
  1562. M6T@:%B8<A,,")JSBIF?]4J%ZTF[)ZK\2AXT?=D7JF%U)@F%<^GB9:AB*8XP9
  1563. M:H5>(SV35H)/@B5EI7E!6'./T2#K.XM.Y#64LBU@XIR'&K>6-H&:$9VZRSRJ
  1564. MI1E,"'*[9QAY(&$@<QH<K!D*RHZ,D:H.!'E[-B$?"6]:['G+M+G_Z:IR,GI\
  1565. M^%7F>:])]QAQ`(*39L&7&,!/Z5;!:Q@C.:OY,JF8R[G%BB6KJ%+76UA)N%F0
  1566. M=ILI)"<R/+O2@V%%F[=Y:WC'@J'_0AS;7$\I)`8)W,JG]HU*JCWYV(4SR%;V
  1567. MW,_HR55IN\$\BTX1-3K[(:V,,6FC%FCP&55Y:R_X&\^!)U1?2*<6X]!`Z,P>
  1568. MFK>9$B@K!*J$LP<1E;>X<5;$T;D`T*IR8CI-4E,[_93AA"62A[R<FIR!,LY3
  1569. MQAEA"[!3K!EY6:N(++MGM+6&81_$@:%AL![F(2?7$BBNV1X!AB&\5<I7>,'+
  1570. M,WXX:[7Z24_2@Z&8#,O1J6WZML:_*4(3,K]RPH0>S4V1*S!-0L2)QL"&T4<4
  1571. M9=>"S4,GC8/?.+']DK>)FWV:4:'=0QQT%*]B:AY#0(:>Z:$RVTUT1V0J!]H3
  1572. MF6UK=R>[_"/7LL,`D*OA-=::@=QORT:1:Q@;[21?VW&/D3RAV2^A#3@?A4W:
  1573. M-+MTJDSC^(ITNWW28TL@'443:WB9^<JPZ;G+PQENQ6^\Y21.R\46AX8W*[>W
  1574. ML\F7^(W/=C]TRH1)4KS<%+^&`0A>J8+RM2YA1]^:\<?\W5T:R3NS&,J!(CW'
  1575. M$K"\$B@:^IL]NA_I:[S-:QC(/6H<MA^MBL^G0:T`<-D`(-/"#<O([)+`(CUZ
  1576. M<BS*VQ[9K5(8YAN&P8370CAY>SR,BZUIHQG%QQAR-4:0*$F&.8+;QQX\(R?-
  1577. MO(",T3+T\:`Z3H.E?2QO.SKS)\ACE)F&5YD+]AY8A3L!FI*G>2RK3<GB%K,J
  1578. M^),JB*F0EF!AS5.W-7FU$6U6J+[4#3CSV6YR,I.H]B,<-(`$#)5;@IZY;9+7
  1579. M23>H]]XFS:L.V,A(;M+<E`FES3:P2AR`&DU]9Z]<K-UPK.G_)DG?&'Q<J*LJ
  1580. M)3W_33@T9^6BR1E)LL]#U]8J625;<BTMDW)S,FJ)/CO`HFW\QA@N3CA)`M.5
  1581. MQR7>>QH\HR>)!4S.V"3'?G%RPC;_G,D1%:_B@R63G"1]=#QL=`8I5%M`S3PT
  1582. M&W\NRCP'?9BL/,'^/*AZXHR$<RSD,H"CHZ:!")@$!(A=`RX]RAF-:WC5C&!G
  1583. MFBE61K=)DB1H^'0`4+C%"-^/$<F5_,AW"X&I!DQZ,DS^%BA1S7*/8:VW_-,9
  1584. M=WB."3B$-&I>HVV"*D)N)2=]D)/FX<N7Z#48YC5,N(&:42BGT:K(=HAX3J*G
  1585. M2F20`C@07YLW_I>&,?.6&="!QAET!./A>X@\Q80P$J`(RBN/$%$\/UY@WW:1
  1586. M8I;2HG)T(X_3"4F&$>KLT:,3ZS4T9Q]DO_:O,NU\,T:&[B1Z]+R&`0FZ9/9W
  1587. MG5TG>'$@S$W8_574ANJ<<<``(`C4ZT*,,;&MJ#MG)9-&:&2E0QU[R.CA!6-,
  1588. M6K9'B'16HZC7N2R$@U5RSAAL%[US^I?.V9VR5OBGIHO."5X]NN>5IG"GD4"`
  1589. M@]QB/F4M.H<OHS"H0GBTINX!)(,(]!BU;1C&O4(BQ,)`JQG'0XSM$2B;\E?@
  1590. M%"9!YP?@TOKX&J*VKI#&DO%5IAG28]Q2RQF2\!BH3R?7\K:[#>=T5%815\GN
  1591. MTMG$`1JP40CTI(]1!4X)'O<DY_+7$J$3LBJ4T1'#XX7X7*"['X?`@7"8X]&=
  1592. M"E1<2R$+#OQPK0?0?ZY5B^`G*@^DW;_ED6`^"HO!?"V$P\`D`H("Z81UNS@X
  1593. MI*Z-D>U4C>9$=])1'DH$48>/DU+:G9,8)J5A14"4RH>#2L.%N`,J:-2X$G(V
  1594. M`+F?8>,,H@5)S9XFQCSHP_'1#&&K._4H>T5'PA8=T2IT0D;H#[$S=<8@(<F`
  1595. MG*$F$8?^%7Y\VN5"/WCJ/KFL"1$HFI_>`@`:S(K%N&5Q+89)3?IWO`)422+S
  1596. M,*0Z%@`@*AG-5:43XN#%X$U_(CML!OW8.95272"-C_DJT*6?%"?#,,](G)G:
  1597. M&(9@03`,OG->C`AC.'A'J"Q))V)W!RV&,-M>E`M"<(_'H(@,0_0*78\A<4DU
  1598. MU*09:`ZZ,`Q1(!*VAS730@8?TJE<5?#4P1NK\2,VVL2J!-.,2_@;SH`@H)UY
  1599. M.!XX)!6$MQV4]KA).LL,I\%BX+Y9=%V>1\0[==VB:!T/OI.9`L7$DA[(C8.,
  1600. M#H+W!X]-BF,I;$24JF"EPTL:H0X9A/A$5%X>01AP`"%NRJD?5/Z(4*(Y'
  1601. MH.A1EP!+$#$G\</0G5'C$_:FJ@"X2"(`%=K%62'0\%A-*\W0,II$ZQ):1&7Z
  1602. ME!CBT*WFA">`2RI'6&BK\2<9C,BW<UD=#&,QAF\P$@W#DH-S3`@ES0G.P0D<
  1603. MTB'Y0OR)*"T;R9!0-"#$P5*2A"?J.@3'8ZX<"#(X?24@40=MJ)1N5N0Y=5_&
  1604. M<O$,BSAPLHL%9!Y,:&P!`(L'`-Z6O7`B(RB;"8S'UJDT0U$\1.!PI9R52$0^
  1605. MMD7VT$:.L(&\A_T@#?J48;!Y*P2'A"U`0?2@RM;1@X8!#H2=.K8]G%,"FDVB
  1606. M+B?."9[2!O5$&1M@CT&3O;)K@1B[F#)C)Z?AVO$=5#C^^&)@/'Y9\7Z40&WU
  1607. MC7Q2[CA^]J)?C(Z6!@",V[&(7FZ(<"`?PV;]BI:VPSA41'^IE.D3)!+3O@)B
  1608. M?D:\@948A]=>A8\#`#2GU`&`Q=9ND!?#:!*GR13,Q#%FS.)+G2-7+63'":TS
  1609. MABU>Q?SZ!]VD942G0>BRRLUYH@Y4\0$*,%3AL!XAEZ`;6LL1V2/+M4!4#GV(
  1610. M7N,`)O+"E,0YVHW..`VR*C-AIB!F&'BC!,)7KJ2[88Z"1@?18Q%3AJ*I?RT+
  1611. M$0(?W0K-85EE9%[IC%Q"'"I4*%!8!"W&I3/"L4S:'>:C%70"G8D16-8D[(4M
  1612. M>`Q<`&+)L>>X9+J%E-EH?"!EN<;J0_1@`[HA.C/PMYF\T/(8BD%O,(S2*S0<
  1613. MLC?HU^X@YYEW_H;D\<A[TTUH2:0`$_.MZ#&/$"7NJ,^ANG:@8$'0`<$HO9`>
  1614. M>4E3FL'PD(LYJ;V:$AN4%O8#1CC'%D(W$A5U:!(8IE4U`@]%<P*-%Q,8<@U-
  1615. MF(<D,<GZ!SGQ*.""_V2].4%O+->U:$V/H3#NH^!&0'A?-[E]LY`QO"TG@HLN
  1616. MH&%H7:UQ>W`3TH>#MN3W&8&2CORY2@UX&.HD/--PAJ$[]1&&42B(`PNS67!I
  1617. M=W$\Y0%_PL?)(Q/G8?UX-H$FEP``?#P>>6D_M*X_PYFHPWSZA>4EX+V1&%<0
  1618. M85<H,Y/SJC^4'--'3W#!8Z!&C`$]D8L$8SJ6#$O4#'B`GA@>#!,K)9A$`4$6
  1619. M43FZG4QQN"BAY"I#C\'O=0C-P$:61<N8?RWC=FD&,.AO7)Q8(GKX1GF`L]\'
  1620. M`*%1>]P222*&>0K#P`T0"6/(2S2MOS'+KY+.WM><7)CUD3H^)=R5`B/),AE\
  1621. MXR,P^IK'\`LRG1WI3OG!?D3*=`0`]`5Q^%@`H"M!%?ZS?6*.I4,5W))+*J-?
  1622. M1H]:ACDH10B1.@"[3Z8]`HV6`W2:;$7^QZ+6768,^E-9#HM=T8GNM`CHR:[@
  1623. M+3G.=9P&4>7!-$/7LX6OA+=$D3WG+Q75%[(LUI!@T0EWT"E8#`XK9/\(KLV)
  1624. M2"#BW-,8R8MMT)+(R%(T%F&AO!`8W,LPF`[XF#DUQ6-P6G!%>S`A88`E:R11
  1625. M^F&=,[?0+LW@D@C(.@-H!,1=$I!^40H!`'IR*\XH&#(&1O`8!&'$VG)AKZ#M
  1626. MN"7()-=@)%D5`@/QJ,E^P0XJ#IUHA(,J]SG/M\5!G,A&8SMG\=UM2)8)"Y^F
  1627. MJ`,[:=)R^4V#.,GXCJDT#HR![]24!JD9^MEMTYP@QH%@/3^W6<15V!E\>V7'
  1628. MA36'9>9^1!_)!8^A8GVV3C%`3=UI"`;`Q'3@$,E$^,;8N$05Z8S_+!D$E-``
  1629. M0#-HC%#H$MF\'@5>RIQFB%X8)N=`Q9X&HF(DFKQ<F/,)4:3C]9OH@S)X#*+`
  1630. M3XT.](0T(=R3Y"82SM0XR+P9V.@$`R5BDTC$P4=053`[VV%\#.+1Z'!$E849
  1631. M":!**2%NYEA4QQLD13\A`'`$Y,5C>B_#P.D,@QTD'+S+,%"CC)FEOHXH5!Y!
  1632. M)YWA%(UX)*)EP^`I7RFBX)!%28_^H+54*6&+;NP<2M>6H(IR'(>6D?R90]79
  1633. M1TBG@*&C'(TQL)%K`>CFE\*P.%S3.=46@*3"R%8+J8B+`G.<$W`!'^V%?'1`
  1634. M!:/D7-#W\".*:#]):F>T`(HZFN4XRUI,FEJ0[1#1@G3AIP"=],!3/X(:),OE
  1635. MH3^9Z+4:?H('E#A'$^595-:HH6J>Z#',`O/`PMA.3?$&M-1E98H_`RQBH]D,
  1636. MC"\CG:TZ%90<%\2U6!:]X%4$/3KQMH[%)`N)'*V/FBL.4[M2*%39GM%Q8]"1
  1637. MOL)*_.&:-`^KX#'`1W>9I<R8N7D9[6:0J-#C:1[2V((`!OH4`/B"L-/7$LSO
  1638. M(D#=X?CEMMA(LR(#O'A-SG-)W4<NJAE40>WHE>`O55"'ZR7G2LYBX'L?TB-2
  1639. MTR((%N\',G@,"]4P3!,`@$"_HJO;DE6GY'`8LI12)LH2]8B<X5@$FN-1(K$$
  1640. MN;@6PX#Y43@],^5H8[F2B78DZ#2S0%'%X",;"5M.@G,*'HLX067EG@EKJ-1R
  1641. M7<*K91Z;$M^)(OW"%3P&3L<8U*IA<$/WR>*\SM2#,2<)D)I;;C3!R*.SFE`U
  1642. M&3Y*J(:).BW)'X$#V8G*`9]@*,910;Y)7D+JJ+$$"\+[;3T;1??T#`!=DFWP
  1643. MAX!(`+DC]USG-(:^:T?VD57FLN"C@'M*\%%=EA>Z"C(;CQ,D2<FI=HT1?GFF
  1644. M6N?]N!*Z[LT50J<%'R<$'2%B@R^=]:_:-!FTW^0RGAB+FRP+^/CFB.J>`2K2
  1645. M<?J0U5]58YJ@R^H77*5YRJ[]@',>`PO3!=2!9Q@<BT@SQ^:1NYP9U$DX&7#!
  1646. M0:@(?+1*"X)$BKK`"@LA38<$IAX15WX5-/3U4,VA@H_H@C&\U_-G<1!%+!PC
  1647. M)PSPO2#H>/*H7$,#07HB2?2+:UG=$BH8BXTK\`[2T\0*2$I.;$R;FH%<9";3
  1648. M:H7@(]HKJP_+'(:UX#==*9VERU(.-C0YD0E;-%/D'?5-8T20J<BBEI$L)Z4I
  1649. M12M$H#*&]F<8-H$.2ZC'@SU0(A4%(I&.QUPTHHSLZ4/`<98BB7Q=;'QGELK4
  1650. ML--N>$9L5(5(YTZA6.KR2KG1+#0,^T`SO#+X&&ZT35BSB%H,IPH>9-D<E,U3
  1651. M@I;:AN/`QR81O>`CSX!X:*BOT8TV2)$P:O'C%1KOMQ)0`$"-5D0I>"2,(:D:
  1652. MAA>(&U@)\62:18T&'D446AD5C!`ICQNCCPP@.A4,W8,#``!EBK+.B7R98Q\#
  1653. MTF1K4>6^M@>>82]"66<SM$4%7MS$,FE=6AT`F),3``"`5\/`"@)`8>"3RS&%
  1654. M%,S'=H$L85&+C4)13DB9'M4@,D#?0862AW1:``"PT;@*8HVQ3Y1^SJX>BW[V
  1655. MYA+D#"OD$@*+E*@9%!$'``#KPS"03@WPLKI,1`VW&\.A?!4S]\,LAT9,9[(O
  1656. M:,Y7F@<L"M('``"$X#%`@P#@`0"`N9N#6)).T9M!"2N*&8,-9?PV1GK$T`G=
  1657. M`D`(V'B&(0\^@P```NB5%74K)FQ9'KEF)_J6*AD)BWKQGOY#<#'M!!LU(@$`
  1658. M@,CR0D;S&.Q``!@!`$!P05)6X^IN[99KCF[4]`3*.3>]/.*RD!YNQ4.8``#`
  1659. M.`W#+@@`)0``2$8#2&6_BH,-'4ZPY`A9$FB$=*3L2A+L8@7<40_1`@!`CV)\
  1660. M>XU6+I,AH2'CQ9PPMUP7^<5344='^@B58`$`H&T&Q``:`&!`BTMX16T$@=LO
  1661. MZRRIRNSJKVIH&9[2QV#N7```$(^>T#!4K!D`OV!G<LJP6HQX,+N+\V$%SS!I
  1662. M&9PA&!I>1`"8_!&ZJ`$`@`G-$W,HM/X;YGACAK5FA;`8MQ^3(<0U#&\@`,0`
  1663. M7N;'*BRP^"4X``#\Q.K"DPP;WGT7O#+Z1I$=9W1'D!P(`,%V,AS<EPHXK-4.
  1664. M``!FH!T)/AY:SC2#6XFSUI6_<1*5"P`:$`/`09EA`P"`'X4W`4?%:KB;X=W2
  1665. MA^.(5QGCEN@N-H[+\HN_!_PJW=B<>'2R^+S?0*$;G"3V!0"G"&]V-VM5<LF,
  1666. MM067)XR"8E;M(3N.GQK5N`:M>]4;XG?R],2U.!ZUK3`TP&CW@"?!#.)*`>#@
  1667. M;H8.T#`,G()1FY/T8T+?+8E)W\--,0]R3^A<2GE:8?-?WV@1>`>EG%K.L%")
  1668. M0U<2`@"@.-G/&P0MK<]S=+)`RM;V,3X::S&/RC*W7T@1N8O)``&2T_A[#NQ!
  1669. M=@(`GSMU)P,-UH6H1H!1TDC:.>1%=T,ZH7<Y39Y-2X>;Q#`I&@D`6@1;_C,)
  1670. M@<BBZ"-6-0!,W8]B9R,```BC&(=JW57>^S_,X81@4\+OXERXL5>40J.Q[0S;
  1671. M5C>80_GR'+:NL(W!+<SY"`='_`+]SW-DAIQ8<QR_J)G;]M3]2(H1Q-2\.VB)
  1672. MIY($'2D^0/=1:,"[!P"0H!=]#+4*Z)X)QE@!&.TJ>5@H)2;RT(B#4:$*>U`;
  1673. M5F4OFJO]0$<"9G9YI'SW+V7=_OD80"``<,$7T-H*!UU+.NS'9FC&D#BO&:&1
  1674. M!CA,7-E+=0C+D)D'8+=L/&*@\!KJ*048+<.`CF$9%U/'Q^']`B`G*`$`0*E5
  1675. M,"&J"ML6$&D1^QKAH'55%/WT"T,5=HJ/0,X&GR(`6-O^X(BAY60(M@^9K/'#
  1676. M%KHL@<5WG,C72>F%5L;@Q=2N5L5XUO:C..)*LQFV+;BL3<CK4!TJ6=MR75:X
  1677. MP73<A+RF/`81``2RF6N>C,%.Y&3UT)`W@Q&A````U_W5_`0M^VVHP!WH5<F"
  1678. M-%;GLL:5LJ*SS./RM-T$^!BTXSBU&OTC.M#;)_-N)X,CAIYQ+*_^IDM9=R\@
  1679. M<AU-21"8O#,YH9[:+H:!RE`)`Q0.Q=S!L#(<-IOO00X/2-^+<80+@R(OXE!;
  1680. M04M<?(E2A.4MB"\SC,7>W4$<P*#K:,:<R-JF4412(>;3PRFF^36(/<7\I/%T
  1681. M+"SC/Q95K"&C?I$B7H#_8`R%D4\1A_/2(JA(9L"YI<$1!]A98S#%(@?&E'\M
  1682. MHL01[>'?E,<6;0]4PC>OD.9)'+[)A4`A6=<N`P!P:7`<8GVES(2(Z')A.B7E
  1683. M(@K)`B;QRO`>BT!A9#LNH1$[L.%!B(`"$ALXH,W#,/0!V"'/ZZ<DO9N"HR?E
  1684. M!G'VBV`X?/7<8^@$FD&7U5N==0*$SF8HP\L7F)37ZP)VP01*[:\"$P29T:=G
  1685. M27MCX2TDK`2=1A%0Y8RJF'W8SY-!,<^O?E%E?YD,LC@&IS8Q-,N%4W[<D77$
  1686. M%+%V!-O$,R%@K<_2#!R+[F9E10R*`0`+`X(@Z*$BG6.AIY0'<?-0?81PI(A@
  1687. MZW;Z"E8FTIH!G>H)#&7F6A<*4<;.9S-@Y>`;6V`REURQ!;IS7HO--2$:1%4F
  1688. M5XH91&P(+%&?ZZU+:V=I"07$A@O`;</$16ZZS(.-,&`0F8291^^E(\,D>=QI
  1689. M5-%CR_"7A);VL)TA,L;P38C#D!#(/1D`F$KZ\-"LQH20-<K.Y<J9O:P]B)"R
  1690. MDA/%ATL_H<T0;+\DYKB.0>ZU4`<,4QY.P[\0U)O!V@9)MI*7P9A;Z8B:6`7)
  1691. M"1&"8=B%M27+L<$1:QOB$1%=EKTJ2)XZ`*C=4!V\4.J[^U_TB(ZLU!%$640<
  1692. MN\#*\@,K2YF3*KWL1T.L>*#/7B407QT`!#6F:L;1J[QE2@,\S.ZNG^*IU-4H
  1693. MOPH<0CCL!%;>#$(P0S3D$HHK8(-]6',`X/H.EFLG'&4AO=[6=P(K1R^&H<KX
  1694. M2U%+9UY1-X=`F^HPP"X]FA`)I!FWJ89L,9J$9F5M?A%FN!T[2D4>XW[`,!$B
  1695. M6UO>=WP.=V58`V]M"0UKC_XH?INMH%D6?80&!LL`T(S_18OH+KHH0+$8&AD`
  1696. MMBW"!@"=4`\2AX)H+R!'MJ[0`6@S$.KNQ#`X,UHUCQR*R%P(>52UI.FT7-0Q
  1697. M)(@>XV;,7"C?G##5DB(RW&F@$P`2-F.0@1C'7@T3G%%RT@/&AA>H^3'4%"?J
  1698. MB@5;"=FUMG*DDB%B"$NOVXXL2-O67IF4SA"(A4,9W@R!6+X4!G!)1:Y=MWFM
  1699. M"R;K6N7.H)A3!"7UCWWI.%A#%I-U"(Z?\I<AFX-<"^F!50@U1CDH.SE-!X#0
  1700. M+2E"3VQH$;RQ=(L*S5`-<5!^J-#L>C.T[EA:C\KEN8EW=[M95.S92?-@&\U[
  1701. ME0%`,5^[95.&2T.%V`Q()0"<[\>P^>11SKI$"`)X$(?\H'8G`_$NPTP(B3&/
  1702. M5$VWE*-F!7P6!^F\&4'9CF-7`596$Z(E?A/Y2SA*!5TMWP&`4`>=O2)?&"$V
  1703. MBMU6,4P=-VD!&S!&A3;>DV';+HN9RC5#D^TN6!\X&N.@-\,8<21[,#CEZZ5)
  1704. M,7HKC_Q-7^&`%.-"ISKT'86EXP@J%#N3GSE!V)`?<.[JG@SR]Z%RD`O9'CPC
  1705. M>5$-1,0][&D5@S!:+.,&;KKN1]2U=QO*.(.A*PUE>#'<Z2#A+G[)!R$.0'Q0
  1706. M30?@<2$PQLX.`/3V6'"5W!96ITSB6\*<N(00L^;,W\@LJI`>)<TPQ"_YRQ[>
  1707. M5F18P'T[-HSA=F&AX37\E'>M2K4NAA8!&I;`!F^M6\(P`43<`ALP7W?31<_A
  1708. M62@<L(MD)`/?SKS<Y[S06SLA&0*Q2;X3[U?AF)D+P19'S7[PVH,*/;'K9Y$!
  1709. M04-X+E>3@=[F+7*+;XM*4QS@DB(`!2!L\Y<M,ZZPL^D.BA[O9&W"90[XIK?Y
  1710. M!38@R^<@'!2RW5@I[U<R^B)>D9<BZ/`N*EDW>@<`&DQS%%,/RA!C$'<1[Z88
  1711. ME,-.12%7JG2V%(:ME!$K]ZX+3>?%VN87(N*/=%_/.@ZSO)&;F10#`,2DT<R@
  1712. MG64=/Q_2)H._N7`X*-860Y50+=D=X,5"QRVX0EYP*,#7(IR'$,X0*Z(04X>6
  1713. MM3R:A+/VJO/DU'J>Q2"KW7&9P4$0CC,,$WL6,.J&*6P8F6$_*XRG2(,;6ZX8
  1714. MC$Q+&I64#!&4EOGTBN+0UW(\!V&L'+VLKMX2[(+>[H=Y0D3FN:"9#.D;(VZ&
  1715. M4^MV`+>3J%`81H\@&1:S&9Y#9!#40:<TR%\W="-!.ND(Q)/A_2X0@I[JIL81
  1716. MBHV+\.39YIL)<W:IUPCH7%)?$!%X<5!6Q&<!W2C//23L0?H8T(7]R$PXQ!()
  1717. MAY^^NOO#Q[4<\.)SJV\'Z$306C9U(!0\`'AS2$'9[<<"$>W`HRFFAS_D<MFE
  1718. M8$/L>J]JVYOGL!B`]#<?ZP"`-W*&'I4BGM<^EQCANS.$<GC>&4KN\=@IGV])
  1719. MSIF+FAEY1129#$+;>.(.M_X_5L1>HX<7STD'@'>K+]*WF,$M+:*WQP;1;G&]
  1720. MV&DP=RVB-!QW&22UZX:9V1;>'.@>CX)XG>61(2X24QQ#,/2]LIH3-J3![HT<
  1721. M7ER(RGG@UCD`X`U$Y*"L[_3.<&/#9'_$Y0I4%(;)4!A40_;('DAW(5/AW^YQ
  1722. M'Z`O5A,78D`KQ_Z`UWD%YA"*AAC2;(8*$6[80TWI%PF$!N.&6"Z\.2#F\^W;
  1723. M%FE*-WN[X6T';.@/"9N-"QT]$8`60]85-H)-*,?I;S[!;8<IZPPKPCTQ=M&4
  1724. M03ZQB*<34)J%ZN/#6OY:T+O%#7A\?:?TOG'<=82UA<2<(05MBRS_B3^+`%_J
  1725. M.H)O'Y3\U!^`[H]@(R3XORT@(U(87G(@AN*1_3R,P<T`U9U$SFP8IL-4SF".
  1726. M1D02-@<,UK&A&:_N_=`@B$/X;?'OUV(H"+"<C6(#T,U;GJ?*PPLU-[MJRXH@
  1727. M/-R<.E`*J-ZOATF&2R%NI8IA^N]3*(B(T#ZX"'XRW.F#<AIJX0K'$BF(SMM$
  1728. MC".(R*ZF#P"GMFCX;9F]*``@..[2*05DUX[BW%/S]L0$)M?9MGXJD;PZ-4X`
  1729. M$.V7WLNK>QUA9\EZ(L=UFC&2I>_"@-PJ36D0U%B,C)$/>''<FXG]X.6)7'.$
  1730. M]2XLM,,(<1"\L8'>SI\2\>P)=6HG(D3$F^N(%4&X?:7;24''W5VTT?EX)[+N
  1731. M\9!5@,V6X2!U'AJ@Y<QXBF/P&B\*[M4G2<=RI]UA@M\)O4E)"[FGU8:28H=X
  1732. MWWQOGN[AA3=O\UH[U0&[_2#O<<L>MQBH4E"/#DC'+("'Q47F3=$;YZ'%X"[B
  1733. M#]'4\KENRA@WDY_<2?!^L`\WGP9OAG1_4(+M8P2X6/+.FPQLI9B/A4S9%A6Z
  1734. M51T9"S_1F7L&1(.O8]N<<R)''9!\PY`13=$&+X:&"RT?Q,W'XV8&7O!MQER\
  1735. M%;?R8,N,(6SQ!@,?U5/*(LL0GYTZ@+D%(:V>2;"WTL*[U6H]:+$B8%(*]=!>
  1736. MU=#U$0QCJ?J&M9T_^P$\T_W-X)OW@X<X#9',S$Q\`%#;!#+'R12Z@<[?=VI/
  1737. MW3?LW#\Q(<=/+95&?B'<BM<H3@`JX8M4#;X95'<BY^&;`>=&KR3AADQ5PKX0
  1738. MBZ[Z>TX$9D=(,5^)<0FFMHS^S5`8I$QR%CI9S(J:C0M$@XT@H5K?L'?2[P?T
  1739. ME'#+<!X,U3.>013*\$%,78O!GSE1_5A40>MT3@Q#>E`AI#.<V;%`V(0F8PH9
  1740. M<7#I<?=?;"#4"6\'1?KV\S4,A$E44;%P0`K*U*6Y"&_K6WX2=%P/VDAA$'4,
  1741. M<=#$`-(RU#9('4HA]JU\*UT`\`/$!CQ>32=T1$",@8+P'%0A4Y>]`.-D#WC<
  1742. M,_<OM25&Q+\GA[@+Y,+QT#)<'F15R46G[`<@@FC'^!ULJAWGQ@,*':R7[G$:
  1743. M_$2;`=#EP.UO>1_[U\CY>TU?>!'CQ5:,W+-0&F0/%T)F\BB=!Q]7;@8:.`&=
  1744. M@02WJ_5$VQ%U0`8&`#B7H:2LM%&LSB+'T7%T8AWM8-/9%PG(7K%`&!%VEN7#
  1745. M39`V*@<-2*`9$81<`0@:O'$<T&20L,EJ[D(82-TP!NA"UH5#;&+7P9IG7_QW
  1746. MC9Q]$;DE)*X@M`#5Z0;$6XO`<=!ABHB"96]@="+5A3#KQ08W0&>0OHEV2=Z-
  1747. M]7,Q#^=7J("$D7C/A'<355T^W=[;,,U1"A\=NK5+(1TABGJB6SP?P=QDYN@U
  1748. M?C*`(A<;R&HZ0H7P:!D&*<A^=HND%)\6M<>W,45U7X&E.^!PGD&%<#RT1$["
  1749. MLH!A?!,'A="F\,T77T818`[N>E+,$648G"+[6<OCIT!K%UULL-Q)!L6?S$1D
  1750. M.&`_73IA9REXS\>,M911/#X:,;7\+09<H`.VZI$.9,`T1QY$%,S`,@B@]2D.
  1751. MV+!"$5)[FT;?D/+A<]Z)(]&010:4(']#Q_U.5IUA4)"(A-_<8O#Z20JJ01=`
  1752. M(0@=K<K"M9\!(]0;T33X+`9T'G>PZ,T7TAA?A&MU,$X@2K&W(!3\69.09#%9
  1753. M2@DQ-Q2*5`5?;"!_:0X70G]@R:5VQYV[QYSH.N#5?G8&$A(6$55XTNU^K@1L
  1754. M`!IX<Q1>A2"A$!`."^;0/Y0*#-WGIR/(7YL=AG#S&81JVF@V6=&$#Q#C]'&%
  1755. M5*_90Z$A''O<`?'F2+!U@0_0IS#P;6!")X<E<!!OUNX50Z@GW<WRMVS497>"
  1756. M:=@#Q`9&7./7+6Q]"H1G4!BT`B4>5V%-=$EWGY%W_BUR>4AL1+6%<<F<IB)@
  1757. M9$#NG=!17'4&F1\[MAB(`;N=#;(8]4"E2%Y4`6D&ULK'-4PD0F&;ID(<)GBS
  1758. M2VJG5Z@'Z=O1@R$H?A='H!':D&A5A%VS+<1WQ\&S-P\^'],A;E$A)`]%POSV
  1759. M&.13%=VF-JBL"GN><N>=-'K_0U.4`-(^G4&1]QXTAB08?2!"J$WMV?(SF_V"
  1760. MT`(-1L`)18N!$C"H88@SPX5PX_$Z`,";D[CL9SD-M%4`]A6GG%VUQQ%V5B&3
  1761. MU"(J3Y+!<Q!"+#`QA%YC'C@1I<*%&!ZJ&)O!6D@FL3I-0-WGS2F"#<,KH!E4
  1762. M(=[A-40^:#_4'8R0L#E@%!Y*`?25&K@#;,!Q9$`.3^!S&FB"*F*-2.T)B7F>
  1763. M+1@;)`%?()FQOC$&RY1AD+C@7X]!H`'*`$KW12MGUP%\1&$NIB-XAMD;;$!S
  1764. M1!%]C>E4\H@\J-^F)[S!ANP8@K<91`&QX/F7/;0(\!&E('_M%1P$!:*ID'J;
  1765. M@3?G9AB*IUUA\"_$A/\<G`/8U1L)1LN`GN!]ZQN8,)?9-4\1$4$#G'_`6K-@
  1766. M8I5XA16J02E0B?^2$69F/(C0WC#TA.@Q$<F.=`DQ.,!#^F9$,'[LF%!4&A`1
  1767. MOAG"X,V9&;Y=53@G[%D!P*284C`CC8M)IY@P>7W#3`CPG7:X0N<&@L!B,<2Q
  1768. MT%\@6JK85U';9`\<87BH(\"&?`/NX`-`AVEBF!`IEGA>`Y1V2#A@QI.O!R*6
  1769. M(CP8>40G<!`XQ.A%H.Q(3P9C$+TH$A]>9V!GW8`GU&8`!#1W!B`_MTST:;7*
  1770. MQV4OP#0<BG&E8#!Z=EU;!S.4:SK"^^5O`(M1DCGD(41X!R#6-3+^#Q/CS`"J
  1771. M?7/W8LE%&;U.RL]>Z"TT@?V<$T7@10K^X<9P+=`LS\)OV%<$8C0+XV5'3`C'
  1772. M0\&PV#F,%>-XMX/9-3$C*J8&BHR0%2=$<KDJ_P)U=^?9#TD1\<8&&FAU@VBH
  1773. MK<Q3==5^0%KUC-4>]-(%KF9FQK,&S/4-4-ADD.X==YHB-(%.S3,EUSNS9%2)
  1774. M?5WNT.]%C2Q&;7'9F0>M3Q!7)W83#0C+^!Q.!GZ>?`@MU'ZP7'M0&FR`$-2B
  1775. MD`?1!ZA#R95FE"(`WVF0'_!UYB&U!V9$;LO>D'`5$F/5AGE0SXU!UUGGQ$;$
  1776. M#6#"<G=03%T+&>Y@`YB#X6%MV`AN%=9,JG,+5(L-`U$1&9B$S$-^,#@JBAM.
  1777. MC`3TS1]$TS*QX_P?']52&!P>(DY"CW*9V`X]X4#2&6AUDB/:1P1`$\RCW*AB
  1778. MO#FS%)Q80'4.=M8QI_9@>?>%V"CJE`;/01ME[9%)*U5M<CW&!@W9<WC$:`:6
  1779. M"(C3[7U_T]S,X/`M=:3>9,`$2(3UXNXG,K8,2HL5Y20HB277.C)ER!<;8<RE
  1780. M!#D3=I5[T")>@=K#P%2)*1C+8KD7?44G2QPP81\(;0>%G<4S\FQDQFD7)(R/
  1781. M(F.F&!L0;QS0)@0`*(D'I.XG:%!M^%6CJ!E]78T<[C#M(0Q@PHKPC5QB_Q0`
  1782. M<!RI5HX!J_<S@@G'W;,'&JH8I4&1Z(9Y@=1BR;5>U8ZBS%=DWIF),62GI39B
  1783. M2N\!(HCSY65OBVT`&S@&)^$1U^T==ZK9?!%A5'0')!>8[CF0?L6<`#WQA@<7
  1784. MH!?ZW8D:6AK8+&![4>*B,`G)/DB'K`$RUA1!X:"2%`E-3A#Q1NC%!G)C$&DY
  1785. MC(^30:P().8?CX%')3?"!I##FNB=:$3!(6=W_2E6LILAU$I91+9<2D$?!$7:
  1786. MBNF0#[5KQYXW]\&5*XM!&\!`.@F9R4.V'Y0I!V2+4"SM<).3]X3M"6UC),B8
  1787. MPR$'_F&6*!FV!^_;C_"P.8==H"'F.PH=BP%D*+Q)!EP<-'A'J08'%S,R+,H?
  1788. MW2(08R#Y)R&D;<@9VG4;XL+Q?(0V/YV<<,48)&%DEE3W+7)@`IQ8$5X'.8`7
  1789. M^#-^DO!"^N:(M0S`(F/`A$!6)5>;Q`)U>QD32N$^!A[<P=/H;U$8*P*<T"(P
  1790. M(?W+YH=T!6$1Q[+G/4X&<.(GZ4AXDV#"LV=FN`MBDAL2O]Q\+<*J$AH42.&,
  1791. MW5<]WBS)(/WHG4`*"<DH)J!0!^]+H+`])D\KHB%Y4&1^45^&,`10>S;=G69)
  1792. M+BO6'`"05-U\U%VNAA$1'JX'"!8FXB"@1[979JU,%0)H,/P9!\3!0]<T$(30
  1793. M@A'10L8&%=U,V!\8`8W<`9FP%0;48L,E%ZT4TB24M6Q`;)KA0<$O+HY4'PEB
  1794. MUP`++0/DP!A4*#]"]W`2NH;"&[P@D`D''J(<N;ZE@(VBGU7A.2SV8VS(+%2$
  1795. M76%1<40*;S:=Q+<1V1?SCYU2./%:@`L'N?RE=C,C1A09P)5DA@/&'<AJ[*%'
  1796. MPQB0`@Y>XO@O^5'D@P^)]_$P4*/*Q]"5!HC<A8`YA#JG"7U0(JQY#>-F,#-^
  1797. M&;`E0K?>V1M\FQ%A&!P#6$*\0H-E,^P$--<Y0'7EE5\'"\J1P(,/66Z,0>@)
  1798. MAK%E+([AB&B#5]X7P!3NN-1E(-%EI1<;''=FQHK0,QUWL$&*<'`-3_L"[L"W
  1799. M[3^M9&>G(A20[J6AR-VY&?91!K4LL#@6(TD$%LZ!?QV3MKJI!M&E:-<_>@87
  1800. MPGJ56AH&/TH\)RG\",:!W+BU.4'%H?)`=_"6KI-JV3<L>ZK3F="OJ59FDJ:&
  1801. M:JP0=QYL4"+\=!0FP"=?JA@89G]F;R1L!.26E*EQ-&`"Q#<GG!<TV-.E'OQT
  1802. M;)EUF;WQD<0;[N#5F1*F45J(RT4<)U#'!TVH!C1DAM`)JI)^)0`P/")UZ5ZW
  1803. ML+CEED^=:8,.K8&F8\B(`IX''9Z'0@"R%:.7;9`6.@DEPI9W\O%GJ5T%9J@%
  1804. M`(PBR,@\.F*<P?O#=J!/U-[ZYEU20U)CTF-JH'TWB&:X=+F/D=DY-U">!P.?
  1805. M133A-`?83`HA!S4O3N!I<$P"?"F>77-09%V4P@)Y-=YT5YNAN&L9'C//Q\49
  1806. M\!WR1<.U'D4*)1TUJ".DA:I>Y9<,EA!2IJ+!L_QY,4U.D2QB"9!#F6EH.D&>
  1807. MI+=@$#*/N>`OV?BE1L`$$"F:20]V`KQPITU[6YUZ0(-9D&H#=U<);@]2IL+1
  1808. M%%EA.@*2*!Q0<J'5&,3*-2]2YH2`RU5P4&-?`288$9D?^#!M]HIJH#+7*_(=
  1809. MH9!'9V_HBG-">U(]+@;OEF'B]165K9T0N=]`5795IKEL@GC_4HOE4[T'VHD1
  1810. MD@A="_9"I$1Q"I45#B*QW,$+:A>EX$W*:@F;*;D?I##L@>"R;:V6C9_L\F3,
  1811. MG(?8D%@[L':&$-Y'.G9[J&0BMYIQ!PP=EAD^=1--@H?@^2D/S>;+F'L]AYM!
  1812. MRDEHUHO;@BKY-/*&QQW0!R,T=G,"W70=F)BPC,*1;MJ44-U4F"&T"!X>.*A9
  1813. MME)1!,;PTY%JK9IF@#7<89W5[E$1QHN<7&<0;5(*A>8JZ>ZQ>S!#CY(D($''
  1814. M7?:U[H6*QJ:LUB)T8W@>RL,Z]I%!AS0',B)Z+)]7)4Q5#!!EJF,Z3`C]@HR@
  1815. M`O(*9R#`-R56?FC:%\$'@HQDQK-W(>Q+R-@#EG]1-V"7?=C'U9SYI/UG.B$9
  1816. M@1BE4.CA@&`7QQE@TA_*`RS&&&`4/B1[4&E-C1]=:H>F@5U<`#*99O9S+0,6
  1817. MQ?@=D!]FYZ!ZSIXHA3`X1'"5JV0&PH[A;99+7K@/_0_VPSD91<XJ,.:"D%`B
  1818. MDU>DVBEU>I/$FQ*I:2:(]@:!P):L81P@-MD!UH/0A`@!Q@@'8&<.M70]E-FG
  1819. M71==<'?7P:,Y6'8.UA`8R:X="SP%3^.0G%!91Z``.12*)A-N40Y2"D^`M>D5
  1820. MXA;'G92Y3)@.K!>\`#YB91Q$:"-_N0[#WP+Q""9Z%]8G=@:%CRL3T5GJ=952
  1821. MI%<3E\`Y,@*PJ1G("#QCL+D9<%Z909'X:JZ5,\.N2"?P%.M#^G90%'G-`9$Y
  1822. M)P1R^20J<4#*'G05IED\89/G81=J"%EA3=V.I$@L6.R!:G4]?#N%01KWDM$C
  1823. MGR(V64UI!MW#7X1,-HO?7&;P!61Z#4,.!2Q@4>$D3XE;N`M]!+OT;M$=X^'^
  1824. MN$Q$A)%;(VA<BJ'II+:7)BU-S@<L=B%8(DJ,')+=^8H8"[NX/60/1&@`T'R2
  1825. M&<<=X/CUY12,P>8#.0!=P@$'A#9"&_*7RV83NE%E9'#(T>V9&2@_=SVXD-'7
  1826. M8J"$J@95'ZJCM"T/C@&/-X"^.-U>8B@M;*`!0&2)2(";;![_>28L"T;6`9GF
  1827. MP0RN",@`/GX;E%\BZDJB47K8ZD9A;A]_ILCX9#Q%M6!_@'&64F<3O*&O50CM
  1828. MQJ:`@=*#0ZBW<'J2>`D;@@AXOH&XY?/9P?A\T1H7ELT<D/;#1#1Q-I['$'1F
  1829. M5QFCUMA'.&%Z2.B7N^89O%].Q+4@V:R2TB1[("/LGJH$YT7:Z`B?J#AIOS4,
  1830. M,50;9M?(A=3<G/`OO%M<5>/G]#F*0`R">!6"FOT<]E<]P@CGYO[8'_QTH=-[
  1831. M,.ZH"85!TJ@];`K.9K(1&W!>H(%2^&J.G2H']/2ML"/6XEI9Y>D(IQ8=`2=P
  1832. M@2<A8!,</D4?J+;W:S:(]:<XJ'/&D;-(:1"(:93$Z-F2E0I@W<VRYE5J/P>%
  1833. M1DI/2(S69LR&]^%QT6"8\"*9C3\G)87W20;-6*D`/O:4\*57Q1X-IM("G4>I
  1834. MM9/`5(MG4DD).>.[0B+F:(A$!OEFV`:J)#MAT[V*R)(E)PK6?<1><+DHH"<T
  1835. M1^%R%!:9`8`C5BJ`G:"!V=A1L(?RA6AW@XR*[6;=X-M=![%>='18)C]FXJIP
  1836. M&C1[(..=EWR!!E+`#6EM<D"0F&A:<2YYI2DT(2,<D-I<X^G=](0Z90V)2,B6
  1837. M@.;AF4XT9*K5VGBEL39VTK2W1O%":R7`E_]Q"E8`95@:#'Q5'F,P3FDQRT+W
  1838. M0'VF.I:%NS?\R0A6I-"A>\J9'RC%R2G>ETQ24%,[M'@MY@,5[(PO3PGJ@AR,
  1839. M=+93WV",Z@@!97[@3;JF3B?SU\\Q#&].`H%SXD@RT17*T<B-X9"+N2?"#-_B
  1840. M2E%\EIQBXK.9:H9Z4,;BR?2D.OQ&88`!BFUJ8><@&;R%">;V>9[2"2]2)Q@:
  1841. M"`>^Y0,F(UB+>NDA2>)UICIE$+13$H["Z8X#COZ>T4G_`*W]ED>(JZ!*]I,Q
  1842. MJG^7(>R`J5WBUT&2A])IR0'G:08<1XG@[MET;R@@,>"MDLRHR>8_-&.C7)#B
  1843. M+\H7%)[V4P-^H>3*W8ENKA1@@EZWC$@*;4N"BDVM3J/?P1!:R:G8I!%Q0+Y;
  1844. MA@45@%NLC@PDA0FA/7LP*?"!2'"!92+DT'!E!GM:4(H1(:)`X\7E&9@9/2IO
  1845. M)RE8E?CA4^)$F%%@Z8+%KLD40:C.J2,4@_E!$-`9N)RKI!%6<E2CM<YC@`1Y
  1846. M<Y3?V+`O@*5_9YSY5REF!0WR8CFD;\04/%7J57%%Y#0GR>4PZ`?>42WY7_>#
  1847. M+8DN-H)CQ'10(&I[0:EOEA]\7ZG=,;@]#)CPELT4`&!E9!8]B/F4A(<0*@9E
  1848. MR40<X;6'8MH;Z)7;885QEB(J1/5)3F$&('O@\0`PG-@R(2>H=?@I/!D`Z`"*
  1849. M4`!0-<(+..>+*"E,,HD+5<IK47>K@M#6D+FG4Z,CP;<E@VJ$\_%,1HPD7B@H
  1850. M>+0IQM,_B9Q:;GU.'O(;)@D$*VPJ9]Z`]!9,L1G,AFKBL7<>?I+S(8,5$;E[
  1851. MJF2(5Q3.G]UC*5(BA)-!*FC(,JYNL)\BB17VG-O>?5%G/@?]VH)85))_\\[\
  1852. M,7^8=,[<@Q>)1J:QP:O(4\RLC=S`9T/"J>;I8P!9N7N@XE[*4JD292+-*4TR
  1853. M?`BF(V%FY*5,ZU:(F%XA%-ZFF%)LD"K&]I1JK@C$P[*`:[X*/.&SY%Y&)_D3
  1854. MUQJ/I@?''106`(:HWN.S``W):MNJE+`M6(L*!2KFD_*CDBK&R16*5$B=@PA-
  1855. MR`_/2TUD.9)X6ZEYYJ^HD_;=R?,LR`FL:MTP,<()WJ2Q2$B>AT<GNPD`0$/K
  1856. M&Y_H),QVS2IDMU?`K2KBGM8BQIH#:9E8.H9H!0L&B3^H!\^@PXI^M%)66&%`
  1857. MM9%ZF8DK,0`=>(U)BQ`9[("T*W\Z&3R`7J6EY8!4@`7-?E"X<('MYY5FTXF@
  1858. MZMY[8!]T@KX'X,F3):>1&Z/JO*J;7"BTD$5TJ'PBN\89>`@FY<D#2L"'<$(M
  1859. M.#/P``L&2EGW50AA#G;(&+!%A(-M,)N2CRE%?O">G@F.03CYET&IKZ;I.D5N
  1860. MHV1JOADF,'CVAN^:@68&1IB\,X#@-XC$A>@P-1##GR&&L+H.<"+F>/ZE@S%I
  1861. MW[#6H1J&1W%"J&&`KH.&.HK:C-"JG)E\=J-,+%\DO0JFRF'=(K1Q0)$!Y2?R
  1862. MW9JH&S*'*@04=((>T:."AM8B#18=**,VW558EP)3!B?CY-L=KUA"042K/1\H
  1863. M!%4),Q`/Q*7$B=2YCZX=B0>/&B%)*^Z:;)U:$:&VD<[H$<V&,PI-;I:QS!B$
  1864. M^<R+_P(20.TE="?.=-HPO$":!VUI`*(0\6>J\R#(C8MH?D)FB';NHR@*=*X4
  1865. MU&F01OD!?"R&:A"(J:YO".AXT]&<=@D=X7UH*DOEN8@F!H=:*K:7>WF/8I)$
  1866. M&@!LF*\@+C-_RH^QGVZWG^J5V>39^2].?79D8$I>RIG5&+3`C]ZDOYDA5';D
  1867. MAE3<M3*GIC,M@X*@@!X4W]>_L%0"=W]F"@>BNI?T@;;1B+!"9HB[9Y@:0CMF
  1868. MO?@>/`C@XY[FR<Z?^:FK*G%F$2/JA0CCC79&JF[@`KII;(34ZL>&B###>'69
  1869. M?1#:#]\&/EZNS8LRZH3NEI;+8R!,JBQX!*5:^5E%LIK.DDG"#!*9H$GAB;)O
  1870. M*%8JG&H.@"MR0-UU:B>/H<@WL+'O`<V"W+R!F\$&B#O(7^#%9H"E<I`!H")!
  1871. M&KI!*U4OA5&A?LO"*Q,9!*MSGZ2J.))DC>*0`#[FK=7IMJ#"?J`49I,W-]H7
  1872. M=QY'UY.2*_\KG="K+:IJY^FH/%`1TTT&5$)4=+@#O?4@+)6;:6QYTO6L#4/>
  1873. M\@+9!\\B`UDH()K:P[_05LZJ3*5P^N4A:['H<Y2>5K0J'+ZI4V8&ST%-\<]N
  1874. ML\HL0ELZ]@LX1!O:YT$+:FT``(75L0N9Y^I5SJF\TYU6=0Z,`"<.N#-ML#XL
  1875. MKV5$-&3C*)?PV/T//^?2-=":L8BL]"`A-;,&77AX;DY"LI:L$L]&!OO98D!O
  1876. M.0:OXJN98BJ(ZMY/FP$M68,5D/26)G<%S;WI>O8IB.(2"-:.K3>E3?F"IG8L
  1877. MAEBZ."*O&)4/22ETLC&#_3#+RG@%YOR)=T8G7U*0)AE<@'`<JJ$;,+`S`]DW
  1878. M-5Z%I.1C(!GU?/:(_:`@C*EV'=IXC8Y\0BJ"N,<*N%OJAJ65\EJ#X_TJQ4D2
  1879. MHAB%<1K,MA6A3XFS/A^>AYW!@%XA0)=OVZ[*JJ\FRE?@YGUIW'X0?'6T<J:N
  1880. M@;\20L1CAU3##I*0'?[T8CX?F@,[^HDM&Q>"*]9YT%*E'(S;B`J'Z`D*X9`N
  1881. MAC"#<$!O"2K]`<(JD_*P!6G)X1OX=G8K;+`I-&3I+/'83<UY!6MPF%0B=3]G
  1882. M(KGB%K#B*#RH)L`&>H1:Z<QRHZ9<3BA#[)RBC/J((=!;MI5J<,L:DFG2TN6]
  1883. MC1$LS`>S2H:B<P)N4(:I3G#"1]NF<GU[9%?Z?:">W.AYB"M&F+N?U7!^-KAE
  1884. M!7=[7\"V9,;2!4B<!HP/[I('MK?V3.OXY@:MZ2=CP'KY@)I1!E0J[+FE")S0
  1885. MAU9W^BO3)LI0N6$60*O'GI)4QH7P&^(08%W>B>W5I=+8(<%;<!R)1P*H?3$+
  1886. M*RBBEBEL!N5@",NT!K/#)0UZ&D1`1$2@NU?@!A<L-\;<HJZ\UK9@-KZDC6(?
  1887. M6[!N27Z<7WLGI+1"15-DU4E+IP&M>QRHL&"&7@@RR@ELAW[J&?R7Q.,IX5Y&
  1888. ML#OMTGFT?J5;:D\'N]`I$9;RITLPN?1J>Q`W!+K-4CCY4(Z>TNE$*<K8HZ=K
  1889. MIGF/8H<+7I@@T>D&[H(0Z(;&F2(D7"L480Z7ATFK.1B\S()B)N^J<`=N9&#]
  1890. MC1="&X_G/I:9S!P`D"1=$22NX6BTC'$+QG^[/ZIW9`;\:@_*@L['4[I2_'2Z
  1891. M:"7E0WD&N:>'PAXM&^?=F1!8DC;$@?PCI+H'-V`&8FUY%=ZEO:H>?%QPPD'A
  1892. MS8FY;R">2"<D7#0O"9;.V`O35W*Z'[@.^UE$2.BN;_EL,&O3E9ITZA.[`L9B
  1893. MYYQ)AQ61(6UJA*E*U*4EK$'A(N*IW<2VE"&47*H!`U?HZGV':</U+Z1[^NB9
  1894. MPC"$0C<?D5&:):<3$/$8;=6BHQTH&O"FKZB;PM%I\JG:@SR"X'47N5E!XS/>
  1895. M":KD(UKYR:%41*NR&.!<JH&U=<*=?R]H?R!_V0=$1/KVTYJS^X'7P$;8'5A2
  1896. MF&MMEF&\`67)86`,C!]H>!TXK$EO->B=]+TN9E*9$=ZM4!:%Z79$!@SO6[-U
  1897. MCKDPGPTJ1SZ>^VK,]2SHNP&`#ML??+3$W-SW'.JNDX&U!3FT>%!=6QMVT0D_
  1898. M"L`;'+(834*A(-HI42"O3V5$]*BPH1%I]#6*/BG;*LW".Q5E%P:Q$7;E7_<D
  1899. M4%IYU2DI]1BP"T4"T'7^9F]VZU/$6O%:A-K`6ZK:$1K/1H-16+)N+6]`ZC9?
  1900. M:JYFV*/J"*1N/IO=VC4Z[_;P90`2J:;ON;9Y7>VD6*NW`E.J1*\:(P%P.,BU
  1901. M@^DT$^LMZ4`F'JF1KH&XC^L*$)^"=KH;!'_"`[97/A[YPP:8'_B2&0(=R
  1902. M!^9E8TDZ+**.79B0M)TI*F(AV\$TONX!6RIT(#=2QMRW&31<_4'_2R>VJ9#K
  1903. MMQ!LS;8]*D,GP/9]!Q,A,S]R"E,-('R)@`8D<`[L.5T'T:[N\-\*3UKEX:G+
  1904. M'KL!KR':'<"U:A]+I<)%IPZ(SM#=%$S;+])K@WC">F_V!AHJO[42(-A7P+[D
  1905. M7H18``J<S>O_T)`1G\+IGI,!_2@9WR=,'=@&(6BGE?@P?MZKXMKMI7MO;]W*
  1906. M:?FJ^DWF:+^J!Z!B;K9'*3R'[-&+$[HGJF0T?)PZ"7R'F9/]`;NSBZ1:QH*U
  1907. M3X8CQF_\OX+=O+H?.#XZ`HE[M>D1&V9"<NG2>5P@?YELV1<EB/8#].FNI(UI
  1908. M..<F6Q4A7Q=C\K1*JX[``3$A7*Q\0?A*C0L9^#O=SA=@@B.67TBF.."XQ!B<
  1909. M(C>?:1@OG:N^(K$J.0H1<6'=1]4J=:W6IK60U7?+7\L@9="8R62CB`!*LK(H
  1910. M;I%!,@S$1H8P=64&-N_T,A,J'#]G]N"(Y0>F9L][SOFZ686'PAFT1#:<U/@L
  1911. MV`8:+0AC/CX?D0'&U@@^L;K(.[O\X10KZ?\"<PT^_4$N_",VO%6N[9`HIA3&
  1912. MS7CIKG9]!1K#&`%#PCH<QN!#-KI"*;Z9.P(`,\^V(-H]C>F,JX#7?J"4P@VH
  1913. MW5V\8]_!^;P&)8P7G2>'BHSIJE3A.8A;A.Y-R!U,OTB=R6J($1$7PMM"XS1R
  1914. M`S']BDRFF#.AW[L8<$`@@M8):0FZY:T3"P`X->&D'.HJN'L^95NR*K)0=ZPP
  1915. M_,;*%\0L1UPWR)_?CF3PZBT(J)>02E8AQF;D?"G=AJ/*0Z"1@[7!&8(.6_B*
  1916. M.K,@@EGF@G&=0_`&,G!`'P5E!W4\1_V5R,<Y;"0'&K)X`!,.A0(P?!&1#A]M
  1917. M&2E$0*J-'%++/9X'L5YGR"3)N@4@3\&_?J[.L%/\34JWXVN"RF5P=#B7</!N
  1918. MU<%;J2'VSMJ0NL$0F[NLDNNF\H`$95T,@US<'H`(@F9@9`;W#:2MAQL9:,8-
  1919. M,+G:[YJN+DDN_/T.P%[Q37C04@?))0CR^RP;.JQ]#,5VE]4I5-?-&7/3)3$W
  1920. M#)IS&)'40[V-O+;)(M',82"3&?_3&3Q[%&AHY;)0"OQM>E#/;D2@+DK'M(ZH
  1921. M$(GIN@<C&>`E,@S/O*C\\"@,9[K!Y2U29[>VA63(0P/=\0U`5V1P'__`>2=F
  1922. M^Y`6#J;A^Z5M9@;T(7L8*%Q?1L3-M\>V2!E"248[8*Y"1UZD_Y%)W.XWAVVX
  1923. M"X6K:O`<^'ULF5R:%K.2N+'YYSUZHW53]1FY;8!%`FR8B_G'[U?:&1FX"[G:
  1924. MRBL#TPG^AB(2(-K"Z9/9:]AD!HQ?_=CM;0MME^,E*"O)7Q[%T$.H%&@C%$K[
  1925. M'J<LH-I)W-JSD!%'LY]%'!HBFS%VXH/N`J:Z.A4&I*KYMRGMCX[7-K4!*T>$
  1926. M@[W0O,D7O#`.(E.(K$N2I!@G+W7%)%E<.PAM,6W`AU9V4U=>;0)^8K!ZJPB;
  1927. M]VFOA&U+J\S^"/[&CB,GM#Z9'\R7($.Q:K(YZ'FDG2]'(&8"21)J$`9[%..;
  1928. M,L5J-^;V"'#R,M%&N8NDK*GG+=2"',9GD1D$8B=6@:C#N;7;S>QG<HHZ6HZ>
  1929. M(`9U!F@:2J'F#LJ8;]XX&9Q:A`3/@!O$JX,D>X!L)&S@HX<[3P"&)X_\<$"B
  1930. MQ\HK:&EO>'.DL*/K60TT$0;R6`\+&BK>G?#9(G/;L'+$$W>_-NL`?`:&&])#
  1931. MST$O6@[K<F"K(Z"KO:+G\>$T?FDA])0>M,9P<CH33P`+0P*/5]^1DT&*84Q&
  1932. MU*2A;6&[M2:W1?*I(8\(5LG:`+0@VZ"JTTIU^DK):N=A:AA$)RA$10CL90AV
  1933. M,=N8SZJP=A8'U.#R&WSSG%#%X*JX`<D,UK(',@7Y"BJ"!D!JX5`:KQ0^<(KY
  1934. MIC:S-UL[2>$IO!)==Y$S3[C(JY_)2G+.C2?S.'C!"S!:AE`;7H6#XU[Q4;@+
  1935. MPABY8-4%)?2P9E"K)&Q[;3J3.,=<TDH=21C"P-8F:7NFML*2G:<Z!G653X^\
  1936. M<!_F=17M)\=*2I.CLA=JW%BIV\+'I3F,DEX5PH!?BC+OE]%<+E-Y3:RG:KF0
  1937. M8%#61@?/]#42%OFP/!JSV.%I<#N38!A#R64Q\,9;<8F:^>IA$MV&]<H%"0$R
  1938. M;;<SG:E`L/`JI+Z=*/'4VL]Q#DO?<6#]A9-&Q.3,$980[U?QH84"S/N!N?-^
  1939. M:0Y,\TV(QND.CA@'TG"-/\LFO,#X5<;,'1BS0$`*KAS.)Q,A3A]%9WH2R\]+
  1940. M9V5J(,*R!JMSPD><33.C9"`W_IP+KJ'X#)Y:;$3,XTXBN@>1>6`;5)N1H?I+
  1941. M'6`4Q-MB>:9PS;9;W'@0>Z%=Y0=*U=E=F]GYXQYHQBD4D@@*R\BV+N9;$U:?
  1942. M!L>FX&H*;W5M:<`!B1#/897F`\^$`XKVP!L0;\EOT+Q7R!29+,69&=R`5T2K
  1943. MNN*BS&\@&"-^>J$<WA42:HZ-HZPSK(2Z)S"?,=S#@M!;\>IJ9F%LF=^"W$%C
  1944. M"*<648$;_)P7PD^4&:1[=:0-NBP#EN3#!VT("1'O:(RJ.9B&]L6[V25U4^BQ
  1945. MM.0>9(.V<=1(%#*"B=Y^2NAN#&S'OS"/2I2Q01(H9)85BIKS^QRR'?E%+NL9
  1946. M')!V*K_AV=()SG+K&!K(8IV!K)8'_[TDL6D8O4J<@(,.PIFREQFHPM'B\<_0
  1947. MPE0;<SD)H$L`H$4FKR`HEV1#GB;BFM!9OO(R64IYP!C;&S$QR?9_RB'+M,@W
  1948. M)PL53Y'";#O4I:0I]#NGQLXMYMC)$4:Y&_!2A"$OH$<R<7QN"8>$*0;#VHS1
  1949. M+7,+:U>]7ZV+60LUSPG^1KPR#Q\'HC2TA#6DPT6%11P:7".2`="EC?J\8B]V
  1950. MJ`2:RCE%U8OY5IG5\WNL4(>'"**-V._<1U>`.7AB\'`L#LG7UW(&=8UHUQW'
  1951. M2,0!O['_VG64@BBM;5Z4J5W8VWV&RY(P,29<+@^E8Y]<]X&&-'4)H0_WD=BM
  1952. M(;LQX#`=:-Y[SC')>2-ZXHH1M\!4C@NWE:0MW&26`/Z&-)&WH)JN%.G>(@<;
  1953. M8`V1K[>`<U)WU>^Y&PG3HS;(&2HMW\`&U)ZQD3ZO%E>55\ANSL_K-PCU5;2T
  1954. M-`?Q3="HOAWN8,ER'--:+/T&@DO(JR-Q!*<SVZ-S01&['?#%S5=L?F-]@YG!
  1955. M1S?$X7#;:X\$*!:71<3OP*\P'\A*"BO4_-S;?%\HH5JL@D$E:*;.:1S8)J=E
  1956. MS3`^6\U25.8J#UQ34]8Y=#H9ZIX_[L+U<"\S=UB#X3FG]@=<H`OM+]'$>*A;
  1957. M*RA"PL5"VEI(ZAEZVOE'#\+0-[4V&UECRAKQELH9L`U&:(80K`I[B&^[*@E]
  1958. M,3C@A>#1!(1T)O_X3H8\F8']R\`8L5ZN`:08"V_RET_J'I30S0&YBL*^S^UD
  1959. MZKM0A[_3]1GKOVZW[N3VH:#0J)>DPN"(?2.-RX_@XZ:54R/B%`P-?%98'+VZ
  1960. MV3-$35^=`44&/_+\(U\D;#=T/^?7U7-!XY19W:F2TJ+_/`"!S1KO*PJN`0"*
  1961. MB`H0&PB:2!V+;5]'%<#.Z!`1(AVI6E)V)P$IA1+UAFFI8`Y>`#(=2-4J!HW]
  1962. M?"1%DL$NB7?.#/)G;6HF@@A&!,?Z'HMNR?-]P?7^T!Z*AZ",0J4'\./Z*IR!
  1963. MB="JH#P3$.C"5OLNHMC:\JF2I90&Z.#B&!DTSMKTU?;YN5,7M@EKNM9X26P?
  1964. M05/ZUA&FA;UI(G.JA&8+EEH<@0(UXB'&QR6$C^<S`3%@\\M`*]$YK580:73Y
  1965. M0&=*=!"(7<"C8F.LZOZ,XX5O]VF'%PK'^G8W<P<KPL^Q\/(97S)ARA=#KU0U
  1966. MG<T=:,R@T4P((M"H$_2Y9X9I!BF,PI!(SPEU32#&PLJ#0^;X!RO@G-35=1TE
  1967. MQ,SJ@9DALLK&P>N\$/BDFKSRM>)FITG$[=I<"BO/?(.F6LQQ!NK)<P`B9`'3
  1968. M\#GG+^4X5AB#63U6&LV2LB+O_F6Z*W4"O\(;H=J==R'D%S<?*U$:$*U8M;#;
  1969. M[06M?&_=1U-#R<>(RI'&<;['7?M)-L+06.5[[?>6CL,$`[3W!0!O+MN[%%X+
  1970. MF@Q-B6]N2<$)J&W//6?UZ\6!R9(.HK2^^0"-*T=AD.!B/R&XB^U*Z.*ZMK"4
  1971. M*9%D$2L"V@@S,];PM5><!F.3_%X'M%%Q>8Q<[QO:!I0];8:0/6L&M4UW$U<D
  1972. M<OUQ#UOCF@?9<748<33.R!*V:^7VT@BF/]U,O'Q!<Z4Q+/VR3[(AG`27D0(G
  1973. M724_$V/T@6F);MN0[`&(T%,?C8+&_+=A%\0&$1M1H1B808*X31GN3Y%$V]89
  1974. M,,>=L<-03H)@R+/_G'&[M`MU35@M[YLJQ;EX;C^O;J]=19J>=BKTCO0I(=ME
  1975. M(*R0$A)-WN`!_!S*%:4?(N$?PP8(0KHG4Y]V*[-LQ&'&!HQ?FFK7\7V#]T.8
  1976. MS'[>NG%OC?E^EK3J::`O'!1*-HB@!6"(PMC">+=B@%&N>Q/R,%"3'*Q`VK8(
  1977. M.(-4G3D"#R6SB,)L_*%];2CL]W*^UXE>&%1]S@YSJOKAZJWM)\`,AO*G6&!U
  1978. MM5^<J14:QG`$6(_*;`/F+9P&'`LT'5$#`$%2_/LMF!F36KC,GK%"4JM5#66X
  1979. M>THFC-`XKVR-W$%!DG+:,5?6X8A""X4!],S]#L"8-EJI[>VQBV"_[;#.E%*"
  1980. M:&=GM5T@`A8`37RWA0/Y:A@8'BWU^2V:?1/<WD!8L"`(#VTCUV3"0IWI9B!H
  1981. M+JBB#*3@*=+(A.DGF6I/RH2N=47C\M]J@B6',32?J@&'4G*!0<13&1F_/-8L
  1982. M;@#@[+X*Y<'U?"$K''^I*$R%5[?:\=$]3O>6T)=VFV.$O[PU/YS-9K-`<X2)
  1983. MD([%(N1^H:AB#&@:Y1BG,@M9EV,*-24A%H>%04EI,='!L@>`&D);6B.7L!WA
  1984. MUP&"2$#ZS\MFX1A>)8>M\"ZD&6W1<2XHW5@_O29L`YP:(PPV>'Y@:YYH'.+6
  1985. MJF2;#MJ4($CM1@9<X'*W,>`1<FQJQ_AE$>[!+FE1`A!9A)V(-M+;Z?8>-X*S
  1986. MQ^LW"/<I3\;GP1902+SBL!=U8GA]CA+PS>JG:JWRSC-*>SY\)9AY@$<PIXV<
  1987. MCDIVR=8U+70MT0G;G`%P["0O&PXXZ,Q;*L_'-J2=N-ZA<((-KO+!7@7M*_5\
  1988. M)1A2R_5`W)JT>_`7XK*",-IG4/HT:HNO0DL$=AP4R9>3@):IQ4N=\<UX0\F0
  1989. M`G>7*GZ,+K/S302_DX@T-_UX`LVO9``P!A024\#S(1P$E"@C]!6V?,SMD1'A
  1990. MS<$&30*4)W9$Q/:&!^MN*.%Y=X&XCKO4.J,)OG?;U`+C4`XW7^1+W0M)=)P!
  1991. MA82@6='A<0[8;`A2ZF$V1*_UD7-(!Q#\G6(S6`*,]IEB)M&K$^+4`H%5'ULS
  1992. MJSF0N"I?^EW%)N-P-^C-=Q^R314!T5XHY9!V'EZ71\G#L,[\7D\&;("X4='A
  1993. MT6TYB3<O2BG%,`,^&$L&+)MF8!P\>^NU@_>D#J3;PC*-O):PI8&UQ;<RK0"U
  1994. M?*V'/Z]DU3O.9+D!?GG=-S,2$3L@&IV!GI-Q]0L#I(`&S1CA8!SXWAZHO:&A
  1995. M.HN!>=!JQ3+4,>SS`;6IVRD4@BCI@N1ZN<)Q:I4&<0"A`B>&D[Z=(VN3_[6!
  1996. MR4\55;@=309U@#$8G@$JJE$O'+ZZ@;4()DBL7=X7;6]\FQVX#5)":@XK;HDQ
  1997. M$<*9*[A)7!)_KEMTF3D9P`'EQ0VH!X2*0U`/1T!(*QS0LE!\W'S$VP:=>0:'
  1998. MZ6'=1Y>+YZ7(0D(G.=]+)X;-2C;`)'DWK15W!J"Y?0`;4HYHHF)I0C)0SLB$
  1999. ML.,8.NE!&5:XR-C_>8;0AC_"A[)*WHRBU@<0F<'PLN>%]/+,EB.T[@E3WD>D
  2000. M!QQNULURZ]>&T#>B0\()^.`Q=J>)EIO!B*Z2;M.IW0"DA!*(&*]R_=9`R;RE
  2001. MUVR7[^7K>0:Z&)SD[(&L$AT4B:6!(]MG-@RDRJ(P:DU+0\\809:*C(+*=!W-
  2002. SHAR_EOF
  2003. true || echo 'restore of ImageMagick/images/swan.miff.Z failed'
  2004. fi
  2005. echo 'End of ImageMagick part 5'
  2006. echo 'File ImageMagick/images/swan.miff.Z is continued in part 6'
  2007. echo 6 > _shar_seq_.tmp
  2008. exit 0
  2009. --
  2010. Dan Heller
  2011. O'Reilly && Associates       Z-Code Software    Comp-sources-x:
  2012. Senior Writer                President          comp-sources-x@uunet.uu.net
  2013. argv@ora.com                 argv@zipcode.com
  2014.