diff --git a/public/001.mp3 b/public/001.mp3 deleted file mode 100644 index acf8332..0000000 Binary files a/public/001.mp3 and /dev/null differ diff --git a/public/002.mp3 b/public/002.mp3 deleted file mode 100644 index cd7c327..0000000 Binary files a/public/002.mp3 and /dev/null differ diff --git a/public/003.mp3 b/public/003.mp3 deleted file mode 100644 index ed4c9b4..0000000 Binary files a/public/003.mp3 and /dev/null differ diff --git a/public/004.mp3 b/public/004.mp3 deleted file mode 100644 index 1c76b8f..0000000 Binary files a/public/004.mp3 and /dev/null differ diff --git a/public/016.mp3 b/public/016.mp3 deleted file mode 100644 index 2567ea0..0000000 Binary files a/public/016.mp3 and /dev/null differ diff --git a/public/about.html b/public/about.html deleted file mode 100644 index e40fc3a..0000000 --- a/public/about.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - - - -
-
-
-

[[Welcome]]

- - Welcome to Eixogen, an experiment in collectively exploring and imagining the city of the future in the context of emerging smart city technology. - Smart cities are a concept of the future, promising impressive progress in terms of efficiency and quality of life inside the cities.

The recording and processing of data such as traffic, sounds, air quality, and consumer behaviour, enables the improvement and optimization of traffic flow, reduced air pollution, prevention and fight of crime, mobility and energy saving. More and more cities, including Rotterdam, are striving for this transformation. - However, data collection and processing also raises complex social and ethical issues as it affects the way we live, work and interact socially.

The enormous amount of data recorded and processed presents a technical challenge, and the management is often passed on to private companies. Questions about privacy, equality and sustainability emerge. Who decides what data matters and whose interests are taken into account when processing it? - The data collection and archiving of this data is a form of history of a city's inhabitants. But according to what criteria is this history written, and what is excluded, overshadowed, unheard in these records? -

Through an experimental alternative reality game, we want to invite you to dive into these questions together and take part in envisioning a city of the future. - eixo.codes is a simulation of a city travel app, typically employed for the analysis and organization of a city's residents' movements. In our fictional scenario, we aim to repurpose these often consumption-oriented apps to facilitate a city exploration experience that shifts from a focus on efficiency, profit, and goal-oriented behavior to one centered around randomness, wonder, and mindfulness. This approach allows us to generate data about citizens based on their emotions, dreams, and personal desires. -


Eixogen functions as an extension of the ongoing exhibition 'Modding the Mirror World' at MaMA and launches on the 1st of October. To participate, send an email to info@eixo.codes to receive your player token and character sheet. Role-playing sessions will take place in the evenings of the

- 01.10.23
- 15.10.23
- 29.10.23
- 09.11.23
-
- For more information, take a look at thisismama.nl or @mamarotterdam. - -



-
- - -
- -
- - - - - - - - diff --git a/public/audio/1.wav b/public/audio/1.wav deleted file mode 100644 index 22e41f1..0000000 Binary files a/public/audio/1.wav and /dev/null differ diff --git a/public/audio/2.wav b/public/audio/2.wav deleted file mode 100644 index 2da5f2f..0000000 Binary files a/public/audio/2.wav and /dev/null differ diff --git a/public/audio/breadcrumb.mp3 b/public/audio/breadcrumb.mp3 deleted file mode 100644 index b3b1a87..0000000 Binary files a/public/audio/breadcrumb.mp3 and /dev/null differ diff --git a/public/audio/unlocked.mp3 b/public/audio/unlocked.mp3 deleted file mode 100644 index 1745249..0000000 Binary files a/public/audio/unlocked.mp3 and /dev/null differ diff --git a/public/control/index.html b/public/control/index.html index 815de81..5b31a21 100644 --- a/public/control/index.html +++ b/public/control/index.html @@ -12,10 +12,10 @@ -

~* *..* welcome to hamster control ~

+

~* *..* welcome to remote control ~

- - + +
diff --git a/public/experiment868/868.png b/public/experiment868/868.png deleted file mode 100644 index 9f594d3..0000000 Binary files a/public/experiment868/868.png and /dev/null differ diff --git a/public/experiment868/index.html b/public/experiment868/index.html deleted file mode 100644 index 8d95e4f..0000000 --- a/public/experiment868/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - 868MHz - - - -
-

- -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
0
-
-
- - -
- - - - diff --git a/public/experiment868/index2.html b/public/experiment868/index2.html deleted file mode 100644 index 256d175..0000000 --- a/public/experiment868/index2.html +++ /dev/null @@ -1,126 +0,0 @@ - - - 868MHz - - - -
-

- -
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
0
-
-
- - -
- - - - \ No newline at end of file diff --git a/public/experiment868/prosthetix.html b/public/experiment868/prosthetix.html deleted file mode 100644 index 8da3276..0000000 --- a/public/experiment868/prosthetix.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - ProsthetiX V.2 - - - -
-

ProsthetiX V.2

-

beta prosthetic memory algorithm 2030

-

data implantation in progress...87%

-

warning: keep window open

-
-
-
- -
-
-
memory 02-03-2024
-
member name: waste
-
- -

completed:

-

pot [upload successful]

-

sp1n [upload successful]

-

na$alo [upload successful]

-

*/* keep it locked */* [upload successful]

-

rasco [upload successful]

-

[...]

-
- - diff --git a/public/forgetmenot.html b/public/forgetmenot.html deleted file mode 100644 index aeac16e..0000000 --- a/public/forgetmenot.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - -
-
- - -
- - -
- -
- -
-

*~* **~ forget me not ~

-
-




- -

[by user 9]

-

