Command Reference

This section covers in detail all the commands offered by newRPL. Commands are grouped in the following categories.

Commands by Category

Operations with Angles 11 NEW

Command Short Description
→∡° Mark a number as an angle in degrees NEW
→∡r Mark a number as an angle in radians NEW
→∡g Mark a number as an angle in grads (gons) NEW
→∡d Mark a number as an angle in DMS (DD.MMSS) NEW
A→∡° Convert an angle to degrees NEW
A→∡r Convert an angle to radians NEW
A→∡g Convert an angle to grads (gons) NEW
A→∡d Convert an angle to DMS (DD.MMSS) NEW
→RECT Convert vector or complex to cartesian coordinates NEW
→POLAR Convert vector or complex to polar coordinates NEW
→SPHER Convert vector or complex to spherical coordinates NEW

Integer arithmetic and polynomials 50 13 NEW

Command Short Description
SETPREC Set the current system precision NEW
GETPREC Get the current system precision NEW
FLOOR Largest integer less than the input
CEIL Smallest integer larger than the input
IP Integer part of a number
FP Fractional part of a number
MODSTO Set the current system modulo for all MOD operations
MODRCL Get the current system modulo
POWMOD Power operator MOD the current system modulo
MOD Remainder of the integer division
SQ Square of the input
NEXTPRIME Smallest prime number larger than the input
! Factorial of a number
ISPRIME? Return true/false (1/0) if a number is prime or not
MANT Mantissa of a real number (M*10exp)
XPON Exponent of a number represented as (M*10exp)
SIGN Sign of a number
% Percentage of a number
%CH Percentage of change on a number
%T Get percentage of a total
GCD Greatest common divisor
LCM Least common multiple
IDIV2 Integer division, get quoteiant and remainder
IQUOT Quotient of the integer division
ADDTMOD Addition operator MOD the current system modulo
SUBTMOD Subtraction operator MOD the current system modulo
MULTMOD Multiplication operator MOD the current system modulo
PEVAL Evaluation of polynomial given as vector of coefficients
PCOEF Coefficients of monic polynomial with the given roots
IEGCD Extended euclidean algorithm
IABCUV Find integers u,v to solve a*u+b*v=c
PTCHEBYCHEFF Nth Tchebycheff polynomial NEW
PLEGENDRE Nth Legendre polynomial NEW
PHERMITE Nth Hermite polynomial as used by physics NEW
PTCHEBYCHEFF2 Nth Tchebycheff polynomial of the second kind NEW
PHERMITE2 Nth Hermite polynomial as used in probabilities NEW
DIV2 Polynomial euclidean division as symbolic
PDIV2 Polynomial euclidean division as coefficient vector
PDER Derivative of polynomial as coefficient vector NEW
PINT Integration of polynomials as coefficient vector NEW
PMUL Multiplication of polynomials as coefficient vectors NEW
PADD Addition of polynomials as coefficient vector NEW
PSUB Subtraction of polynomials as coefficient vector NEW
MIN Smallest of 2 objects
MAX Largest of 2 objects
RND Round a number to the given number of figures
TRNC Truncate a number to the given number of figures
DIGITS Extract digits from a real number NEW
PROOT All roots of a polynomial
PREVPRIME Largest prime smaller than the input

Bitwise operations 15 13 NEW

Command Short Description
STWS Store current word size in bits (0-63)
RCWS Recall the currnent word size in bits
BOR Bitwise OR operation NEW
BAND Bitwise AND operator NEW
BXOR Bitwise XOR operation NEW
BLSL Bitwise logical shift left NEW
BLSR Bitwise logical shift right NEW
BASR Bitwise arithmetic shift right NEW
BRL Bitwise rotate left NEW
BRR Bitwise rotate right NEW
BNOT Bitwise inversion of bits NEW
BADD Bitwise addition with overflow NEW
BSUB Bitwise subtraction with overflow NEW
BMUL Bitwise multiplication NEW
BDIV Bitwise integer division NEW

Bitmaps 1

Command Short Description
→SYSBITMAP

Comments 1 NEW

Command Short Description
STRIPCOMMENTS Remove all comments from a compiled program NEW

Operations with Complex Numbers 6

Command Short Description
RE Real part of a complex number
IM Imaginary part of a complex number
ARG Argument of a complex number
CONJ Conjugate of a complex number
C→R Split Complex into two Reals
R→C Make Complex from real and imaginary parts

