[elpa] 01/04: [gnugo] Publicize ‘gnugo-undo-reaction’.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit b31a9880f534f84ca62d0e4bbe6ab2256abecabc
Author: Thien-Thi Nguyen 
Date:   Fri May 2 09:00:16 2014 +0200

[gnugo] Publicize ‘gnugo-undo-reaction’.

Omission from 2014-05-01, "Make climb-to-root
"GNU Go to play" reaction customizable".

* packages/gnugo/gnugo.el [Commentary]: ...here.
---
 packages/gnugo/gnugo.el |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 7e65915..837c360 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -66,6 +66,7 @@
 ;;`gnugo-animation-string'
 ;;`gnugo-mode-line'
 ;;`gnugo-X-face' `gnugo-O-face' `gnugo-grid-face'
+;;`gnugo-undo-reaction'
 ;;`gnugo-xpms'
 ;;   normal hooks:`gnugo-board-mode-hook'
 ;;`gnugo-frolic-mode-hook'



[elpa] 04/04: [gnugo int] Decruft: Drop :local-xpms support.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit 6f353745de76e9572bad1dad333938e140fcfe1d
Author: Thien-Thi Nguyen 
Date:   Fri May 2 11:26:13 2014 +0200

[gnugo int] Decruft: Drop :local-xpms support.