[status: active

- [51.914954, 4.471217] -

[outdoors]

- -
- - -
-

I was here, I was right here where you are standing, many moons ago. When i feel lonely, I like to play with this motion triggered light. It senses me and replies. So I am not alone. We are here together.----
- find the source of the light. There, I left the next clue. -

-
-

-
- - - -

----enter the codeword into your personal page to mine ether credits----

- - - -
- - - - - -
- -

-
- -
-

-
-
- ↪ log -
- - -
-

LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

-
-
-

LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

-
-
-

LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

-
-
-

LOG 4 03:86:00 07-05-22 PORT: 20.15.18

-
-
-

LOG 5 06:86:00 17-05-22 PORT: 868

-
- -
-

- -
-
- ↪ -
- -
- - - -
- -
- - -
- -
- - - - - - - - - - - diff --git a/public/frosty_news.html b/public/frosty_news.html deleted file mode 100644 index dbcf146..0000000 --- a/public/frosty_news.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - -
-
- - -
- - -
- -
- -
-

*~* **~ frosty news ~

-
-




- -

[by user 9]

-

[status: active]

- [51.892428, 4.4710403] -

[outdoors]

- -
- - -
-

You are not yet at your destination. A lightblue map in the library shelf reveals the path to a hidden container. Find the map, follow it and you will find me in between two concrete tictacs on the base of a metal fence. ----please leave any physical clues where you found them for the next runners.----

-
-

-
- - - -

----enter the codeword into your personal page to mine ether credits----

- - - -
- - - - - -
- -

-
- -
-

-
-
- ↪ log -
- - -
-

LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

-
-
-

LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

-
-
-

LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

-
-
-

LOG 4 03:86:00 07-05-22 PORT: 20.15.18

-
-
-

LOG 5 06:86:00 17-05-22 PORT: 868

-
- -
-

- -
-
- ↪ -
- -
- - - -
- -
- - -
- -
- - - - - - - - - - - diff --git a/public/handbook.pdf b/public/handbook.pdf deleted file mode 100644 index 09bb7d2..0000000 Binary files a/public/handbook.pdf and /dev/null differ diff --git a/public/img/bw.png b/public/img/bw.png deleted file mode 100644 index 299f9e3..0000000 Binary files a/public/img/bw.png and /dev/null differ diff --git a/public/img/bwbit.png b/public/img/bwbit.png deleted file mode 100644 index 14955f6..0000000 Binary files a/public/img/bwbit.png and /dev/null differ diff --git a/public/img/card1.jpg b/public/img/card1.jpg deleted file mode 100644 index c23064e..0000000 Binary files a/public/img/card1.jpg and /dev/null differ diff --git a/public/img/hamsterz.png b/public/img/hamsterz.png deleted file mode 100644 index 2725e07..0000000 Binary files a/public/img/hamsterz.png and /dev/null differ diff --git a/public/img/logo copy.png b/public/img/logo copy.png deleted file mode 100644 index f8e4ccd..0000000 Binary files a/public/img/logo copy.png and /dev/null differ diff --git a/public/img/logo.png b/public/img/logo.png deleted file mode 100644 index f8e4ccd..0000000 Binary files a/public/img/logo.png and /dev/null differ diff --git a/public/img/morsecode-puzzle.png b/public/img/morsecode-puzzle.png deleted file mode 100644 index 5a9481c..0000000 Binary files a/public/img/morsecode-puzzle.png and /dev/null differ diff --git a/public/img/screen.png b/public/img/screen.png deleted file mode 100644 index f1937c8..0000000 Binary files a/public/img/screen.png and /dev/null differ diff --git a/public/img/screen1.jpg b/public/img/screen1.jpg deleted file mode 100644 index c2f8f2a..0000000 Binary files a/public/img/screen1.jpg and /dev/null differ diff --git a/public/img/trash.png b/public/img/trash.png deleted file mode 100644 index 32640c6..0000000 Binary files a/public/img/trash.png and /dev/null differ diff --git a/public/index.html b/public/index.html index 38783dd..faae80a 100644 --- a/public/index.html +++ b/public/index.html @@ -1,208 +1,53 @@ - eixogen + digitwin dashboard - - - - + - - - -
-

~* *..* welcome to eixogen ~

- + +

~* *..* sensor dashboard ~

+

-
-
-
- -
- - -




-

~* *..* active trails ~~

- - - - -
-
-

~* *..* live chat ~~

-
    -
    - -
    -
    -
    -

    users online:

    -
      -
      -
      - -
      -

      - - -
      - ↪ log -
      -
      -

      LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

      -
      -
      -

      LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

      -
      -
      -

      LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

      -
      -
      -

      LOG 4 03:86:00 07-05-22 PORT: 20.15.18

      -
      -
      -

      LOG 5 06:86:00 17-05-22 PORT: 868

      -
      -
      -

      -
      -
      - ↪ -
      -
      -
      +
      + +
      1
      +
      2
      +
      3
      +
      4
      +
      5
      +
      6
      +
      7
      +
      8
      +
      9
      +
      10
      +
      11
      +
      12
      +
      13
      +
      14
      +
      15
      +
      16
      +
      + - diff --git a/public/mechanical_fireflies.html b/public/mechanical_fireflies.html deleted file mode 100644 index 9cc250d..0000000 --- a/public/mechanical_fireflies.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - -
      -
      - - -
      - - -
      - -
      - -
      -

      *~* **~ mechanical fireflies ~

      -
      -




      - -

      [by user 9]

      -

      [status: active until 12th November]

      - [51.915909, 4.4778599] -

      [indoors]

      -

      [opening hours: Wed-Sun 14:00 -- 19:00]

      -
      - - -
      -

      Enter the space. Across from you, you will see a mouse. Not a hamster, not a rat, a mouse. Touch it to reveal an alphabet, that allows to read binary sequences into numbers. These sequences are hidden in the broadcast boxes, like mechanical fireflies trying to escape. You are looking for a 4 digit code. Once you decrypted all of the fireflies, mix up the pairs, starting with the higher number.

      -



      ----The correct numbers entered the code on your profile page will reveal a password that unlocks our archive. Look closely into the mirror world around you to spot it.---- -

      -
      -

      -
      - - - -

      ----enter the codeword into your personal page to mine ether credits----

      - - - -
      - - - - - -
      - -

      -
      - -
      -

      -
      -
      - ↪ log -
      - - -
      -

      LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

      -
      -
      -

      LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

      -
      -
      -

      LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

      -
      -
      -

      LOG 4 03:86:00 07-05-22 PORT: 20.15.18

      -
      -
      -

      LOG 5 06:86:00 17-05-22 PORT: 868

      -
      - -
      -

      - -
      -
      - ↪ -
      - -
      - - - -
      - -
      - - -
      - -
      - - - - - - - - - - - diff --git a/public/metal/LICENSE b/public/metal/LICENSE deleted file mode 100644 index 20d30c2..0000000 --- a/public/metal/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 David Hollingworth - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/public/metal/README.md b/public/metal/README.md deleted file mode 100644 index fbfa97b..0000000 --- a/public/metal/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Signup and Login with PHP and MySQL - -Source code to accompany this video: https://youtu.be/5L9UhOnuos0 - -[![Signup and Login with PHP and MySQL](https://img.youtube.com/vi/5L9UhOnuos0/0.jpg)](https://youtu.be/5L9UhOnuos0) diff --git a/public/metal/forgot-password.php b/public/metal/forgot-password.php deleted file mode 100644 index bfc2fe7..0000000 --- a/public/metal/forgot-password.php +++ /dev/null @@ -1,28 +0,0 @@ - - - - eixogen - - - - - - - - - - - -
      -

      forgot password

      - -
      - - - - - -
      -
      - - diff --git a/public/metal/index.html b/public/metal/index.html deleted file mode 100644 index 2c95136..0000000 --- a/public/metal/index.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - - - -
      -
      - - -
      - - -
      - -
      -
      -

      sleepwalker.mod = active

      -
      -
      -
      - - - -

      >>> CACHE CODE:

      -
      - -


      - - -
      - - -
      - - -
      - - -
      - -
      - - - - - - - - - - diff --git a/public/metal/index.php b/public/metal/index.php deleted file mode 100644 index 929f74c..0000000 --- a/public/metal/index.php +++ /dev/null @@ -1,55 +0,0 @@ -query($sql); - $user = $result->fetch_assoc(); -} - -?> - - - - - eixogen - - - - - - - - - - -
      -
      - -

      welcome to eixogen,

      - - -

      -

      [inbox]

      -

      [drdrift]: stop on a traffic light for 10 periods. what do you notice?





      -

      Highscore:


      - - - -
      - - - - -
      -
      - - - diff --git a/public/metal/js/validation.js b/public/metal/js/validation.js deleted file mode 100644 index 1845f65..0000000 --- a/public/metal/js/validation.js +++ /dev/null @@ -1,48 +0,0 @@ -const validation = new JustValidate("#signup"); - -validation - .addField("#name", [ - { - rule: "required" - } - ]) - .addField("#email", [ - { - rule: "required" - }, - { - rule: "email" - }, - { - validator: (value) => () => { - return fetch("validate-email.php?email=" + encodeURIComponent(value)) - .then(function(response) { - return response.json(); - }) - .then(function(json) { - return json.available; - }); - }, - errorMessage: "email already taken" - } - ]) - .addField("#password", [ - { - rule: "required" - }, - { - rule: "password" - } - ]) - .addField("#password_confirmation", [ - { - validator: (value, fields) => { - return value === fields["#password"].elem.value; - }, - errorMessage: "Passwords should match" - } - ]) - .onSuccess((event) => { - document.getElementById("signup").submit(); - }); - diff --git a/public/metal/just-validate.production.min.js b/public/metal/just-validate.production.min.js deleted file mode 100644 index e81b4f1..0000000 --- a/public/metal/just-validate.production.min.js +++ /dev/null @@ -1,66 +0,0 @@ -UNPKG - just-validate

      UNPKG

      29.7 kBJavaScriptView Raw
      1var __defProp=Object.defineProperty,__defNormalProp=(e,i,t)=>i in e?__defProp(e,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[i]=t,__publicField=(e,i,t)=>(__defNormalProp(e,"symbol"!=typeof i?i+"":i,t),t);!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).JustValidate=i()}(this,(function(){"use strict";const e=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,i=/^-?[0-9]\d*$/,t=/^(?=.*[A-Za-z])(?=.*\d).{8,}$/,s=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,l=e=>"string"!=typeof e||""===e;var r=(e=>(e.Required="required",e.Email="email",e.MinLength="minLength",e.MaxLength="maxLength",e.Password="password",e.Number="number",e.Integer="integer",e.MaxNumber="maxNumber",e.MinNumber="minNumber",e.StrongPassword="strongPassword",e.CustomRegexp="customRegexp",e.MinFilesCount="minFilesCount",e.MaxFilesCount="maxFilesCount",e.Files="files",e))(r||{}),o=(e=>(e.Required="required",e))(o||{}),a=(e=>(e.Label="label",e.LabelArrow="labelArrow",e))(a||{});const n=[{key:r.Required,dict:{en:"The field is required"}},{key:r.Email,dict:{en:"Email has invalid format"}},{key:r.MaxLength,dict:{en:"The field must contain a maximum of :value characters"}},{key:r.MinLength,dict:{en:"The field must contain a minimum of :value characters"}},{key:r.Password,dict:{en:"Password must contain minimum eight characters, at least one letter and one number"}},{key:r.StrongPassword,dict:{en:"Password should contain minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character"}},{key:r.Number,dict:{en:"Value should be a number"}},{key:r.MaxNumber,dict:{en:"Number should be less or equal than :value"}},{key:r.MinNumber,dict:{en:"Number should be more or equal than :value"}},{key:r.MinFilesCount,dict:{en:"Files count should be more or equal than :value"}},{key:r.MaxFilesCount,dict:{en:"Files count should be less or equal than :value"}},{key:r.Files,dict:{en:"Uploaded files have one or several invalid properties (extension/size/type etc)."}}],d=e=>"object"==typeof e&&null!==e&&"then"in e&&"function"==typeof e.then,c=e=>Array.isArray(e)?e.filter((e=>e.length>0)):"string"==typeof e&&e.trim()?[...e.split(" ").filter((e=>e.length>0))]:[],u=e=>e instanceof Element||e instanceof HTMLDocument,h={errorFieldStyle:{color:"#b81111",border:"1px solid #B81111"},errorFieldCssClass:"just-validate-error-field",successFieldCssClass:"just-validate-success-field",errorLabelStyle:{color:"#b81111"},errorLabelCssClass:"just-validate-error-label",successLabelCssClass:"just-validate-success-label",focusInvalidField:!0,lockForm:!0,testingMode:!1,validateBeforeSubmitting:!1};return class{constructor(e,i,t){__publicField(this,"form",null),__publicField(this,"fields",{}),__publicField(this,"groupFields",{}),__publicField(this,"errors",{}),__publicField(this,"isValid",!1),__publicField(this,"isSubmitted",!1),__publicField(this,"globalConfig",h),__publicField(this,"errorLabels",{}),__publicField(this,"successLabels",{}),__publicField(this,"eventListeners",[]),__publicField(this,"dictLocale",n),__publicField(this,"currentLocale","en"),__publicField(this,"customStyleTags",{}),__publicField(this,"onSuccessCallback"),__publicField(this,"onFailCallback"),__publicField(this,"onValidateCallback"),__publicField(this,"tooltips",[]),__publicField(this,"lastScrollPosition"),__publicField(this,"isScrollTick"),__publicField(this,"fieldIds",new Map),__publicField(this,"getKeyByFieldSelector",(e=>this.fieldIds.get(e))),__publicField(this,"getFieldSelectorByKey",(e=>{for(const[i,t]of this.fieldIds)if(e===t)return i})),__publicField(this,"getCompatibleFields",(()=>{const e={};return Object.keys(this.fields).forEach((i=>{let t=i;const s=this.getFieldSelectorByKey(i);"string"==typeof s&&(t=s),e[t]={...this.fields[i]}})),e})),__publicField(this,"setKeyByFieldSelector",(e=>{if(this.fieldIds.has(e))return this.fieldIds.get(e);const i=String(this.fieldIds.size+1);return this.fieldIds.set(e,i),i})),__publicField(this,"refreshAllTooltips",(()=>{this.tooltips.forEach((e=>{e.refresh()}))})),__publicField(this,"handleDocumentScroll",(()=>{this.lastScrollPosition=window.scrollY,this.isScrollTick||(window.requestAnimationFrame((()=>{this.refreshAllTooltips(),this.isScrollTick=!1})),this.isScrollTick=!0)})),__publicField(this,"formSubmitHandler",(e=>{e.preventDefault(),this.isSubmitted=!0,this.validateHandler(e)})),__publicField(this,"handleFieldChange",(e=>{let i;for(const t in this.fields){if(this.fields[t].elem===e){i=t;break}}i&&(this.fields[i].touched=!0,this.validateField(i,!0))})),__publicField(this,"handleGroupChange",(e=>{let i;for(const t in this.groupFields){if(this.groupFields[t].elems.find((i=>i===e))){i=t;break}}i&&(this.groupFields[i].touched=!0,this.validateGroup(i,!0))})),__publicField(this,"handlerChange",(e=>{e.target&&(this.handleFieldChange(e.target),this.handleGroupChange(e.target),this.renderErrors())})),this.initialize(e,i,t)}initialize(e,i,t){if(this.form=null,this.errors={},this.isValid=!1,this.isSubmitted=!1,this.globalConfig=h,this.errorLabels={},this.successLabels={},this.eventListeners=[],this.customStyleTags={},this.tooltips=[],this.currentLocale="en","string"==typeof e){const i=document.querySelector(e);if(!i)throw Error(`Form with ${e} selector not found! Please check the form selector`);this.setForm(i)}else{if(!(e instanceof HTMLFormElement))throw Error("Form selector is not valid. Please specify a string selector or a DOM element.");this.setForm(e)}if(this.globalConfig={...h,...i},t&&(this.dictLocale=[...t,...n]),this.isTooltip()){const e=document.createElement("style");e.textContent=".just-validate-error-label[data-tooltip=true]{position:fixed;padding:4px 8px;background:#423f3f;color:#fff;white-space:nowrap;z-index:10;border-radius:4px;transform:translateY(-5px)}.just-validate-error-label[data-tooltip=true]:before{content:'';width:0;height:0;border-left:solid 5px transparent;border-right:solid 5px transparent;border-bottom:solid 5px #423f3f;position:absolute;z-index:3;display:block;bottom:-5px;transform:rotate(180deg);left:calc(50% - 5px)}.just-validate-error-label[data-tooltip=true][data-direction=left]{transform:translateX(-5px)}.just-validate-error-label[data-tooltip=true][data-direction=left]:before{right:-7px;bottom:auto;left:auto;top:calc(50% - 2px);transform:rotate(90deg)}.just-validate-error-label[data-tooltip=true][data-direction=right]{transform:translateX(5px)}.just-validate-error-label[data-tooltip=true][data-direction=right]:before{right:auto;bottom:auto;left:-7px;top:calc(50% - 2px);transform:rotate(-90deg)}.just-validate-error-label[data-tooltip=true][data-direction=bottom]{transform:translateY(5px)}.just-validate-error-label[data-tooltip=true][data-direction=bottom]:before{right:auto;bottom:auto;left:calc(50% - 5px);top:-5px;transform:rotate(0)}",this.customStyleTags[a.Label]=document.head.appendChild(e),this.addListener("scroll",document,this.handleDocumentScroll)}}getLocalisedString(e,i,t){var s;const l=null!=t?t:e;let o=null==(s=this.dictLocale.find((e=>e.key===l)))?void 0:s.dict[this.currentLocale];if(o||t&&(o=t),o&&void 0!==i)switch(e){case r.MaxLength:case r.MinLength:case r.MaxNumber:case r.MinNumber:case r.MinFilesCount:case r.MaxFilesCount:o=o.replace(":value",String(i))}return o||t||"Value is incorrect"}getFieldErrorMessage(e,i){const t="function"==typeof e.errorMessage?e.errorMessage(this.getElemValue(i),this.fields):e.errorMessage;return this.getLocalisedString(e.rule,e.value,t)}getFieldSuccessMessage(e,i){const t="function"==typeof e?e(this.getElemValue(i),this.fields):e;return this.getLocalisedString(void 0,void 0,t)}getGroupErrorMessage(e){return this.getLocalisedString(e.rule,void 0,e.errorMessage)}getGroupSuccessMessage(e){if(e.successMessage)return this.getLocalisedString(void 0,void 0,e.successMessage)}setFieldInvalid(e,i){this.fields[e].isValid=!1,this.fields[e].errorMessage=this.getFieldErrorMessage(i,this.fields[e].elem)}setFieldValid(e,i){this.fields[e].isValid=!0,void 0!==i&&(this.fields[e].successMessage=this.getFieldSuccessMessage(i,this.fields[e].elem))}setGroupInvalid(e,i){this.groupFields[e].isValid=!1,this.groupFields[e].errorMessage=this.getGroupErrorMessage(i)}setGroupValid(e,i){this.groupFields[e].isValid=!0,this.groupFields[e].successMessage=this.getGroupSuccessMessage(i)}getElemValue(e){switch(e.type){case"checkbox":return e.checked;case"file":return e.files;default:return e.value}}validateGroupRule(e,i,t){if(t.rule===o.Required)i.every((e=>!e.checked))?this.setGroupInvalid(e,t):this.setGroupValid(e,t)}validateFieldRule(o,a,n,c=!1){const u=n.value,h=this.getElemValue(a);if(n.plugin){n.plugin(h,this.getCompatibleFields())||this.setFieldInvalid(o,n)}else{switch(n.rule){case r.Required:(e=>{let i=e;return"string"==typeof e&&(i=e.trim()),!i})(h)&&this.setFieldInvalid(o,n);break;case r.Email:if(l(h))break;f=h,e.test(f)||this.setFieldInvalid(o,n);break;case r.MaxLength:if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(l(h))break;((e,i)=>e.length>i)(h,u)&&this.setFieldInvalid(o,n);break;case r.MinLength:if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(l(h))break;((e,i)=>e.length<i)(h,u)&&this.setFieldInvalid(o,n);break;case r.Password:if(l(h))break;(e=>t.test(e))(h)||this.setFieldInvalid(o,n);break;case r.StrongPassword:if(l(h))break;(e=>s.test(e))(h)||this.setFieldInvalid(o,n);break;case r.Number:if(l(h))break;(e=>"string"==typeof e&&!isNaN(+e)&&!isNaN(parseFloat(e)))(h)||this.setFieldInvalid(o,n);break;case r.Integer:if(l(h))break;(e=>i.test(e))(h)||this.setFieldInvalid(o,n);break;case r.MaxNumber:{if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] field should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(l(h))break;const e=+h;(Number.isNaN(e)||((e,i)=>e>i)(e,u))&&this.setFieldInvalid(o,n);break}case r.MinNumber:{if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] field should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(l(h))break;const e=+h;(Number.isNaN(e)||((e,i)=>e<i)(e,u))&&this.setFieldInvalid(o,n);break}case r.CustomRegexp:{if(void 0===u)return console.error(`Value for ${n.rule} rule for [${o}] field is not defined. This field will be always invalid.`),void this.setFieldInvalid(o,n);let e;try{e=new RegExp(u)}catch(b){console.error(`Value for ${n.rule} rule for [${o}] should be a valid regexp. This field will be always invalid.`),this.setFieldInvalid(o,n);break}const i=String(h);""===i||e.test(i)||this.setFieldInvalid(o,n);break}case r.MinFilesCount:if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. This field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] field should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(Number.isFinite(null==h?void 0:h.length)&&h.length<u){this.setFieldInvalid(o,n);break}break;case r.MaxFilesCount:if(void 0===u){console.error(`Value for ${n.rule} rule for [${o}] field is not defined. This field will be always invalid.`),this.setFieldInvalid(o,n);break}if("number"!=typeof u){console.error(`Value for ${n.rule} rule for [${o}] field should be a number. The field will be always invalid.`),this.setFieldInvalid(o,n);break}if(Number.isFinite(null==h?void 0:h.length)&&h.length>u){this.setFieldInvalid(o,n);break}break;case r.Files:{if(void 0===u)return console.error(`Value for ${n.rule} rule for [${o}] field is not defined. This field will be always invalid.`),void this.setFieldInvalid(o,n);if("object"!=typeof u)return console.error(`Value for ${n.rule} rule for [${o}] field should be an object. This field will be always invalid.`),void this.setFieldInvalid(o,n);const e=u.files;if("object"!=typeof e)return console.error(`Value for ${n.rule} rule for [${o}] field should be an object with files array. This field will be always invalid.`),void this.setFieldInvalid(o,n);const i=(e,i)=>{const t=Number.isFinite(i.minSize)&&e.size<i.minSize,s=Number.isFinite(i.maxSize)&&e.size>i.maxSize,l=Array.isArray(i.names)&&!i.names.includes(e.name),r=Array.isArray(i.extensions)&&!i.extensions.includes(e.name.split(".")[e.name.split(".").length-1]),o=Array.isArray(i.types)&&!i.types.includes(e.type);return t||s||l||r||o};if("object"==typeof h&&null!==h)for(let t=0,s=h.length;t<s;++t){const s=h.item(t);if(!s){this.setFieldInvalid(o,n);break}if(i(s,e)){this.setFieldInvalid(o,n);break}}break}default:{if("function"!=typeof n.validator)return console.error(`Validator for custom rule for [${o}] field should be a function. This field will be always invalid.`),void this.setFieldInvalid(o,n);const e=n.validator(h,this.getCompatibleFields());if("boolean"!=typeof e&&"function"!=typeof e&&console.error(`Validator return value for [${o}] field should be boolean or function. It will be cast to boolean.`),"function"==typeof e){if(!c){this.fields[o].asyncCheckPending=!1;const i=e();return d(i)?i.then((e=>{e||this.setFieldInvalid(o,n)})).catch((()=>{this.setFieldInvalid(o,n)})):(console.error(`Validator function for custom rule for [${o}] field should return a Promise. This field will be always invalid.`),void this.setFieldInvalid(o,n))}this.fields[o].asyncCheckPending=!0}e||this.setFieldInvalid(o,n)}}var f}}isFormValid(){let e=!0;for(let i=0,t=Object.values(this.fields).length;i<t;++i){const t=Object.values(this.fields)[i];if(void 0===t.isValid){e=void 0;break}if(!1===t.isValid){e=!1;break}}for(let i=0,t=Object.values(this.groupFields).length;i<t;++i){const t=Object.values(this.groupFields)[i];if(void 0===t.isValid){e=void 0;break}if(!1===t.isValid){e=!1;break}}return e}validateField(e,i=!1){var t;const s=this.fields[e];s.isValid=!0;const l=[];return[...s.rules].reverse().forEach((t=>{const r=this.validateFieldRule(e,s.elem,t,i);d(r)&&l.push(r)})),s.isValid&&this.setFieldValid(e,null==(t=s.config)?void 0:t.successMessage),Promise.allSettled(l).finally((()=>{var e;i&&(null==(e=this.onValidateCallback)||e.call(this,{isValid:this.isFormValid(),isSubmitted:this.isSubmitted,fields:this.getCompatibleFields(),groups:{...this.groupFields}}))}))}revalidateField(e){if("string"!=typeof e&&!u(e))throw Error("Field selector is not valid. Please specify a string selector or a valid DOM element.");const i=this.getKeyByFieldSelector(e);return i&&this.fields[i]?new Promise((e=>{this.validateField(i,!0).finally((()=>{this.clearFieldStyle(i),this.clearFieldLabel(i),this.renderFieldError(i,!0),e(!!this.fields[i].isValid)}))})):(console.error("Field not found. Check the field selector."),Promise.reject())}revalidateGroup(e){if("string"!=typeof e&&!u(e))throw Error("Group selector is not valid. Please specify a string selector or a valid DOM element.");const i=this.getKeyByFieldSelector(e);return i&&this.groupFields[i]?new Promise((e=>{this.validateGroup(i).finally((()=>{this.clearFieldLabel(i),this.renderGroupError(i,!0),e(!!this.groupFields[i].isValid)}))})):(console.error("Group not found. Check the group selector."),Promise.reject())}validateGroup(e,i=!1){const t=this.groupFields[e],s=[];return[...t.rules].reverse().forEach((i=>{const l=this.validateGroupRule(e,t.elems,i);d(l)&&s.push(l)})),Promise.allSettled(s).finally((()=>{var e;i&&(null==(e=this.onValidateCallback)||e.call(this,{isValid:this.isFormValid(),isSubmitted:this.isSubmitted,fields:this.getCompatibleFields(),groups:{...this.groupFields}}))}))}focusInvalidField(){for(const e in this.fields){const i=this.fields[e];if(!i.isValid){setTimeout((()=>i.elem.focus()),0);break}}}afterSubmitValidation(e=!1){this.renderErrors(e),this.globalConfig.focusInvalidField&&this.focusInvalidField()}validate(e=!1){return new Promise((i=>{const t=[];Object.keys(this.fields).forEach((e=>{const i=this.validateField(e);d(i)&&t.push(i)})),Object.keys(this.groupFields).forEach((e=>{const i=this.validateGroup(e);d(i)&&t.push(i)})),Promise.allSettled(t).then((()=>{var s;this.afterSubmitValidation(e),null==(s=this.onValidateCallback)||s.call(this,{isValid:this.isFormValid(),isSubmitted:this.isSubmitted,fields:this.getCompatibleFields(),groups:{...this.groupFields}}),i(!!t.length)}))}))}revalidate(){return new Promise((e=>{this.validateHandler(void 0,!0).finally((()=>{this.globalConfig.focusInvalidField&&this.focusInvalidField(),e(this.isValid)}))}))}validateHandler(e,i=!1){return this.globalConfig.lockForm&&this.lockForm(),this.validate(i).finally((()=>{var i,t;this.globalConfig.lockForm&&this.unlockForm(),this.isValid?null==(i=this.onSuccessCallback)||i.call(this,e):null==(t=this.onFailCallback)||t.call(this,this.getCompatibleFields(),this.groupFields)}))}setForm(e){this.form=e,this.form.setAttribute("novalidate","novalidate"),this.removeListener("submit",this.form,this.formSubmitHandler),this.addListener("submit",this.form,this.formSubmitHandler)}addListener(e,i,t){i.addEventListener(e,t),this.eventListeners.push({type:e,elem:i,func:t})}removeListener(e,i,t){i.removeEventListener(e,t),this.eventListeners=this.eventListeners.filter((t=>t.type!==e||t.elem!==i))}addField(e,i,t){if("string"!=typeof e&&!u(e))throw Error("Field selector is not valid. Please specify a string selector or a valid DOM element.");let s;if(s="string"==typeof e?this.form.querySelector(e):e,!s)throw Error("Field doesn't exist in the DOM! Please check the field selector.");if(!Array.isArray(i)||!i.length)throw Error("Rules argument should be an array and should contain at least 1 element.");i.forEach((e=>{if(!("rule"in e||"validator"in e||"plugin"in e))throw Error("Rules argument must contain at least one rule or validator property.");if(!(e.validator||e.plugin||e.rule&&Object.values(r).includes(e.rule)))throw Error(`Rule should be one of these types: ${Object.values(r).join(", ")}. Provided value: ${e.rule}`)}));const l=this.setKeyByFieldSelector(e);return this.fields[l]={elem:s,rules:i,isValid:void 0,touched:!1,config:t},this.setListeners(s),(this.isSubmitted||this.globalConfig.validateBeforeSubmitting)&&this.validateField(l),this}removeField(e){if("string"!=typeof e&&!u(e))throw Error("Field selector is not valid. Please specify a string selector or a valid DOM element.");const i=this.getKeyByFieldSelector(e);if(!i||!this.fields[i])return console.error("Field not found. Check the field selector."),this;const t=this.getListenerType(this.fields[i].elem.type);return this.removeListener(t,this.fields[i].elem,this.handlerChange),this.clearErrors(),delete this.fields[i],this}removeGroup(e){if("string"!=typeof e)throw Error("Group selector is not valid. Please specify a string selector.");const i=this.getKeyByFieldSelector(e);return i&&this.groupFields[i]?(this.groupFields[i].elems.forEach((e=>{const i=this.getListenerType(e.type);this.removeListener(i,e,this.handlerChange)})),this.clearErrors(),delete this.groupFields[i],this):(console.error("Group not found. Check the group selector."),this)}addRequiredGroup(e,i,t,s){if("string"!=typeof e&&!u(e))throw Error("Group selector is not valid. Please specify a string selector or a valid DOM element.");let l;if(l="string"==typeof e?this.form.querySelector(e):e,!l)throw Error("Group selector not found! Please check the group selector.");const r=l.querySelectorAll("input"),a=Array.from(r).filter((e=>{const i=((e,i)=>{const t=[...i].reverse();for(let s=0,l=t.length;s<l;++s){const i=t[s];for(const t in e){const s=e[t];if(s.groupElem===i)return[t,s]}}return null})(this.groupFields,(e=>{let i=e;const t=[];for(;i;)t.unshift(i),i=i.parentNode;return t})(e));return!i||i[1].elems.find((i=>i!==e))})),n=this.setKeyByFieldSelector(e);return this.groupFields[n]={rules:[{rule:o.Required,errorMessage:i,successMessage:s}],groupElem:l,elems:a,touched:!1,isValid:void 0,config:t},r.forEach((e=>{this.setListeners(e)})),this}getListenerType(e){switch(e){case"checkbox":case"select-one":case"file":case"radio":return"change";default:return"input"}}setListeners(e){const i=this.getListenerType(e.type);this.removeListener(i,e,this.handlerChange),this.addListener(i,e,this.handlerChange)}clearFieldLabel(e){var i,t;null==(i=this.errorLabels[e])||i.remove(),null==(t=this.successLabels[e])||t.remove()}clearFieldStyle(e){var i,t,s,l;const r=this.fields[e],o=(null==(i=r.config)?void 0:i.errorFieldStyle)||this.globalConfig.errorFieldStyle;Object.keys(o).forEach((e=>{r.elem.style[e]=""}));const a=(null==(t=r.config)?void 0:t.successFieldStyle)||this.globalConfig.successFieldStyle||{};Object.keys(a).forEach((e=>{r.elem.style[e]=""})),r.elem.classList.remove(...c((null==(s=r.config)?void 0:s.errorFieldCssClass)||this.globalConfig.errorFieldCssClass),...c((null==(l=r.config)?void 0:l.successFieldCssClass)||this.globalConfig.successFieldCssClass))}clearErrors(){var e,i;Object.keys(this.errorLabels).forEach((e=>this.errorLabels[e].remove())),Object.keys(this.successLabels).forEach((e=>this.successLabels[e].remove()));for(const t in this.fields)this.clearFieldStyle(t);for(const t in this.groupFields){const s=this.groupFields[t],l=(null==(e=s.config)?void 0:e.errorFieldStyle)||this.globalConfig.errorFieldStyle;Object.keys(l).forEach((e=>{s.elems.forEach((i=>{var t;i.style[e]="",i.classList.remove(...c((null==(t=s.config)?void 0:t.errorFieldCssClass)||this.globalConfig.errorFieldCssClass))}))}));const r=(null==(i=s.config)?void 0:i.successFieldStyle)||this.globalConfig.successFieldStyle||{};Object.keys(r).forEach((e=>{s.elems.forEach((i=>{var t;i.style[e]="",i.classList.remove(...c((null==(t=s.config)?void 0:t.successFieldCssClass)||this.globalConfig.successFieldCssClass))}))}))}this.tooltips=[]}isTooltip(){return!!this.globalConfig.tooltip}lockForm(){const e=this.form.querySelectorAll("input, textarea, button, select");for(let i=0,t=e.length;i<t;++i)e[i].setAttribute("data-just-validate-fallback-disabled",e[i].disabled?"true":"false"),e[i].setAttribute("disabled","disabled"),e[i].style.pointerEvents="none",e[i].style.webkitFilter="grayscale(100%)",e[i].style.filter="grayscale(100%)"}unlockForm(){const e=this.form.querySelectorAll("input, textarea, button, select");for(let i=0,t=e.length;i<t;++i)"true"!==e[i].getAttribute("data-just-validate-fallback-disabled")&&e[i].removeAttribute("disabled"),e[i].style.pointerEvents="",e[i].style.webkitFilter="",e[i].style.filter=""}renderTooltip(e,i,t){var s;const{top:l,left:r,width:o,height:a}=e.getBoundingClientRect(),n=i.getBoundingClientRect(),d=t||(null==(s=this.globalConfig.tooltip)?void 0:s.position);switch(d){case"left":i.style.top=l+a/2-n.height/2+"px",i.style.left=r-n.width-5+"px";break;case"top":i.style.top=l-n.height-5+"px",i.style.left=r+o/2-n.width/2+"px";break;case"right":i.style.top=l+a/2-n.height/2+"px",i.style.left=`${r+o+5}px`;break;case"bottom":i.style.top=`${l+a+5}px`,i.style.left=r+o/2-n.width/2+"px"}i.dataset.direction=d;return{refresh:()=>{this.renderTooltip(e,i,t)}}}createErrorLabelElem(e,i,t){const s=document.createElement("div");s.innerHTML=i;const l=this.isTooltip()?null==t?void 0:t.errorLabelStyle:(null==t?void 0:t.errorLabelStyle)||this.globalConfig.errorLabelStyle;return Object.assign(s.style,l),s.classList.add(...c((null==t?void 0:t.errorLabelCssClass)||this.globalConfig.errorLabelCssClass),"just-validate-error-label"),this.isTooltip()&&(s.dataset.tooltip="true"),this.globalConfig.testingMode&&(s.dataset.testId=`error-label-${e}`),this.errorLabels[e]=s,s}createSuccessLabelElem(e,i,t){if(void 0===i)return null;const s=document.createElement("div");s.innerHTML=i;const l=(null==t?void 0:t.successLabelStyle)||this.globalConfig.successLabelStyle;return Object.assign(s.style,l),s.classList.add(...c((null==t?void 0:t.successLabelCssClass)||this.globalConfig.successLabelCssClass),"just-validate-success-label"),this.globalConfig.testingMode&&(s.dataset.testId=`success-label-${e}`),this.successLabels[e]=s,s}renderErrorsContainer(e,i){const t=i||this.globalConfig.errorsContainer;if("string"==typeof t){const i=this.form.querySelector(t);if(i)return i.appendChild(e),!0;console.error(`Error container with ${t} selector not found. Errors will be rendered as usual`)}return t instanceof Element?(t.appendChild(e),!0):(void 0!==t&&console.error("Error container not found. It should be a string or existing Element. Errors will be rendered as usual"),!1)}renderGroupLabel(e,i,t,s){if(!s){if(this.renderErrorsContainer(i,t))return}e.appendChild(i)}renderFieldLabel(e,i,t,s){var l,r,o,a,n,d,c;if(!s){if(this.renderErrorsContainer(i,t))return}if("checkbox"===e.type||"radio"===e.type){const t=document.querySelector(`label[for="${e.getAttribute("id")}"]`);"label"===(null==(r=null==(l=e.parentElement)?void 0:l.tagName)?void 0:r.toLowerCase())?null==(a=null==(o=e.parentElement)?void 0:o.parentElement)||a.appendChild(i):t?null==(n=t.parentElement)||n.appendChild(i):null==(d=e.parentElement)||d.appendChild(i)}else null==(c=e.parentElement)||c.appendChild(i)}showLabels(e,i){Object.keys(e).forEach(((t,s)=>{const l=e[t],r=this.getKeyByFieldSelector(t);if(!r||!this.fields[r])return void console.error("Field not found. Check the field selector.");const o=this.fields[r];o.isValid=!i,this.clearFieldStyle(r),this.clearFieldLabel(r),this.renderFieldError(r,!1,l),0===s&&this.globalConfig.focusInvalidField&&setTimeout((()=>o.elem.focus()),0)}))}showErrors(e){if("object"!=typeof e)throw Error("[showErrors]: Errors should be an object with key: value format");this.showLabels(e,!0)}showSuccessLabels(e){if("object"!=typeof e)throw Error("[showSuccessLabels]: Labels should be an object with key: value format");this.showLabels(e,!1)}renderFieldError(e,i=!1,t){var s,l,r,o,a,n;const d=this.fields[e];if(!1===d.isValid&&(this.isValid=!1),void 0===d.isValid||!i&&!this.isSubmitted&&!d.touched&&void 0===t)return;if(d.isValid){if(!d.asyncCheckPending){const i=this.createSuccessLabelElem(e,void 0!==t?t:d.successMessage,d.config);i&&this.renderFieldLabel(d.elem,i,null==(s=d.config)?void 0:s.errorsContainer,!0),d.elem.classList.add(...c((null==(l=d.config)?void 0:l.successFieldCssClass)||this.globalConfig.successFieldCssClass))}return}d.elem.classList.add(...c((null==(r=d.config)?void 0:r.errorFieldCssClass)||this.globalConfig.errorFieldCssClass));const u=this.createErrorLabelElem(e,void 0!==t?t:d.errorMessage,d.config);this.renderFieldLabel(d.elem,u,null==(o=d.config)?void 0:o.errorsContainer),this.isTooltip()&&this.tooltips.push(this.renderTooltip(d.elem,u,null==(n=null==(a=d.config)?void 0:a.tooltip)?void 0:n.position))}renderGroupError(e,i=!0){var t,s,l,r;const o=this.groupFields[e];if(!1===o.isValid&&(this.isValid=!1),void 0===o.isValid||!i&&!this.isSubmitted&&!o.touched)return;if(o.isValid){o.elems.forEach((e=>{var i,t;Object.assign(e.style,(null==(i=o.config)?void 0:i.successFieldStyle)||this.globalConfig.successFieldStyle),e.classList.add(...c((null==(t=o.config)?void 0:t.successFieldCssClass)||this.globalConfig.successFieldCssClass))}));const i=this.createSuccessLabelElem(e,o.successMessage,o.config);return void(i&&this.renderGroupLabel(o.groupElem,i,null==(t=o.config)?void 0:t.errorsContainer,!0))}this.isValid=!1,o.elems.forEach((e=>{var i,t;Object.assign(e.style,(null==(i=o.config)?void 0:i.errorFieldStyle)||this.globalConfig.errorFieldStyle),e.classList.add(...c((null==(t=o.config)?void 0:t.errorFieldCssClass)||this.globalConfig.errorFieldCssClass))}));const a=this.createErrorLabelElem(e,o.errorMessage,o.config);this.renderGroupLabel(o.groupElem,a,null==(s=o.config)?void 0:s.errorsContainer),this.isTooltip()&&this.tooltips.push(this.renderTooltip(o.groupElem,a,null==(r=null==(l=o.config)?void 0:l.tooltip)?void 0:r.position))}renderErrors(e=!1){if(this.isSubmitted||e||this.globalConfig.validateBeforeSubmitting){this.clearErrors(),this.isValid=!0;for(const e in this.groupFields)this.renderGroupError(e);for(const e in this.fields)this.renderFieldError(e)}}destroy(){this.eventListeners.forEach((e=>{this.removeListener(e.type,e.elem,e.func)})),Object.keys(this.customStyleTags).forEach((e=>{this.customStyleTags[e].remove()})),this.clearErrors(),this.globalConfig.lockForm&&this.unlockForm()}refresh(){this.destroy(),this.form?(this.initialize(this.form,this.globalConfig),Object.keys(this.fields).forEach((e=>{const i=this.getFieldSelectorByKey(e);i&&this.addField(i,[...this.fields[e].rules],this.fields[e].config)}))):console.error("Cannot initialize the library! Form is not defined")}setCurrentLocale(e){"string"==typeof e||void 0===e?(this.currentLocale=e,this.isSubmitted&&this.validate()):console.error("Current locale should be a string")}onSuccess(e){return this.onSuccessCallback=e,this}onFail(e){return this.onFailCallback=e,this}onValidate(e){return this.onValidateCallback=e,this}}})); -

      Build: a7ebffa

      © 2023 UNPKG

      \ No newline at end of file diff --git a/public/metal/login.php b/public/metal/login.php deleted file mode 100644 index ddc5e91..0000000 --- a/public/metal/login.php +++ /dev/null @@ -1,79 +0,0 @@ -real_escape_string($_POST["email"])); - - $result = $mysqli->query($sql); - $user = $result->fetch_assoc(); - echo $user; - - - if ($user) { - - if (password_verify($_POST["password"], $user["password_hash"])) { - - session_start(); - - session_regenerate_id(); - - $_SESSION["user_id"] = $user["id"]; - - header("Location: player/${user["id"]}.php"); - exit; - } - } - $is_invalid = true; -} - -?> - - - - eixogen - - - - - - - - - - - -
      - - something's off ]] - -
      - - "> - - - -
      - Forgot password? -
      -
      -
      -
      -
      - × - The code of conduct -


      - - We are all on the same level: All members of 868mHz are seen as equal and on the same level, regardless of their background and position. This should be a place free from stress, pressure, and competition, allowing vulnerability, experimentation, and doubt.

      - We Respect each other: Respect for all members is required. While people may not like each other, it is important to maintain a cordial and tolerant level of respect for all members.

      - Celebrate Difference: Every member has fun in different ways, and with different aspects, has different skills and knowledge. All members should do their best to contribute to the enjoyment of all members and learn from each other.

      - We Listen to each other: Everyone is great at what they are doing and has a message that is important. In listening to each other there's always an opportunity to learn something new from someone else.

      -
      - - - diff --git a/public/metal/logout.php b/public/metal/logout.php deleted file mode 100644 index 13a68aa..0000000 --- a/public/metal/logout.php +++ /dev/null @@ -1,8 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - \ No newline at end of file diff --git a/public/metal/nfc.php b/public/metal/nfc.php deleted file mode 100644 index 213c5fa..0000000 --- a/public/metal/nfc.php +++ /dev/null @@ -1,59 +0,0 @@ - -real_escape_string($_POST["nfc"])); -$sqlnfc = sprintf("SELECT EXISTS (SELECT * FROM nfc WHERE nfc = '12345')",$mysqlinfc->real_escape_string($_POST["6"])); - -//print_r($sqlnfc); - $result = $mysqlinfc->query($sqlnfc); -// print_r($result); -$user = $result->fetch_row(); -// print_r($user); -printf($user[0]); - -if($user[0] > 0){ -$mysqli = require __DIR__ . "/database.php"; - - $sql = "INSERT INTO user (name, email, password_hash, nfc) - VALUES (?, ?, ?, ?)"; - - $stmt = $mysqli->stmt_init(); - - if ( ! $stmt->prepare($sql)) { - die("SQL error: " . $mysqli->error); - } - - $stmt->bind_param("ssss", - $_POST["name"], - $_POST["email"], - $password_hash, - $_POST["nfc"]); - - if ($stmt->execute()) { - exit; - - } else { - - if ($mysqli->errno === 1062) { - die("email already taken"); - } else { - die($mysqli->error . " " . $mysqli->errno); - } - } -} else { - echo "no"; -} - -//$row_cnt = $result->num_rows; -//print_r($row_cnt); - -//if($result){ -//if ($result->fetch_row()) { -// echo "yes"; -// } else { -// echo "no"; -// -//} -//} diff --git a/public/metal/player/1.php b/public/metal/player/1.php deleted file mode 100644 index d0ed0c2..0000000 --- a/public/metal/player/1.php +++ /dev/null @@ -1,74 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      - -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Xyzzy → The Hacker

      -

      ether credits:

      -

      Group affiliation: Wanderer

      -
      -

      - You're a lockpick, possessing an extraordinary ability to gain access anywhere, whether it's by picking physical locks, cracking safes, or infiltrating computer networks. Somehow, you always manage to get in. Your love for the internet sets you apart, as most of the group is focused on exploring the physical city while you navigate virtual realms. You spend so much time in front of the computer that the line between your own identity and the computer's becomes blurred. You frequently use computer commands in your everyday language and enjoy expressing yourself through code.


      - Not too long ago, you fell in love with a server. You understand that this is a complex and unusual topic for most people, but you believe it's essential to explore modern human-computer relationships. You see yourself as an ambassador or translator between human and computer languages. One of your contributions is creating poems in code language and organising code poetry reading nights on the radio.

      - You and Wire have known each other since childhood, both being part of a kids' computer club. And with the years you became part of the friend group that eventually founded 868mHz radio.

      - Within the 868mHz collective, you hold the responsibility for cybersecurity and awareness. Your mission is to support everyone in navigating the internet more safely, except for [roos], whom you consider a hopeless case. You often find yourself in discussions with her, as you find her behaviour impossible to comprehend. -

      -
      -

      add to your character below:

      - -
      - -
      -
      -
      - - - - diff --git a/public/metal/player/10.php b/public/metal/player/10.php deleted file mode 100644 index 5b3b573..0000000 --- a/public/metal/player/10.php +++ /dev/null @@ -1,111 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Non-Place Tourist

      -

      group affiliation: observer

      -

      ether credits:

      - -

      -
      -

      The bustling yet often overlooked train and metro stations hold a special fascination for you. You view these transport hubs as unique non-places, transition zones where countless stories and lives briefly intersect. Your observations extend to documenting gestures, people, and even the unspoken desires that fill these spaces. You are generally fascinated by non-places and are constantly searching for new ones. Your aspiration is to become a non-place tour guide one day.

      - You first met 9 at the exhibition 'Reclaiming the Street' at Mama Gallery in Rotterdam. Since then, you have become friends, bound together by this shared interest. Eventually, she invited you to take part in her radio shows at 868mHz. You use radio as a means to share your insights about trains and metro stations and advocate for free access to public transportation and the reclamation of these stations as public spaces. Despite your appreciation for the vast scale of these transportation hubs, you sometimes feel small and alienated within them.

      - While the majority of 868Mhz members hold critical views about Rotterdam's technological transformation into a smart city, you can't deny its convenience in everyday life. It has reduced your commute time by an average of 15 minutes due to improved mobility. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/11.php b/public/metal/player/11.php deleted file mode 100644 index acd1e8f..0000000 --- a/public/metal/player/11.php +++ /dev/null @@ -1,112 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Night-Owl Oracle

      -

      group affiliation: mapper

      -

      ether credits:

      - -

      -
      -

      The night is your sanctuary, and you've embraced the life of a night owl, taking mysterious walks through the city under the starry sky. Your fascination with the stars extends to studying constellations and their historical use in navigation and divination, extracting profound meaning from these celestial bodies. You are known for your good prediction and horoscopes, even though you never properly studied astrology you can intuitively read the messages from the stars.

      - Living in one of the world's most light-polluted countries poses a challenge, but it fuels your determination to discover dark pockets within the city. Your dream is to compile a darkness map of Rotterdam, revealing hidden corners where the stars can be seen.

      - Your journey to 868mHz began at a creative writing workshop where you met 9. When she found out about your horoscope gift she invited you to a future reading radio show, where listeners could call in and you gave them their horoscope. Since then you have been experimenting with different formats. While sharing isn't always easy for an introvert person like you, you appreciate the like-minded community and enjoy spending time with those who share your interests.

      - Although you align with the critical spirit of most 868Mhz members regarding the city's technological development, you're also biased because your parents work for Eixogen, and you feel a sense of loyalty toward them. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/12.php b/public/metal/player/12.php deleted file mode 100644 index dc21f89..0000000 --- a/public/metal/player/12.php +++ /dev/null @@ -1,108 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      -

      - -

      -
      -

      Please email your profile number to info@eixo.codes along with your character name to receive your profile.

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/13.php b/public/metal/player/13.php deleted file mode 100644 index e541ab1..0000000 --- a/public/metal/player/13.php +++ /dev/null @@ -1,113 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Bird Watcher

      -

      group affiliation: observer

      -

      ether credits:

      - -

      -
      -

      Ever since you can remember you are obsessed with birds, you can’t even say if it is the fact that they can fly that intrigues you, if it is their communication through singing or that their whole physicalities are so different from us humans. You really love to observe the birds and you are fascinated by how the birds in the city managed to adapt to the urban environment, a place that has solely human needs in the centre of its design. And to be fair, not even every human because you personally find cities really overwhelming and unpleasant to live in. You are always on the lookout for quiet places to hide from the noise and the masses.

      - You know a lot of bird singing and you think you are really good at imitating them. Your talent goes so far that you sometimes implement bird sounds into your speech. - It is an unfortunate fact that the soundscape of birdsongs is becoming more and more monotonous with the loss of biodiversity. You are concerned about the future of birds and think it is important that people get more attention and appreciation for their sounds and songs.

      - You heard of 868mHz through their open call. You see the potential of getting a platform for your heart matters and you join the community. Although you maintain a critical stance toward Eixogen, you do believe that, in general, having smart city technology implemented is beneficial, as it could help reduce air pollution. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/14.php b/public/metal/player/14.php deleted file mode 100644 index f26c3ee..0000000 --- a/public/metal/player/14.php +++ /dev/null @@ -1,110 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Cities Ear

      -

      group affiliation: collector

      -

      ether credits:

      - -

      -
      -

      You are interested in sounds and noise and you are obsessed with capturing the various sounds that permeate the city. Your enthusiasm with building a comprehensive sound archive has led you to record an eclectic mix of noises, from the hum of traffic to the gentle rustle of leaves in the wind. However, you're often uncertain about the purpose of this vast collection, which consists of a cacophony of urban sounds.

      - You stumbled upon 868mHz through an open call and hope that it can provide a platform to share and engage others with your sound archive. You're constantly on the lookout for new and unique soundscapes, which often takes you to diverse locations within the city. Yet, this exploration occasionally overwhelms your senses, leaving you in urgent need of moments of silence and tranquillity, even though your own room rarely offers respite. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/15.php b/public/metal/player/15.php deleted file mode 100644 index 6fd15e4..0000000 --- a/public/metal/player/15.php +++ /dev/null @@ -1,111 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Gourmet Geographer

      -

      group affiliation: mapper

      -

      ether credits:

      - -

      -
      -

      Your guilty pleasure is food; you cannot pass a food place without at least checking the menu. You find it very inspiring to see what is offered and at what prices, as well as how the same food is prepared differently. Of course, you cannot afford to eat out all the time, so your dream is to one day become a food journalist and get paid for your passion. Due to your interest in different types of food, you prefer to live in a larger city with a wide variety of offerings. You don't like to spend too much time in one neighbourhood because you enjoy comparing and exploring different areas of the city.

      - What you really dislike are franchises, and you are concerned that rising rents and smart travel apps directing people to specific locations are causing smaller food places to be overlooked and disappear. When you heard about 868MHz radio through an open call, you thought it could be your chance to start your career by writing food place reviews about the city. Additionally, you believe that the radio could be a great platform to invite others to share their tips and opinions. Since then, you have become interested in experimenting with different formats on the radio.

      - Despite the reservations held by most 868Mhz members regarding Rotterdam's smart city development, you find the bonuses and credits offered by the platform quite attractive and don't want to miss out. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/16.php b/public/metal/player/16.php deleted file mode 100644 index ffe3a80..0000000 --- a/public/metal/player/16.php +++ /dev/null @@ -1,113 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Nose

      -

      group affiliation: observer

      -

      ether credits:

      - -

      -
      -

      - You have a peculiar habit of constantly wanting to smell things. Perhaps it stems from growing up with a dog, as your parents were often busy, and your dog was your constant companion. Smelling things gives you a sense of better understanding them, and you make sense of the world through scent, relying on it for memorization. While being nosy isn't always welcomed, it has the advantage of making you exceptionally curious and well-informed.

      - Having grown up in the countryside, the overwhelming array of smells but first and foremost stinkyness in the city leaves you in awe. To process this sensory overload, you journal about your daily olfactory experiences or have to discuss them with someone.

      - One day, you accidentally ended up at a rave, where you were on the brink of a breakdown due to the overwhelming scent of the smoke machine and the collective sweat of the crowd. That's when Spin came to your rescue. Since then she has taken you under her wing and helped you navigate city life. She invited you to become part of 868mHz to connect with people here in the city. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/17.php b/public/metal/player/17.php deleted file mode 100644 index d3571b4..0000000 --- a/public/metal/player/17.php +++ /dev/null @@ -1,111 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Gossip Generator

      -

      group affiliation: collector

      -

      ether credits:

      - -

      -
      -

      - Your curiosity knows no bounds when it comes to local folklore, history, and gossip. You have a penchant for unravelling the tales and intricacies behind various aspects of the city, from its historical legends to the relationships between its residents. You collect them all and you love even more to share them and to be honest, also adjust and modify them at times.

      You are a close friend of Spin, and she introduced you to the 868mHz community. You occasionally host local storytelling sessions on the radio, recognizing it as a powerful medium for bringing people together to share stories. You're concerned about the anonymity that often plagues city life, and you believe that fostering connections and community through storytelling is vital. Crowded and bustling places where you can meet and engage with people are essential to your sense of belonging, and you always strive to stay informed about everything, making you a great source and spreader of gossip.

      While you have concerns about the recording and analysis of citizens' data in Rotterdam's recent smart city developments, you can't deny that the promise of a safer city through crime prediction is a significant improvement. -

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/18.php b/public/metal/player/18.php deleted file mode 100644 index 78ba9b4..0000000 --- a/public/metal/player/18.php +++ /dev/null @@ -1,144 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Magpie

      -

      Group affiliation: Collector

      -

      ether credits:

      - -

      -
      -

      Unlike everyone else in this group, you are neither particularly tech-savvy - nor interested in all this smart technology and security talk. One reason for - this might be your complicated and tense relationship with your father, who is - the CEO of Exogen. He strongly disapproves of your friends and believes you are - wasting your time, urging you to pursue a more sensible profession. Nonetheless, - you become defensive when people criticise Exogen or plan to vandalise - it.

      You are the youngest member of the group. Despite being above-average smart, - you have one significant disadvantage—you are extremely susceptible to anything - that appears enticing, whether it’s something shiny, a tempting advertisement, - or an enticing online offer. Unfortunately, this vulnerability makes you an - easy target for frivolous purchases, accepting all kinds of cookies, and, most - notably, scammers and hackers. You get hacked at least weekly because you click - on links promising you supposed winnings, like the $500,000 from Nelson Mandela’s - cousin or aunt (he seemingly had a huge family).

      - However, your attraction to shiny things in the virtual world becomes an advantage - in the real world. You possess a natural talent for finding treasures of - all kinds, almost as if you are magically drawn to them. Not every treasure is - immediately obvious in its value, and you understand that some treasures are - meant for others. Your pockets are often filled with curious items that you - carry around, each looking for its rightful owner. You have a unique ability to - sense when people need a treasure, often before they realise it themselves, you - are there to hand them what could be useful for them in the future. - You, Nine, Wire, and Spin are childhood friends who all grew up in the same - neighbourhood. From a young age, you shared a passion for fighting injustice. - It all began with a detective club, which later evolved into weed protection - activism, a graffiti gang, and eventually, a pirate radio collective. Your pirate - radio group would hack into private radio channels once a month and deliver - 20-30 minutes of jokes. Unfortunately, one day, you got caught, and since - you were all minors, your parents were fined an exorbitant amount of money. - Fortunately, your father covered the fee, but this incident marked the end of - your official club activities.

      A few years later, as your group of friends expanded, you came up with the idea - of resurrecting your radio activities, but this time, you’d operate from the - underground and online. You realised that radio was the perfect tool to address - your concerns about losing control over the history and future of the city. It - would provide you with a platform to speak and connect with like-minded individuals.

      - -
      -

      - - - -
      -
      -
      - - - - - - diff --git a/public/metal/player/19.php b/public/metal/player/19.php deleted file mode 100644 index f2c1d70..0000000 --- a/public/metal/player/19.php +++ /dev/null @@ -1,106 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      - -

      -

      -
      -

      - -
      -

      -
      - -


      - - - - -
      -
      -
      - - - - - - - diff --git a/public/metal/player/2.php b/public/metal/player/2.php deleted file mode 100644 index 71c9936..0000000 --- a/public/metal/player/2.php +++ /dev/null @@ -1,112 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - -
      -

      Home

      - - -

      Hello

      -

      Hello

      - - -
      - - -

      >>> CACHE CODE:

      -
      - -


      -
      - - - -
      -

      Log out

      - - - - -

      Log in or sign up

      - - - - - - - - - diff --git a/public/metal/player/20.php b/public/metal/player/20.php deleted file mode 100644 index 997679c..0000000 --- a/public/metal/player/20.php +++ /dev/null @@ -1,110 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      - -

      Urban Herbalist

      -

      ether credits:

      -

      -
      -

      - -
      -

      - - - - -
      -
      -
      - - - - - - diff --git a/public/metal/player/21.php b/public/metal/player/21.php deleted file mode 100644 index 0c64edd..0000000 --- a/public/metal/player/21.php +++ /dev/null @@ -1,108 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      - -

      -

      -
      -

      - -
      -

      - -
      - -


      - - - - -
      -
      -
      - - - - - - - diff --git a/public/metal/player/22.php b/public/metal/player/22.php deleted file mode 100644 index b8f9e23..0000000 --- a/public/metal/player/22.php +++ /dev/null @@ -1,106 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      - -


      - -

      -

      -
      -

      - -
      -

      - - - - -
      -
      -
      - - - - - - diff --git a/public/metal/player/23.php b/public/metal/player/23.php deleted file mode 100644 index b8f9e23..0000000 --- a/public/metal/player/23.php +++ /dev/null @@ -1,106 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      - -


      - -

      -

      -
      -

      - -
      -

      - - - - -
      -
      -
      - - - - - - diff --git a/public/metal/player/3.php b/public/metal/player/3.php deleted file mode 100644 index a418c2a..0000000 --- a/public/metal/player/3.php +++ /dev/null @@ -1,120 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - - -
      -
      -
      - -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Wire: 53000 Volt

      -

      ether credits:

      - -

      -
      -

      You've been technically savvy since early childhood, always curious about how things work. At the age of 5, you dismantled and reassembled a coffee machine for the first time, though it couldn't brew coffee afterward. You did manage to convert the milk frother valve into a bubble machine. Data security and privacy are paramount concerns for you, and you dislike how tech giants exploit us in our everyday communication through smartphones and apps. Consequently, you're constantly on the lookout for alternative communication tools, such as letterboxing, wire phones, or chalk marks in urban spaces. - Although you're often referred to as "Wire," you are more like the electrical voltage being delivered.

      You're a bundle of energy and one of the founders and driving forces behind 868mHz. Your vision is to create a platform where a cacophony of peculiar voices and unconventional perspectives is amplified. You're also a connector, not just in the sense of wiring things together, but in connecting people with each other. Ensuring that all interested individuals feel welcome and heard within the 868mHz community is of great importance to you. - Regarding your radio contributions, you see yourself as a DJ and believe you have a knack for choosing the right music.

      Unfortunately, your sense of timing is a bit off-beat, often leading to inappropriate song selections that don't quite match the mood or each other. However, due to the community's politeness and respect, no one dares to tell you, allowing you to continue believing in your special talent for music selection. - Your energy level is consistently high, sometimes causing you to act too quickly. Accidents are a common occurrence, particularly when soldering, resulting in your hands resembling a battlefield, perpetually covered in plasters and bandages. People have come to accept it as your distinctive style. - You, Nine, Spin, and (Roos) are childhood friends who all grew up in the same neighbourhood.

      From a young age, you shared a passion for fighting injustice. It all began with a detective club, which later evolved into weed protection activism, a graffiti gang, and eventually, a pirate radio collective. Your pirate radio group would hack into private radio channels once a month and deliver 20-30 minutes of jokes. Unfortunately, one day, you got caught, and since you were all minors, your parents were fined an exorbitant amount of money. Fortunately, (Roos)'s father covered the fee, but this incident marked the end of your official club activities. - A few years later, as your group of friends expanded, you came up with the idea of resurrecting your radio activities, but this time, you'd operate from the underground and online. You realised that radio was the perfect tool to address your concerns about losing control over the history and future of the city. It would provide you with a platform to speak and connect with like-minded individuals. -

      - -
      -

      - - - - -
      -
      -
      - - - - - - diff --git a/public/metal/player/4.php b/public/metal/player/4.php deleted file mode 100644 index 56c9f7b..0000000 --- a/public/metal/player/4.php +++ /dev/null @@ -1,116 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      Spin:→ the spider

      -

      Group affiliation: Collector

      -

      ether credits:

      - -

      -

      You've always had a penchant for the magical and spiritualistic. You enjoy conducting rituals and infuse a cultic flavour into whatever you're engaged with.

      - Your strong need to be among humans and build communities is a driving force in your life. You view community-building as one of humanity's most potent tools. In an age marked by capitalism's rise and technological advancements, you see the danger of humans isolating themselves. You believe that isolated individuals are weak and incapable of effective resistance. Only together, as a community fueled by love and care, can we muster the strength to construct structures of solidarity, support each other, and resist exploitation. You're preoccupied with the question of how we can create a society that is caring and just for everyone. As a result, you often invent political systems and societal models, with your friends often serving as test subjects for your ideas.

      - Within the 868mHz community, your caring and altruistic engagement has earned you the moniker 'the mother of the community,' although you dislike this term. You see yourself more as a spider, weaving webs of connection and drawing people into those webs.

      - You, Nine, Wire, and (Roos) are childhood friends who all grew up in the same neighbourhood. From a young age, you shared a passion for fighting injustice. It all began with a detective club, which later evolved into weed protection activism, a graffiti gang, and eventually, a pirate radio collective. Your pirate radio group would hack into private radio channels once a month and deliver 20-30 minutes of jokes. Unfortunately, one day, you got caught, and since you were all minors, your parents were fined an exorbitant amount of money. Fortunately, (Roos)'s father covered the fee, but this incident marked the end of your official club activities.

      - A few years later, as your group of friends expanded, you came up with the idea of resurrecting your radio activities, but this time, you'd operate from the underground and online. You realised that radio was the perfect tool to address your concerns about losing control over the history and future of the city. It would provide you with a platform to speak and connect with like-minded individuals. -

      -

      -
      - - - - - -
      -
      -
      - - - - - - - diff --git a/public/metal/player/5.php b/public/metal/player/5.php deleted file mode 100644 index fde350a..0000000 --- a/public/metal/player/5.php +++ /dev/null @@ -1,112 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Architectural Psychic

      -

      Group affiliation: Observer

      -

      ether credits:

      - -

      -
      -

      You possess a deep interest in architecture, particularly in the rich history and diverse styles found in Rotterdam's buildings. An intriguing belief sets you apart - you think you have a psychic ability to touch a building and read its history. However, not all your readings are accurate, which is not necessarily a problem, a good story can also be valuable and you're still learning to hone this unique skill.

      - You discovered 868mHz through a friend from university who is a regular listener of 868mHz. Your friend recognized the potential for your abilities in the world of radio and encouraged you to introduce yourself to the community. Radio's history with psychics intrigued you, leading you to explore this avenue. Given the station's openness to various voices and talents, you decided to join and share your architectural readings, and in the community you have found a bunch of people similarly weird as you are.

      - Despite the reservations held by most 868Mhz members regarding Rotterdam's smart city development, you find the bonuses and credits offered by the platform quite attractive and don't want to miss out. -

      - -
      -

      - - - - -
      -
      -
      - - - - - \ No newline at end of file diff --git a/public/metal/player/6.php b/public/metal/player/6.php deleted file mode 100644 index f91089d..0000000 --- a/public/metal/player/6.php +++ /dev/null @@ -1,101 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -

      -

      - -

      -
      -

      Please email your profile number to info@eixo.codes along with your character name to receive your profile.

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/7.php b/public/metal/player/7.php deleted file mode 100644 index d581d20..0000000 --- a/public/metal/player/7.php +++ /dev/null @@ -1,127 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      *//Keep_it_Locked//*

      -

      Group affiliation: Collector

      -

      ether credits:

      - -

      -
      -

      They call you the Alchemist because you possess the unique ability to transmute - concepts or ideas into code and devices. This talent comes so intuitively to - you that you often find it difficult to explain how you came to your results.. - Generally, talking to people is difficult, you prefer not to speak much, as you - are a shy and introverted person—a true nerd. Nonetheless, you run a successful - underground bureau where people seek your expertise for advanced, specialised, - and often illegal cyber and digital technology problems. - You crossed paths with Nine/9 a few years ago through mutual connections. She - needed your assistance in hacking into the history of her brand-new electric - toothbrush, which was sending her toothbrushing data to her health insurance - company, leading to a dispute over dental treatment payments. Cases like these - are a breeze for you. Since then, she has become a frequent client and even - somewhat of a friend. - Although everyone sees you as a techno-nerd, deep down, you are a truly romantic - person. You express your feelings through beautiful love poems that you - write in different code languages. However, your shyness prevents you from - sharing them with the world. Instead, you often hack into websites and incorporate - your poems as code into their source code, hoping that one day your expressions - of love will be discovered, by someone or something that truly deserves - it.

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/8.php b/public/metal/player/8.php deleted file mode 100644 index b32bae0..0000000 --- a/public/metal/player/8.php +++ /dev/null @@ -1,111 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Cheshire Cat

      -

      group affiliation: observer

      -

      ether credits:

      - -

      -
      -

      You are renowned for your talent to slip in and out of places almost unnoticed, earning you the role of a witness to numerous peculiar situations and a keeper of secret knowledge. You have a fascination for observing things not intended for the public eye, often exploring underground and visiting places where nobody recognizes you. Maintaining your anonymity is crucial, and you are a master of disguise. Your unusual passion has turned you into an expert on the city's underground, the mysterious locations, and its undiscovered nooks and crannies. Additionally, you possess a unique gift: you can communicate with cats. These conversations with felines grant you an even deeper understanding of the city's peculiar and enigmatic corners.

      - You've known Nine since your teenage years, having met while volunteering at an animal shelter, which led to a strong friendship. However, in recent times, it seems that your relationship with Nine has become strained. You feel she has let you down on several occasions, as she appears to be increasingly self-focused. You suspect her recent behaviour is an attempt to seek attention, which somewhat annoys you. Like this story she told the other day where she thought there was someone cloning her on the internet, she is definitely overestimating her own importance.

      - Your fascination lies in the power of radio to amplify voices and disseminate messages. You firmly believe that not only human voices but also those of animals should be heard. Consequently, you ensure there is ample animal-related content on the radio, and occasionally, you organize listening sessions for animals.

      - Despite the reservations held by most 868Mhz members regarding Rotterdam's smart city development, you find the bonuses and credits offered by the platform quite attractive and don't want to miss out.

      -

      -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/9.php b/public/metal/player/9.php deleted file mode 100644 index 8265b81..0000000 --- a/public/metal/player/9.php +++ /dev/null @@ -1,109 +0,0 @@ -query($sql); - - $user = $result->fetch_assoc(); -} - -?> - - - - eixogen - - - - - - - - - - - - - -
      - -

      or

      - -


      -

      Home

      -

      Hello

      -

      profile number:

      -


      - -
      -
      -
      -
      -

      > enter codewords below to mine ether credits:
      -

      -
      - -


      -
      -

      The Racoon

      -

      group affiliation: wanderer

      -

      ether credits:

      - -

      -
      -

      You are a passionate flaneur who revels in wandering where you’re not supposed to. If an area is not supposed to be entered or walked through, it is almost irresistible to you. People often confuse your curiosity with criminal energy, but you have no bad intentions. You wander through the city scanning it for accessibility in every imaginable layer: Your interest lies in the choreography of pedestrian areas and how they shape interactions within the city, highlighting power dynamics between walking and other modes of transportation. You constantly seek unknown and uncharted areas, driven by an insatiable desire to discover new places.

      You came across 868mHz while listening to the radio during your walks. As someone that does not really fit anywhere you for the first time feel that you found a community that shares your passion for movement and exploring the city and where you have the feeling you don’t have to hide yourself and can just be as you are with all your weird habits, ticks and peculiarities.

      Although you maintain a critical stance toward Eixogen, you do believe that, in general, having smart city technology implemented is beneficial, as it could help reduce air pollution.

      - -
      -

      - - - - -
      -
      -
      - - - - \ No newline at end of file diff --git a/public/metal/player/etherpad_proxy.php b/public/metal/player/etherpad_proxy.php deleted file mode 100644 index 5c11efa..0000000 --- a/public/metal/player/etherpad_proxy.php +++ /dev/null @@ -1,14 +0,0 @@ -real_escape_string($_POST["word"])); - -$result = $mysqli->query($sqlword); -$word = $result->fetch_row(); -//print_r($word); -//print_r($word[0]); - - -if ($word[0] > 0 ) { - - $mysqliword = include __DIR__ . "/../database.php"; - - //$sqlid = "SELECT * FROM user WHERE id = 1"; - $sqlid = "SELECT * FROM user WHERE id = '".$_SESSION['user_id']."'"; - - $resultid = $mysqliword->query($sqlid); - $info = $resultid->fetch_assoc(); - $id = $info['id']; - //print_r($id); - $yourcolumn = $info['id']; - //print_r($yourcolumn); - - $sqlcheckword = sprintf("SELECT EXISTS (SELECT * FROM check_words WHERE `".$id."` = '%d' LIMIT 1)",$mysqliword->real_escape_string($_POST["word"])); - - $checkresult = $mysqliword->query($sqlcheckword); - //print_r($checkresult); - $isword = $checkresult->fetch_row(); - //print_r($isword); - - - if ($isword[0] == 0 ) { - - $remembercache = "INSERT INTO check_words (`".$id."`) VALUES (?)"; - - $glue = $mysqli->stmt_init(); - - if ( ! $glue->prepare($remembercache)) { - die("SQL error: " . $mysqli->error); - } - - $glue->bind_param("s", $_POST["word"]); - - $glue->execute(); - - - $mysqliword = "UPDATE user SET score = score + 25 WHERE id = {$id}"; - - $stmt = $mysqli->prepare($mysqliword); - - $stmt->execute(); - - echo "+ + ++++ ++ + 25 ether credits"; - - } else { - echo ".. .* you've already used this code **~... .. ."; - } - -} else { - echo ".. .* i can't recognize this code **~... .. ."; - $cachegone = true; -} - -?> diff --git a/public/metal/portal.php b/public/metal/portal.php deleted file mode 100644 index f94576d..0000000 --- a/public/metal/portal.php +++ /dev/null @@ -1,79 +0,0 @@ -query($sql); - $user = $result->fetch_assoc(); -} - -?> - - - - - eixogen - - - - - - - - - - -
      -
      - -

      welcome to eixogen,

      - - -

      -

      [inbox]

      -

      [drdrift]: stop on a traffic light for 10 periods. what do you notice?





      -

      { {{ we've stashed some ethers }} }


      - - - - - -query($sql_scores); - -$ranking = 1; -if (mysqli_num_rows($sql_score)) { - while ($row = mysqli_fetch_array($sql_score)) { - echo " - - - "; - $ranking++; - } -} - -?> - - - - - - - - - - - - - - - - - diff --git a/public/metal/process-reset-password.php b/public/metal/process-reset-password.php deleted file mode 100644 index 9a8180b..0000000 --- a/public/metal/process-reset-password.php +++ /dev/null @@ -1,60 +0,0 @@ -prepare($sql); - -$stmt->bind_param("s", $token_hash); - -$stmt->execute(); - -$result = $stmt->get_result(); - -$user = $result->fetch_assoc(); - -if ($user === null) { - die("token not found"); -} - -if (strtotime($user["reset_token_expires_at"]) <= time()) { - die("token has expired"); -} - -if (strlen($_POST["password"]) < 8) { - die("Password must be at least 8 characters"); -} - -if ( ! preg_match("/[a-z]/i", $_POST["password"])) { - die("password must contain at least one letter"); -} - -if ( ! preg_match("/[0-9]/", $_POST["password"])) { - die("password must contain at least one number"); -} - -if ($_POST["password"] !== $_POST["password_confirmation"]) { - die("passwords must match"); -} - -$password_hash = password_hash($_POST["password"], PASSWORD_DEFAULT); - -$sql = "UPDATE user - SET password_hash = ?, - reset_token_hash = NULL, - reset_token_expires_at = NULL - WHERE id = ?"; - -$stmt = $mysqli->prepare($sql); - -$stmt->bind_param("ss", $password_hash, $user["id"]); - -$stmt->execute(); - -echo " ~ * password updated . you can now enter -**"; diff --git a/public/metal/process-signup.php b/public/metal/process-signup.php deleted file mode 100644 index a93141f..0000000 --- a/public/metal/process-signup.php +++ /dev/null @@ -1,84 +0,0 @@ - -real_escape_string($_POST["nfc"])); - -//print_r($sqlnfc); -$result = $mysqlinfc->query($sqlnfc); -//print_r($result); - -$user = $result->fetch_row(); -print_r($user); -print_r($user[0]); - -if ($user[0] > 0 ) { - - $mysqli = require __DIR__ . "/database.php"; - - $sql = "INSERT INTO user (name, email, password_hash, nfc) - VALUES (?, ?, ?, ?)"; - - $stmt = $mysqli->stmt_init(); - - if ( ! $stmt->prepare($sql)) { - die("SQL error: " . $mysqli->error); - } - - $stmt->bind_param("ssss", - $_POST["name"], - $_POST["email"], - $password_hash, - $_POST["nfc"]); - - if ($stmt->execute()) { - header("Location: signup-success.html"); - exit; - - } else { - - if ($mysqli->errno === 1062) { - die("email already taken"); - } else { - die($mysqli->error . " " . $mysqli->errno); - } - } -} else { - die("token not here"); -} - -?> diff --git a/public/metal/reset-password.php b/public/metal/reset-password.php deleted file mode 100644 index a7347d7..0000000 --- a/public/metal/reset-password.php +++ /dev/null @@ -1,65 +0,0 @@ -prepare($sql); - -$stmt->bind_param("s", $token_hash); - -$stmt->execute(); - -$result = $stmt->get_result(); - -$user = $result->fetch_assoc(); - -if ($user === null) { - die("token not found"); -} - -if (strtotime($user["reset_token_expires_at"]) <= time()) { - die("token has expired"); -} - -?> - - - - eixogen - - - - - - - - - - - - -
      -

      Reset Password

      - -
      - - - - - - - - - - - -
      - - diff --git a/public/metal/save_user_text.php b/public/metal/save_user_text.php deleted file mode 100644 index ace272d..0000000 --- a/public/metal/save_user_text.php +++ /dev/null @@ -1,24 +0,0 @@ - 'User text saved successfully.']); - } else { - // Send an error response - http_response_code(400); - echo json_encode(['message' => 'Invalid request.']); - } -} else { - // Send an error response if the user is not logged in - http_response_code(403); - echo json_encode(['message' => 'Access denied.']); -} -?> diff --git a/public/metal/send-password-reset.php b/public/metal/send-password-reset.php deleted file mode 100644 index 8bc14bf..0000000 --- a/public/metal/send-password-reset.php +++ /dev/null @@ -1,40 +0,0 @@ -prepare($sql); - -$stmt->bind_param("sss", $token_hash, $expiry, $email); - -$stmt->execute(); - -if ($mysqli->affected_rows) { - - $subject = "~* *..* password-shifting ~"; - $body = "jump to https://eixo.codes/metal/reset-password.php?token=$token and conjure up your new password ~* *.. *"; - $from = 'spells'; - $headers = "From: $from"; - -if (mail($email, $subject, $body, $headers,)) { - echo '*~```` email funnelled your way `*'; -} else { - echo "* .. i couldn't send you an email . please give it one more try *` "; -} - -} -echo " `` please check your inbox `*"; - -?> diff --git a/public/metal/signup-success.html b/public/metal/signup-success.html deleted file mode 100644 index cd5f978..0000000 --- a/public/metal/signup-success.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - eixogen - - - - - - - - - - - -
      -

      signup

      - -

      * . ** ~ you are here now -- you can step in.

      -
      - - diff --git a/public/metal/signup.html b/public/metal/signup.html deleted file mode 100644 index 63ee9e3..0000000 --- a/public/metal/signup.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - eixogen - - - - - - - - - - - - -
      -
      -
      -
      - × - The code of conduct -


      - - We are all on the same level: All members of 868mHz are seen as equal and on the same level, regardless of their background and position. This should be a place free from stress, pressure, and competition, allowing vulnerability, experimentation, and doubt.

      - We Respect each other: Respect for all members is required. While people may not like each other, it is important to maintain a cordial and tolerant level of respect for all members.

      - Celebrate Difference: Every member has fun in different ways, and with different aspects, has different skills and knowledge. All members should do their best to contribute to the enjoyment of all members and learn from each other.

      - We Listen to each other: Everyone is great at what they are doing and has a message that is important. In listening to each other there's always an opportunity to learn something new from someone else.

      -
      -
      -

      signup

      - -
      -
      - - - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - -
      - - -
      - - - - -
      - - - - - - - - - - - - diff --git a/public/metal/validate-email.php b/public/metal/validate-email.php deleted file mode 100644 index de1d491..0000000 --- a/public/metal/validate-email.php +++ /dev/null @@ -1,15 +0,0 @@ -real_escape_string($_GET["email"])); - -$result = $mysqli->query($sql); - -$is_available = $result->num_rows === 0; - -header("Content-Type: application/json"); - -echo json_encode(["available" => $is_available]); diff --git a/public/metal/validate-nfc.php b/public/metal/validate-nfc.php deleted file mode 100644 index 20fb059..0000000 --- a/public/metal/validate-nfc.php +++ /dev/null @@ -1,14 +0,0 @@ -real_escape_string($_GET["nfc"])); - -$result = $mysqli->query($sql); - -$token_yes = $result->fetch_row()[0] === 1; - -header("Content-Type: application/json"); - -echo json_encode(["tokenyes" => $token_yes]); -?> diff --git a/public/myrra/2.mp3 b/public/myrra/2.mp3 deleted file mode 100644 index b3a407a..0000000 Binary files a/public/myrra/2.mp3 and /dev/null differ diff --git a/public/myrra/6.mp3 b/public/myrra/6.mp3 deleted file mode 100644 index 04b7aad..0000000 Binary files a/public/myrra/6.mp3 and /dev/null differ diff --git a/public/myrra/7.mp3 b/public/myrra/7.mp3 deleted file mode 100644 index 7558e8b..0000000 Binary files a/public/myrra/7.mp3 and /dev/null differ diff --git a/public/myrra/8.mp3 b/public/myrra/8.mp3 deleted file mode 100644 index 1216bf7..0000000 Binary files a/public/myrra/8.mp3 and /dev/null differ diff --git a/public/myrra/F06C57C1.png b/public/myrra/F06C57C1.png deleted file mode 100644 index 92631ea..0000000 Binary files a/public/myrra/F06C57C1.png and /dev/null differ diff --git a/public/myrra/audio1.mp3 b/public/myrra/audio1.mp3 deleted file mode 100644 index 87c42ef..0000000 Binary files a/public/myrra/audio1.mp3 and /dev/null differ diff --git a/public/myrra/audio2.mp3 b/public/myrra/audio2.mp3 deleted file mode 100644 index 3d686cb..0000000 Binary files a/public/myrra/audio2.mp3 and /dev/null differ diff --git a/public/myrra/audio3.mp3 b/public/myrra/audio3.mp3 deleted file mode 100644 index 5e410cd..0000000 Binary files a/public/myrra/audio3.mp3 and /dev/null differ diff --git a/public/myrra/audio4.mp3 b/public/myrra/audio4.mp3 deleted file mode 100644 index 0474072..0000000 Binary files a/public/myrra/audio4.mp3 and /dev/null differ diff --git a/public/myrra/icon-new.svg b/public/myrra/icon-new.svg deleted file mode 100644 index 822ad00..0000000 --- a/public/myrra/icon-new.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/myrra/index.html b/public/myrra/index.html deleted file mode 100644 index 4f48577..0000000 --- a/public/myrra/index.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - Agenten van Myrra - - - - -

      Agenten van Myrra

      - -
      - Start Image -
      - - - - - - - - - - - - - - - - - - diff --git a/public/myrra/tifax.ttf b/public/myrra/tifax.ttf deleted file mode 100644 index ec26ea4..0000000 Binary files a/public/myrra/tifax.ttf and /dev/null differ diff --git a/public/myrra/video1.mp3 b/public/myrra/video1.mp3 deleted file mode 100644 index 55607f2..0000000 Binary files a/public/myrra/video1.mp3 and /dev/null differ diff --git a/public/myrra/video1.mp4 b/public/myrra/video1.mp4 deleted file mode 100644 index 5b5127e..0000000 Binary files a/public/myrra/video1.mp4 and /dev/null differ diff --git a/public/myrra/video2.mp3 b/public/myrra/video2.mp3 deleted file mode 100644 index 111edc2..0000000 Binary files a/public/myrra/video2.mp3 and /dev/null differ diff --git a/public/myrra/video2.mp4 b/public/myrra/video2.mp4 deleted file mode 100644 index 5ce06b4..0000000 Binary files a/public/myrra/video2.mp4 and /dev/null differ diff --git a/public/myrra/video3.mp3 b/public/myrra/video3.mp3 deleted file mode 100644 index f98ec1c..0000000 Binary files a/public/myrra/video3.mp3 and /dev/null differ diff --git a/public/myrra/video3.mp4 b/public/myrra/video3.mp4 deleted file mode 100644 index 118e6d2..0000000 Binary files a/public/myrra/video3.mp4 and /dev/null differ diff --git a/public/myrra/video4.mp3 b/public/myrra/video4.mp3 deleted file mode 100644 index d5cc6be..0000000 Binary files a/public/myrra/video4.mp3 and /dev/null differ diff --git a/public/myrra/video4.mp4 b/public/myrra/video4.mp4 deleted file mode 100644 index 52d3250..0000000 Binary files a/public/myrra/video4.mp4 and /dev/null differ diff --git a/public/nine.pdf b/public/nine.pdf deleted file mode 100644 index d315896..0000000 Binary files a/public/nine.pdf and /dev/null differ diff --git a/public/radio/index.html b/public/radio/index.html deleted file mode 100644 index 88fbbfc..0000000 --- a/public/radio/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - Radio, what's new? - - - -
      -

      - -
      -
      1
      -
      2
      -
      3
      -
      4
      -
      5
      -
      6
      -
      7
      -
      8
      -
      9
      -
      0
      -
      -
      - -
      - - - - \ No newline at end of file diff --git a/public/rasco1.mp3 b/public/rasco1.mp3 deleted file mode 100644 index f1e5d74..0000000 Binary files a/public/rasco1.mp3 and /dev/null differ diff --git a/public/showroom-riddle/index.html b/public/showroom-riddle/index.html deleted file mode 100644 index c14484b..0000000 --- a/public/showroom-riddle/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - eixogen - - - -
      - Rotated Image -
      - - diff --git a/public/space_inbetween.html b/public/space_inbetween.html deleted file mode 100644 index 8365652..0000000 --- a/public/space_inbetween.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - -
      -
      - - -
      - - -
      - -
      - -
      -

      *~* **~ the space inbetween ~

      -
      -




      - -

      [by user Rasco]

      -

      [status: active]

      - [51.921648, 4.4360374] -

      [outdoors]

      -

      :::get off the sidewalk and go through the gate:::

      -
      - - -
      -

      In this medium scale urban outdoor trail you'll find yourself in a space where the absence of things and the spaces in-between hold the clues you're looking for. Away from the prying cybernetic eyes of Eixogen. And be sure to wear boots that can deal with a muddy terrain!

      Go to this location and then - only then - open this link for the first audio fragment that will lead you to the first of four caches hidden in this area. Each cache holds a number and clues to find the next cache. Happy hunting! - -

      play me -

      If for some reason you are completely stuck, feel free to call me for an extra hint: Bruno Setola (0641788009) - -

      -

      -
      - - - -

      ----enter the codeword into your personal page to mine ether credits----

      - - - -
      - - - - - -
      - -

      -
      - -
      -

      -
      -
      - ↪ log -
      - - -
      -

      LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

      -
      -
      -

      LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

      -
      -
      -

      LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

      -
      -
      -

      LOG 4 03:86:00 07-05-22 PORT: 20.15.18

      -
      -
      -

      LOG 5 06:86:00 17-05-22 PORT: 868

      -
      - -
      -

      - -
      -
      - ↪ -
      - -
      - - - -
      - -
      - - -
      - -
      - - - - - - - - - - - diff --git a/public/style.css b/public/style.css index 4bffc71..d906848 100644 --- a/public/style.css +++ b/public/style.css @@ -1,473 +1,46 @@ * { - box-sizing: border-box; - margin: 0px; - padding: 0px; - - } -#title{ - font-size: 2em; - color: #a7a7fe; - text-align: left; + box-sizing: border-box; + margin: 0; + padding: 0; } -.profile{padding-left:1.8vw;} - body { - font: 1.0em/1.6 'Inconsolata', monospace; - color: #c9cdc0; + font-family: 'Inconsolata', monospace; + color:lightblue; font-weight: 400; background-color: black; - text-shadow: #ff7300; - /* overflow-y: hidden; - overflow-x: hidden; */ -} - -.init { - width: 100%; - margin: 0% auto; -} - -.init input { - display: block; - padding: 10px !important; - margin: 10px; -} - -a { - text-decoration: none; - color: orange; -} - -td, th { - text-align: center; - color: #9288b7; -} - -th, #highscore p { - color: #b32727; - font-weight: bold; -} - -.red { - background-color: #491616; -} - -.red a { - color: #b9831a; -} - -/* Use a media query to add a breakpoint at 800px: */ -@media screen and (max-width: 800px) { - .left, .main, .right { - width: 100%; /* The width is 100%, when the viewport is 800px or smaller */ - } -} - -#map{ - display: block; - margin-left: auto; - margin-right: auto; - /* margin-top:2.5vh; */ - margin-bottom:2.5vh; -} - -#zoommap{ - position: fixed; - width: 68%; - /* margin-left: auto; - margin-right: auto; */ - /* margin-top:2.5vh; */ - top: 10px; - margin-bottom:2.5vh; - display:none; - /* height: 60vh; */ -} - - -#svg55{ - width: 100%; - height: 100%; - padding-top: none; -} - -/* .zoom>img{ - height: calc(100vh - 60px); - width: auto; -} */ - -/* #dreammap{ - height: 90vh; - -} */ - -#gateway-distance{ - font: 1.2em/1.6 'Inconsolata', monospace; -} - -.flex-container { - display: flex; - flex-direction: column; - -} - -.flex-left { - width: 100%; - height: 100vh; - /* border: 2px solid #c9cdc0; */ - border-radius: 1px; - /* margin-right:3px; */ - padding: 5px; - padding-left: 10px; - padding-right: 10px; - padding-top: 10px; - background-color:rgb(26, 26, 26, 0); - -} - -/* .flex-right { - width: 45%; - height: 100vh; - /* border: 5px solid #c9cdc0; */ - /* border-radius: 2px; - padding: 5px; - padding-right: 10px; - padding-top: 10px; - background-color:rgb(26, 26, 26); -} */ - -.section{ - border: 1px solid #3d3f38; - border-radius:6px; - display: flex; - flex-direction: column; - padding: 5px; - margin-bottom:6px; - color: #FF4800; - background-color: #0e0e0a; -} -.section2{ - border: 2px solid #3d3f38; - border-radius:6px; - display: flex; - flex-direction: row; - padding: 5px; - margin-bottom:6px; - color: rgb(88, 130, 255); - background-color: #0e0e0a; -} - -.button-base{ - padding: 5px; margin: 5px; + } -#nav-console{ - color: #c9cdc0; -} - -#scene1{ - display: none; -} +.wrapper { + display: grid; -#input{ - background-color: #c9cdc0; - border: 2px solid black; - font: 1.2em/1.6 'Inconsolata', monospace; - -webkit-appearance: none; - -ms-appearance: none; - -moz-appearance: none; - appearance: none; - border-radius: 5px; } -button{ - background-color: #bd3e00; - font: 1.2em/1.6 'Inconsolata', monospace; - color:black; +.flex-container { + margin-top: 20px; + margin-left: 4vw; + margin-right: 4vw; + flex-wrap: wrap; + display: grid; + grid-template-columns: repeat(4, 1fr); /* 4 columns */ + grid-template-rows: repeat(4, 1fr); /* 4 rows */ + gap: 2px; /* Gap between grid items */ +} + +/* Style for each div within the grid */ +.flex-container > div { + width: calc(25% - 10px); /* 25% width for each div with 10px gap */ + height: 100px; /* Set height as needed */ + background-color: rgba(51, 51, 51, 0.84); /* Background color */ + margin-bottom: 10px; /* Add some space at the bottom */ + text-align: center; /* Center text */ + line-height: 100px; /* Vertically center text */ + padding: 2px; border-radius: 5px; - border: 2px solid black; - -webkit-appearance: none; - -ms-appearance: none; - -moz-appearance: none; - appearance: none; - margin-left: 2px; - margin-bottom: 4px; - padding-left: 4px; - padding-right: 4px; -} - -button:active{ - background-color: rgb(65, 184, 255); -} - - - -#log{ - visibility: hidden; - background-color: rgb(177, 193, 213); - color: black; -} - -#back{ - visibility: hidden; - width: 22%; - background-color: #c9cdc0; - color: black; - -} - -#back2{ - display: none; - width: 22%; - background-color: #c9cdc0; - color: black; -} - -#log1{ - display: none; - background-color: rgb(65, 184, 255); - border: none; - border-radius: 0px; - color: black; - padding: 1px; - padding-left: 6px; -} - - -#log2{ - display: none; - background-color: rgb(65, 184, 255); - color: black; - border-radius: 0px; - border: none; - padding: 1px; - padding-left: 6px; -} -#log3{ - display: none; - background-color: rgb(65, 184, 255); - color: black; - border-radius: 0px; - border: none; - padding: 1px; - padding-left: 6px; -} -#log4{ - display: none; - background-color: rgb(65, 184, 255); - color: black; - border-radius: 0px; - border: none; - padding: 1px; - padding-left: 6px; -} -#log5{ - display: none; - background-color: rgb(65, 184, 255); - color: black; - border-radius: 0px; - border: none; - padding: 1px; - padding-left: 6px; -} - -#log1:active{ - - background-color: rgb(129, 135, 121); - -} - -#log2:active{ - - background-color: rgb(129, 135, 121); - -} - -#log3:active{ - - background-color: rgb(129, 135, 121); - -} - -#log4:active{ - - background-color: rgb(129, 135, 121); - -} - -#log5:active{ - - background-color: rgb(129, 135, 121); - -} - -#dreamlog{ - display: none; -} - - -.flex-top { - position: absolute; - top:0px; - width: 100vw; - height: 50vh; - border-radius: 2px; - padding: 5px; - padding-right: 10px; - padding-top: 10px; - background-color:rgb(26, 26, 26); -} - -.flex-bottom { - position: absolute; - bottom:0px; - width: 100vw; - height: 50vh; - bottom:0px; - border-radius: 2px; - padding: 5px; - padding-right: 10px; - padding-top: 10px; - background-color:rgb(26,26,26); -} - -.section2{ - display: flex; - border: 2px solid black; - border-radius:1px; - display: flex; - flex-direction:row; - padding: 5px; - margin-bottom:6px; - color: white; - background-color: black; - width: 30vw; -} - -.section-main{ - - border: 2px solid #3d3f38; - border-radius:6px; - display: flex; - flex-direction: column; - padding: 5px; - margin-bottom:6px; - color: rgb(37, 37, 37); - background-color: #a5bad5ed; - -} -.flex-container2 { - display: flex; - flex-direction: row; + min-width: 22vw; + min-height: 24vh; + text-shadow: 0px 0px 10px #ff7300; } -#rect13:active{ - fill:yellow; -} - -#rect15:active{ - fill:yellow; -} - -.wrapper{ - margin: 0 auto; - max-width: 450px; - } - - .fullscreen-video { - position: fixed; - overflow: hidden; - top: 50%; - left: 50%; - min-width: 100%; - min-height: 100%; - width: auto; - height: auto; - transform: translateX(-50%) translateY(-50%); - z-index: -10; - } -.embed{width: 100%} - -#location-log{ - display: none; -} - -#chat-window{ - height: 40vh; - border: 1px solid #ccc; - padding: 10px; - overflow-y: scroll; -} - -#messages { - height: 40vh; - overflow-y: auto; - padding: 0; - word-wrap: break-word; -} - -#messages li { - padding: 5px; - margin-bottom: 10px; - display: block; -} - -.me { - text-align: right; - color: #e8b722; - padding-bottom: 2px; - border-radius: 4px; - display: inline-block; -} - -.others { - text-align: left; - color: #DE6C3F; - border-radius: 4px; - display: inline-block; -} - - - -input[type="text"] { - padding: 5px; -} - -#logo{ - max-width: 50vw; - min-width: 360px; -} - -#txt{background-color: #a0a09f;} - - /* The alert message box */ - .alert { - padding: 20px; - background-color: #ff5400; /* Red */ - color: white; - margin-top: 10px; - border-radius:6px; - position: sticky; - z-index: 2; -} - -/* The close button */ -.closebtn { - margin-left: 15px; - color: white; - font-weight: bold; - float: right; - font-size: 22px; - line-height: 20px; - cursor: pointer; - transition: 0.3s; -} - -/* When moving the mouse over the close button */ -.closebtn:hover { - color: black; -} -#objective{ - - background-color: #14260f; -} diff --git a/public/v1.html b/public/v1.html deleted file mode 100644 index 2c78986..0000000 --- a/public/v1.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - - - -
      -
      -
      - - -
      - -
      - - - - - - - - - - -
      - ↪ log -
      - - -
      -

      LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

      -
      -
      -

      LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

      -
      -
      -

      LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

      -
      -
      -

      LOG 4 03:86:00 07-05-22 PORT: 20.15.18

      -
      -
      -

      LOG 5 06:86:00 17-05-22 PORT: 868

      -
      - -
      -

      - -
      -
      - ↪ -
      - -
      - - - -
      - - - -
      - - -
      - -
      - - - - - - - - - - - - - - diff --git a/public/v2.html b/public/v2.html deleted file mode 100644 index 18bd574..0000000 --- a/public/v2.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - eixogen - - - - - - - - - - - - - - - - -
      -
      -
      - - -
      - -
      - - - - - - - - - - -
      - ↪ log -
      - - -
      -

      LOG 1 03:02:00 02-04-22 PORT: 9.1.13.

      -
      -
      -

      LOG 2 02:42:00 13-04-22 PORT: 16.18.15.

      -
      -
      -

      LOG 3 03:36:00 25-04-22 PORT: 20.5.3.

      -
      -
      -

      LOG 4 03:86:00 07-05-22 PORT: 20.15.18

      -
      -
      -

      LOG 5 06:86:00 17-05-22 PORT: 868

      -
      - -
      -

      - -
      -
      - ↪ -
      - -
      - - - -
      - - - -
      - - -
      - -
      - - - - - - - - - - - - - - diff --git a/x.html b/x.html deleted file mode 100644 index e69de29..0000000
      `` runner ~ ``* . ether credits * *
      {$row['name']}{$row['score']}