Lists, Matrix and String commands 16 5 NEW

Command Short Description
PUT Replace an item in a composite
PUTI Replace an item and increase index
GET Extract an item from a composite
GETI Extract an item and increase index
HEAD Extract the first item in a composite
TAIL Removes the first item in a composite
OBJ→ Explode an object into its components
REPL Replace elements in a composite
POS Find the position of an element in a composite
NPOS Find object in a composite, starting from index N NEW
POSREV Find the position of an element, starting from the end NEW
NPOSREV Find the position from the end, starting at index N NEW
SUB Extract a group of elements from a composite
SIZE Number of elements in a composite
RHEAD Returns the last element from the composite NEW
RTAIL Removes the last element from the composite NEW

Variables and directories 31 10 NEW

Command Short Description
STO Store an object into a variable CHANGED
RCL Recall the contents of a variable CHANGED
STO+ Add to the content of a variable
STO- Subtract from the contents of a variable
STO* Multiply contents of a variable
STO/ Divide the content of a variable
SINV Invert the content of a variable
SNEG Change sign (negate) the content of a variable
SCONJ Complex conjugate the contents of a variable
INCR Add one to the content of a variable
DECR Subtract one from content of a variable
PURGE Delete a variable
CRDIR Create new directory
PGDIR Purge entire directory tree
UPDIR Change current directory to its parent
HOME Change current directory to HOME
PATH Get a path to the current directory
VARS List all visible variables in a directory
ALLVARS List all variables in a directory NEW
ORDER Sort variables in a directory
QUOTEID Add single quotes to a variable name NEW
UNQUOTEID Remove single quotes from a variable name NEW
HIDEVAR Hide a variable (make invisible) NEW
UNHIDEVAR Make a hidden variable visible NEW
CLVAR Purge all variables and empty subdirectories in current directory
LOCKVAR Make variable read-only NEW
UNLOCKVAR Make variable read/write NEW
RENAME Change the name of a variable NEW
TVARS List variables of a specific type CHANGED
TVARSE List all variables with extended type information NEW
SADD Apply command ADD to the stored contents of the variable NEW

Errors and error handlers 17 7 NEW

Command Short Description
EXITRPL Panic exit - abort the RPL engine. NEW
EVAL1NEXT Perform EVAL1 on the next object in a secondary and skips it NEW
RESUME End error handler and resume execution of main program NEW
DOERR Issue an error condition CHANGED
ERRN Recall the previous error code CHANGED
ERRM Recall the previous error message CHANGED
ERR0 Clear previous error code
HALT Halt the execution of RPL code
CONT Continue execution of a halted program
SST Single-step through a halted program, skip over subroutines
SST↓ Single-step through a halted program, goes into subroutines
KILL Terminate a halted program
SETBKPOINT Set a breakpoint on a halted program NEW
CLRBKPOINT Remove a breakpoint NEW
DBUG Halt the given program at the first instruction for debugging
BLAMEERR Issue an error condition, blame other program for it NEW
EXIT Early exit from the current program or loop NEW

Flow control 22 9 NEW

Command Short Description
IF Conditional IF … THEN … ELSE … END statement
THEN Conditional IF … THEN … ELSE … END statement
ELSE Conditional IF … THEN … ELSE … END statement
ENDIF Conditional IF … THEN … ELSE … END statement NEW
CASE Conditional CASE … THEN … END THEN … END END statement
THENCASE Conditional CASE … THEN … END THEN … END END statement NEW
ENDTHEN Conditional CASE … THEN … END THEN … END END statement NEW
ENDCASE Conditional CASE … THEN … END THEN … END END statement NEW
FOR Loop FOR … NEXT/STEP statement
START Loop START … NEXT/STEP statement
NEXT Loop FOR/START … NEXT statement
STEP Loop FOR/START … STEP statement
DO Loop DO … UNTIL … END statement
UNTIL Loop DO … UNTIL … END statement
ENDDO Loop DO … UNTIL … END statement NEW
WHILE Loop WHILE … REPEAT … END statement
REPEAT Loop WHILE … REPEAT … END statement
ENDWHILE Loop WHILE … REPEAT … END statement NEW
IFERR Conditional IFERR … THEN … ELSE … END statement
THENERR Conditional IFERR … THEN … ELSE … END statement NEW
ELSEERR Conditional IFERR … THEN … ELSE … END statement NEW
ENDERR Conditional IFERR … THEN … ELSE … END statement NEW