* packages/gnugo/gnugo.el (gnugo-describe-internal-properties): ...here.
(gnugo-toggle-image-display): Don't consult :local-xpms.
---
 packages/gnugo/gnugo.el |9 -
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 61ef95f..7020241 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -321,7 +321,7 @@ Handle the big, slow-to-render, and/or uninteresting ones 
specially."
   using (hash-values val)
   do (push (cons key
  (case key
-   ((:xpms :local-xpms)
+   ((:xpms)
 (format "hash: %X (%d images)"
 (sxhash val)
 (length val)))
@@ -522,10 +522,9 @@ when you are sure the command cannot fail."
 (defun gnugo-toggle-image-display ()
   (unless (display-images-p)
 (user-error "Display does not support images, sorry"))
-  (let ((fresh (or (gnguo-get :local-xpms)
-   (if (functionp gnugo-xpms)
-   (funcall gnugo-xpms (gnugo-get :SZ))
- gnugo-xpms
+  (let ((fresh (if (functionp gnugo-xpms)
+   (funcall gnugo-xpms (gnugo-get :SZ))
+ gnugo-xpms)))
 (unless fresh
   (user-error "Sorry, `gnugo-xpms' unset"))
 (unless (eq fresh (gnugo-get :xpms))



[elpa] 02/04: [gnugo] Make ‘gnugo-xpms’ a normal var; drop it as feature.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit d0d5b932dde96dc1309dbc15c061e052dc752ceb
Author: Thien-Thi Nguyen 
Date:   Fri May 2 10:40:42 2014 +0200

[gnugo] Make ‘gnugo-xpms’ a normal var; drop it as feature.

* packages/gnugo/gnugo.el (gnugo-xpms): Move earlier
in file, to "uninquisitive programmer" section;
remove ‘eval-when-compile’ wrap; add docstring.
(gnugo-toggle-image-display): Don't ‘(require 'gnugo-xmps)’;
don't gate ‘gnugo-xpms’ access w/ ‘boundp’.
---
 packages/gnugo/HACKING  |2 +-
 packages/gnugo/NEWS |1 +
 packages/gnugo/gnugo.el |   30 +++---
 3 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/packages/gnugo/HACKING b/packages/gnugo/HACKING
index 2256bbe..cad3cc8 100644
--- a/packages/gnugo/HACKING
+++ b/packages/gnugo/HACKING
@@ -10,7 +10,7 @@ This file is both a guide for newcomers and a todo list for 
oldstayers.
 * ideas / wishlist
 *** wrap GTP ‘loadsgf’ completely
 *** revamp image support
-* zonk ‘require’
+* DONE zonk ‘require’
 * define simple API
 *** talk GTP over the network
 (?) pending [[wrap GTP ‘loadsgf’ completely]]
diff --git a/packages/gnugo/NEWS b/packages/gnugo/NEWS
index 1650be8..1f48fdd 100644
--- a/packages/gnugo/NEWS
+++ b/packages/gnugo/NEWS
@@ -18,6 +18,7 @@ NB: "RCS: X..Y " means that the particular release includes
 - proper support for ‘-l FILENAME’ / ‘--infile FILENAME’
   - dropped support for ‘gnugo-program’ of form "PROGRAM OPTIONS..."
   - dropped command: ‘t’ (gnugo-toggle-dead-group)
+  - ‘gnugo-xpms’ now a normal var, and not a feature
   - PASS for SZ <= 19 normalized to "" on read, written as ""
   - ‘=’ also displays move number of the stone (if any) at that position
   - ‘C-u F’ adds the (abbreviated) blurb as a comment to the last node
diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 837c360..614d0ed 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -176,6 +176,26 @@ any value other than `zombie', is taken as `one-shot'.  
Note that
 making GNU Go play will probably result in the recently-liberated
 board position becoming re-occupied.")
 
+(defvar gnugo-xpms nil
+  "List of 46 ((TYPE . LOCATION) . XPM-IMAGE) forms.
+XPM-IMAGE is an image as returned by `create-image' with
+inline data (i.e., property :data with string value).
+
+TYPE is a symbol, one of:
+ hoshi -- unoccupied position with dot
+ empty -- unoccupied position sans dot
+ bpmoku, bmoku -- black stone with and sans highlight point
+ wpmoku, wmoku -- white stone with and sans highlight point
+
+LOCATION is an integer encoding edge, corner, or center:
+ 1 2 3
+ 4 5 6
+ 7 8 9
+For instance, 4 means \"left edge\", 9 means \"bottom right\".
+
+There is only one location for hoshi: center.  The other five
+types each have all possible locations.  So (+ 1 (* 9 5)) => 46.")
+
 ;;;---
 ;;; Variables for the inquisitive programmer
 
@@ -188,9 +208,6 @@ board position becoming re-occupied.")
 
 (defvar gnugo-state nil); hint: C-c C-p
 
-(eval-when-compile
-  (defvar gnugo-xpms nil))
-
 (defvar gnugo-frolic-parent-buffer nil)
 (defvar gnugo-frolic-origin nil)
 
@@ -501,10 +518,9 @@ when you are sure the command cannot fail."
 (defun gnugo-toggle-image-display ()
   (unless (display-images-p)
 (user-error "Display does not support images, sorry"))
-  (require 'gnugo-xpms)
-  (unless (and (boundp 'gnugo-xpms) gnugo-xpms)
-(user-error "Could not load `gnugo-xpms', sorry"))
-  (let ((fresh (or (gnugo-get :local-xpms) gnugo-xpms)))
+  (let ((fresh (or (gnugo-get :local-xpms)
+   gnugo-xpms
+   (user-error "Sorry, `gnugo-xpms' unset"
 (unless (eq fresh (gnugo-get :xpms))
   (gnugo-put :xpms fresh)
   (gnugo--forget :all-yy)))



[elpa] branch master updated (2586cba -> 6f35374)

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a change to branch master
in repository elpa.

  from  2586cba   [gnugo int] Decruft: Presume ‘display-images-p’.
   new  b31a988   [gnugo] Publicize ‘gnugo-undo-reaction’.
   new  d0d5b93   [gnugo] Make ‘gnugo-xpms’ a normal var; drop it as 
feature.
   new  5a8d815   [gnugo] Handle function for ‘gnugo-xpms’ value.
   new  6f35374   [gnugo int] Decruft: Drop :local-xpms support.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/gnugo/HACKING  |2 +-
 packages/gnugo/NEWS |3 +++
 packages/gnugo/gnugo.el |   39 +++
 3 files changed, 35 insertions(+), 9 deletions(-)



[elpa] 03/04: [gnugo] Handle function for ‘gnugo-xpms’ value.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit 5a8d8158da67b90e0d5ad0c2a837b873a728bfd9
Author: Thien-Thi Nguyen 
Date:   Fri May 2 11:23:29 2014 +0200

[gnugo] Handle function for ‘gnugo-xpms’ value.

* packages/gnugo/gnugo.el (gnugo-xpms): Update docstring.
(gnugo-toggle-image-display): If ‘gnugo-xpms’
is a function, call it with the board size and
take its rv as the set of XPM images to use.
---
 packages/gnugo/NEWS |4 +++-
 packages/gnugo/gnugo.el |   15 +++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/packages/gnugo/NEWS b/packages/gnugo/NEWS
index 1f48fdd..b873710 100644
--- a/packages/gnugo/NEWS
+++ b/packages/gnugo/NEWS
@@ -18,7 +18,9 @@ NB: "RCS: X..Y " means that the particular release includes
 - proper support for ‘-l FILENAME’ / ‘--infile FILENAME’
   - dropped support for ‘gnugo-program’ of form "PROGRAM OPTIONS..."
   - dropped command: ‘t’ (gnugo-toggle-dead-group)
-  - ‘gnugo-xpms’ now a normal var, and not a feature
+  - changes to ‘gnugo-xpms’
+- now a normal var, and not a feature
+- value can be a function to compute XPMs
   - PASS for SZ <= 19 normalized to "" on read, written as ""
   - ‘=’ also displays move number of the stone (if any) at that position
   - ‘C-u F’ adds the (abbreviated) blurb as a comment to the last node
diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 614d0ed..61ef95f 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -194,7 +194,11 @@ LOCATION is an integer encoding edge, corner, or center:
 For instance, 4 means \"left edge\", 9 means \"bottom right\".
 
 There is only one location for hoshi: center.  The other five
-types each have all possible locations.  So (+ 1 (* 9 5)) => 46.")
+types each have all possible locations.  So (+ 1 (* 9 5)) => 46.
+
+The value can also be a function (satisfying `functionp') that
+takes one arg, the size of the board, and returns the appropriate
+list of forms.")
 
 ;;;---
 ;;; Variables for the inquisitive programmer
@@ -518,9 +522,12 @@ when you are sure the command cannot fail."
 (defun gnugo-toggle-image-display ()
   (unless (display-images-p)
 (user-error "Display does not support images, sorry"))
-  (let ((fresh (or (gnugo-get :local-xpms)
-   gnugo-xpms
-   (user-error "Sorry, `gnugo-xpms' unset"
+  (let ((fresh (or (gnguo-get :local-xpms)
+   (if (functionp gnugo-xpms)
+   (funcall gnugo-xpms (gnugo-get :SZ))
+ gnugo-xpms
+(unless fresh
+  (user-error "Sorry, `gnugo-xpms' unset"))
 (unless (eq fresh (gnugo-get :xpms))
   (gnugo-put :xpms fresh)
   (gnugo--forget :all-yy)))



[elpa] branch master updated (6f35374 -> 2b7b460)

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a change to branch master
in repository elpa.

  from  6f35374   [gnugo int] Decruft: Drop :local-xpms support.
   new  2b7b460   [gnugo int] Commentary munging; nfc.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/gnugo/gnugo.el |8 +---
 1 files changed, 5 insertions(+), 3 deletions(-)



[elpa] 01/01: [gnugo int] Commentary munging; nfc.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit 2b7b4601f0fc12c4d04309122721c33eae756316
Author: Thien-Thi Nguyen 
Date:   Fri May 2 14:16:27 2014 +0200

[gnugo int] Commentary munging; nfc.
---
 packages/gnugo/gnugo.el |8 +---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 7020241..348867f 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -74,9 +74,11 @@
 ;;`gnugo-post-move-hook'
 ;;   and the keymap:  `gnugo-board-mode-map'
 ;;
-;; The variable `gnugo-xpms' is a special case.  To set it you need to load
-;; gnugo-xpms.el (http://www.emacswiki.org) or some other library w/ congruent
-;; interface.
+;;
+;; Meta-Meta-Playing (aka Hacking)
+;; ---
+;;
+;; 
 
 ;;; Code:
 



[elpa] 04/04: [gnugo frolic] Add command to navigate to end of branch.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit be1352f01eba817bcccea0a308075edddf492009
Author: Thien-Thi Nguyen 
Date:   Sat May 3 07:56:28 2014 +0200

[gnugo frolic] Add command to navigate to end of branch.

* packages/gnugo/gnugo.el (gnugo-frolic-tip-move): New command.
(gnugo-frolic-mode-map): Add binding for ‘t’.
---
 packages/gnugo/gnugo.el |   12 
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 990ee48..dab2c17 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -1248,6 +1248,17 @@ This fails if the monkey is on the current branch
   (interactive "p")
   (gnugo--vertical n 1))
 
+(defun gnugo-frolic-tip-move ()
+  "Move to the tip of the current branch."
+  (interactive)
+  (gnugo--awakened ((omit line bidx monkey width)
+require-valid-branch)
+(goto-char (point-max))
+(let ((mnum (gnugo--tree-mnum tree))
+  (node (car (aref ends a
+  (re-search-backward (format "^%3d" (gethash node mnum)))
+  (gnugo--move-to-bcol a
+
 (defun gnugo-boss-is-near ()
   "Do `bury-buffer' until the current one is not a GNU Board."
   (interactive)
@@ -2703,6 +2714,7 @@ See `gnugo-board-mode' for a full list of commands."
   ("\C-f"   . gnugo-frolic-forward-branch)
   ("\C-p"   . gnugo-frolic-previous-move)
   ("\C-n"   . gnugo-frolic-next-move)
+  ("t"  . gnugo-frolic-tip-move)
   ("j"  . gnugo-frolic-exchange-left)
   ("J"  . gnugo-frolic-rotate-left)
   ("k"  . gnugo-frolic-exchange-right)



[elpa] branch master updated (2b7b460 -> be1352f)

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a change to branch master
in repository elpa.

  from  2b7b460   [gnugo int] Commentary munging; nfc.
   new  f5185fa   [gnugo int] Mention ‘gnugo-frolic-mode-map’ in 
Commentary; nfc.
   new  887421c   [gnugo] Replace ‘gnugo-toggle-image-display-command’ w/ 
‘gnugo-image-display-mode’.
   new  9df8013   [gnugo] Replace ‘gnugo-toggle-grid’ w/ ‘gnugo-grid-mode’.
   new  be1352f   [gnugo frolic] Add command to navigate to end of branch.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


Summary of changes:
 packages/gnugo/NEWS |2 +
 packages/gnugo/gnugo.el |   51 +-
 2 files changed, 38 insertions(+), 15 deletions(-)



[elpa] 02/04: [gnugo] Replace ‘gnugo-toggle-image-display-command’ w/ ‘gnugo-image-display-mode’.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit 887421cd6084807b39703db731a52c613eba4e27
Author: Thien-Thi Nguyen 
Date:   Fri May 2 15:50:03 2014 +0200

[gnugo] Replace ‘gnugo-toggle-image-display-command’ w/ 
‘gnugo-image-display-mode’.

* packages/gnugo/gnugo.el (gnugo-image-display-mode): New command.
(gnugo-toggle-image-display-command): Delete command.
(gnugo-board-mode-map): Update binding for ‘i’.
---
 packages/gnugo/NEWS |1 +
 packages/gnugo/gnugo.el |   17 +++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/packages/gnugo/NEWS b/packages/gnugo/NEWS
index b873710..7153073 100644
--- a/packages/gnugo/NEWS
+++ b/packages/gnugo/NEWS
@@ -21,6 +21,7 @@ NB: "RCS: X..Y " means that the particular release includes
   - changes to ‘gnugo-xpms’
 - now a normal var, and not a feature
 - value can be a function to compute XPMs
+  - ‘gnugo-image-display-mode’ replaces ‘gnugo-toggle-image-display-command’
   - PASS for SZ <= 19 normalized to "" on read, written as ""
   - ‘=’ also displays move number of the stone (if any) at that position
   - ‘C-u F’ adds the (abbreviated) blurb as a comment to the last node
diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index ffa2ebb..e95c91d 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -2331,11 +2331,16 @@ which placed the stone at point."
(cond ((numberp count) count)
  ((consp count) (car count)
 
-(defun gnugo-toggle-image-display-command () ; ugh
-  "Toggle use of images to display the board, then refresh."
-  (interactive)
-  (gnugo-toggle-image-display)
-  (save-excursion (gnugo-refresh)))
+(define-minor-mode gnugo-image-display-mode
+  "If enabled, display the board using images.
+See function `display-images-p' and variable `gnugo-xpms'."
+  :variable
+  ((gnugo-get :display-using-images)
+   .
+   (lambda (bool)
+ (unless (eq bool (gnugo-get :display-using-images))
+   (gnugo-toggle-image-display)
+   (save-excursion (gnugo-refresh))
 
 (defsubst gnugo--node-with-played-stone (pos &optional noerror)
   (car (gnugo--mem-with-played-stone pos noerror)))
@@ -2728,7 +2733,7 @@ See `gnugo-board-mode' for a full list of commands."
   ("h". gnugo-move-history)
   ("L". gnugo-frolic-in-the-leaves)
   ("\C-c\C-l" . gnugo-frolic-in-the-leaves)
-  ("i". gnugo-toggle-image-display-command)
+  ("i". gnugo-image-display-mode)
   ("w". gnugo-worm-stones)
   ("W". gnugo-worm-data)
   ("d". gnugo-dragon-stones)



[elpa] 03/04: [gnugo] Replace ‘gnugo-toggle-grid’ w/ ‘gnugo-grid-mode’.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit 9df80139624da5c8a95ec14459afb9b62a052d59
Author: Thien-Thi Nguyen 
Date:   Fri May 2 15:56:29 2014 +0200

[gnugo] Replace ‘gnugo-toggle-grid’ w/ ‘gnugo-grid-mode’.

* packages/gnugo/gnugo.el (gnugo-grid-mode): New command.
(gnugo-toggle-grid): Delete command.
(gnugo-board-mode-map): Update binding for ‘g’.
---
 packages/gnugo/NEWS |1 +
 packages/gnugo/gnugo.el |   19 +++
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/packages/gnugo/NEWS b/packages/gnugo/NEWS
index 7153073..2db37f4 100644
--- a/packages/gnugo/NEWS
+++ b/packages/gnugo/NEWS
@@ -22,6 +22,7 @@ NB: "RCS: X..Y " means that the particular release includes
 - now a normal var, and not a feature
 - value can be a function to compute XPMs
   - ‘gnugo-image-display-mode’ replaces ‘gnugo-toggle-image-display-command’
+  - ‘gnugo-grid-mode’ replaces ‘gnugo-toggle-grid’
   - PASS for SZ <= 19 normalized to "" on read, written as ""
   - ‘=’ also displays move number of the stone (if any) at that position
   - ‘C-u F’ adds the (abbreviated) blurb as a comment to the last node
diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index e95c91d..990ee48 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -567,14 +567,17 @@ when you are sure the command cannot fail."
   '(1 . 1)))
 (gnugo-put :display-using-images new)))
 
-(defun gnugo-toggle-grid ()
-  "Turn the grid around the board on or off."
-  (interactive)
-  (funcall (if (memq :nogrid buffer-invisibility-spec)
-   'remove-from-invisibility-spec
- 'add-to-invisibility-spec)
+(define-minor-mode gnugo-grid-mode
+  "If enabled, display grid around the board."
+  :variable
+  ((not (memq :nogrid buffer-invisibility-spec))
+   .
+   (lambda (bool)
+ (funcall (if bool
+  'remove-from-invisibility-spec
+'add-to-invisibility-spec)
:nogrid)
-  (save-excursion (gnugo-refresh)))
+ (save-excursion (gnugo-refresh)
 
 (defun gnugo-propertize-board-buffer ()
   (erase-buffer)
@@ -2738,7 +2741,7 @@ See `gnugo-board-mode' for a full list of commands."
   ("W". gnugo-worm-data)
   ("d". gnugo-dragon-stones)
   ("D". gnugo-dragon-data)
-  ("g". gnugo-toggle-grid)
+  ("g". gnugo-grid-mode)
   ("!". gnugo-estimate-score)
   (":". gnugo-command)
   (";". gnugo-command)



[elpa] 01/04: [gnugo int] Mention ‘gnugo-frolic-mode-map’ in Commentary; nfc.

2014-05-02 Thread Thien-Thi Nguyen
ttn pushed a commit to branch master
in repository elpa.

commit f5185fad93cc5ea244172baceb2272a604331ea4
Author: Thien-Thi Nguyen 
Date:   Fri May 2 15:24:45 2014 +0200

[gnugo int] Mention ‘gnugo-frolic-mode-map’ in Commentary; nfc.
---
 packages/gnugo/gnugo.el |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 348867f..ffa2ebb 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -72,7 +72,8 @@
 ;;`gnugo-frolic-mode-hook'
 ;;`gnugo-start-game-hook'
 ;;`gnugo-post-move-hook'
-;;   and the keymap:  `gnugo-board-mode-map'
+;;   and the keymaps: `gnugo-board-mode-map'
+;;`gnugo-frolic-mode-map'
 ;;
 ;;
 ;; Meta-Meta-Playing (aka Hacking)