#!sdl_chomik

# SDL Chomik Widgets widgets
# by Pawel Biernacki
# version 0.0.5
# requires chomik 0.2.2 or later
# Vantaa 2026
# https://www.chomik.tech


type complex [<sdl chomik widgets prefix> left_or_right] = { left, center, right }, complex [<sdl chomik widgets prefix> up_or_down] = { up, up bar, center, down};

type complex [<sdl chomik widgets prefix> widget_class] = { window, button, icon, text, menu bar, drop down menu };
type complex [<sdl chomik widgets prefix> widget_mode] = { normal, resizing, moving };

type complex [<sdl chomik widgets prefix> font_type] = { regular, bold, italic, bold italic };

expand(1);


# common variables

let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
let <sdl chomik widgets prefix> the widget mode = value widget_mode normal;

let <sdl chomik widgets prefix> the amount of widgets = value integer 0;
let <sdl chomik widgets prefix> the amount of fonts = value integer 0;


let <sdl chomik widgets prefix> the numbers comparison results are fine for (C1:compare_result) (C2:compare_result) (C3:compare_result) (C4:compare_result)= value boolean false;
let <sdl chomik widgets prefix> the numbers comparison results are fine for lower lower lower lower = value boolean true;

###############################################################################
#
#
let <sdl chomik widgets prefix> register widget (LR:complex [<sdl chomik widgets prefix> left_or_right]) (UD:complex [<sdl chomik widgets prefix> up_or_down]) image=value code
{
    let <sdl chomik widgets prefix> the widget left or right location = value left_or_right [(LR:complex [<sdl chomik widgets prefix> left_or_right])];
    let <sdl chomik widgets prefix> the widget up or down location = value up_or_down [(UD:complex [<sdl chomik widgets prefix> up_or_down])];
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget left or right location> <<sdl chomik widgets prefix> the widget up or down location> image index
    = <the created image index>;

    #<print "register a widget image">;
    #<print <the widget left or right location>>;
    #<print <the widget up or down location>>;
    #<print <the widget <the widget left or right location> <the widget up or down location> image index>>;
    #<print "the widget image has been registered">;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> register font (FONT_TYPE:complex [<sdl chomik widgets prefix> font_type]) = value code
{
    let <sdl chomik widgets prefix> the font "type" = value font_type [(FONT_TYPE:complex [<sdl chomik widgets prefix> font_type])];
    let <sdl chomik widgets prefix> the font <<sdl chomik widgets prefix> the font "type"> index = <the created font index>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please create and register the widget images = value code
{
    <create new image "left_up_corner.png">;
    <<sdl chomik widgets prefix> register widget left up image>;

    <create new image "left_up_corner_bar.png">;
    <<sdl chomik widgets prefix> register widget left up bar image>;

    <create new image "left_down_corner.png">;
    <<sdl chomik widgets prefix> register widget left down image>;

    <create new image "right_up_corner.png">;
    <<sdl chomik widgets prefix> register widget right up image>;

    <create new image "right_up_corner_bar.png">;
    <<sdl chomik widgets prefix> register widget right up bar image>;

    <create new image "right_down_corner.png">;
    <<sdl chomik widgets prefix> register widget right down image>;

    <create new image "center_center_background.png">;
    <<sdl chomik widgets prefix> register widget center center image>;

    <create new image "left_center_border.png">;
    <<sdl chomik widgets prefix> register widget left center image>;

    <create new image "right_center_border.png">;
    <<sdl chomik widgets prefix> register widget right center image>;

    <create new image "center_up_border.png">;
    <<sdl chomik widgets prefix> register widget center up image>;

    <create new image "center_up_border_bar.png">;
    <<sdl chomik widgets prefix> register widget center up bar image>;

    <create new image "center_down_border.png">;
    <<sdl chomik widgets prefix> register widget center down image>;

    <create new image "button_tile.png">;
    let <sdl chomik widgets prefix> the widget button tile image index = <the created image index>;

    <create new image "resize_tile.png">;
    let <sdl chomik widgets prefix> the widget resize tile image index = <the created image index>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please create and register the fonts = value code
{
    <create new font "PlayfairDisplay-Regular.ttf" 16>;
    <<sdl chomik widgets prefix> register font regular>;

    <create new font "PlayfairDisplay-Bold.ttf" 16>;
    <<sdl chomik widgets prefix> register font bold>;
};


###############################################################################
#
# An internal family of variables creating a new widget. Used by the API families.
#
let <sdl chomik widgets prefix> make new widget=value code
{
    <add "integer" <<sdl chomik widgets prefix> the amount of widgets> 1>;
    let <sdl chomik widgets prefix> the amount of widgets = <the add result "integer">;

    let <sdl chomik widgets prefix> the made widget index = <<sdl chomik widgets prefix> the amount of widgets>;

    #<print "MAKE NEW WIDGET" <<sdl chomik widgets prefix> the made widget index>>;

    let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the made widget index> = <<sdl chomik widgets prefix> the widget position x>;
    let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the made widget index> = <<sdl chomik widgets prefix> the widget position y>;
    let <sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the made widget index> = <<sdl chomik widgets prefix> the widget width>;
    let <sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the made widget index> = <<sdl chomik widgets prefix> the widget height>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is visible = value boolean true;

    let <sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the amount of widgets> = <<sdl chomik widgets prefix> the made widget index>;
    let <sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;

    let <sdl chomik widgets prefix> the widget on click handler of the widget <<sdl chomik widgets prefix> the made widget index> = value code {};
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is movable = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is clickable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is animated = value boolean false;
};

###############################################################################
#
# An API family of code variables creating a new window widget.
#
let <sdl chomik widgets prefix> please create new window widget at (X:integer) and (Y:integer) of width (WIDTH:integer) and height (HEIGHT:integer)=value code
{
    let <sdl chomik widgets prefix> the widget position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget position y = value integer [(Y:integer)];
    let <sdl chomik widgets prefix> the widget width = value integer [(WIDTH:integer)];
    let <sdl chomik widgets prefix> the widget height = value integer [(HEIGHT:integer)];

    <<sdl chomik widgets prefix> make new widget>;

    let <sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the made widget index> = value widget_class window;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is resizable = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is closable = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is standalone = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> parent index = value integer 0;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please create new button widget at (X:integer) and (Y:integer) of width (WIDTH:integer) and height (HEIGHT:integer) and text (TEXT:string)=value code
{
    let <sdl chomik widgets prefix> the widget position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget position y = value integer [(Y:integer)];
    let <sdl chomik widgets prefix> the widget width = value integer [(WIDTH:integer)];
    let <sdl chomik widgets prefix> the widget height = value integer [(HEIGHT:integer)];
    let <sdl chomik widgets prefix> the widget text = value string [(TEXT:string)];

    <<sdl chomik widgets prefix> make new widget>;

    let <sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the made widget index> = value widget_class button;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is resizable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> text = <<sdl chomik widgets prefix> the widget text>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is standalone = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> parent index = value integer 0;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is clickable = value boolean true;

    let <sdl chomik widgets prefix> the widget initial position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget initial position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
};

###############################################################################
#
# An API family of variables creating an animated icon.
#
let <sdl chomik widgets prefix> please create new animated icon widget at (X:integer) and (Y:integer) with image (IMAGE_INDEX:integer)=value code
{
    let <sdl chomik widgets prefix> the widget position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget position y = value integer [(Y:integer)];
    let <sdl chomik widgets prefix> the widget width = value integer 1;
    let <sdl chomik widgets prefix> the widget height = value integer 1;
    let <sdl chomik widgets prefix> the widget image index = value integer [(IMAGE_INDEX:integer)];

    <<sdl chomik widgets prefix> make new widget>;
    
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> amount of the animation images = value integer 0;
    let <sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the made widget index> = value widget_class icon;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is resizable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is standalone = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> parent index = value integer 0;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> image index = <<sdl chomik widgets prefix> the widget image index>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is clickable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is movable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is animated = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> animation image number = value integer 1; # the image number from the animation

    let <sdl chomik widgets prefix> the widget initial position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget initial position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget initial relative position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget initial relative position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal relative position x of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
    let <sdl chomik widgets prefix> the widget terminal relative position y of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
};

###############################################################################
#
# An API family of variables adding an image to the animated icon widget.
#
let <sdl chomik widgets prefix> please add an image (IMAGE_INDEX:integer) to the animated icon (WIDGET:integer)=value code
{
   	let <sdl chomik widgets prefix> the widget image index = value integer [(IMAGE_INDEX:integer)];
	let <sdl chomik widgets prefix> the widget index = value integer [(WIDGET:integer)];
	<add "integer" <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget index> amount of the animation images> 1>;
	let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget index> amount of the animation images = <the add result "integer">;
	let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget index> animation image index <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget index> amount of the animation images> = <<sdl chomik widgets prefix> the widget image index>;
};

###############################################################################
#
# An API family of variables creating a common (non-animated) icon widget.
#
let <sdl chomik widgets prefix> please create new icon widget at (X:integer) and (Y:integer) with image (IMAGE_INDEX:integer)=value code
{
    let <sdl chomik widgets prefix> the widget position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget position y = value integer [(Y:integer)];
    let <sdl chomik widgets prefix> the widget width = value integer 1;
    let <sdl chomik widgets prefix> the widget height = value integer 1;
    let <sdl chomik widgets prefix> the widget image index = value integer [(IMAGE_INDEX:integer)];

    <<sdl chomik widgets prefix> make new widget>;

    let <sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the made widget index> = value widget_class icon;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is resizable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is standalone = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> parent index = value integer 0;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> image index = <<sdl chomik widgets prefix> the widget image index>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is clickable = value boolean true;
};

###############################################################################
#
# An API family of variables creating a text widget.
#
let <sdl chomik widgets prefix> please create new text widget at (X:integer) and (Y:integer) of width (WIDTH:integer) and height (HEIGHT:integer) = value code
{
    let <sdl chomik widgets prefix> the widget position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget position y = value integer [(Y:integer)];
    let <sdl chomik widgets prefix> the widget width = value integer [(WIDTH:integer)];
    let <sdl chomik widgets prefix> the widget height = value integer [(HEIGHT:integer)];

    <<sdl chomik widgets prefix> make new widget>;

    let <sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the made widget index> = value widget_class text;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is resizable = value boolean false;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is standalone = value boolean true;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> parent index = value integer 0;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the made widget index> is clickable = value boolean false;
    let <sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the made widget index> = value integer 0;
};


<<sdl chomik widgets prefix> please create and register the widget images>;
<<sdl chomik widgets prefix> please create and register the fonts>;

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window tile (X:integer)=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget center center image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window top tile (X:integer)=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;

    <show image <<sdl chomik widgets prefix> the widget center up bar image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

};

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window bottom tile (X:integer)=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget center down image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window stripe (Y:integer)=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget tile position y> 32>;
    let <sdl chomik widgets prefix> the widget tile position y = <the add result "integer">;

    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget index>>;
    <show image <<sdl chomik widgets prefix> the widget left center image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

    <<sdl chomik widgets prefix> please show window tile (X:range 0..<<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the widget index>>)>;

    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget right center image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window top stripe=value code
{
    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget index>>;
    <show image <<sdl chomik widgets prefix> the widget left up bar image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

    <<sdl chomik widgets prefix> please show window top tile (X:range 0..<<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the widget index>>)>;

    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget right up bar image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please show window bottom stripe=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget tile position y> 32>;
    let <sdl chomik widgets prefix> the widget tile position y = <the add result "integer">;

    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget index>>;
    <show image <<sdl chomik widgets prefix> the widget left down image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

    <<sdl chomik widgets prefix> please show window bottom tile (X:range 0..<<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the widget index>>)>;

    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;

    <show image <<sdl chomik widgets prefix> the widget right down image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
# This is NOT an API family of variables. It is used internally to show all non-standalone
# widgets "children" of a given widget.
#
let <sdl chomik widgets prefix> please show all children (CHILD_NUMBER:integer) of the widget (WIDGET0:integer)= value code
{
    let <sdl chomik widgets prefix> the widget 0 index = value integer [(WIDGET0:integer)];
    let <sdl chomik widgets prefix> the child widget number = value integer [(CHILD_NUMBER:integer)];

    let <sdl chomik widgets prefix> the child widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 0 index> child number <<sdl chomik widgets prefix> the child widget number>>;

    let <sdl chomik widgets prefix> the child widget class = <<sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the child widget index>>;

    <<sdl chomik widgets prefix> please show <<sdl chomik widgets prefix> the child widget class> <<sdl chomik widgets prefix> the child widget index> on non standalone true and visible <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the child widget index> is visible> and animated <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the child widget index> is animated>>;
};

###############################################################################
#
# This is NOT an API family of variables. It is used to ignore the non-standalone windows.
#
let <sdl chomik widgets prefix> please show window (WIDGET:integer) on standalone false=value code {};

###############################################################################
#
# This is NOT an API family of variables. It is used internally to show a standalone
# window widget.
#
let <sdl chomik widgets prefix> please show window (WIDGET:integer) on standalone true=value code
{
    let <sdl chomik widgets prefix> the widget index = value integer [(WIDGET:integer)];

    let <sdl chomik widgets prefix> the widget tile position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget index>>;

    <<sdl chomik widgets prefix> please show window top stripe>;

    <add "integer" <<sdl chomik widgets prefix> the widget tile position y> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;

    <<sdl chomik widgets prefix> please show window stripe (Y:range 0..<<sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the widget index>>)>;

    <<sdl chomik widgets prefix> please show window bottom stripe>;

    let <sdl chomik widgets prefix> the amount of children = <<sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the widget index>>;

    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget index>;
    <<sdl chomik widgets prefix> please show all children (NUMBER2:range 1..<<sdl chomik widgets prefix> the amount of children>) of the widget <<sdl chomik widgets prefix> the parent widget index>>;

};

let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on non standalone true and visible true and animated false = value code
{
};

let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on non standalone true and visible false and animated false = value code {};

let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on non standalone true and visible true and animated true = value code
{
};

let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on non standalone true and visible false and animated true = value code {};


let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on standalone false = value code {};

let <sdl chomik widgets prefix> please show button (WIDGET2:integer) on standalone true=value code
{
    let <sdl chomik widgets prefix> the widget 2 index = value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
    let <sdl chomik widgets prefix> the widget tile position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>;

    <show image <<sdl chomik widgets prefix> the widget button tile image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget button tile image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
    <add "integer" <<sdl chomik widgets prefix> the widget tile position x> 32>;
    let <sdl chomik widgets prefix> the widget tile position x = <the add result "integer">;
    <show image <<sdl chomik widgets prefix> the widget button tile image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

    <show text <<sdl chomik widgets prefix> the font regular index> <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> text> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
};

###############################################################################
#
# This is NOT an API family of variables. It is used to show the non-standalone 
# visible and non animated icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on non standalone true and visible true and animated false=value code
{
    # it is not animated!
    let <sdl chomik widgets prefix> the widget 2 index=value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> parent index>;
    
	<add "integer" <<sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
	let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index> = <the add result "integer">;
	
	let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
	
	<add "integer" <<sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
	let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index> = <the add result "integer">;
	
    let <sdl chomik widgets prefix> the widget tile position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>;

    <show image <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

let <sdl chomik widgets prefix> the widget animation progress = value float 0.0;

let <sdl chomik widgets prefix> please set the widget animation progress (PROGRESS:float)=value code
{
    let <sdl chomik widgets prefix> the widget animation progress = value float [(PROGRESS:float)];
};

let <sdl chomik widgets prefix> please increment the widget 2 animation image number on lower=value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image number> 1>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image number = <the add result "integer">;
};

let <sdl chomik widgets prefix> please increment the widget 2 animation image number on equal=value code
{
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image number = value integer 1;
};

let <sdl chomik widgets prefix> please increment the widget 2 animation image number on greater= value code {};

###############################################################################
#
# This is NOT an API family of variables. It is used to show the non-standalone 
# visible and animated icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on non standalone true and visible true and animated true=value code
{
    let <sdl chomik widgets prefix> the widget 2 index=value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> parent index>;
    
    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget initial relative position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the x1 = <the cast result "float">;
    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget terminal relative position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the x2 = <the cast result "float">;

    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget initial relative position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the y1 = <the cast result "float">;
    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget terminal relative position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the y2 = <the cast result "float">;

    <subtract "float" <<sdl chomik widgets prefix> the x2> <<sdl chomik widgets prefix> the x1>>;
    <multiply "float" <the subtract result "float"> <<sdl chomik widgets prefix> the widget animation progress>>;
    <add "float" <the multiply result "float"> <<sdl chomik widgets prefix> the x1>>;
    <cast "float" to "integer" <the add result "float">>;
    <add "integer" <the cast result "integer"> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>>>;

    let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>=<the add result "integer">;

    <subtract "float" <<sdl chomik widgets prefix> the y2> <<sdl chomik widgets prefix> the y1>>;
    <multiply "float" <the subtract result "float"> <<sdl chomik widgets prefix> the widget animation progress>>;
    <add "float" <the multiply result "float"> <<sdl chomik widgets prefix> the y1>>;
    <cast "float" to "integer" <the add result "float">>;
    <add "integer" <the cast result "integer"> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>=<the add result "integer">;

    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
    let <sdl chomik widgets prefix> the widget tile position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>;

    <show image <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image index <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image number>> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;

    <compare "integer" <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> animation image number> 20>;
    <<sdl chomik widgets prefix> please increment the widget 2 animation image number on <the compare result>>;
};

###############################################################################
#
# This is NOT an API family of variables. It is used to ignore the non-standalone 
# non visible and non animated icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on standalone true and visible false and animated false = value code {};

###############################################################################
#
# This is NOT an API family of variables. It is used to show the non-standalone 
# visible and animated icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on standalone true and visible true and animated true = value code
{
    # it is animated!
    let <sdl chomik widgets prefix> the widget 2 index=value integer [(WIDGET2:integer)];


    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget initial position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the x1 = <the cast result "float">;
    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget terminal position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the x2 = <the cast result "float">;

    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget initial position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the y1 = <the cast result "float">;
    <cast "integer" to "float" <<sdl chomik widgets prefix> the widget terminal position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>>;
    let <sdl chomik widgets prefix> the y2 = <the cast result "float">;

    <subtract "float" <<sdl chomik widgets prefix> the x2> <<sdl chomik widgets prefix> the x1>>;
    <multiply "float" <the subtract result "float"> <<sdl chomik widgets prefix> the widget animation progress>>;
    <add "float" <<sdl chomik widgets prefix> the multiply result "float"> <<sdl chomik widgets prefix> the x1>>;
    <cast "float" to "integer" <the add result "float">>;

    let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>=<the cast result "integer">;

    <subtract "float" <<sdl chomik widgets prefix> the y2> <<sdl chomik widgets prefix> the y1>>;
    <multiply "float" <the subtract result "float"> <<sdl chomik widgets prefix> the widget animation progress>>;
    <add "float" <the multiply result "float"> <<sdl chomik widgets prefix> the y1>>;
    <cast "float" to "integer" <the add result "float">>;
    let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>=<the cast result "integer">;

    let <sdl chomik widgets prefix> the widget tile position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
    let <sdl chomik widgets prefix> the widget tile position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
    <show image <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> image index> <<sdl chomik widgets prefix> the widget tile position x> <<sdl chomik widgets prefix> the widget tile position y>>;
};

###############################################################################
#
# This is NOT an API family of variables. It is used to ignore the non standalone 
# icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on standalone false = value code {};

###############################################################################
#
# This is NOT an API family of variables. It is used to show the standalone 
# icons.
#
let <sdl chomik widgets prefix> please show icon (WIDGET2:integer) on standalone true=value code
{
    let <sdl chomik widgets prefix> the widget 2 index = value integer [(WIDGET2:integer)];

    <<sdl chomik widgets prefix> please show the current icon on standalone true and visible <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> is visible> and animated <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> is animated>>;
};


let <sdl chomik widgets prefix> please show text line for (NUMBER2:integer) of the current widget=value code
{
    let <sdl chomik widgets prefix> the text line number = value integer [(NUMBER2:integer)];

    <show text <<sdl chomik widgets prefix> the font regular index>
    <<sdl chomik widgets prefix> the text line <<sdl chomik widgets prefix> the text line number> of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the text position x> <<sdl chomik widgets prefix> the text position y>>;

    <add "integer" <<sdl chomik widgets prefix> the text position y> 32>;
    let <sdl chomik widgets prefix> the text position y = <the add result "integer">;
};

let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on non standalone true and visible false and animated false = value code {};

let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on non standalone true and visible true and animated false = value code
{
    let <sdl chomik widgets prefix> the widget 2 index = value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> parent index>;
    <add "integer" <<sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the text position x = <the add result "integer">;
    
    <add "integer" <<sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the text position y = <the add result "integer">;
    
    <<sdl chomik widgets prefix> please show text line for (NUMBER2:range 1..<<sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget 2 index>>) of the current widget>;
};


let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on non standalone true and visible true and animated true = value code
{
    let <sdl chomik widgets prefix> the widget 2 index = value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget 2 index> parent index>;
    
    <add "integer" <<sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the text position x = <the add result "integer">;
    
    <add "integer" <<sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the widget 2 index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the text position y = <the add result "integer">;
    
    <<sdl chomik widgets prefix> please show text line for (NUMBER2:range 1..<<sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget 2 index>>) of the current widget>;
};


let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on non standalone true and visible false and animated true = value code
{
};

let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on standalone false = value code {};
let <sdl chomik widgets prefix> please show text (WIDGET2:integer) on standalone true = value code
{
    let <sdl chomik widgets prefix> the widget 2 index = value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the text position x = <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget 2 index>>;
    let <sdl chomik widgets prefix> the text position y = <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget 2 index>>;

    <<sdl chomik widgets prefix> please show text line for (NUMBER2:range 1..<<sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget 2 index>>) of the current widget>;
};


let <sdl chomik widgets prefix> please clear the text lines of the widget (WIDGET2:integer)=value code
{
    let <sdl chomik widgets prefix> the widget index= value integer [(WIDGET2:integer)];
    let <sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget index> = value integer 0;
};

let <sdl chomik widgets prefix> please add text line (LINE:string) to the widget (WIDGET2:integer) = value code
{
    let <sdl chomik widgets prefix> the text line = value string [(LINE:string)];
    let <sdl chomik widgets prefix> the widget index= value integer [(WIDGET2:integer)];
    <add "integer" <<sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget index>> 1>;
    let <sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget index> = <the add result "integer">;
    let <sdl chomik widgets prefix> the text line <<sdl chomik widgets prefix> the amount of text lines of the widget <<sdl chomik widgets prefix> the widget index>> of the widget <<sdl chomik widgets prefix> the widget index> = <<sdl chomik widgets prefix> the text line>;
};

###############################################################################
#
# An auxilliary code variable used for debugging.
#
let <sdl chomik widgets prefix> please print the widgets display order = value code
{
    <print (NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>) "widget" <<sdl chomik widgets prefix> the widget index of the widget number (NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>)>>;
};

###############################################################################
#
# An internal family of variables to show standalone widgets.
#
let <sdl chomik widgets prefix> please show widget (NUMBER:integer) on standalone=value code
{
    let <sdl chomik widgets prefix> the widget number = value integer [(NUMBER:integer)];

    #<print "show the widget number" <<sdl chomik widgets prefix> the widget number>>;

    let <sdl chomik widgets prefix> the widget index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the widget number>>;
    let <sdl chomik widgets prefix> the widget class = <<sdl chomik widgets prefix> the widget class of the widget <<sdl chomik widgets prefix> the widget index>>;
    <<sdl chomik widgets prefix> please show <<sdl chomik widgets prefix> the widget class> <<sdl chomik widgets prefix> the widget index> on standalone <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget index> is standalone>>;
};


###############################################################################
#
# An API family of variables to show all standalone widgets.
#
let <sdl chomik widgets prefix> please show all widgets=value code
{
    <<sdl chomik widgets prefix> please show widget (NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>) on standalone>;
};


###############################################################################
#
#
#
let <sdl chomik widgets prefix> please calculate the widget max position x of the test widget=value code
{
    <multiply "integer" <<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the widget test index>> 32>;
    <add "integer" <the multiply result "integer"> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget test index>>>;
    <add "integer" <the add result "integer"> 64>;
    let <sdl chomik widgets prefix> the widget max position x of the test widget = <the add result "integer">;
};

###############################################################################
#
#
#
let <sdl chomik widgets prefix> please calculate the widget max position y of the test widget=value code
{
    <multiply "integer" <<sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the widget test index>> 32>;
    <add "integer" <the multiply result "integer"> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget test index>>>;
    <add "integer" <the add result "integer"> 64>;
    let <sdl chomik widgets prefix> the widget max position y of the test widget = <the add result "integer">;

};

###############################################################################
#
#
#
let <sdl chomik widgets prefix> please remember the test widget index false = value code {};
'
###############################################################################
#
#
#
let <sdl chomik widgets prefix> please remember the test widget index true = value code
{
    let <sdl chomik widgets prefix> the found widget index = <<sdl chomik widgets prefix> the widget test index>;
};


###############################################################################
#
#
#
let <sdl chomik widgets prefix> please test the standalone widget for the test position false and true = value code
{
    # if the widget test position x is between widget position x and max widget position x
    # and
    # if the widget test position y is between widget position y and max widget position y
    <<sdl chomik widgets prefix> please calculate the widget max position x of the test widget>;
    <<sdl chomik widgets prefix> please calculate the widget max position y of the test widget>;

    <compare "integer" <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget test index>> <<sdl chomik widgets prefix> the widget test position x>>;
    let <sdl chomik widgets prefix> the widget comparison 1 result = <the compare result>;
    <compare "integer" <<sdl chomik widgets prefix> the widget test position x> <<sdl chomik widgets prefix> the widget max position x of the test widget>>;
    let <sdl chomik widgets prefix> the widget comparison 2 result = <the compare result>;

    <compare "integer" <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget test index>> <<sdl chomik widgets prefix> the widget test position y>>;
    let <sdl chomik widgets prefix> the widget comparison 3 result = <the compare result>;
    <compare "integer" <<sdl chomik widgets prefix> the widget test position y> <<sdl chomik widgets prefix> the widget max position y of the test widget>>;
    let <sdl chomik widgets prefix> the widget comparison 4 result = <the compare result>;



    let <sdl chomik widgets prefix> the widget index has been found = <<sdl chomik widgets prefix> the numbers comparison results are fine for <<sdl chomik widgets prefix> the widget comparison 1 result> <<sdl chomik widgets prefix> the widget comparison 2 result> <<sdl chomik widgets prefix> the widget comparison 3 result> <<sdl chomik widgets prefix> the widget comparison 4 result>>;

    <<sdl chomik widgets prefix> please remember the test widget index <<sdl chomik widgets prefix> the widget index has been found>>;
};

let <sdl chomik widgets prefix> please test the standalone widget for the test position true and false = value code {};
let <sdl chomik widgets prefix> please test the standalone widget for the test position false and false = value code {};
let <sdl chomik widgets prefix> please test the standalone widget for the test position true and true = value code {};



let <sdl chomik widgets prefix> please test the non standalone widget for the test position false and false = value code
{
    <<sdl chomik widgets prefix> please calculate the widget max position x of the test widget>;
    <<sdl chomik widgets prefix> please calculate the widget max position y of the test widget>;

    <compare "integer" <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the widget test index>> <<sdl chomik widgets prefix> the widget test position x>>;
    let <sdl chomik widgets prefix> the widget comparison 1 result = <the compare result>;
    <compare "integer" <<sdl chomik widgets prefix> the widget test position x> <<sdl chomik widgets prefix> the widget max position x of the test widget>>;
    let <sdl chomik widgets prefix> the widget comparison 2 result = <the compare result>;

    <compare "integer" <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the widget test index>> <<sdl chomik widgets prefix> the widget test position y>>;
    let <sdl chomik widgets prefix> the widget comparison 3 result = <the compare result>;
    <compare "integer" <<sdl chomik widgets prefix> the widget test position y> <<sdl chomik widgets prefix> the widget max position y of the test widget>>;
    let <sdl chomik widgets prefix> the widget comparison 4 result = <the compare result>;

    let <sdl chomik widgets prefix> the widget index has been found = <<sdl chomik widgets prefix> the numbers comparison results are fine for <<sdl chomik widgets prefix> the widget comparison 1 result> <<sdl chomik widgets prefix> the widget comparison 2 result> <<sdl chomik widgets prefix> the widget comparison 3 result> <<sdl chomik widgets prefix> the widget comparison 4 result>>;

    <<sdl chomik widgets prefix> please remember the test widget index <<sdl chomik widgets prefix> the widget index has been found>>;
};
let <sdl chomik widgets prefix> please test the non standalone widget for the test position true and false = value code {};
let <sdl chomik widgets prefix> please test the non standalone widget for the test position false and true = value code {};
let <sdl chomik widgets prefix> please test the non standalone widget for the test position true and true = value code {};

###############################################################################
#
#
let <sdl chomik widgets prefix> please find the standalone widget index at the test position for (REVERSED_NUMBER:integer)=value code
{
    let <sdl chomik widgets prefix> the reversed widget number = value integer [(REVERSED_NUMBER:integer)];

    <add "integer" <<sdl chomik widgets prefix> the amount of widgets> 1>;
    <subtract "integer" <the add result "integer"> <<sdl chomik widgets prefix> the reversed widget number>>;
    let <sdl chomik widgets prefix> the actual widget number = <the subtract result "integer">;

    let <sdl chomik widgets prefix> the widget test index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the actual widget number>>;

    <<sdl chomik widgets prefix> please test the standalone widget for the test position <<sdl chomik widgets prefix> the widget index has been found> and <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget test index> is standalone>>;
};

let <sdl chomik widgets prefix> please find the non standalone widget index at the test position for (REVERSED_NUMBER:integer)=value code
{
    let <sdl chomik widgets prefix> the reversed widget number = value integer [(REVERSED_NUMBER:integer)];
    <add "integer" <<sdl chomik widgets prefix> the amount of widgets> 1>;
    <subtract "integer" <the add result "integer"> <<sdl chomik widgets prefix> the reversed widget number>>;
    let <sdl chomik widgets prefix> the actual widget number = <the subtract result "integer">;

    let <sdl chomik widgets prefix> the widget test index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the actual widget number>>;

    <<sdl chomik widgets prefix> please test the non standalone widget for the test position <<sdl chomik widgets prefix> the widget index has been found> and <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the widget test index> is standalone>>;
};

let <sdl chomik widgets prefix> please find the standalone widget index at (X:integer) and (Y:integer) = value code
{
    let <sdl chomik widgets prefix> the widget test position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget test position y = value integer [(Y:integer)];


    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
    let <sdl chomik widgets prefix> the found widget index = value integer 0;

    <<sdl chomik widgets prefix> please find the standalone widget index at the test position for (REVERSED_NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>)>;

};

let <sdl chomik widgets prefix> please find the non standalone widget index at (X:integer) and (Y:integer) = value code
{
    let <sdl chomik widgets prefix> the widget test position x = value integer [(X:integer)];
    let <sdl chomik widgets prefix> the widget test position y = value integer [(Y:integer)];

    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
    let <sdl chomik widgets prefix> the found widget index = value integer 0;

    <<sdl chomik widgets prefix> please find the non standalone widget index at the test position for (REVERSED_NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>)>;
};


let <sdl chomik widgets prefix> please move the widget indeces down on lower = value code
{
    let <sdl chomik widgets prefix> the next widget index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the next widget number>>;
    let <sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the widget number> = <<sdl chomik widgets prefix> the next widget index>;
};

let <sdl chomik widgets prefix> please move the widget indeces down on equal = value code
{
    let <sdl chomik widgets prefix> the next widget index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the next widget number>>;
    let <sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the widget number> = <<sdl chomik widgets prefix> the next widget index>;
};
let <sdl chomik widgets prefix> please move the widget indeces down on greater = value code {};


let <sdl chomik widgets prefix> please move the next widget to back on false = value code {};
let <sdl chomik widgets prefix> please move the next widget to back on true = value code
{
    <add "integer" <<sdl chomik widgets prefix> the widget number> 1>;
    let <sdl chomik widgets prefix> the next widget number = <the add result "integer">;

    <compare "integer" <<sdl chomik widgets prefix> the next widget number> <<sdl chomik widgets prefix> the amount of widgets>>;
    <<sdl chomik widgets prefix> please move the widget indeces down on <<sdl chomik widgets prefix> the compare result>>;
};


let <sdl chomik widgets prefix> please remember whether we have spotted the found widget index when iterating on lower = value code {};
let <sdl chomik widgets prefix> please remember whether we have spotted the found widget index when iterating on greater = value code {};
let <sdl chomik widgets prefix> please remember whether we have spotted the found widget index when iterating on equal = value code
{
    let <sdl chomik widgets prefix> the found widget index has been spotted during the iteration = value boolean true;
};

let <sdl chomik widgets prefix> please iterate through widgets (NUMBER:integer) and skip the found widget index=value code
{
    let <sdl chomik widgets prefix> the widget number = value integer [(NUMBER:integer)];
    let <sdl chomik widgets prefix> the widget test index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the widget number>>;

    <compare "integer" <<sdl chomik widgets prefix> the widget test index> <<sdl chomik widgets prefix> the found widget index>>;
    <<sdl chomik widgets prefix> please remember whether we have spotted the found widget index when iterating on <the compare result>>;

    <<sdl chomik widgets prefix> please move the next widget to back on <<sdl chomik widgets prefix> the found widget index has been spotted during the iteration>>;
};


let <sdl chomik widgets prefix> please bring the found widget to front on false = value code
{
    <<sdl chomik widgets prefix> please find the standalone widget index at <the mouse x> and <the mouse y>>;
    <<sdl chomik widgets prefix> please discard the found widget if it is not clickable on <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the found widget index> is clickable>>;
    <<sdl chomik widgets prefix> please remember the mouse position offset to the widget on <<sdl chomik widgets prefix> the widget index has been found>>;
    <<sdl chomik widgets prefix> please click the standalone widget on <<sdl chomik widgets prefix> the widget index has been found>>;
};

let please bring the found widget to front on true = value code
{
    let <sdl chomik widgets prefix> the found widget index has been spotted during the iteration = value boolean false;
    <<sdl chomik widgets prefix> please iterate through widgets (NUMBER:range 1..<<sdl chomik widgets prefix> the amount of widgets>) and skip the found widget index>;
    let <sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the amount of widgets>=<<sdl chomik widgets prefix> the found widget index>;
};


let <sdl chomik widgets prefix> please remember the mouse position offset to the widget on false = value code {};
let <sdl chomik widgets prefix> please remember the mouse position offset to the widget on true = value code
{
    <subtract "integer" <the mouse x> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the found widget index>>>;
    let <sdl chomik widgets prefix> the mouse offset x = <the subtract result "integer">;
    <subtract "integer" <the mouse y> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the found widget index>>>;
    let <sdl chomik widgets prefix> the mouse offset y = <the subtract result "integer">;
};


let <sdl chomik widgets prefix> please discard the found widget if it is not movable on false = value code
{
    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
};

let <sdl chomik widgets prefix> please discard the found widget if it is not movable on true = value code {};

let <sdl chomik widgets prefix> please discard the found widget if it is not clickable on false = value code
{
    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
};

let <sdl chomik widgets prefix> please discard the found widget if it is not clickable on true = value code {};

let <sdl chomik widgets prefix> please click the non standalone widget on false = value code
{
    <<sdl chomik widgets prefix> please find the standalone widget index at <the mouse x> and <the mouse y>>;
    <<sdl chomik widgets prefix> please discard the found widget if it is not movable on <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the found widget index> is movable>>;


    <<sdl chomik widgets prefix> please remember the mouse position offset to the widget on <<sdl chomik widgets prefix> the widget index has been found>>;
    <<sdl chomik widgets prefix> please bring the found widget to front on <<sdl chomik widgets prefix> the widget index has been found>>;
    let <sdl chomik widgets prefix> the widget mode = value widget_mode moving;
};

let <sdl chomik widgets prefix> please click the non standalone widget on true = value code
{
    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;´
    <<sdl chomik widgets prefix> the widget on click handler of the widget <<sdl chomik widgets prefix> the found widget index>>;
};

let <sdl chomik widgets prefix> please click the standalone widget on false = value code {};
let <sdl chomik widgets prefix> please click the standalone widget on true = value code
{
    <<sdl chomik widgets prefix> the widget on click handler of the widget <<sdl chomik widgets prefix> the found widget index>>;
    <<sdl chomik widgets prefix> please bring the found widget to front on true>;
    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;´
};

let <sdl chomik widgets prefix> please click widget on false = value code
{
    <<sdl chomik widgets prefix> please find the non standalone widget index at <the mouse x> and <the mouse y>>;
    <<sdl chomik widgets prefix> please discard the found widget if it is not clickable on <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the found widget index> is clickable>>;
    <<sdl chomik widgets prefix> please click the non standalone widget on <<sdl chomik widgets prefix> the widget index has been found>>;
 };

let <sdl chomik widgets prefix> please click widget on true = value code
{
    let <sdl chomik widgets prefix> the widget index has been found = value boolean false;
};


let <sdl chomik widgets prefix> please move all the children of the parent widget (CHILD:integer)=value code
{
    let <sdl chomik widgets prefix> the child widget number = value integer [(CHILD:integer)];
    let <sdl chomik widgets prefix> the parent widget index = <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the amount of widgets>>;
    let <sdl chomik widgets prefix> the child widget index = <<sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the parent widget index> child number <<sdl chomik widgets prefix> the child widget number>>;

    <add "integer" <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>> <<sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the child widget index>>>;
    let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the child widget index> = <the add result "integer">;

    <add "integer" <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>> <<sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the child widget index>>>;
    let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the child widget index> = <the add result "integer">;
};

let <sdl chomik widgets prefix> please move the widget on false = value code {};
let <sdl chomik widgets prefix> please move the widget on true = value code
{
    <subtract "integer" <the mouse x> <<sdl chomik widgets prefix> the mouse offset x>>;
    let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the found widget index> = <the subtract result "integer">;

    <subtract "integer" <the mouse y> <<sdl chomik widgets prefix> the mouse offset y>>;
    let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the found widget index> = <the subtract result "integer">;

    <<sdl chomik widgets prefix> please move all the children of the parent widget (CHILD:range 1..<<sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the widget index of the widget number <<sdl chomik widgets prefix> the amount of widgets>>>)>;
};

let <sdl chomik widgets prefix> please resize the widget on false = value code
{
    let <sdl chomik widgets prefix> the widget mode = value widget_mode normal;
};

let <sdl chomik widgets prefix> please resize the widget on true = value code
{
    <subtract "integer" <the mouse x> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the found widget index>>>;
    <divide "float" <the subtract result "integer"> 32>;
    <cast "float" to "integer" <the divide result "float">>;
    <subtract "integer" <the cast result "integer"> 1>;
    let <sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the found widget index> = <the subtract result "integer">;

    <subtract "integer" <the mouse y> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the found widget index>>>;
    <divide "float" <the subtract result "integer"> 32>;
    <cast "float" to "integer" <the divide result "float">>;
    <subtract "integer" <the cast result "integer"> 1>;
    let <sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the found widget index> = <the subtract result "integer">;

    <<sdl chomik widgets prefix> the widget resizing "code">;
};

let <sdl chomik widgets prefix> please recalculate the widget initial relative positions for the window widget and sprite widget=value code
{
    <subtract "integer" <<sdl chomik widgets prefix> the widget initial position x of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget initial relative position x of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;

    <subtract "integer" <<sdl chomik widgets prefix> the widget initial position y of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget initial relative position y of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;
};


let <sdl chomik widgets prefix> please recalculate the widget terminal relative positions for the window widget and sprite widget=value code
{
    <subtract "integer" <<sdl chomik widgets prefix> the widget terminal position x of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget terminal relative position x of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;

    <subtract "integer" <<sdl chomik widgets prefix> the widget terminal position y of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget terminal relative position y of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;
};

let <sdl chomik widgets prefix> please recalculate the widget relative positions for the window widget and sprite widget=value code
{
    <subtract "integer" <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;

    <subtract "integer" <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the sprite widget index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the window widget index>>>;
    let <sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the sprite widget index> = <the subtract result "integer">;

};

###############################################################################
#
#
let <sdl chomik widgets prefix> please attach widget (CHILD_INDEX:integer) to (PARENT_INDEX:integer)=value code
{
    let <sdl chomik widgets prefix> the parent widget index = value integer [(PARENT_INDEX:integer)];
    let <sdl chomik widgets prefix> the child widget index = value integer [(CHILD_INDEX:integer)];
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the child widget index> parent index = <<sdl chomik widgets prefix> the parent widget index>;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the child widget index> is standalone = value boolean false;


    <add "integer" <<sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the parent widget index>> 1>;
    let <sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the parent widget index> = <the add result "integer">;
    let <sdl chomik widgets prefix> the widget <<sdl chomik widgets prefix> the parent widget index> child number <<sdl chomik widgets prefix> the amount of children of the widget <<sdl chomik widgets prefix> the parent widget index>> = <<sdl chomik widgets prefix> the child widget index>;

    <subtract "integer" <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the child widget index>> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the child widget index> = <the subtract result "integer">;

    <subtract "integer" <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the child widget index>> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the parent widget index>>>;
    let <sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the child widget index> = <the subtract result "integer">;
};


let <sdl chomik widgets prefix> please register on click (CODE:code) for the widget index (INDEX:integer)=value code
{
    let <sdl chomik widgets prefix> the on click handler = value code [(CODE:code)];
    let <sdl chomik widgets prefix> the listener widget index = value integer [(INDEX:integer)];

    let <sdl chomik widgets prefix> the widget on click handler of the widget <<sdl chomik widgets prefix> the listener widget index> = value code [(CODE:code)];
};

let <sdl chomik widgets prefix> please switch to resizing widget (INDEX:integer)=value code
{
    let <sdl chomik widgets prefix> the widget index has been found = value boolean true;
    let <sdl chomik widgets prefix> the found widget index = value integer [(INDEX:integer)];
    let <sdl chomik widgets prefix> the widget mode = value widget_mode resizing;
};

let <sdl chomik widgets prefix> please handle mouse motion on normal = value code {};
let <sdl chomik widgets prefix> please handle mouse motion on resizing = value code
{
    <<sdl chomik widgets prefix> please resize the widget on <<sdl chomik widgets prefix> the widget index has been found>>;
};

let <sdl chomik widgets prefix> please handle mouse motion on moving = value code
{
    <<sdl chomik widgets prefix> please move the widget on <<sdl chomik widgets prefix> the widget index has been found>>;
};

let <sdl chomik widgets prefix> please handle mouse left click on normal = value code
{
    <<sdl chomik widgets prefix> please click widget on <<sdl chomik widgets prefix> the widget index has been found>>;
};

let <sdl chomik widgets prefix> please handle mouse left click on resizing = value code
{
    let <sdl chomik widgets prefix> the widget mode = value widget_mode normal;
};

let <sdl chomik widgets prefix> please handle mouse left click on moving = value code
{
    let <sdl chomik widgets prefix> the widget mode = value widget_mode normal;
};

###############################################################################
#
#
let <sdl chomik widgets prefix> please keep the widget (ICON_INDEX:integer) at the right down corner of the window (WINDOW_INDEX:integer) while resizing = value code
{
    let <sdl chomik widgets prefix> the icon widget index = value integer [(ICON_INDEX:integer)];
    let <sdl chomik widgets prefix> the window widget index = value integer [(WINDOW_INDEX:integer)];

    let <sdl chomik widgets prefix> the widget resizing "code" = value code
    {
            <multiply "integer" <<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the window widget index>> 32>;
            <add "integer" <the multiply result "integer"> 64>;
            let <sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
            <add "integer" <the add result "integer"> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the window widget index>>>;
            let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;


            <multiply "integer" <<sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the window widget index>> 32>;
            <add "integer" <the multiply result "integer"> 64>;
            let <sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
            <add "integer" <the add result "integer"> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the window widget index>>>;
            let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
    };
};


let <sdl chomik widgets prefix> please put the widget (ICON_INDEX:integer) at the right down corner of the window (WINDOW_INDEX:integer) = value code
{
    let <sdl chomik widgets prefix> the icon widget index = value integer [(ICON_INDEX:integer)];
    let <sdl chomik widgets prefix> the window widget index = value integer [(WINDOW_INDEX:integer)];

            <multiply "integer" <<sdl chomik widgets prefix> the widget width of the widget <<sdl chomik widgets prefix> the window widget index>> 32>;
            <add "integer" <the multiply result "integer"> 64>;
            let <sdl chomik widgets prefix> the widget relative position x of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
            <add "integer" <the add result "integer"> <<sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the window widget index>>>;
            let <sdl chomik widgets prefix> the widget position x of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;


            <multiply "integer" <<sdl chomik widgets prefix> the widget height of the widget <<sdl chomik widgets prefix> the window widget index>> 32>;
            <add "integer" <the multiply result "integer"> 64>;
            let <sdl chomik widgets prefix> the widget relative position y of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
            <add "integer" <the add result "integer"> <<sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the window widget index>>>;
            let <sdl chomik widgets prefix> the widget position y of the widget <<sdl chomik widgets prefix> the icon widget index> = <the add result "integer">;
};