Menus, Flags and System Settings 34 16 NEW

Command Short Description
SETLOCALE Change the separator symbols NEW
SETNFMT Change the display format for numbers NEW
SF Set a flag
CF Clear a flag
FC? Test if a flag is clear
FS? Test if a flag is set
FC?C Test if a flag is clear, then clear it
FS?C Test if a flag is set, then clear it
TMENU Display the given menu on the active menu area CHANGED
TMENULST Display the given menu on the menu area the user used last NEW
TMENUOTHR Display the given menu on the menu are the user did not use last NEW
MENUSWAP Swap the contents of menu areas 1 and 2 NEW
MENUBK Display the previous menu on the active menu area NEW
MENUBKLST Display the previous menu on the area the user used last NEW
MENUBKOTHR Display the previous menu on the area the user did not use last NEW
RCLMENU Recall the active menu CHANGED
RCLMENULST Recall the menu the user used last NEW
RCLMENUOTHR Recall the menu the user did not use last NEW
DEG Set the angle mode flags to degrees
GRAD Set the angle mode flags to grads (gons)
RAD Set the angle mode flags to radians
DMS Set the angle mode to DMS (as DD.MMSS)
ASNKEY Assign a custom definition to a key NEW
DELKEY Remove a custom key definition NEW
STOKEYS Store and replace all custom key definitions CHANGED
RCLKEYS Recall the list of all custom key definitions CHANGED
TYPE Get type information from an object CHANGED
TYPEE Get extended type information from an object NEW
GETLOCALE Get the current separator symbols NEW
GETNFMT Recall the current display format for numbers NEW
RCLF Recall all system flags CHANGED
STOF Store and replace all system flags CHANGED
VTYPE Get type information on the contents of a variable CHANGED
VTYPEE Get extended type information on the contents of a variable NEW

Fonts 17 NEW

Command Short Description
FNTSTO Install a user font for system use NEW
FNTRCL Recall a system font NEW
FNTPG Purge a user-installed system font NEW
FNTSTK Recall name of current font for stack area NEW
FNT1STK Recall name of current font for stack level 1 NEW
FNTMENU Recall name of current font for menu area NEW
FNTCMDL Recall name of current font for command line area NEW
FNTSTAT Recall name of current font for status area NEW
FNTPLOT Recall name of current font for plot objects NEW
FNTFORM Recall name of current font for forms NEW
→FNTSTK Change current font for stack area NEW
→FNT1STK Change current font for stack level 1 NEW
→FNTMENU Change current font for menu area NEW
→FNTCMDL Change current font for command line area NEW
→FNTSTAT Change current font for status area NEW
→FNTPLOT Change current font for plot objects NEW
→FNTFORM Change current font for forms NEW

Local Variables 4 NEW

Command Short Description
LSTO Store to a new local variable NEW
LRCL Recall content of local variable NEW
HIDELOCALS Hide local variables from subroutines NEW
UNHIDELOCALS Unhide local variables from subroutines NEW

Arbitrary data containers 9 NEW

Command Short Description
MKBINDATA Create binary data container object NEW
BINPUTB Store bytes into binary data object NEW
BINGETB Extract binary data as list of bytes NEW
BINPUTW Store 32-bit words into binary data object NEW
BINGETW Extract data from a binary data object as a list of 32-bit words NEW
BINPUTOBJ Store an entire object into a binary data container NEW
BINGETOBJ Extract an entire object from a binary data container NEW
BINMOVB Copy binary data block into a binary data object NEW
BINMOVW Copy 32-bit words between binary data objects NEW

User Libraries 10 7 NEW

Command Short Description
CRLIB Create a library from current directory CHANGED
ATTACH Install a library CHANGED
DETACH Uninstall a library CHANGED
LIBMENU Show a menu within a library NEW
LIBMENUOTHR Show library menu in the other menu NEW
LIBMENULST Show library menu in the last used menu NEW
LIBSTO Store private library data NEW
LIBRCL Recall private library data NEW
LIBDEFRCL Recall private data with default value NEW
LIBCLEAR Purge all private data for a specific library NEW

Operations with Lists 15 2 NEW

Command Short Description
→LIST Assemble a list from its elements
LIST→ Split a list into its elements
DOLIST Do a procedure with elements of lists CHANGED
DOSUBS Do a procedure on a subset of a list CHANGED
MAP Do a procedure on each element of a list, recursively
MAPLIST→ Do a procedure on each element recursively, return individual elements NEW
STREAM Do a procedure on consecutive elements of a list
ΔLIST First differences on the elements of a list
ΣLIST Sum of all elements in a list CHANGED
ΠLIST Product of all elements in a list CHANGED
ADD Concatenate lists and/or elements CHANGED
SORT Sort elements in a list
REVLIST Reverse the order of elements in a list
ADDROT Add elements to a list, keep only the last N elements NEW
SEQ Assemble a list from results of sequential procedure

Operations with Matrices and vectors 66 1 NEW

Command Short Description
→ARRY Assemble an array from its elements
ARRY→ Split an array into its elements
→COL Split an array into column vectors
COL+ Instert a column into an array
COL- Remove a column from an array
COL→ Assemble a matrix from its columns
→DIAG Extract diagonal elements from a matrix
DIAG→ Create a matrix with the given diagonal elements
→ROW Split an array into its row vectors
ROW+ Insert a row into an array
ROW- Remove a row from an array
ROW→ Assemble an array from its rows
→V2 Assemble a vector from two values
→V3 Assemble a vector from three values
V→ Split a vector into its elements
AXL Convert a matrix to list and vice versa
BASIS Find vectors forming a basis of the subspace represented by the matrix
CHOLESKY Perform Cholesky decomposition on a matrix
CNRM Column norm (one norm) of a matrix
CON Assemble an array with given constant value
COND Column norm condition number of a matrix
CROSS Cross produce of vectors
CSWP Swap two columns in a matrix
DET Determinant of a matrix
DIAGMAP
DOT Internal product (dot product) of vectors
EGV
EGVL
GRAMSCHMIDT
HADAMARD Multiply corresponding elements in a matrix
HILBERT Assemble a Hilbert symbolic array
IBASIS Find a basis of the intersection of two vector spaces
IDN Assemble an identity matrix
IMAGE Find a basis of the image of a linear application
ISOM
JORDAN
KER Find a basis for the kernel of a linear application
LQ
LSQ
LU LU factorization of a matrix
MAD
MKISOM
PMINI Minimal polynomial of a matrix
QR
RANK Rank of a matrix
RANM Assemble a matrix with random numbers
RCI Multiply a row by a constant
RCIJ Multiply a row by a constant and add to other row
RDM Change dimensions of an array
REF Reduce matrix to echelon form (upper triangular form)
RNRM Row norm (infinity norm) of a matrix
RREF Fully reduce to row-reduced echelon form
RREFMOD
RSD Residual R=B-A*X' on a system A*X=B
RSWP Swap two rows in a matrix
SCHUR
SNRM
SRAD
SVD
SVL
SYLVESTER
TRACE Sum of the items in the diagonal of a matrix
TRAN Transpose a matrix
TRN Complex conjugate transpose of a matrix
VANDERMONDE
LDUP Decompose A into LDUP such that P*A=L*D-1*U NEW

Overloadable operators 26 3 NEW

Operator Short Description
Evaluation operators:
EVAL1 Evaluate one level NEW
EVAL Evaluate full depth
XEQ Execute NEW
→NUM Compute numeric result
Test operators:
== Equality test
Not equal test
< Less than test
Less than or equal test
> Greater than test
Greater than or equal test
CMP Comparison test (<0 if A<B, 0 if A==B, >0 if A>B) NEW
SAME Comparison test, true if objects are the same
ISTRUE True test NEW
Logical operators:
AND Logical AND
OR Logical OR
XOR Logical XOR
NOT Logical NOT
Mathematic operators:
+ Addition
- Subtraction
* Multiplication
/ Division
^ Power
XROOT Root
INV Inverse
NEG Negate/change sign
ABS Magnitude or absolute value

Scalable plots and graphics 34

Command Short Description
BEGINPLOT Initialize a new current plot object
EDITPLOT Set the current plot object to the given graphic
ENDPLOT Finish current plot object and leave it on the stack
STROKECOL Change the current stroke color
STROKETYPE Change current stroke type
FILLCOL Change the current fill color
FILLTYPE Change the current fill type
FILL Fill the last polygon
STROKE Draw the outline of the last polygon
FILLSTROKE Draw the outline and fill the last polygon
MOVETO Move current coordinates
LINETO Draw a line
CIRCLE Draw a circle
RECTANG Draw a rectangle
CTLNODE Add a control node to the current polygon
CURVE Draw a curve using all previous control points
BGROUP
EGROUP
DOGROUP
BASEPT
TRANSLATE
ROTATE
SCALE
CLEARTRANSF
SETFONT
TEXTHEIGHT
TEXTOUT
INITRENDER Set which library will be used as default renderer
DORENDER Render a graphics object using the current renderer
PANVIEW Shift the center of viewport to render graphics
ROTVIEW
SCLVIEW Set scale to render graphics
VIEWPORT
VIEWALL

SD Card 33 NEW

Command Short Description
SDRESET Reset the file system module NEW
SDSETPART Set active partition NEW
SDSTO Store a an object into a file NEW
SDRCL Recall an object from a file NEW
SDCHDIR Change current directory NEW
SDUPDIR Change to parent directory NEW
SDCRDIR Create a new directory NEW
SDPGDIR Delete an entire directory NEW
SDPURGE Delete a file NEW
SDOPENRD Open a file for read-only operation NEW
SDOPENWR Open a file for writing NEW
SDOPENAPP Open a file in append mode NEW
SDOPENMOD Open a file in modify mode NEW
SDCLOSE Close an open file NEW
SDREADTEXT Read text from an open file (UTF-8 encoding) NEW
SDWRITETEXT Write text to a file (UTF-8 encoding) NEW
SDREADLINE Read one line of text from a file NEW
SDSEEKSTA Move position to given offset from start of file NEW
SDSEEKEND Move position to given offset from end of file NEW
SDSEEKCUR Move position to given offset from the current point. NEW
SDTELL Get the current position NEW
SDFILESIZE Get the file size in bytes NEW
SDEOF Return true if last operation reached end of file NEW
SDOPENDIR Open a directory to scan entries NEW
SDNEXTFILE Get the next entry in a directory that is a file NEW
SDNEXTDIR Get the next entry in a directory that is a subdirectory NEW
SDNEXTENTRY Get the next entry in a directory NEW
SDMOVE Move or rename a file NEW
SDCOPY Copy a file NEW
SDPATH Get the path to current directory NEW
SDFREE Get the free space in the current volume NEW
SDARCHIVE Create a full calculator backup on a file NEW
SDRESTORE Restore from a backup stored in a file NEW

Stack manipulation 27 5 NEW

Command Short Description
CLEAR Remove all objects from the stack
DEPTH Get the current stack depth
DROP Remove an object from the stack
DROP2 Remove two objects form the stack
DROPN Remove N objects from the stack
DUP Duplicate an object on the stack
DUP2 Duplicate two objects on the stack
DUPDUP Duplicate the same object twice on the stack
DUPN Duplicate a group of N objects
NDUPN Replicate one object N times and return N
NIP Remove object at level 2 on the stack
OVER Duplicate object at level 2 on the stack
PICK Duplicate object at position N on the stack
PICK3 Duplicate object at level 3 on the stack
ROLL Move object at level N to level 1
ROLLD Move object from level 1 to level N
ROT Move object from level 3 to level 1
SWAP Exchange objects in levels 1 and 2
UNPICK Move object from level 1 to level N.
UNROT Move object from level 1 to level 3
IFT Evaluate objects on the stack conditionally
IFTE Evaluate objects on the stack conditionally
STKPUSH Push a snapshot of the current stack on the undo stack NEW
STKPOP Pop a stack snapshot from the undo stack NEW
STKDROP Drop a snapshot from the undo stack NEW
STKPICK Copy snapshot in level N to the current stack NEW
STKDEPTH Get the depth of the undo stack NEW

Statistics 2

Command Short Description
RDZ Initialize random number generator with a seed
RAND Generate a random real number

Operations with Strings 14 10 NEW

Command Short Description
→UTF8 Create a Utf8 string from a list of code points NEW
UTF8→ List all code points in a Utf8 string NEW
→STR Decompile any object (convert to string)
STR→ Compile a string into RPL objects
SREV Reverse the characters on a string
NTOKENS Number of tokens in a string NEW
NTHTOKEN Token at position N in a string NEW
NTHTOKENPOS Position of token N in a string NEW
TRIM Remove characters at end of string NEW
RTRIM Remove characters at start of string NEW
STRLEN Length of string in characters NEW
STRLENCP Length of string in Unicode code points NEW
→NFC Normalize a string to Unicode NFC NEW
SREPL Find and replace text in a string

Operations with Symbolic Expressions 4 1 NEW

Command Short Description
AUTOSIMPLIFY Reduce numeric subexpressions
RULEMATCH Find if an expression matches a rule pattern
RULEAPPLY Match and apply a rule to an expression
→Q Convert number to fraction NEW

Time, Alarms and System Commands 27 1 NEW

Command Short Description
→DATE Set current system date in MM.DDYYYY
DATE+ Add days to a date in MM.DDYYYY
→TIME Set current time as HH.MMSS
→HMS Convert decimal time to HH.MMSS
HMS→ Convert time in HH.MMSS to decimal
HMS+ Add time in HH.MMSS format
HMS- Subtract time in HH.MMSS format
TICKS Return system clock in microseconds CHANGED
TEVAL Perform EVAL and measure elapsed time CHANGED
DATE Current system date as MM.DDYYYY
DDAYS Number of days between dates in MM.DDYYYY
TIME Current time in HH.MMSS
TSTR
ACK Acknowledge oldest alarm (dismiss)
ACKALL Acknowledge (dismiss) all alarms
RCLALARM Recall specified alarm
STOALARM Create a new alarm
DELALARM Delete an existing alarm
FINDALARM Get first alarm due after the given time
VERSION Get newRPL version string
MEM Get available memory in bytes
BYTES Size of an object in bytes and CRC32 CHANGED
PEEK Low-level read memory address CHANGED
POKE Low level write to memory address CHANGED
NEWOB Make a new copy of the given object
GARBAGE Force a garbage collection NEW
OFF Turn calculator off programmatically

Transcendental functions 21 1 NEW

Command Short Description
SIN Compute the sine
COS Compute the cosine
TAN Compute the tangent
ASIN Compute the arcsine
ACOS Compute the arccosine
ATAN Compute the arctangent
ATAN2 Compute arctangent(y/x)
LN Compute natural logarithm
EXP Compute exponential function
SINH Compute the hyperbolic sine
COSH Compute the hyperbolic cosine
TANH Compute the hyperbolic tangent
ASINH Compute the hyperbolic arcsine
ACOSH Compute the hyperbolic arccosine
ATANH Compute the hyperbolic arctangent
LOG Compute logarithm in base 10
ALOG Compute anti-logarithm in base 10
Compute the square root
EXPM Compute exp(x)-1
LNP1 Compute ln(x+1)
π0 Numeric constant π with twice the current system precision NEW

User Interface 7 4 NEW

Command Short Description
COPYCLIP Copy an object to the clipboard NEW
CUTCLIP Move an object to the clipboard NEW
PASTECLIP Insert the clipboard contents on the stack NEW
WAIT Wait for a key press or a time lapse CHANGED
KEYEVAL Simulate a keypress from within a program CHANGED
KEY Get instantaneous state of the keyboard CHANGED
DOFORM Take a variable identifier with a form list NEW

Operations with Units 8 3 NEW

Command Short Description
UDEFINE Create a user-defined unit NEW
UPURGE Delete a user-defined unit NEW
UVAL Numeric part of a unit object
UBASE Expand all unit factors to their base unit
CONVERT Convert value from one unit to another
UFACT Expose a group of units within a unit object (factor)
→UNIT Apply a unit to an object
ULIST List all user-defined units NEW

USB Communications 8 NEW

Command Short Description
USBSTATUS Get status of the USB driver NEW
USBRECV Receive an object through USB link NEW
USBSEND Send an object through the USB link NEW
USBOFF Disable USB port NEW
USBON Enable USB port NEW
USBAUTORCV Receive an object and execute it NEW
USBARCHIVE Create a backup on a remote machine NEW
USBRESTORE Restore a backup from a remote machine NEW
  • manual/chapter6.txt
  • Last modified: 2018/03/13 16:03
  • by claudio