Copy disabled (too large)
Download .txt
Showing preview only (11,012K chars total). Download the full file to get everything.
Repository: rjaros/kvision-examples
Branch: master
Commit: c28cc78c0c12
Files: 538
Total size: 10.4 MB
Directory structure:
gitextract_l9t_x8j8/
├── .gitignore
├── LICENSE
├── README.md
├── addressbook/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ └── Model.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ └── messages-pl.po
│ │ └── jsTest/
│ │ ├── kotlin/
│ │ │ └── test/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── AppSpec.kt
│ │ └── resources/
│ │ └── css/
│ │ └── kvapp.css
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-ktor/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── logs/
│ │ └── ktor.log
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Dao.kt
│ │ │ ├── Db.kt
│ │ │ ├── Main.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.conf
│ │ └── logback.xml
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-spring-boot/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── application/
│ │ └── build.gradle.kts
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ ├── Security.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback.xml
│ │ └── schema.sql
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-spring-boot-oauth/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── application/
│ │ └── build.gradle.kts
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ ├── Security.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback.xml
│ │ └── schema.sql
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-tabulator/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ └── Model.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ └── messages-pl.po
│ │ └── jsTest/
│ │ ├── kotlin/
│ │ │ └── test/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── AppSpec.kt
│ │ └── resources/
│ │ └── css/
│ │ └── kvapp.css
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── desktop/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── Calculator.kt
│ │ │ │ ├── DesktopIcon.kt
│ │ │ │ ├── DesktopWindow.kt
│ │ │ │ ├── Paint.kt
│ │ │ │ ├── TextEditor.kt
│ │ │ │ └── WebBrowser.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ └── css/
│ │ │ └── kvapp.css
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── docs/
│ ├── addressbook/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── addressbook-tabulator/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── desktop/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── fomantic/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── helloworld/
│ │ ├── index.html
│ │ └── main.bundle.js
│ ├── patternfly/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── pokedex/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ ├── main.bundle.js.LICENSE.txt
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── workbox-a7df7adf.js
│ ├── showcase/
│ │ ├── index.html
│ │ ├── showcase.js
│ │ └── showcase.js.LICENSE.txt
│ ├── template/
│ │ ├── index.html
│ │ ├── template.js
│ │ └── template.js.LICENSE.txt
│ ├── template-tailwindcss/
│ │ ├── index.html
│ │ └── template-tailwindcss.js
│ └── todomvc/
│ ├── index.html
│ ├── main.bundle.js
│ └── package.json
├── encoder-fullstack-ktor/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.conf
│ │ └── logback.xml
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── fomantic/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── CardView.kt
│ │ │ │ ├── Components.kt
│ │ │ │ ├── State.kt
│ │ │ │ ├── Toolbar.kt
│ │ │ │ └── User.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── jquery.js
│ ├── tailwind.js
│ └── webpack.js
├── helloworld/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── Helloworld.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── helloworld.css
│ │ │ └── i18n/
│ │ │ ├── messages-de.po
│ │ │ ├── messages-en.po
│ │ │ ├── messages-es.po
│ │ │ ├── messages-fr.po
│ │ │ ├── messages-ja.po
│ │ │ ├── messages-ko.po
│ │ │ ├── messages-pl.po
│ │ │ ├── messages-ru.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── HelloworldSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── mini-template/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── src/
│ │ └── jsMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── App.kt
│ │ └── resources/
│ │ └── index.html
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── tailwind.js
│ └── webpack.js
├── patternfly/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── CardView.kt
│ │ │ │ ├── Components.kt
│ │ │ │ ├── ListView.kt
│ │ │ │ ├── Model.kt
│ │ │ │ ├── Redux.kt
│ │ │ │ ├── TableView.kt
│ │ │ │ ├── Toolbar.kt
│ │ │ │ └── User.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── pokedex/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── PokeBox.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── modules/
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── pwa.js
│ ├── tailwind.js
│ └── webpack.js
├── showcase/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── BasicTab.kt
│ │ │ │ ├── ButtonsTab.kt
│ │ │ │ ├── ChartTab.kt
│ │ │ │ ├── ContainersTab.kt
│ │ │ │ ├── DataTab.kt
│ │ │ │ ├── DragDropTab.kt
│ │ │ │ ├── DropDownTab.kt
│ │ │ │ ├── FormTab.kt
│ │ │ │ ├── LayoutsTab.kt
│ │ │ │ ├── ModalsTab.kt
│ │ │ │ ├── RestTab.kt
│ │ │ │ ├── Showcase.kt
│ │ │ │ └── TabulatorTab.kt
│ │ │ ├── ktml/
│ │ │ │ ├── rest.en.ktml
│ │ │ │ ├── rest.pl.ktml
│ │ │ │ ├── template1.en.ktml
│ │ │ │ └── template1.pl.ktml
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── showcase.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── ShowcaseSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── template/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── template-tailwindcss/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ ├── modules/
│ │ │ │ ├── css/
│ │ │ │ │ └── kvapp.css
│ │ │ │ └── i18n/
│ │ │ │ ├── messages-en.po
│ │ │ │ ├── messages-pl.po
│ │ │ │ └── messages.pot
│ │ │ └── tailwind/
│ │ │ ├── tailwind.config.js
│ │ │ └── tailwind.css
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── todomvc/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── Todomvc.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── package.json
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── todomvc-ballast/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── TodoContract.kt
│ │ │ │ ├── TodoEventHandler.kt
│ │ │ │ ├── TodoInputHandler.kt
│ │ │ │ ├── TodoModel.kt
│ │ │ │ ├── TodoModule.kt
│ │ │ │ ├── TodoSavedStateAdapter.kt
│ │ │ │ ├── TodoViewModel.kt
│ │ │ │ └── Todomvc.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── package.json
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
└── todomvc-signal/
├── .gettext.json
├── .gitignore
├── README.md
├── build.gradle.kts
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
├── src/
│ ├── jsMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── Todomvc.kt
│ │ └── resources/
│ │ ├── index.html
│ │ └── package.json
│ └── jsTest/
│ └── kotlin/
│ └── test/
│ └── com/
│ └── example/
│ └── AppSpec.kt
└── webpack.config.d/
├── bootstrap.js
├── css.js
├── file.js
├── handlebars.js
├── tailwind.js
└── webpack.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.idea
heroku-addressbook.sh
heroku-numbers.sh
heroku-tweets.sh
heroku-encoder.sh
build.sh
build-fullstack.sh
*.imp
*.ipr
*.iws
/.idea/
copytodocs.sh
/encoder-fullstack-ktor/logs/ktor.log
================================================
FILE: LICENSE
================================================
The MIT License
Copyright (c) 2017-present Robert Jaros
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.
================================================
FILE: README.md
================================================
# KVision examples
A set of examples for [KVision](https://github.com/rjaros/kvision) framework.
## Mini template
A minimal KVision application with simplified build configuration. A perfect project for a quick start.
## Template
An application template. It includes all dependencies to develop KVision applications with all
supported components (including unit tests). A perfect starting point for a new application.
[See live demo](https://rjaros.github.io/kvision-examples/template/)
## Hello World
A very simple application with internationalization.
[See live demo](https://rjaros.github.io/kvision-examples/helloworld/)
## Showcase
A simple application presenting all main features of KVision framework.
[See live demo](https://rjaros.github.io/kvision-examples/showcase/)
## Address book
An address book application presenting a classic [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) project
with Material-like CSS template from [Bootswatch](https://bootswatch.com/materia/).
[See live demo](https://rjaros.github.io/kvision-examples/addressbook/)
## Address book with Tabulator
An address book application rewritten with a [Tabulator](http://tabulator.info) module.
[See live demo](https://rjaros.github.io/kvision-examples/addressbook-tabulator/)
## Desktop
A very simple desktop with four mini applications - a calculator, a text editor, a paint program and a web browser.
[See live demo](https://rjaros.github.io/kvision-examples/desktop/)
## Pokedex PWA
The list of Pokémon with live search, build with Redux module. It's also a fully compatible [PWA](https://developers.google.com/web/progressive-web-apps/).
[See live demo](https://kvision-pokedex.netlify.app/)
## TodoMVC
A complete implementation of [TodoMVC](https://todomvc.com/) demo application.
[See live demo](https://rjaros.github.io/kvision-examples/todomvc/)
## TodoMVC-Ballast
A complete implementation of [TodoMVC](https://todomvc.com/) demo application developed with [Ballast](https://github.com/copper-leaf/ballast) application state management framework.
## TodoMVC-Signal
A complete implementation of [TodoMVC](https://todomvc.com/) demo application developed with [Signal](https://github.com/Fenrur/Signal) reactive state library.
## TailwindCSS demo
A demo application created with [TailwindCSS](https://tailwindcss.com/). It shows how to create
KVision application with a modern design system alternative to Bootstrap.
[See live demo](https://rjaros.github.io/kvision-examples/template-tailwindcss/)
## Patternfly demo
A demo application created with [Patternfly UI toolkit](https://www.patternfly.org/). It shows how to create
KVision application with a modern design system alternative to Bootstrap. The application is heavily inspired by
[Patternfly Kotlin project](https://patternfly-kotlin.github.io/patternfly-fritz2-showcase/#user-demo).
[See live demo](https://rjaros.github.io/kvision-examples/patternfly/)
## Fomantic-UI demo
A demo application created with [Fomantic-UI toolkit](https://fomantic-ui.com/). It shows how to create
KVision application with a modern design system alternative to Bootstrap. It also presents state management based
on Kotlin flows (using both StateFlow and SharedFlow).
[See live demo](https://rjaros.github.io/kvision-examples/fomantic/)
## Address book - fullstack
A complete, fullstack address book application.
## Encoder - fullstack
A simple application to encode the given text, based on the overview chapter from the [KVision guide](https://kvision.gitbook.io/kvision-guide/part-3-server-side-interface/overview).
================================================
FILE: addressbook/.gettext.json
================================================
{
"js": {
"parsers": [
{
"expression": "tr",
"arguments": {
"text": 0
}
},
{
"expression": "ntr",
"arguments": {
"text": 0,
"textPlural": 1
}
},
{
"expression": "gettext",
"arguments": {
"text": 0
}
},
{
"expression": "ngettext",
"arguments": {
"text": 0,
"textPlural": 1
}
}
],
"glob": {
"pattern": "src/jsMain/**/*.kt"
}
},
"headers": {
"Language": ""
},
"output": "src/jsMain/resources/modules/i18n/messages.pot"
}
================================================
FILE: addressbook/.gitignore
================================================
.*/
build/
out/
/refresh.sh
*.imp
*.ipr
*.iws
*.idea
================================================
FILE: addressbook/README.md
================================================
## Gradle Tasks
### Resource Processing
* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file.
### Running
* run - Starts a webpack dev server on port 3000.
### Packaging
* jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable`
* zip - Packages a zip archive with all required files into `build/libs/*.zip`
================================================
FILE: addressbook/build.gradle.kts
================================================
plugins {
val kotlinVersion: String by System.getProperties()
kotlin("plugin.serialization") version kotlinVersion
kotlin("multiplatform") version kotlinVersion
val kvisionVersion: String by System.getProperties()
id("io.kvision") version kvisionVersion
}
version = "1.0.0-SNAPSHOT"
group = "com.example"
repositories {
mavenCentral()
mavenLocal()
}
// Versions
val kvisionVersion: String by System.getProperties()
kotlin {
js(IR) {
browser {
useEsModules()
commonWebpackConfig {
outputFileName = "main.bundle.js"
sourceMaps = false
}
testTask {
useKarma {
useChromeHeadless()
}
}
}
binaries.executable()
compilerOptions {
target.set("es2015")
}
}
sourceSets["jsMain"].dependencies {
implementation("io.kvision:kvision:$kvisionVersion")
implementation("io.kvision:kvision-bootstrap:$kvisionVersion")
implementation("io.kvision:kvision-fontawesome:$kvisionVersion")
implementation("io.kvision:kvision-i18n:$kvisionVersion")
implementation("io.kvision:kvision-state:$kvisionVersion")
}
sourceSets["jsTest"].dependencies {
implementation(kotlin("test-js"))
implementation("io.kvision:kvision-testutils:$kvisionVersion")
}
}
================================================
FILE: addressbook/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: addressbook/gradle.properties
================================================
#Plugins
systemProp.kotlinVersion=2.3.20
#Dependencies
systemProp.kvisionVersion=9.5.0
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configuration-cache=true
================================================
FILE: addressbook/gradlew
================================================
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: addressbook/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: addressbook/settings.gradle.kts
================================================
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
rootProject.name = "addressbook"
================================================
FILE: addressbook/src/jsMain/kotlin/com/example/App.kt
================================================
package com.example
import io.kvision.Application
import io.kvision.BootstrapModule
import io.kvision.CoreModule
import io.kvision.FontAwesomeModule
import io.kvision.Hot
import io.kvision.i18n.DefaultI18nManager
import io.kvision.i18n.I18n
import io.kvision.panel.root
import io.kvision.panel.splitPanel
import io.kvision.startApplication
import io.kvision.utils.perc
import io.kvision.utils.useModule
import io.kvision.utils.vh
@JsModule("./modules/css/kvapp.css")
external object kvappCss
@JsModule("./modules/i18n/messages-en.json")
external val messagesEn: dynamic
@JsModule("./modules/i18n/messages-pl.json")
external val messagesPl: dynamic
class App : Application() {
init {
useModule(kvappCss)
}
override fun start() {
I18n.manager =
DefaultI18nManager(
mapOf(
"en" to messagesEn,
"pl" to messagesPl
)
)
root("kvapp") {
splitPanel {
height = 100.vh
width = 100.perc
listPanel()
editPanel()
}
}
Model.loadAddresses()
}
}
fun main() {
startApplication(
::App,
js("import.meta.webpackHot").unsafeCast<Hot?>(),
BootstrapModule,
FontAwesomeModule,
CoreModule
)
}
================================================
FILE: addressbook/src/jsMain/kotlin/com/example/EditPanel.kt
================================================
package com.example
import io.kvision.core.Container
import io.kvision.core.onEvent
import io.kvision.form.check.CheckBox
import io.kvision.form.formPanel
import io.kvision.form.text.Text
import io.kvision.html.ButtonStyle
import io.kvision.html.InputType
import io.kvision.html.button
import io.kvision.i18n.I18n.tr
import io.kvision.panel.hPanel
import io.kvision.panel.simplePanel
import io.kvision.state.bind
import io.kvision.utils.ENTER_KEY
import io.kvision.utils.px
import kotlinx.browser.window
fun Container.editPanel() {
simplePanel().bind(Model.addressBook) { state ->
padding = 10.px
if (state.editMode != null) {
val formPanel = formPanel<Address> {
add(Address::firstName, Text(label = tr("First name:")))
add(Address::lastName, Text(label = tr("Last name:")))
add(Address::email, Text(InputType.EMAIL, label = tr("E-mail:")))
add(Address::favourite, CheckBox(label = tr("Mark as favourite")))
hPanel(spacing = 10) {
button(tr("Save"), "fas fa-check", ButtonStyle.PRIMARY).onClick {
Model.save(this@formPanel.getData())
}
button(tr("Cancel"), "fas fa-times", ButtonStyle.SECONDARY).onClick {
Model.cancel()
}
}
onEvent {
keydown = { e ->
if (e.keyCode == ENTER_KEY) {
Model.save(this@formPanel.getData())
}
}
}
}
if (state.editMode == EditMode.NEW) {
formPanel.clearData()
} else if (state.editAddress != null) {
formPanel.setData(state.editAddress)
}
window.setTimeout({
formPanel.getControl(Address::firstName)?.focus()
}, 0)
} else {
simplePanel {
button(tr("Add new address"), "fas fa-plus", style = ButtonStyle.PRIMARY).onClick {
Model.add()
}
}
}
}
}
================================================
FILE: addressbook/src/jsMain/kotlin/com/example/ListPanel.kt
================================================
package com.example
import io.kvision.core.AlignItems
import io.kvision.core.Container
import io.kvision.core.FontStyle
import io.kvision.core.onClick
import io.kvision.core.onEvent
import io.kvision.form.check.radioGroup
import io.kvision.form.text.text
import io.kvision.html.InputType
import io.kvision.html.div
import io.kvision.html.icon
import io.kvision.html.link
import io.kvision.i18n.I18n.tr
import io.kvision.modal.Confirm
import io.kvision.panel.hPanel
import io.kvision.panel.simplePanel
import io.kvision.state.bind
import io.kvision.table.TableType
import io.kvision.table.cell
import io.kvision.table.headerCell
import io.kvision.table.row
import io.kvision.table.table
import io.kvision.utils.px
fun Container.listPanel() {
simplePanel {
padding = 5.px
hPanel(alignItems = AlignItems.CENTER, spacing = 20) {
text(InputType.SEARCH) {
placeholder = tr("Search ...")
onEvent {
input = {
Model.setSearch(self.value)
}
}
}
radioGroup(
listOf(Filter.ALL.name to tr("All"), Filter.FAVOURITE.name to tr("Favourites")),
Filter.ALL.name,
inline = true
).onEvent {
change = {
Model.setFilter(Filter.valueOf(self.value!!))
}
}
}
div().bind(Model.addressBook) { state ->
table(types = setOf(TableType.STRIPED, TableType.HOVER)) {
headerCell(tr("First name")).onClick {
Model.setSort(Sort.FN)
}
headerCell(tr("Last name")).onClick {
Model.setSort(Sort.LN)
}
headerCell(tr("E-mail")).onClick {
Model.setSort(Sort.E)
}
headerCell("").onClick {
Model.setSort(Sort.F)
}
headerCell("")
state.addresses.mapIndexed { index, address -> index to address }
.filter {
it.second.match(state.search) && (state.filter == Filter.ALL || it.second.favourite ?: false)
}.sortedBy {
when (state.sort) {
Sort.FN -> it.second.firstName?.lowercase()
Sort.LN -> it.second.lastName?.lowercase()
Sort.E -> it.second.email?.lowercase()
Sort.F -> it.second.favourite.toString()
}
}.forEach { (index, address) ->
row {
cell(address.firstName)
cell(address.lastName)
cell {
address.email?.let {
link(it, "mailto:$it") {
fontStyle = FontStyle.ITALIC
}
}
}
cell {
address.favourite?.let {
if (it) icon("far fa-heart") {
title = tr("Favourite")
}
}
}
cell {
icon("fas fa-times") {
title = tr("Delete")
onEvent {
click = { e ->
e.stopPropagation()
Confirm.show(
tr("Are you sure?"),
tr("Do you want to delete this address?")
) {
Model.delete(index)
}
}
}
}
}
onEvent {
click = {
Model.edit(index)
}
}
}
}
}
}
}
}
================================================
FILE: addressbook/src/jsMain/kotlin/com/example/Model.kt
================================================
package com.example
import kotlinx.browser.localStorage
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import org.w3c.dom.get
import org.w3c.dom.set
import io.kvision.state.ObservableValue
@Serializable
data class Address(
val firstName: String? = null,
val lastName: String? = null,
val email: String? = null,
val favourite: Boolean? = false
)
fun Address.match(search: String?): Boolean {
return search?.let {
firstName?.contains(it, true) ?: false ||
lastName?.contains(it, true) ?: false ||
email?.contains(it, true) ?: false
} ?: true
}
enum class Sort {
FN, LN, E, F
}
enum class Filter {
ALL,
FAVOURITE
}
enum class EditMode {
NEW,
EDIT
}
data class AddressBookState(
val addresses: List<Address>,
val search: String? = null,
val sort: Sort = Sort.FN,
val filter: Filter = Filter.ALL,
val editMode: EditMode? = null,
val editIndex: Int? = null,
val editAddress: Address? = null
)
object Model {
val addressBook = ObservableValue(
AddressBookState(
listOf(
Address("John", "Smith", "john.smith@mail.com", true),
Address("Karen", "Kowalsky", "kkowalsky@mail.com", true),
Address("William", "Gordon", "w.gordon@mail.com", false)
)
)
)
fun setSort(sort: Sort) {
addressBook.value = addressBook.value.copy(sort = sort)
}
fun setSearch(search: String?) {
addressBook.value = addressBook.value.copy(search = search)
}
fun setFilter(filter: Filter) {
addressBook.value = addressBook.value.copy(filter = filter)
}
fun add() {
addressBook.value = addressBook.value.copy(editMode = EditMode.NEW, editIndex = null, editAddress = null)
}
fun edit(index: Int?) {
val state = addressBook.value
val editAddress = index?.let { state.addresses[it] }
addressBook.value = state.copy(editMode = EditMode.EDIT, editIndex = index, editAddress = editAddress)
}
fun cancel() {
addressBook.value = addressBook.value.copy(editMode = null, editIndex = null, editAddress = null)
}
fun delete(index: Int) {
val state = addressBook.value
val newAddresses = state.addresses.filterIndexed { i, _ -> i != index }
val editIndex = state.editIndex ?: -1
addressBook.value = if (editIndex == index) {
state.copy(editMode = null, addresses = newAddresses, editIndex = null, editAddress = null)
} else if (editIndex > index) {
state.copy(addresses = newAddresses, editIndex = editIndex - 1)
} else {
state.copy(addresses = newAddresses)
}
storeAddresses()
}
fun save(newAddress: Address) {
val state = addressBook.value
val newAddresses = if (state.editMode == EditMode.EDIT) {
state.addresses.mapIndexed { i, address ->
if (i == state.editIndex) newAddress else address
}
} else {
state.addresses + newAddress
}
addressBook.value = state.copy(addresses = newAddresses, editMode = null, editIndex = null, editAddress = null)
storeAddresses()
}
fun storeAddresses() {
val jsonString = Json.encodeToString(addressBook.value.addresses)
localStorage["addresses"] = jsonString
}
fun loadAddresses() {
localStorage["addresses"]?.let { addressesAsString ->
addressBook.value = addressBook.value.copy(addresses = Json.decodeFromString(addressesAsString))
}
}
}
================================================
FILE: addressbook/src/jsMain/resources/index.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KVision Address Book</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.1.0/dist/materia/bootstrap.min.css" integrity="sha256-T8h7oW5tHp4MhFhmRoDI8xjnB2ld89qSgc3s9g8T0uU=" crossorigin="anonymous">
<script type="text/javascript" src="main.bundle.js"></script>
</head>
<body>
<div id="kvapp"></div>
</body>
</html>
================================================
FILE: addressbook/src/jsMain/resources/modules/css/kvapp.css
================================================
================================================
FILE: addressbook/src/jsMain/resources/modules/i18n/messages-en.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../src/main/kotlin/com/example/App.kt:20
msgid "This is a localized message."
msgstr ""
================================================
FILE: addressbook/src/jsMain/resources/modules/i18n/messages-pl.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: ../src/main/kotlin/com/example/App.kt:20
msgid "This is a localized message."
msgstr "To jest przetłumaczona wiadomość."
================================================
FILE: addressbook/src/jsTest/kotlin/test/com/example/AppSpec.kt
================================================
package test.com.example
import io.kvision.test.DomSpec
import kotlin.test.Test
import kotlin.test.assertTrue
class AppSpec : DomSpec {
@Test
fun render() {
run {
assertTrue(true, "Dummy test")
}
}
}
================================================
FILE: addressbook/src/jsTest/resources/css/kvapp.css
================================================
================================================
FILE: addressbook/webpack.config.d/bootstrap.js
================================================
config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'});
================================================
FILE: addressbook/webpack.config.d/css.js
================================================
config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] });
================================================
FILE: addressbook/webpack.config.d/file.js
================================================
config.module.rules.push(
{
test: /\.(jpe?g|png|gif|svg)$/i,
type: 'asset/resource'
}
);
================================================
FILE: addressbook/webpack.config.d/handlebars.js
================================================
config.module.rules.push(
{
test: /\.hbs$/i,
loader: 'handlebars-loader'
}
);
================================================
FILE: addressbook/webpack.config.d/tailwind.js
================================================
;(function() {
config.module.rules.push({
test: /tailwind\.css$/,
use: [ '@tailwindcss/webpack' ]
});
})();
================================================
FILE: addressbook/webpack.config.d/webpack.js
================================================
config.resolve.modules.push("kotlin");
if (config.devServer) {
config.devServer.client = {
overlay: false
};
config.devServer.hot = true;
config.devServer.open = false;
config.devServer.port = 3000;
config.devServer.historyApiFallback = true;
config.devtool = 'eval-cheap-source-map';
} else {
config.devtool = undefined;
}
// disable bundle size warning
config.performance = {
assetFilter: function (assetFilename) {
return !assetFilename.endsWith('.js');
},
};
================================================
FILE: addressbook-fullstack-ktor/.gettext.json
================================================
{
"js": {
"parsers": [
{
"expression": "tr",
"arguments": {
"text": 0
}
},
{
"expression": "ntr",
"arguments": {
"text": 0,
"textPlural": 1
}
},
{
"expression": "gettext",
"arguments": {
"text": 0
}
},
{
"expression": "ngettext",
"arguments": {
"text": 0,
"textPlural": 1
}
}
],
"glob": {
"pattern": "src/jsMain/**/*.kt"
}
},
"headers": {
"Language": ""
},
"output": "src/jsMain/resources/modules/i18n/messages.pot"
}
================================================
FILE: addressbook-fullstack-ktor/.gitignore
================================================
.*/
build/
out/
/refresh.sh
*.imp
*.ipr
*.iws
*.idea
================================================
FILE: addressbook-fullstack-ktor/README.md
================================================
## Gradle Tasks
### Resource Processing
* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file.
### Compiling
* compileKotlinJs - Compiles frontend sources.
* compileKotlinJvm - Compiles backend sources.
### Running
* jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000
* jvmRun - Starts a dev server on port 8080
### Packaging
* jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable`
* jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar`
* jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar`
* jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar`
================================================
FILE: addressbook-fullstack-ktor/build.gradle.kts
================================================
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
plugins {
val kotlinVersion: String by System.getProperties()
kotlin("plugin.serialization") version kotlinVersion
kotlin("multiplatform") version kotlinVersion
val kspVersion: String by System.getProperties()
id("com.google.devtools.ksp") version kspVersion
val kiluaRpcVersion: String by System.getProperties()
id("dev.kilua.rpc") version kiluaRpcVersion
val kvisionVersion: String by System.getProperties()
id("io.kvision") version kvisionVersion
}
version = "1.0.0-SNAPSHOT"
group = "com.example"
repositories {
mavenCentral()
mavenLocal()
}
// Versions
val kvisionVersion: String by System.getProperties()
val kiluaRpcVersion: String by System.getProperties()
val ktorVersion: String by project
val exposedVersion: String by project
val hikariVersion: String by project
val h2Version: String by project
val pgsqlVersion: String by project
val kweryVersion: String by project
val logbackVersion: String by project
val commonsCodecVersion: String by project
val jdbcNamedParametersVersion: String by project
val mainClassName = "io.ktor.server.netty.EngineMain"
kotlin {
jvmToolchain(21)
jvm {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
mainRun {
mainClass.set(mainClassName)
}
}
js(IR) {
browser {
useEsModules()
commonWebpackConfig {
outputFileName = "main.bundle.js"
sourceMaps = false
}
testTask {
useKarma {
useChromeHeadless()
}
}
}
binaries.executable()
compilerOptions {
target.set("es2015")
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("dev.kilua:kilua-rpc-ktor:$kiluaRpcVersion")
implementation("io.kvision:kvision-common-remote:$kvisionVersion")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val jvmMain by getting {
dependencies {
implementation(kotlin("reflect"))
implementation("io.ktor:ktor-server-netty:$ktorVersion")
implementation("io.ktor:ktor-server-auth:$ktorVersion")
implementation("io.ktor:ktor-server-compression:$ktorVersion")
implementation("io.ktor:ktor-server-default-headers:$ktorVersion")
implementation("io.ktor:ktor-server-compression:$ktorVersion")
implementation("io.ktor:ktor-server-call-logging:$ktorVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")
implementation("com.h2database:h2:$h2Version")
implementation("org.jetbrains.exposed:exposed:$exposedVersion")
implementation("org.postgresql:postgresql:$pgsqlVersion")
implementation("com.zaxxer:HikariCP:$hikariVersion")
implementation("commons-codec:commons-codec:$commonsCodecVersion")
implementation("com.axiomalaska:jdbc-named-parameters:$jdbcNamedParametersVersion")
implementation("com.github.andrewoma.kwery:core:$kweryVersion")
}
}
val jvmTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(kotlin("test-junit"))
}
}
val jsMain by getting {
dependencies {
implementation("io.kvision:kvision:$kvisionVersion")
implementation("io.kvision:kvision-bootstrap:$kvisionVersion")
implementation("io.kvision:kvision-state:$kvisionVersion")
implementation("io.kvision:kvision-fontawesome:$kvisionVersion")
implementation("io.kvision:kvision-i18n:$kvisionVersion")
implementation("io.kvision:kvision-rest:$kvisionVersion")
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
implementation("io.kvision:kvision-testutils:$kvisionVersion")
}
}
}
}
================================================
FILE: addressbook-fullstack-ktor/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: addressbook-fullstack-ktor/gradle.properties
================================================
#Plugins
systemProp.kotlinVersion=2.3.20
systemProp.kspVersion=2.3.6
systemProp.kiluaRpcVersion=0.0.43
#Dependencies
systemProp.kvisionVersion=9.5.0
ktorVersion=3.4.1
hikariVersion=3.2.0
commonsCodecVersion=1.10
jdbcNamedParametersVersion=1.1
exposedVersion=0.17.14
logbackVersion=1.5.32
h2Version=1.4.197
pgsqlVersion=42.2.2
kweryVersion=0.17
org.gradle.jvmargs=-Xmx2g
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configuration-cache=true
================================================
FILE: addressbook-fullstack-ktor/gradlew
================================================
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: addressbook-fullstack-ktor/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: addressbook-fullstack-ktor/logs/ktor.log
================================================
[2023-08-13 15:32:37,087]-[main] INFO Application - Autoreload is disabled because the development mode is off.
[2023-08-13 15:32:37,314]-[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
[2023-08-13 15:32:37,415]-[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
[2023-08-13 15:32:37,771]-[main] INFO Application - Application started in 0.712 seconds.
[2023-08-13 15:32:37,771]-[main] INFO Application - Application started: io.ktor.server.application.Application@cb39552
[2023-08-13 15:32:37,885]-[DefaultDispatcher-worker-1] INFO Application - Responding at http://0.0.0.0:8080
[2023-08-13 15:32:46,755]-[eventLoopGroupProxy-4-1] INFO Application - [31m401 Unauthorized[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 67ms
[2023-08-13 15:32:59,406]-[eventLoopGroupProxy-4-2] INFO Application - [31m401 Unauthorized[m: [36mPOST[m - /login in 16ms
[2023-08-13 15:33:11,945]-[eventLoopGroupProxy-4-3] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeRegisterProfileServiceManager0 in 67ms
[2023-08-13 15:33:21,753]-[eventLoopGroupProxy-4-4] INFO Application - [32m200 OK[m: [36mPOST[m - /login in 22ms
[2023-08-13 15:33:21,783]-[eventLoopGroupProxy-4-5] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeProfileServiceManager0 in 14ms
[2023-08-13 15:33:21,814]-[eventLoopGroupProxy-4-6] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 14ms
[2023-08-13 15:33:25,667]-[eventLoopGroupProxy-4-7] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager1 in 58ms
[2023-08-13 15:33:25,684]-[eventLoopGroupProxy-4-8] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 5ms
[2023-08-13 15:33:26,886]-[eventLoopGroupProxy-4-9] INFO Application - [32m302 Found[m: [36mGET[m - /logout in 4ms -> /
[2023-08-13 15:33:27,631]-[eventLoopGroupProxy-4-10] INFO Application - [31m401 Unauthorized[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 3ms
[2023-08-13 15:33:30,624]-[eventLoopGroupProxy-4-11] INFO Application - [32m200 OK[m: [36mPOST[m - /login in 5ms
[2023-08-13 15:33:30,658]-[eventLoopGroupProxy-4-12] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeProfileServiceManager0 in 3ms
[2023-08-13 15:33:30,679]-[eventLoopGroupProxy-4-1] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 4ms
[2023-08-13 15:33:34,071]-[eventLoopGroupProxy-4-2] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager2 in 15ms
[2023-08-13 15:33:34,087]-[eventLoopGroupProxy-4-3] INFO Application - [32m200 OK[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 4ms
[2023-08-13 15:33:35,067]-[eventLoopGroupProxy-4-4] INFO Application - [32m302 Found[m: [36mGET[m - /logout in 3ms -> /
[2023-08-13 15:33:35,831]-[eventLoopGroupProxy-4-5] INFO Application - [31m401 Unauthorized[m: [36mPOST[m - /kv/routeAddressServiceManager0 in 3ms
[2023-08-13 15:33:43,455]-[KtorShutdownHook] INFO Application - Application stopping: io.ktor.server.application.Application@cb39552
[2023-08-13 15:33:43,457]-[KtorShutdownHook] INFO Application - Application stopped: io.ktor.server.application.Application@cb39552
================================================
FILE: addressbook-fullstack-ktor/settings.gradle.kts
================================================
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
rootProject.name = "addressbook-fullstack-ktor"
================================================
FILE: addressbook-fullstack-ktor/src/commonMain/kotlin/com/example/Model.kt
================================================
@file:UseContextualSerialization(LocalDateTime::class)
package com.example
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseContextualSerialization
import io.kvision.types.LocalDateTime
@Serializable
data class Profile(
val id: Int? = null,
val name: String? = null,
val username: String? = null,
val password: String? = null,
val password2: String? = null
)
@Serializable
data class Address(
val id: Int? = 0,
val firstName: String? = null,
val lastName: String? = null,
val email: String? = null,
val phone: String? = null,
val postalAddress: String? = null,
val favourite: Boolean? = false,
val createdAt: LocalDateTime? = null,
val userId: Int? = null
)
================================================
FILE: addressbook-fullstack-ktor/src/commonMain/kotlin/com/example/Service.kt
================================================
package com.example
import dev.kilua.rpc.annotations.RpcService
import kotlinx.serialization.Serializable
@Serializable
enum class Sort {
FN, LN, E, F
}
@RpcService
interface IAddressService {
suspend fun getAddressList(search: String?, types: String, sort: Sort): List<Address>
suspend fun addAddress(address: Address): Address
suspend fun updateAddress(address: Address): Address
suspend fun deleteAddress(id: Int): Boolean
}
@RpcService
interface IProfileService {
suspend fun getProfile(): Profile
}
@RpcService
interface IRegisterProfileService {
suspend fun registerProfile(profile: Profile, password: String): Boolean
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/App.kt
================================================
package com.example
import io.kvision.Application
import io.kvision.BootstrapModule
import io.kvision.CoreModule
import io.kvision.FontAwesomeModule
import io.kvision.Hot
import io.kvision.i18n.DefaultI18nManager
import io.kvision.i18n.I18n
import io.kvision.panel.root
import io.kvision.panel.splitPanel
import io.kvision.remote.registerRemoteTypes
import io.kvision.startApplication
import io.kvision.utils.perc
import io.kvision.utils.useModule
import io.kvision.utils.vh
import kotlinx.browser.window
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.launch
val AppScope = CoroutineScope(window.asCoroutineDispatcher())
@JsModule("./modules/css/kvapp.css")
external object kvappCss
@JsModule("./modules/i18n/messages-en.json")
external val messagesEn: dynamic
@JsModule("./modules/i18n/messages-pl.json")
external val messagesPl: dynamic
class App : Application() {
init {
useModule(kvappCss)
}
override fun start() {
I18n.manager =
DefaultI18nManager(
mapOf(
"en" to messagesEn,
"pl" to messagesPl
)
)
root("kvapp") {
splitPanel {
width = 100.perc
height = 100.vh
add(ListPanel)
add(EditPanel)
}
}
AppScope.launch {
Model.getAddressList()
}
}
}
fun main() {
registerRemoteTypes()
startApplication(::App, js("import.meta.webpackHot").unsafeCast<Hot?>(), BootstrapModule, FontAwesomeModule, CoreModule)
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/EditPanel.kt
================================================
package com.example
import io.kvision.core.onEvent
import io.kvision.form.FormPanel
import io.kvision.form.check.CheckBox
import io.kvision.form.formPanel
import io.kvision.form.text.Text
import io.kvision.html.ButtonStyle
import io.kvision.html.InputType
import io.kvision.html.button
import io.kvision.i18n.I18n.tr
import io.kvision.panel.HPanel
import io.kvision.panel.StackPanel
import io.kvision.utils.ENTER_KEY
import io.kvision.utils.px
import kotlinx.coroutines.launch
object EditPanel : StackPanel() {
private var editingId: Int? = null
private val formPanel: FormPanel<Address>
init {
padding = 10.px
formPanel = formPanel {
add(Address::firstName, Text(label = "${tr("First name")}:").apply { maxlength = 255 })
add(Address::lastName, Text(label = "${tr("Last name")}:").apply { maxlength = 255 })
add(Address::email, Text(InputType.EMAIL, label = "${tr("E-mail")}:").apply { maxlength = 255 }) {
it.getValue()
?.let {
"(?:[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])".toRegex()
.matches(it)
}
}
add(Address::phone, Text(label = "${tr("Phone number")}:").apply { maxlength = 255 })
add(Address::postalAddress, Text(label = "${tr("Postal address")}:").apply { maxlength = 255 })
add(Address::favourite, CheckBox(label = tr("Mark as favourite")))
add(HPanel(spacing = 10) {
button(tr("Save"), "fas fa-check", ButtonStyle.PRIMARY).onClick {
this@EditPanel.save()
}
button(tr("Cancel"), "fas fa-times", ButtonStyle.SECONDARY).onClick {
this@EditPanel.close()
}
})
onEvent {
keydown = {
if (it.keyCode == ENTER_KEY) {
this@EditPanel.save()
}
}
}
}
add(MainPanel)
}
fun add() {
formPanel.clearData()
open(null)
}
fun edit(index: Int) {
val address = Model.addresses[index]
formPanel.setData(address)
open(address.id)
}
private fun save() {
AppScope.launch {
if (formPanel.validate()) {
val address = formPanel.getData()
if (editingId != null) {
Model.updateAddress(address.copy(id = editingId))
} else {
Model.addAddress(address)
}
close()
}
}
}
fun delete(index: Int) {
AppScope.launch {
close()
Model.addresses[index].id?.let {
Model.deleteAddress(it)
}
}
}
private fun open(editingId: Int?) {
this.editingId = editingId
activeChild = formPanel
formPanel.validate()
formPanel.getControl(Address::firstName)?.focus()
}
private fun close() {
editingId = null
activeChild = MainPanel
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/ListPanel.kt
================================================
package com.example
import io.kvision.core.AlignItems
import io.kvision.core.FontStyle
import io.kvision.core.onEvent
import io.kvision.form.check.RadioGroup
import io.kvision.form.check.radioGroup
import io.kvision.form.text.TextInput
import io.kvision.form.text.text
import io.kvision.html.InputType
import io.kvision.html.icon
import io.kvision.html.link
import io.kvision.i18n.I18n.tr
import io.kvision.modal.Confirm
import io.kvision.panel.SimplePanel
import io.kvision.panel.hPanel
import io.kvision.state.bind
import io.kvision.table.HeaderCell
import io.kvision.table.TableType
import io.kvision.table.cell
import io.kvision.table.row
import io.kvision.table.table
import io.kvision.utils.px
object ListPanel : SimplePanel() {
init {
padding = 5.px
hPanel(alignItems = AlignItems.CENTER, spacing = 20) {
text(InputType.SEARCH) {
placeholder = "${tr("Search")} ..."
setEventListener<TextInput> {
input = {
Model.search = self.value
}
}
}
radioGroup(listOf("all" to tr("All"), "fav" to tr("Favourites")), "all", inline = true) {
marginBottom = 0.px
setEventListener<RadioGroup> {
change = {
Model.types = self.value ?: "all"
}
}
}
}
table(types = setOf(TableType.STRIPED, TableType.HOVER)) {
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("First name"), Sort.FN))
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("Last name"), Sort.LN))
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("E-mail"), Sort.E))
addHeaderCell(this@ListPanel.sortingHeaderCell("", Sort.F))
addHeaderCell(HeaderCell(""))
bind(Model.addresses) { addresses ->
addresses.forEachIndexed { index, address ->
row {
cell(address.firstName)
cell(address.lastName)
cell {
address.email?.let {
link(it, "mailto:$it") {
fontStyle = FontStyle.ITALIC
}
}
}
cell {
address.favourite?.let {
if (it) icon("far fa-heart") {
title = tr("Favourite")
}
}
}
cell {
icon("fas fa-times") {
title = tr("Delete")
onEvent {
click = { e ->
e.stopPropagation()
Confirm.show("Are you sure?", "Do you want to delete this address?") {
EditPanel.delete(index)
}
}
}
}
}
onEvent {
click = {
EditPanel.edit(index)
}
}
}
}
}
}
}
private fun sortingHeaderCell(title: String, sort: Sort) = HeaderCell(title) {
onEvent {
click = {
Model.sort = sort
}
}
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/MainPanel.kt
================================================
package com.example
import io.kvision.core.JustifyContent
import io.kvision.html.ButtonStyle
import io.kvision.html.button
import io.kvision.html.div
import io.kvision.i18n.I18n.tr
import io.kvision.panel.HPanel
import io.kvision.state.bind
import kotlinx.browser.document
object MainPanel : HPanel(justify = JustifyContent.SPACEBETWEEN) {
init {
button(tr("Add new address"), "fas fa-plus", style = ButtonStyle.PRIMARY).onClick {
EditPanel.add()
}
div().bind(Model.profile) { profile ->
if (profile.name != null) {
button("Logout: ${profile.name}", "fas fa-sign-out-alt", style = ButtonStyle.WARNING).onClick {
document.location?.href = "/logout"
}
}
}
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/Model.kt
================================================
package com.example
import dev.kilua.rpc.getService
import io.kvision.state.ObservableList
import io.kvision.state.ObservableValue
import io.kvision.state.observableListOf
import io.kvision.utils.syncWithList
import kotlinx.coroutines.launch
object Model {
private val addressService = getService<IAddressService>()
private val profileService = getService<IProfileService>()
private val registerProfileService = getService<IRegisterProfileService>()
val addresses: ObservableList<Address> = observableListOf()
val profile = ObservableValue(Profile())
var search: String? = null
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
var types: String = "all"
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
var sort = Sort.FN
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
suspend fun getAddressList() {
Security.withAuth {
val newAddresses = addressService.getAddressList(search, types, sort)
addresses.syncWithList(newAddresses)
}
}
suspend fun addAddress(address: Address) {
Security.withAuth {
addressService.addAddress(address)
getAddressList()
}
}
suspend fun updateAddress(address: Address) {
Security.withAuth {
addressService.updateAddress(address)
getAddressList()
}
}
suspend fun deleteAddress(id: Int): Boolean {
return Security.withAuth {
val result = addressService.deleteAddress(id)
getAddressList()
result
}
}
suspend fun readProfile() {
Security.withAuth {
profile.value = profileService.getProfile()
}
}
suspend fun registerProfile(profile: Profile, password: String): Boolean {
return try {
registerProfileService.registerProfile(profile, password)
} catch (e: Exception) {
console.log(e)
false
}
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/Security.kt
================================================
package com.example
import dev.kilua.rpc.SecurityException
import io.kvision.core.onEvent
import io.kvision.form.FormPanel
import io.kvision.form.formPanel
import io.kvision.form.text.Password
import io.kvision.form.text.Text
import io.kvision.html.Button
import io.kvision.html.ButtonStyle
import io.kvision.i18n.I18n.tr
import io.kvision.modal.Alert
import io.kvision.modal.Dialog
import io.kvision.remote.SecurityMgr
import io.kvision.rest.HttpMethod
import io.kvision.rest.ResponseBodyType
import io.kvision.rest.RestClient
import io.kvision.rest.requestDynamic
import io.kvision.utils.ENTER_KEY
import io.kvision.utils.obj
import kotlinx.coroutines.asDeferred
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
/**
* Username and password credentials.
*/
@Serializable
data class Credentials(val username: String? = null, val password: String? = null)
/**
* Form login dispatcher.
*/
class LoginService(val loginEndpoint: String) {
val loginAgent = RestClient()
/**
* Login with a form.
* @param credentials username and password credentials
*/
suspend fun login(credentials: Credentials?): Boolean =
if (credentials?.username != null) {
loginAgent.requestDynamic(loginEndpoint) {
data = obj {
this.username = credentials.username
this.password = credentials.password
}
method = HttpMethod.POST
contentType = "application/x-www-form-urlencoded"
responseBodyType = ResponseBodyType.READABLE_STREAM
}.then { _: dynamic -> true }.asDeferred().await()
} else {
throw SecurityException("Credentials cannot be empty")
}
}
class LoginWindow : Dialog<Credentials>(closeButton = false, escape = false, animation = false) {
private val loginPanel: FormPanel<Credentials>
private val loginButton: Button
private val userButton: Button
private val registerPanel: FormPanel<Profile>
private val registerButton: Button
private val cancelButton: Button
init {
loginPanel = formPanel {
add(Credentials::username, Text(label = "${tr("Login")}:"), required = true)
add(Credentials::password, Password(label = "${tr("Password")}:"), required = true)
onEvent {
keydown = {
if (it.keyCode == ENTER_KEY) {
this@LoginWindow.processCredentials()
}
}
}
}
registerPanel = formPanel {
add(Profile::name, Text(label = "${tr("Your name")}:"), required = true)
add(Profile::username, Text(label = "Login:"), required = true)
add(
Profile::password, Password(label = "${tr("Password")}:"), required = true,
validatorMessage = { "Password too short" }) {
(it.getValue()?.length ?: 0) >= 8
}
add(
Profile::password2, Password(label = "${tr("Confirm password")}:"), required = true,
validatorMessage = { tr("Password too short") }) {
(it.getValue()?.length ?: 0) >= 8
}
validator = {
val result = it[Profile::password] == it[Profile::password2]
if (!result) {
it.getControl(Profile::password)?.validatorError = tr("Passwords are not the same")
it.getControl(Profile::password2)?.validatorError = tr("Passwords are not the same")
}
result
}
validatorMessage = { tr("Passwords are not the same") }
}
cancelButton = Button(tr("Cancel"), "fas fa-times") {
onClick {
this@LoginWindow.hideRegisterForm()
}
}
registerButton = Button(tr("Register"), "fas fa-check", ButtonStyle.PRIMARY) {
onClick {
this@LoginWindow.processRegister()
}
}
loginButton = Button(tr("Login"), "fas fa-check", ButtonStyle.PRIMARY) {
onClick {
this@LoginWindow.processCredentials()
}
}
userButton = Button(tr("Register user"), "fas fa-user") {
onClick {
this@LoginWindow.showRegisterForm()
}
}
addButton(userButton)
addButton(loginButton)
addButton(cancelButton)
addButton(registerButton)
hideRegisterForm()
}
private fun showRegisterForm() {
loginPanel.hide()
registerPanel.show()
registerPanel.clearData()
loginButton.hide()
userButton.hide()
cancelButton.show()
registerButton.show()
}
private fun hideRegisterForm() {
loginPanel.show()
registerPanel.hide()
loginButton.show()
userButton.show()
cancelButton.hide()
registerButton.hide()
}
private fun processCredentials() {
if (loginPanel.validate()) {
setResult(loginPanel.getData())
loginPanel.clearData()
}
}
private fun processRegister() {
if (registerPanel.validate()) {
val userData = registerPanel.getData()
AppScope.launch {
if (Model.registerProfile(userData, userData.password!!)
) {
Alert.show(text = tr("User registered. You can now log in.")) {
hideRegisterForm()
}
} else {
Alert.show(text = tr("This login is not available. Please try again."))
}
}
}
}
}
object Security : SecurityMgr() {
private val loginService = LoginService("/login")
private val loginWindow = LoginWindow()
override suspend fun login(): Boolean {
return loginService.login(loginWindow.getResult())
}
override suspend fun afterLogin() {
Model.readProfile()
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/resources/index.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KVision Address Book</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.1.0/dist/materia/bootstrap.min.css" integrity="sha256-T8h7oW5tHp4MhFhmRoDI8xjnB2ld89qSgc3s9g8T0uU=" crossorigin="anonymous">
<script type="text/javascript" src="main.bundle.js"></script>
</head>
<body>
<div id="kvapp"></div>
</body>
</html>
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/resources/modules/css/kvapp.css
================================================
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages-en.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages-pl.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages.pot
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the addressbook-fullstack-ktor package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: addressbook-fullstack-ktor 1.0.0-SNAPSHOT\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-07-31 13:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Dao.kt
================================================
package com.example
import org.jetbrains.exposed.sql.ReferenceOption
import org.jetbrains.exposed.sql.Table
object AddressDao : Table("address") {
val id = integer("id").primaryKey().autoIncrement()
val firstName = varchar("first_name", 255).nullable()
val lastName = varchar("last_name", 255).nullable()
val email = varchar("email", 255).nullable()
val phone = varchar("phone", 255).nullable()
val postalAddress = varchar("postal_address", 255).nullable()
val favourite = bool("favourite")
val createdAt = datetime("created_at").nullable()
val userId = reference("user_id", UserDao.id, ReferenceOption.CASCADE, ReferenceOption.CASCADE)
}
object UserDao : Table("users") {
val id = integer("id").primaryKey().autoIncrement()
val name = varchar("name", 255)
val username = varchar("username", 255).uniqueIndex()
val password = varchar("password", 255)
}
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Db.kt
================================================
package com.example
import com.axiomalaska.jdbc.NamedParameterPreparedStatement
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import io.ktor.server.config.ApplicationConfig
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.SchemaUtils.create
import org.jetbrains.exposed.sql.Transaction
import org.jetbrains.exposed.sql.transactions.transaction
import java.math.BigDecimal
import java.sql.*
object Db {
fun init(config: ApplicationConfig) {
Database.connect(hikari(config))
transaction {
create(UserDao)
create(AddressDao)
}
}
private fun hikari(config: ApplicationConfig): HikariDataSource {
val hikariConfig = HikariConfig()
hikariConfig.driverClassName = config.propertyOrNull("db.driver")?.getString() ?: "org.h2.Driver"
hikariConfig.jdbcUrl = config.propertyOrNull("db.jdbcUrl")?.getString() ?: "jdbc:h2:mem:test"
hikariConfig.username = config.propertyOrNull("db.username")?.getString()
hikariConfig.password = config.propertyOrNull("db.password")?.getString()
hikariConfig.maximumPoolSize = 3
hikariConfig.isAutoCommit = false
hikariConfig.transactionIsolation = "TRANSACTION_REPEATABLE_READ"
hikariConfig.validate()
return HikariDataSource(hikariConfig)
}
suspend fun <T> dbQuery(block: Transaction.() -> T): T = withContext(Dispatchers.IO) {
transaction {
block()
}
}
fun <T : Any> Transaction.queryList(
query: String,
parameters: Map<String, Any?>,
transform: (ResultSet) -> T
): List<T> {
val statement = NamedParameterPreparedStatement.createNamedParameterPreparedStatement(connection, query)
statement.setParameters(parameters)
val result = arrayListOf<T>()
val resultSet = statement.executeQuery()
resultSet.use {
while (resultSet.next()) {
result += transform(resultSet)
}
}
return result
}
fun <T : Any> Transaction.queryObject(
query: String,
parameters: Map<String, Any?>,
transform: (ResultSet) -> T
): T? {
val statement = NamedParameterPreparedStatement.createNamedParameterPreparedStatement(connection, query)
statement.setParameters(parameters)
val resultSet = statement.executeQuery()
resultSet.use {
if (resultSet.next()) {
return transform(resultSet)
}
}
return null
}
private fun NamedParameterPreparedStatement.setParameters(parameters: Map<String, Any?>) {
parameters.forEach { key, value ->
when (value) {
null -> setNull(key, Types.NULL)
is String -> setString(key, value)
is Boolean -> setBoolean(key, value)
is Int -> setInt(key, value)
is Byte -> setByte(key, value)
is Long -> setLong(key, value)
is Short -> setShort(key, value)
is Float -> setFloat(key, value)
is Double -> setDouble(key, value.toFloat())
is BigDecimal -> setBigDecimal(key, value)
is Date -> setDate(key, value)
is Time -> setTime(key, value)
is Timestamp -> setTimestamp(key, value)
is ByteArray -> setBytes(key, value)
else -> setObject(key, value)
}
}
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Main.kt
================================================
package com.example
import com.example.Db.dbQuery
import dev.kilua.rpc.getServiceManager
import dev.kilua.rpc.initRpc
import dev.kilua.rpc.registerService
import dev.kilua.rpc.applyRoutes
import io.ktor.http.*
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.plugins.calllogging.*
import io.ktor.server.plugins.compression.*
import io.ktor.server.plugins.defaultheaders.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.sessions.*
import io.kvision.remote.registerRemoteTypes
import org.apache.commons.codec.digest.DigestUtils
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.select
fun Application.main() {
registerRemoteTypes()
install(Compression)
install(DefaultHeaders)
install(CallLogging)
install(Sessions) {
cookie<Profile>("KTSESSION", storage = SessionStorageMemory()) {
cookie.path = "/"
cookie.extensions["SameSite"] = "strict"
}
}
Db.init(environment.config)
install(Authentication) {
form {
userParamName = "username"
passwordParamName = "password"
validate { credentials ->
dbQuery {
UserDao.select {
(UserDao.username eq credentials.name) and (UserDao.password eq DigestUtils.sha256Hex(
credentials.password
))
}.firstOrNull()?.let {
UserIdPrincipal(credentials.name)
}
}
}
skipWhen { call -> call.sessions.get<Profile>() != null }
}
}
routing {
applyRoutes(getServiceManager<IRegisterProfileService>())
authenticate {
post("login") {
val principal = call.principal<UserIdPrincipal>()
val result = if (principal != null) {
dbQuery {
UserDao.select { UserDao.username eq principal.name }.firstOrNull()?.let {
val profile =
Profile(it[UserDao.id], it[UserDao.name], it[UserDao.username].toString(), null, null)
call.sessions.set(profile)
HttpStatusCode.OK
} ?: HttpStatusCode.Unauthorized
}
} else {
HttpStatusCode.Unauthorized
}
call.respond(result)
}
get("logout") {
call.sessions.clear<Profile>()
call.respondRedirect("/")
}
applyRoutes(getServiceManager<IAddressService>())
applyRoutes(getServiceManager<IProfileService>())
}
}
initRpc {
registerService<IAddressService> { AddressService(it) }
registerService<IProfileService> { ProfileService(it) }
registerService<IRegisterProfileService> { RegisterProfileService() }
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Service.kt
================================================
package com.example
import com.example.Db.dbQuery
import com.example.Db.queryList
import com.github.andrewoma.kwery.core.builder.query
import io.ktor.server.application.ApplicationCall
import io.ktor.server.sessions.get
import io.ktor.server.sessions.sessions
import org.apache.commons.codec.digest.DigestUtils
import org.jetbrains.exposed.sql.ResultRow
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.deleteWhere
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.select
import org.jetbrains.exposed.sql.update
import org.joda.time.DateTime
import java.sql.ResultSet
import java.time.ZoneId
suspend fun <RESP> ApplicationCall.withProfile(block: suspend (Profile) -> RESP): RESP {
val profile = this.sessions.get<Profile>()
return profile?.let {
block(profile)
} ?: throw IllegalStateException("Profile not set!")
}
class AddressService(private val call: ApplicationCall) : IAddressService {
override suspend fun getAddressList(search: String?, types: String, sort: Sort) =
call.withProfile { profile ->
dbQuery {
val query = query {
select("SELECT * FROM address")
whereGroup {
where("user_id = :user_id")
parameter("user_id", profile.id)
search?.let {
where(
"""(lower(first_name) like :search
OR lower(last_name) like :search
OR lower(email) like :search
OR lower(phone) like :search
OR lower(postal_address) like :search)""".trimMargin()
)
parameter("search", "%${it.lowercase()}%")
}
if (types == "fav") {
where("favourite")
}
}
when (sort) {
Sort.FN -> orderBy("lower(first_name)")
Sort.LN -> orderBy("lower(last_name)")
Sort.E -> orderBy("lower(email)")
Sort.F -> orderBy("favourite")
}
}
queryList(query.sql, query.parameters) {
toAddress(it)
}
}
}
override suspend fun addAddress(address: Address) = call.withProfile { profile ->
val key = dbQuery {
(AddressDao.insert {
it[firstName] = address.firstName
it[lastName] = address.lastName
it[email] = address.email
it[phone] = address.phone
it[postalAddress] = address.postalAddress
it[favourite] = address.favourite ?: false
it[createdAt] = DateTime()
it[userId] = profile.id!!
} get AddressDao.id)
}
getAddress(key)!!
}
override suspend fun updateAddress(address: Address) = call.withProfile { profile ->
address.id?.let {
getAddress(it)?.let { oldAddress ->
dbQuery {
AddressDao.update({ AddressDao.id eq it }) {
it[firstName] = address.firstName
it[lastName] = address.lastName
it[email] = address.email
it[phone] = address.phone
it[postalAddress] = address.postalAddress
it[favourite] = address.favourite ?: false
it[createdAt] = oldAddress.createdAt
?.let { DateTime(java.util.Date.from(it.atZone(ZoneId.systemDefault()).toInstant())) }
it[userId] = profile.id!!
}
}
}
getAddress(it)
} ?: throw IllegalArgumentException("The ID of the address not set")
}
override suspend fun deleteAddress(id: Int): Boolean = call.withProfile { profile ->
dbQuery {
AddressDao.deleteWhere { (AddressDao.userId eq profile.id!!) and (AddressDao.id eq id) } > 0
}
}
private suspend fun getAddress(id: Int): Address? = dbQuery {
AddressDao.select {
AddressDao.id eq id
}.mapNotNull { toAddress(it) }.singleOrNull()
}
private fun toAddress(row: ResultRow): Address =
Address(
id = row[AddressDao.id],
firstName = row[AddressDao.firstName],
lastName = row[AddressDao.lastName],
email = row[AddressDao.email],
phone = row[AddressDao.phone],
postalAddress = row[AddressDao.postalAddress],
favourite = row[AddressDao.favourite],
createdAt = row[AddressDao.createdAt]?.millis?.let { java.util.Date(it) }?.toInstant()
?.atZone(ZoneId.systemDefault())?.toLocalDateTime(),
userId = row[AddressDao.userId]
)
private fun toAddress(rs: ResultSet): Address =
Address(
id = rs.getInt(AddressDao.id.name),
firstName = rs.getString(AddressDao.firstName.name),
lastName = rs.getString(AddressDao.lastName.name),
email = rs.getString(AddressDao.email.name),
phone = rs.getString(AddressDao.phone.name),
postalAddress = rs.getString(AddressDao.postalAddress.name),
favourite = rs.getBoolean(AddressDao.favourite.name),
createdAt = rs.getTimestamp(AddressDao.createdAt.name)?.toInstant()
?.atZone(ZoneId.systemDefault())?.toLocalDateTime(),
userId = rs.getInt(AddressDao.userId.name)
)
}
class ProfileService(private val call: ApplicationCall) : IProfileService {
override suspend fun getProfile() = call.withProfile { it }
}
class RegisterProfileService : IRegisterProfileService {
override suspend fun registerProfile(profile: Profile, password: String): Boolean {
try {
dbQuery {
UserDao.insert {
it[this.name] = profile.name!!
it[this.username] = profile.username!!
it[this.password] = DigestUtils.sha256Hex(password)
}
}
} catch (e: Exception) {
throw Exception("Register operation failed!")
}
return true
}
}
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/resources/application.conf
================================================
ktor {
deployment {
port = 8080
watch = [build/classes/kotlin/jvm/main]
}
application {
modules = [com.example.MainKt.main]
}
}
db {
driver = "org.h2.Driver"
jdbcUrl = "jdbc:h2:file:////tmp/example_ktor"
username = null
password = null
}
================================================
FILE: addressbook-fullstack-ktor/src/jvmMain/resources/logback.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="15 seconds" debug="false">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{ISO8601}]-[%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE-ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/ktor.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/archived/ktor.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!-- each archived file, size max 10MB -->
<maxFileSize>10MB</maxFileSize>
<!-- total size of all archive files, if total size > 20GB, it will delete old archived file -->
<totalSizeCap>20GB</totalSizeCap>
<!-- 60 days to keep -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{ISO8601}]-[%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE-ROLLING"/>
</root>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/bootstrap.js
================================================
config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'});
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/css.js
================================================
config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] });
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/file.js
================================================
config.module.rules.push(
{
test: /\.(jpe?g|png|gif|svg)$/i,
type: 'asset/resource'
}
);
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/handlebars.js
================================================
config.module.rules.push(
{
test: /\.hbs$/i,
loader: 'handlebars-loader'
}
);
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/proxy.js
================================================
if (config.devServer) {
config.devServer.proxy = [
{
context: ["/rpc/*", "/rpcsse/*"],
target: 'http://localhost:8080'
},
{
context: ["/login", "/logout"],
target: 'http://localhost:8080'
},
{
context: ["/rpcws/*"],
target: 'http://localhost:8080',
ws: true
}
]
}
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/tailwind.js
================================================
;(function() {
config.module.rules.push({
test: /tailwind\.css$/,
use: [ '@tailwindcss/webpack' ]
});
})();
================================================
FILE: addressbook-fullstack-ktor/webpack.config.d/webpack.js
================================================
config.resolve.modules.push("kotlin");
if (config.devServer) {
config.devServer.client = {
overlay: false
};
config.devServer.hot = true;
config.devServer.open = false;
config.devServer.port = 3000;
config.devServer.historyApiFallback = true;
config.devtool = 'eval-cheap-source-map';
} else {
config.devtool = undefined;
}
// disable bundle size warning
config.performance = {
assetFilter: function (assetFilename) {
return !assetFilename.endsWith('.js');
},
};
================================================
FILE: addressbook-fullstack-spring-boot/.gettext.json
================================================
{
"js": {
"parsers": [
{
"expression": "tr",
"arguments": {
"text": 0
}
},
{
"expression": "ntr",
"arguments": {
"text": 0,
"textPlural": 1
}
},
{
"expression": "gettext",
"arguments": {
"text": 0
}
},
{
"expression": "ngettext",
"arguments": {
"text": 0,
"textPlural": 1
}
}
],
"glob": {
"pattern": "src/jsMain/**/*.kt"
}
},
"headers": {
"Language": ""
},
"output": "src/jsMain/resources/modules/i18n/messages.pot"
}
================================================
FILE: addressbook-fullstack-spring-boot/.gitignore
================================================
.*/
build/
out/
/refresh.sh
*.imp
*.ipr
*.iws
*.idea
================================================
FILE: addressbook-fullstack-spring-boot/README.md
================================================
## Gradle Tasks
### Resource Processing
* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file.
### Compiling
* compileKotlinJs - Compiles frontend sources.
* compileKotlinJvm - Compiles backend sources.
### Running
* jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000
* jvmRun - Starts a dev server on port 8080
### Packaging
* jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable`
* jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar`
* jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar`
* jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar`
================================================
FILE: addressbook-fullstack-spring-boot/application/build.gradle.kts
================================================
plugins {
kotlin("jvm")
id("org.springframework.boot")
}
dependencies {
implementation(rootProject)
implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
implementation("org.springframework.boot:spring-boot-devtools")
}
springBoot {
mainClass.value(project.parent?.extra?.get("mainClassName")?.toString())
}
================================================
FILE: addressbook-fullstack-spring-boot/build.gradle.kts
================================================
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
plugins {
val kotlinVersion: String by System.getProperties()
kotlin("plugin.serialization") version kotlinVersion
kotlin("multiplatform") version kotlinVersion
kotlin("plugin.spring") version kotlinVersion
val kspVersion: String by System.getProperties()
id("com.google.devtools.ksp") version kspVersion
val kiluaRpcVersion: String by System.getProperties()
id("dev.kilua.rpc") version kiluaRpcVersion
val kvisionVersion: String by System.getProperties()
id("io.kvision") version kvisionVersion
}
version = "1.0.0-SNAPSHOT"
group = "com.example"
// Versions
val kvisionVersion: String by System.getProperties()
val kiluaRpcVersion: String by System.getProperties()
val coroutinesVersion: String by project
val r2dbcPostgresqlVersion: String by project
val r2dbcH2Version: String by project
val e4kVersion: String by project
extra["mainClassName"] = "com.example.MainKt"
kotlin {
jvmToolchain(21)
jvm {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
}
}
js(IR) {
browser {
useEsModules()
commonWebpackConfig {
outputFileName = "main.bundle.js"
sourceMaps = false
}
testTask {
useKarma {
useChromeHeadless()
}
}
}
binaries.executable()
compilerOptions {
target.set("es2015")
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("dev.kilua:kilua-rpc-spring-boot:$kiluaRpcVersion")
implementation("io.kvision:kvision-common-remote:$kvisionVersion")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val jvmMain by getting {
dependencies {
implementation(kotlin("reflect"))
implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-data-r2dbc")
implementation("org.postgresql:r2dbc-postgresql:$r2dbcPostgresqlVersion")
implementation("io.r2dbc:r2dbc-h2:$r2dbcH2Version")
implementation("pl.treksoft:r2dbc-e4k:$e4kVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$coroutinesVersion")
}
}
val jvmTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(kotlin("test-junit"))
implementation("org.springframework.boot:spring-boot-starter-test")
}
}
val jsMain by getting {
dependencies {
implementation("io.kvision:kvision:$kvisionVersion")
implementation("io.kvision:kvision-bootstrap:$kvisionVersion")
implementation("io.kvision:kvision-state:$kvisionVersion")
implementation("io.kvision:kvision-fontawesome:$kvisionVersion")
implementation("io.kvision:kvision-i18n:$kvisionVersion")
implementation("io.kvision:kvision-rest:$kvisionVersion")
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
implementation("io.kvision:kvision-testutils:$kvisionVersion")
}
}
}
}
================================================
FILE: addressbook-fullstack-spring-boot/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: addressbook-fullstack-spring-boot/gradle.properties
================================================
#Plugins
systemProp.kotlinVersion=2.3.20
systemProp.kspVersion=2.3.6
systemProp.kiluaRpcVersion=0.0.43
systemProp.springBootVersion=4.0.4
#Dependencies
systemProp.kvisionVersion=9.5.0
coroutinesVersion=1.10.2
r2dbcPostgresqlVersion=1.1.1.RELEASE
r2dbcH2Version=1.0.0.RELEASE
e4kVersion=0.9.0
org.gradle.jvmargs=-Xmx2g
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configuration-cache=true
================================================
FILE: addressbook-fullstack-spring-boot/gradlew
================================================
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: addressbook-fullstack-spring-boot/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: addressbook-fullstack-spring-boot/settings.gradle.kts
================================================
@file:Suppress("UnstableApiUsage")
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
dependencyResolutionManagement {
repositories {
mavenCentral()
mavenLocal()
}
}
rootProject.name = "addressbook-fullstack-spring-boot"
include(":application")
================================================
FILE: addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Model.kt
================================================
@file:UseContextualSerialization(OffsetDateTime::class)
package com.example
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseContextualSerialization
import io.kvision.types.OffsetDateTime
expect class Profile
@Serializable
data class Address(
val id: Int? = 0,
val firstName: String? = null,
val lastName: String? = null,
val email: String? = null,
val phone: String? = null,
val postalAddress: String? = null,
val favourite: Boolean? = false,
val createdAt: OffsetDateTime? = null,
val userId: Int? = null
)
================================================
FILE: addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Service.kt
================================================
package com.example
import dev.kilua.rpc.annotations.RpcService
import kotlinx.serialization.Serializable
@Serializable
enum class Sort {
FN, LN, E, F
}
@RpcService
interface IAddressService {
suspend fun getAddressList(search: String?, types: String, sort: Sort): List<Address>
suspend fun addAddress(address: Address): Address
suspend fun updateAddress(address: Address): Address
suspend fun deleteAddress(id: Int): Boolean
}
@RpcService
interface IProfileService {
suspend fun getProfile(): Profile
}
@RpcService
interface IRegisterProfileService {
suspend fun registerProfile(profile: Profile, password: String): Boolean
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/App.kt
================================================
package com.example
import io.kvision.Application
import io.kvision.BootstrapModule
import io.kvision.CoreModule
import io.kvision.FontAwesomeModule
import io.kvision.Hot
import io.kvision.i18n.DefaultI18nManager
import io.kvision.i18n.I18n
import io.kvision.panel.root
import io.kvision.panel.splitPanel
import io.kvision.remote.registerRemoteTypes
import io.kvision.startApplication
import io.kvision.utils.perc
import io.kvision.utils.useModule
import io.kvision.utils.vh
import kotlinx.browser.window
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.launch
val AppScope = CoroutineScope(window.asCoroutineDispatcher())
@JsModule("./modules/css/kvapp.css")
external object kvappCss
@JsModule("./modules/i18n/messages-en.json")
external val messagesEn: dynamic
@JsModule("./modules/i18n/messages-pl.json")
external val messagesPl: dynamic
class App : Application() {
init {
useModule(kvappCss)
}
override fun start() {
I18n.manager =
DefaultI18nManager(
mapOf(
"en" to messagesEn,
"pl" to messagesPl
)
)
root("kvapp") {
splitPanel {
width = 100.perc
height = 100.vh
add(ListPanel)
add(EditPanel)
}
}
AppScope.launch {
Model.getAddressList()
}
}
}
fun main() {
registerRemoteTypes()
startApplication(::App, js("import.meta.webpackHot").unsafeCast<Hot?>(), BootstrapModule, FontAwesomeModule, CoreModule)
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/EditPanel.kt
================================================
package com.example
import io.kvision.core.onEvent
import io.kvision.form.FormPanel
import io.kvision.form.check.CheckBox
import io.kvision.form.formPanel
import io.kvision.form.text.Text
import io.kvision.html.ButtonStyle
import io.kvision.html.InputType
import io.kvision.html.button
import io.kvision.i18n.I18n.tr
import io.kvision.panel.HPanel
import io.kvision.panel.StackPanel
import io.kvision.utils.ENTER_KEY
import io.kvision.utils.px
import kotlinx.coroutines.launch
object EditPanel : StackPanel() {
private var editingId: Int? = null
private val formPanel: FormPanel<Address>
init {
padding = 10.px
formPanel = formPanel {
add(Address::firstName, Text(label = "${tr("First name")}:").apply { maxlength = 255 })
add(Address::lastName, Text(label = "${tr("Last name")}:").apply { maxlength = 255 })
add(Address::email, Text(InputType.EMAIL, label = "${tr("E-mail")}:").apply { maxlength = 255 }) {
it.getValue()
?.let {
"(?:[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])".toRegex()
.matches(it)
}
}
add(Address::phone, Text(label = "${tr("Phone number")}:").apply { maxlength = 255 })
add(Address::postalAddress, Text(label = "${tr("Postal address")}:").apply { maxlength = 255 })
add(Address::favourite, CheckBox(label = tr("Mark as favourite")))
add(HPanel(spacing = 10) {
button(tr("Save"), "fas fa-check", ButtonStyle.PRIMARY).onClick {
this@EditPanel.save()
}
button(tr("Cancel"), "fas fa-times", ButtonStyle.SECONDARY).onClick {
this@EditPanel.close()
}
})
onEvent {
keydown = {
if (it.keyCode == ENTER_KEY) {
this@EditPanel.save()
}
}
}
}
add(MainPanel)
}
fun add() {
formPanel.clearData()
open(null)
}
fun edit(index: Int) {
val address = Model.addresses[index]
formPanel.setData(address)
open(address.id)
}
private fun save() {
AppScope.launch {
if (formPanel.validate()) {
val address = formPanel.getData()
if (editingId != null) {
Model.updateAddress(address.copy(id = editingId))
} else {
Model.addAddress(address)
}
close()
}
}
}
fun delete(index: Int) {
AppScope.launch {
close()
Model.addresses[index].id?.let {
Model.deleteAddress(it)
}
}
}
private fun open(editingId: Int?) {
this.editingId = editingId
activeChild = formPanel
formPanel.validate()
formPanel.getControl(Address::firstName)?.focus()
}
private fun close() {
editingId = null
activeChild = MainPanel
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/ListPanel.kt
================================================
package com.example
import io.kvision.core.AlignItems
import io.kvision.core.FontStyle
import io.kvision.core.onEvent
import io.kvision.form.check.RadioGroup
import io.kvision.form.check.radioGroup
import io.kvision.form.text.TextInput
import io.kvision.form.text.text
import io.kvision.html.InputType
import io.kvision.html.icon
import io.kvision.html.link
import io.kvision.i18n.I18n.tr
import io.kvision.modal.Confirm
import io.kvision.panel.SimplePanel
import io.kvision.panel.hPanel
import io.kvision.state.bind
import io.kvision.table.HeaderCell
import io.kvision.table.TableType
import io.kvision.table.cell
import io.kvision.table.row
import io.kvision.table.table
import io.kvision.utils.px
object ListPanel : SimplePanel() {
init {
padding = 5.px
hPanel(alignItems = AlignItems.CENTER, spacing = 20) {
text(InputType.SEARCH) {
placeholder = "${tr("Search")} ..."
setEventListener<TextInput> {
input = {
Model.search = self.value
}
}
}
radioGroup(listOf("all" to tr("All"), "fav" to tr("Favourites")), "all", inline = true) {
marginBottom = 0.px
setEventListener<RadioGroup> {
change = {
Model.types = self.value ?: "all"
}
}
}
}
table(types = setOf(TableType.STRIPED, TableType.HOVER)) {
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("First name"), Sort.FN))
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("Last name"), Sort.LN))
addHeaderCell(this@ListPanel.sortingHeaderCell(tr("E-mail"), Sort.E))
addHeaderCell(this@ListPanel.sortingHeaderCell("", Sort.F))
addHeaderCell(HeaderCell(""))
bind(Model.addresses) { addresses ->
addresses.forEachIndexed { index, address ->
row {
cell(address.firstName)
cell(address.lastName)
cell {
address.email?.let {
link(it, "mailto:$it") {
fontStyle = FontStyle.ITALIC
}
}
}
cell {
address.favourite?.let {
if (it) icon("far fa-heart") {
title = tr("Favourite")
}
}
}
cell {
icon("fas fa-times") {
title = tr("Delete")
onEvent {
click = { e ->
e.stopPropagation()
Confirm.show("Are you sure?", "Do you want to delete this address?") {
EditPanel.delete(index)
}
}
}
}
}
onEvent {
click = {
EditPanel.edit(index)
}
}
}
}
}
}
}
private fun sortingHeaderCell(title: String, sort: Sort) = HeaderCell(title) {
onEvent {
click = {
Model.sort = sort
}
}
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/MainPanel.kt
================================================
package com.example
import io.kvision.core.JustifyContent
import io.kvision.html.ButtonStyle
import io.kvision.html.button
import io.kvision.html.div
import io.kvision.i18n.I18n.tr
import io.kvision.panel.HPanel
import io.kvision.state.bind
import kotlinx.browser.document
object MainPanel : HPanel(justify = JustifyContent.SPACEBETWEEN) {
init {
button(tr("Add new address"), "fas fa-plus", style = ButtonStyle.PRIMARY).onClick {
EditPanel.add()
}
div().bind(Model.profile) { profile ->
if (profile.name != null) {
button("Logout: ${profile.name}", "fas fa-sign-out-alt", style = ButtonStyle.WARNING).onClick {
document.location?.href = "/logout"
}
}
}
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/Model.kt
================================================
package com.example
import dev.kilua.rpc.getService
import io.kvision.state.ObservableList
import io.kvision.state.ObservableValue
import io.kvision.state.observableListOf
import io.kvision.utils.syncWithList
import kotlinx.coroutines.launch
object Model {
private val addressService = getService<IAddressService>()
private val profileService = getService<IProfileService>()
private val registerProfileService = getService<IRegisterProfileService>()
val addresses: ObservableList<Address> = observableListOf()
val profile = ObservableValue(Profile())
var search: String? = null
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
var types: String = "all"
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
var sort = Sort.FN
set(value) {
field = value
AppScope.launch {
getAddressList()
}
}
suspend fun getAddressList() {
Security.withAuth {
val newAddresses = addressService.getAddressList(search, types, sort)
addresses.syncWithList(newAddresses)
}
}
suspend fun addAddress(address: Address) {
Security.withAuth {
addressService.addAddress(address)
getAddressList()
}
}
suspend fun updateAddress(address: Address) {
Security.withAuth {
addressService.updateAddress(address)
getAddressList()
}
}
suspend fun deleteAddress(id: Int): Boolean {
return Security.withAuth {
val result = addressService.deleteAddress(id)
getAddressList()
result
}
}
suspend fun readProfile() {
Security.withAuth {
profile.value = profileService.getProfile()
}
}
suspend fun registerProfile(profile: Profile, password: String): Boolean {
return try {
registerProfileService.registerProfile(profile, password)
} catch (e: Exception) {
console.log(e)
false
}
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/Security.kt
================================================
package com.example
import dev.kilua.rpc.SecurityException
import io.kvision.core.onEvent
import io.kvision.form.FormPanel
import io.kvision.form.formPanel
import io.kvision.form.text.Password
import io.kvision.form.text.Text
import io.kvision.html.Button
import io.kvision.html.ButtonStyle
import io.kvision.i18n.I18n.tr
import io.kvision.modal.Alert
import io.kvision.modal.Dialog
import io.kvision.remote.SecurityMgr
import io.kvision.rest.HttpMethod
import io.kvision.rest.ResponseBodyType
import io.kvision.rest.RestClient
import io.kvision.rest.requestDynamic
import io.kvision.utils.ENTER_KEY
import io.kvision.utils.obj
import kotlinx.coroutines.asDeferred
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
@Serializable
actual data class Profile(
val name: String? = null,
val username: String? = null,
val password: String? = null,
val password2: String? = null
)
/**
* Username and password credentials.
*/
@Serializable
data class Credentials(val username: String? = null, val password: String? = null)
/**
* Form login dispatcher.
*/
class LoginService(val loginEndpoint: String) {
val loginAgent = RestClient()
/**
* Login with a form.
* @param credentials username and password credentials
*/
suspend fun login(credentials: Credentials?): Boolean =
if (credentials?.username != null) {
loginAgent.requestDynamic(loginEndpoint) {
data = obj {
this.username = credentials.username
this.password = credentials.password
}
method = HttpMethod.POST
contentType = "application/x-www-form-urlencoded"
responseBodyType = ResponseBodyType.READABLE_STREAM
}.then { _: dynamic -> true }.asDeferred().await()
} else {
throw SecurityException("Credentials cannot be empty")
}
}
class LoginWindow : Dialog<Credentials>(closeButton = false, escape = false, animation = false) {
private val loginPanel: FormPanel<Credentials>
private val loginButton: Button
private val userButton: Button
private val registerPanel: FormPanel<Profile>
private val registerButton: Button
private val cancelButton: Button
init {
loginPanel = formPanel {
add(Credentials::username, Text(label = "${tr("Login")}:"), required = true)
add(Credentials::password, Password(label = "${tr("Password")}:"), required = true)
onEvent {
keydown = {
if (it.keyCode == ENTER_KEY) {
this@LoginWindow.processCredentials()
}
}
}
}
registerPanel = formPanel {
add(Profile::name, Text(label = "${tr("Your name")}:"), required = true)
add(Profile::username, Text(label = "Login:"), required = true)
add(
Profile::password, Password(label = "${tr("Password")}:"), required = true,
validatorMessage = { "Password too short" }) {
(it.getValue()?.length ?: 0) >= 8
}
add(Profile::password2, Password(label = "${tr("Confirm password")}:"), required = true,
validatorMessage = { tr("Password too short") }) {
(it.getValue()?.length ?: 0) >= 8
}
validator = {
val result = it[Profile::password] == it[Profile::password2]
if (!result) {
it.getControl(Profile::password)?.validatorError = tr("Passwords are not the same")
it.getControl(Profile::password2)?.validatorError = tr("Passwords are not the same")
}
result
}
validatorMessage = { tr("Passwords are not the same") }
}
cancelButton = Button(tr("Cancel"), "fas fa-times") {
onClick {
this@LoginWindow.hideRegisterForm()
}
}
registerButton = Button(tr("Register"), "fas fa-check", ButtonStyle.PRIMARY) {
onClick {
this@LoginWindow.processRegister()
}
}
loginButton = Button(tr("Login"), "fas fa-check", ButtonStyle.PRIMARY) {
onClick {
this@LoginWindow.processCredentials()
}
}
userButton = Button(tr("Register user"), "fas fa-user") {
onClick {
this@LoginWindow.showRegisterForm()
}
}
addButton(userButton)
addButton(loginButton)
addButton(cancelButton)
addButton(registerButton)
hideRegisterForm()
}
private fun showRegisterForm() {
loginPanel.hide()
registerPanel.show()
registerPanel.clearData()
loginButton.hide()
userButton.hide()
cancelButton.show()
registerButton.show()
}
private fun hideRegisterForm() {
loginPanel.show()
registerPanel.hide()
loginButton.show()
userButton.show()
cancelButton.hide()
registerButton.hide()
}
private fun processCredentials() {
if (loginPanel.validate()) {
setResult(loginPanel.getData())
loginPanel.clearData()
}
}
private fun processRegister() {
if (registerPanel.validate()) {
val userData = registerPanel.getData()
AppScope.launch {
if (Model.registerProfile(userData, userData.password!!)
) {
Alert.show(text = tr("User registered. You can now log in.")) {
hideRegisterForm()
}
} else {
Alert.show(text = tr("This login is not available. Please try again."))
}
}
}
}
}
object Security : SecurityMgr() {
private val loginService = LoginService("/login")
private val loginWindow = LoginWindow()
override suspend fun login(): Boolean {
return loginService.login(loginWindow.getResult())
}
override suspend fun afterLogin() {
Model.readProfile()
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/resources/index.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KVision Address Book</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.1.0/dist/materia/bootstrap.min.css" integrity="sha256-T8h7oW5tHp4MhFhmRoDI8xjnB2ld89qSgc3s9g8T0uU=" crossorigin="anonymous">
<script type="text/javascript" src="main.bundle.js"></script>
</head>
<body>
<div id="kvapp"></div>
</body>
</html>
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/resources/modules/css/kvapp.css
================================================
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages-en.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages-pl.po
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the KVision package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: KVision\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 01:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages.pot
================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the addressbook-fullstack-spring-boot package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: addressbook-fullstack-spring-boot 1.0.0-SNAPSHOT\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-01 17:14+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:36
msgid "Mark as favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:39
msgid "Save"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/EditPanel.kt:42
#: ../src/frontendMain/kotlin/com/example/Security.kt:73
msgid "Cancel"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:31
msgid "First name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:32
msgid "Last name"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:33
msgid "E-mail"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "All"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:47
msgid "Favourites"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:72
msgid "Favourite"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/ListPanel.kt:78
msgid "Delete"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/MainPanel.kt:15
msgid "Add new address"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:59
msgid "Password too short"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:65
#: ../src/frontendMain/kotlin/com/example/Security.kt:66
#: ../src/frontendMain/kotlin/com/example/Security.kt:70
msgid "Passwords are not the same"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:76
msgid "Register"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:79
msgid "Login"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:82
msgid "Register user"
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:132
msgid "User registered. You can now log in."
msgstr ""
#: ../src/frontendMain/kotlin/com/example/Security.kt:136
msgid "This login is not available. Please try again."
msgstr ""
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Main.kt
================================================
package com.example
import dev.kilua.rpc.getAllServiceManagers
import io.kvision.remote.registerRemoteTypes
import io.r2dbc.spi.ConnectionFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean
import org.springframework.core.io.Resource
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories
import org.springframework.r2dbc.connection.init.ConnectionFactoryInitializer
import org.springframework.r2dbc.connection.init.ResourceDatabasePopulator
@EnableR2dbcRepositories
@SpringBootApplication
class KVApplication {
@Value("classpath:schema.sql")
lateinit var schema: Resource
@Bean
fun initializer(connectionFactory: ConnectionFactory): ConnectionFactoryInitializer {
val initializer = ConnectionFactoryInitializer()
initializer.setConnectionFactory(connectionFactory)
initializer.setDatabasePopulator(ResourceDatabasePopulator(schema))
return initializer
}
@Bean
fun getManagers() = getAllServiceManagers()
}
fun main(args: Array<String>) {
registerRemoteTypes()
runApplication<KVApplication>(*args)
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Security.kt
================================================
package com.example
import dev.kilua.rpc.getServiceManager
import dev.kilua.rpc.serviceMatchers
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Table
import org.springframework.data.relational.core.query.Criteria.where
import org.springframework.data.relational.core.query.Query.query
import org.springframework.http.HttpMethod
import org.springframework.http.HttpStatus
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity
import org.springframework.security.config.web.server.ServerHttpSecurity
import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.userdetails.MapReactiveUserDetailsService
import org.springframework.security.core.userdetails.ReactiveUserDetailsPasswordService
import org.springframework.security.core.userdetails.ReactiveUserDetailsService
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.security.crypto.factory.PasswordEncoderFactories
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.security.web.server.SecurityWebFilterChain
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationFailureHandler
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler
import org.springframework.security.web.server.authentication.logout.RedirectServerLogoutSuccessHandler
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatchers
import org.springframework.stereotype.Service
import pl.treksoft.e4k.core.DbClient
import reactor.core.publisher.Mono
import java.net.URI
@EnableWebFluxSecurity
@Configuration
class SecurityConfiguration {
@Bean
fun securityWebFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
return http.authorizeExchange {
it.serviceMatchers(getServiceManager<IAddressService>(), getServiceManager<IProfileService>())
.authenticated().pathMatchers("/**").permitAll()
}.csrf {
it.disable()
}.exceptionHandling {
it.authenticationEntryPoint { exchange, _ ->
val response = exchange.response
response.statusCode = HttpStatus.UNAUTHORIZED
exchange.mutate().response(response)
Mono.empty()
}
}.formLogin {
it.loginPage("/login")
.authenticationSuccessHandler(RedirectServerAuthenticationSuccessHandler().apply {
this.setRedirectStrategy { exchange, _ ->
Mono.fromRunnable {
val response = exchange.response
response.statusCode = HttpStatus.OK
}
}
}).authenticationFailureHandler(RedirectServerAuthenticationFailureHandler("/login").apply {
this.setRedirectStrategy { exchange, _ ->
Mono.fromRunnable {
val response = exchange.response
response.statusCode = HttpStatus.UNAUTHORIZED
}
}
})
}.logout {
it.logoutUrl("/logout")
.requiresLogout(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/logout"))
.logoutSuccessHandler(RedirectServerLogoutSuccessHandler().apply {
setLogoutSuccessUrl(URI.create("/"))
})
}.build()
}
@Bean
fun passwordEncoder(): PasswordEncoder {
return PasswordEncoderFactories.createDelegatingPasswordEncoder()
}
}
@Serializable
actual data class Profile(
val id: String? = null,
val name: String? = null
) : UserDetails {
@Transient
private var password: String? = null
@Transient
var password2: String? = null
private var username: String? = null
override fun getUsername(): String {
return username!!
}
fun setUsername(username: String) {
this.username = username
}
override fun getPassword(): String? {
return password
}
fun setPassword(password: String?) {
this.password = password
}
override fun getAuthorities(): MutableCollection<out GrantedAuthority> {
return mutableListOf()
}
override fun isEnabled(): Boolean {
return true
}
override fun isCredentialsNonExpired(): Boolean {
return true
}
override fun isAccountNonExpired(): Boolean {
return true
}
override fun isAccountNonLocked(): Boolean {
return true
}
}
@Table("USERS")
data class User(@Id val id: Int? = null, val username: String, val password: String, val name: String)
@Service
class MyReactiveUserDetailsService(private val client: DbClient) : ReactiveUserDetailsService, ReactiveUserDetailsPasswordService {
override fun findByUsername(username: String): Mono<UserDetails> {
return client.r2dbcEntityTemplate.select(User::class.java).matching(query(where("username").`is`(username)))
.first().map {
@Suppress("USELESS_CAST")
Profile(it.id.toString(), it.name).apply {
this.username = it.username
this.password = it.password
} as UserDetails
}.switchIfEmpty(
Mono.error(UsernameNotFoundException("User not found"))
)
}
override fun updatePassword(
user: UserDetails,
newPassword: String?
): Mono<UserDetails> {
throw IllegalStateException("Not implemented")
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Service.kt
================================================
package com.example
import io.kvision.types.OffsetDateTime
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitSingle
import org.springframework.beans.factory.config.ConfigurableBeanFactory
import org.springframework.context.annotation.Scope
import org.springframework.r2dbc.core.awaitOne
import org.springframework.r2dbc.core.awaitOneOrNull
import org.springframework.r2dbc.core.awaitRowsUpdated
import org.springframework.r2dbc.core.flow
import org.springframework.security.core.Authentication
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import org.springframework.web.reactive.function.server.ServerRequest
import pl.treksoft.e4k.core.DbClient
import pl.treksoft.e4k.core.delete
import pl.treksoft.e4k.core.execute
import pl.treksoft.e4k.core.insert
import pl.treksoft.e4k.core.setNullable
import pl.treksoft.e4k.core.update
import pl.treksoft.e4k.core.valueNullable
import pl.treksoft.e4k.query.parameterNullable
import pl.treksoft.e4k.query.query
interface WithProfile {
val serverRequest: ServerRequest
suspend fun getProfile(): Profile {
return serverRequest.principal().ofType(Authentication::class.java).map {
it.principal as Profile
}.awaitSingle()
}
}
@Service
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
class AddressService(override val serverRequest: ServerRequest, private val dbClient: DbClient) :
IAddressService, WithProfile {
override suspend fun getAddressList(search: String?, types: String, sort: Sort): List<Address> {
val profile = getProfile()
val query = query {
select("SELECT * FROM address")
whereGroup {
where("user_id = :user_id")
parameterNullable("user_id", profile.id?.toInt())
search?.let {
where(
"""(lower(first_name) like :search
OR lower(last_name) like :search
OR lower(email) like :search
OR lower(phone) like :search
OR lower(postal_address) like :search)""".trimMargin()
)
parameter("search", "%${it.lowercase()}%")
}
if (types == "fav") {
where("favourite")
}
}
when (sort) {
Sort.FN -> orderBy("lower(first_name)")
Sort.LN -> orderBy("lower(last_name)")
Sort.E -> orderBy("lower(email)")
Sort.F -> orderBy("favourite")
}
}
return dbClient.execute<Address>(query).flow().toList()
}
override suspend fun addAddress(address: Address): Address {
val profile = getProfile()
val id = dbClient.insert().into("address", "id")
.valueNullable("first_name", address.firstName)
.valueNullable("last_name", address.lastName)
.valueNullable("email", address.email)
.valueNullable("phone", address.phone)
.valueNullable("postal_address", address.postalAddress)
.value("favourite", address.favourite == true)
.value("created_at", OffsetDateTime.now())
.value("user_id", profile.id!!.toInt())
.awaitOne()
return dbClient.execute<Address>("SELECT * FROM address WHERE id = :id")
.bind("id", id).fetch().awaitOne()
}
override suspend fun updateAddress(address: Address): Address {
val profile = getProfile()
val id = address.id ?: throw IllegalArgumentException("The ID of the address is not set")
dbClient.execute<Address>("SELECT * FROM address WHERE id = :id AND user_id = :userId")
.bind("id", id).bind("userId", profile.id!!.toInt())
.fetch().awaitOneOrNull() ?: throw IllegalArgumentException("Address not found")
dbClient.update().table("address").using {
Update.setNullable("first_name", address.firstName)
.setNullable("last_name", address.lastName)
.setNullable("email", address.email)
.setNullable("phone", address.phone)
.setNullable("postal_address", address.postalAddress)
.set("favourite", address.favourite == true)
}.matching("id = :id", mapOf("id" to id)).fetch().awaitRowsUpdated()
return dbClient.execute<Address>("SELECT * FROM address WHERE id = :id")
.bind("id", id).fetch().awaitOne()
}
override suspend fun deleteAddress(id: Int): Boolean {
return dbClient.delete().from("address")
.matching("id = :id", mapOf("id" to id)).fetch().awaitRowsUpdated() == 1L
}
}
@Service
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
class ProfileService(override val serverRequest: ServerRequest) : IProfileService, WithProfile {
override suspend fun getProfile(): Profile {
return super.getProfile()
}
}
@Service
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
class RegisterProfileService(
private val dbClient: DbClient,
private val passwordEncoder: PasswordEncoder
) : IRegisterProfileService {
override suspend fun registerProfile(profile: Profile, password: String): Boolean {
try {
dbClient.insert().into(User::class.java).using(
User(
username = profile.username,
name = profile.name!!,
password = passwordEncoder.encode(password)!!
)
).awaitSingle()
} catch (e: Exception) {
throw Exception("Register operation failed!")
}
return true
}
}
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/resources/application.yml
================================================
spring:
r2dbc:
url: r2dbc:h2:file:////tmp/example_spring?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
server:
compression:
enabled: true
mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
min-response-size: 1024
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/resources/logback.xml
================================================
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="INFO" />
<root level="WARN">
<appender-ref ref="STDOUT" />
</root>
</configuration>
================================================
FILE: addressbook-fullstack-spring-boot/src/jvmMain/resources/schema.sql
================================================
CREATE TABLE IF NOT EXISTS users (
id serial NOT NULL,
username varchar(255) NOT NULL,
password varchar(255) NOT NULL,
name varchar(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE(username)
);
CREATE TABLE IF NOT EXISTS address (
id serial NOT NULL,
first_name varchar(255),
last_name varchar(255),
email varchar(255),
phone varchar(255),
postal_address varchar(255),
favourite boolean NOT NULL DEFAULT false,
created_at timestamp with time zone,
user_id int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE CASCADE ON DELETE CASCADE
);
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/bootstrap.js
================================================
config.module.rules.push({test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, type: 'asset'});
config.module.rules.push({test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, type: 'asset/resource'});
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/css.js
================================================
config.module.rules.push({ test: /\.css$/, use: ["style-loader", { loader: "css-loader", options: {sourceMap: false} } ] });
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/file.js
================================================
config.module.rules.push(
{
test: /\.(jpe?g|png|gif|svg)$/i,
type: 'asset/resource'
}
);
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/handlebars.js
================================================
config.module.rules.push(
{
test: /\.hbs$/i,
loader: 'handlebars-loader'
}
);
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/proxy.js
================================================
if (config.devServer) {
config.devServer.proxy = [
{
context: ["/rpc/*", "/rpcsse/*"],
target: 'http://localhost:8080'
},
{
context: ["/login", "/logout"],
target: 'http://localhost:8080'
},
{
context: ["/rpcws/*"],
target: 'http://localhost:8080',
ws: true
}
]
}
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/tailwind.js
================================================
;(function() {
config.module.rules.push({
test: /tailwind\.css$/,
use: [ '@tailwindcss/webpack' ]
});
})();
================================================
FILE: addressbook-fullstack-spring-boot/webpack.config.d/webpack.js
================================================
config.resolve.modules.push("kotlin");
if (config.devServer) {
config.devServer.client = {
overlay: false
};
config.devServer.hot = true;
config.devServer.open = false;
config.devServer.port = 3000;
config.devServer.historyApiFallback = true;
config.devtool = 'eval-cheap-source-map';
} else {
config.devtool = undefined;
}
// disable bundle size warning
config.performance = {
assetFilter: function (assetFilename) {
return !assetFilename.endsWith('.js');
},
};
================================================
FILE: addressbook-fullstack-spring-boot-oauth/.gettext.json
================================================
{
"js": {
"parsers": [
{
"expression": "tr",
"arguments": {
"text": 0
}
},
{
"expression": "ntr",
"arguments": {
"text": 0,
"textPlural": 1
}
},
{
"expression": "gettext",
"arguments": {
"text": 0
}
},
{
"expression": "ngettext",
"arguments": {
"text": 0,
"textPlural": 1
}
}
],
"glob": {
"pattern": "src/jsMain/**/*.kt"
}
},
"headers": {
"Language": ""
},
"output": "src/jsMain/resources/modules/i18n/messages.pot"
}
================================================
FILE: addressbook-fullstack-spring-boot-oauth/.gitignore
================================================
.*/
build/
out/
/refresh.sh
*.imp
*.ipr
*.iws
*.idea
================================================
FILE: addressbook-fullstack-spring-boot-oauth/README.md
================================================
## Gradle Tasks
### Resource Processing
* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot` translation template file.
### Compiling
* compileKotlinJs - Compiles frontend sources.
* compileKotlinJvm - Compiles backend sources.
### Running
* jsBrowserDevelopmentRun - Starts a webpack dev server on port 3000
* jvmRun - Starts a dev server on port 8080
You need to pass your Google oauth application's Client ID and Client Secret in:
```
gradle jvmRun -Dclient.id=yourclientid -Dclient.secret=yourclientsecret
```
### Packaging
* jsBrowserDistribution - Bundles the compiled js files into `build/dist/js/productionExecutable`
* jsJar - Packages a standalone "web" frontend jar with all required files into `build/libs/*.jar`
* jvmJar - Packages a backend jar with compiled source files into `build/libs/*.jar`
* jarWithJs - Packages a "fat" jar with all backend sources and dependencies while also embedding frontend resources into `build/libs/*.jar`
================================================
FILE: addressbook-fullstack-spring-boot-oauth/application/build.gradle.kts
================================================
plugins {
kotlin("jvm")
id("org.springframework.boot")
}
dependencies {
implementation(rootProject)
implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
implementation("org.springframework.boot:spring-boot-devtools")
}
springBoot {
mainClass.value(project.parent?.extra?.get("mainClassName")?.toString())
}
tasks.named<org.springframework.boot.gradle.tasks.run.BootRun>("bootRun") {
jvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005")
systemProperties = System.getProperties().toMap() as Map<String, Any>
}
================================================
FILE: addressbook-fullstack-spring-boot-oauth/build.gradle.kts
================================================
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
plugins {
val kotlinVersion: String by System.getProperties()
kotlin("plugin.serialization") version kotlinVersion
kotlin("multiplatform") version kotlinVersion
kotlin("plugin.spring") version kotlinVersion
val kspVersion: String by System.getProperties()
id("com.google.devtools.ksp") version kspVersion
val kiluaRpcVersion: String by System.getProperties()
id("dev.kilua.rpc") version kiluaRpcVersion
val kvisionVersion: String by System.getProperties()
id("io.kvision") version kvisionVersion
}
version = "1.0.0-SNAPSHOT"
group = "com.example"
// Versions
val kvisionVersion: String by System.getProperties()
val kiluaRpcVersion: String by System.getProperties()
val coroutinesVersion: String by project
val r2dbcPostgresqlVersion: String by project
val r2dbcH2Version: String by project
val e4kVersion: String by project
extra["mainClassName"] = "com.example.MainKt"
kotlin {
jvmToolchain(21)
jvm {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
}
}
js(IR) {
browser {
useEsModules()
commonWebpackConfig {
outputFileName = "main.bundle.js"
sourceMaps = false
}
testTask {
useKarma {
useChromeHeadless()
}
}
}
binaries.executable()
compilerOptions {
target.set("es2015")
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("dev.kilua:kilua-rpc-spring-boot:$kiluaRpcVersion")
implementation("io.kvision:kvision-common-remote:$kvisionVersion")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val jvmMain by getting {
dependencies {
implementation(kotlin("reflect"))
implementation(project.dependencies.platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
implementation("org.springframework.security:spring-security-oauth2-client")
implementation("org.springframework.boot:spring-boot-starter-data-r2dbc")
implementation("org.postgresql:r2dbc-postgresql:$r2dbcPostgresqlVersion")
implementation("io.r2dbc:r2dbc-h2:$r2dbcH2Version")
implementation("pl.treksoft:r2dbc-e4k:$e4kVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$coroutinesVersion")
}
}
val jvmTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(kotlin("test-junit"))
implementation("org.springframework.boot:spring-boot-starter-test")
}
}
val jsMain by getting {
dependencies {
implementation("io.kvision:kvision:$kvisionVersion")
implementation("io.kvision:kvision-bootstrap:$kvisionVersion")
implementation("io.kvision:kvision-state:$kvisionVersion")
implementation("io.kvision:kvision-fontawesome:$kvisionVersion")
implementation("io.kvision:kvision-i18n:$kvisionVersion")
implementation("io.kvision:kvision-rest:$kvisionVersion")
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
implementation("io.kvision:kvision-testutils:$kvisionVersion")
}
}
}
}
================================================
FILE: addressbook-fullstack-spring-boot-oauth/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: addressbook-fullstack-spring-boot-oauth/gradle.properties
================================================
#Plugins
systemProp.kotlinVersion=2.3.20
systemProp.kspVersion=2.3.6
systemProp.kiluaRpcVersion=0.0.43
systemProp.springBootVersion=4.0.4
#Dependencies
systemProp.kvisionVersion=9.5.0
coroutinesVersion=1.10.2
r2dbcPostgresqlVersion=1.1.1.RELEASE
r2dbcH2Version=1.0.0.RELEASE
e4kVersion=0.9.0
org.gradle.jvmargs=-Xmx2g
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configuration-cache=true
================================================
FILE: addressbook-fullstack-spring-boot-oauth/gradlew
================================================
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: addressbook-fullstack-spring-boot-oauth/gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: addressbook-fullstack-spring-boot-oauth/settings.gradle.kts
================================================
@file:Suppress("UnstableApiUsage")
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
dependencyResolutionManagement {
repositories {
mavenCentral()
mavenLocal()
}
}
rootProject.name = "addressbook-fullstack-spring-boot-oauth"
include(":application")
================================================
FILE: addressbook-fullstack-spring-boot-oauth/src/com
gitextract_l9t_x8j8/
├── .gitignore
├── LICENSE
├── README.md
├── addressbook/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ └── Model.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ └── messages-pl.po
│ │ └── jsTest/
│ │ ├── kotlin/
│ │ │ └── test/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── AppSpec.kt
│ │ └── resources/
│ │ └── css/
│ │ └── kvapp.css
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-ktor/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── logs/
│ │ └── ktor.log
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Dao.kt
│ │ │ ├── Db.kt
│ │ │ ├── Main.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.conf
│ │ └── logback.xml
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-spring-boot/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── application/
│ │ └── build.gradle.kts
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ ├── Security.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback.xml
│ │ └── schema.sql
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-fullstack-spring-boot-oauth/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── application/
│ │ └── build.gradle.kts
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Model.kt
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ ├── MainPanel.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── Security.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ ├── Security.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.yml
│ │ ├── logback.xml
│ │ └── schema.sql
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── addressbook-tabulator/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── EditPanel.kt
│ │ │ │ ├── ListPanel.kt
│ │ │ │ └── Model.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ └── messages-pl.po
│ │ └── jsTest/
│ │ ├── kotlin/
│ │ │ └── test/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── AppSpec.kt
│ │ └── resources/
│ │ └── css/
│ │ └── kvapp.css
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── desktop/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── Calculator.kt
│ │ │ │ ├── DesktopIcon.kt
│ │ │ │ ├── DesktopWindow.kt
│ │ │ │ ├── Paint.kt
│ │ │ │ ├── TextEditor.kt
│ │ │ │ └── WebBrowser.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ └── css/
│ │ │ └── kvapp.css
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── docs/
│ ├── addressbook/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── addressbook-tabulator/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── desktop/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── fomantic/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── helloworld/
│ │ ├── index.html
│ │ └── main.bundle.js
│ ├── patternfly/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ └── main.bundle.js.LICENSE.txt
│ ├── pokedex/
│ │ ├── index.html
│ │ ├── main.bundle.js
│ │ ├── main.bundle.js.LICENSE.txt
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── workbox-a7df7adf.js
│ ├── showcase/
│ │ ├── index.html
│ │ ├── showcase.js
│ │ └── showcase.js.LICENSE.txt
│ ├── template/
│ │ ├── index.html
│ │ ├── template.js
│ │ └── template.js.LICENSE.txt
│ ├── template-tailwindcss/
│ │ ├── index.html
│ │ └── template-tailwindcss.js
│ └── todomvc/
│ ├── index.html
│ ├── main.bundle.js
│ └── package.json
├── encoder-fullstack-ktor/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── Service.kt
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jvmMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ ├── Main.kt
│ │ │ └── Service.kt
│ │ └── resources/
│ │ ├── application.conf
│ │ └── logback.xml
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── proxy.js
│ ├── tailwind.js
│ └── webpack.js
├── fomantic/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── CardView.kt
│ │ │ │ ├── Components.kt
│ │ │ │ ├── State.kt
│ │ │ │ ├── Toolbar.kt
│ │ │ │ └── User.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── jquery.js
│ ├── tailwind.js
│ └── webpack.js
├── helloworld/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── Helloworld.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── helloworld.css
│ │ │ └── i18n/
│ │ │ ├── messages-de.po
│ │ │ ├── messages-en.po
│ │ │ ├── messages-es.po
│ │ │ ├── messages-fr.po
│ │ │ ├── messages-ja.po
│ │ │ ├── messages-ko.po
│ │ │ ├── messages-pl.po
│ │ │ ├── messages-ru.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── HelloworldSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── mini-template/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── src/
│ │ └── jsMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── App.kt
│ │ └── resources/
│ │ └── index.html
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── tailwind.js
│ └── webpack.js
├── patternfly/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── CardView.kt
│ │ │ │ ├── Components.kt
│ │ │ │ ├── ListView.kt
│ │ │ │ ├── Model.kt
│ │ │ │ ├── Redux.kt
│ │ │ │ ├── TableView.kt
│ │ │ │ ├── Toolbar.kt
│ │ │ │ └── User.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── pokedex/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── App.kt
│ │ │ │ ├── Model.kt
│ │ │ │ └── PokeBox.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── modules/
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── pwa.js
│ ├── tailwind.js
│ └── webpack.js
├── showcase/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── BasicTab.kt
│ │ │ │ ├── ButtonsTab.kt
│ │ │ │ ├── ChartTab.kt
│ │ │ │ ├── ContainersTab.kt
│ │ │ │ ├── DataTab.kt
│ │ │ │ ├── DragDropTab.kt
│ │ │ │ ├── DropDownTab.kt
│ │ │ │ ├── FormTab.kt
│ │ │ │ ├── LayoutsTab.kt
│ │ │ │ ├── ModalsTab.kt
│ │ │ │ ├── RestTab.kt
│ │ │ │ ├── Showcase.kt
│ │ │ │ └── TabulatorTab.kt
│ │ │ ├── ktml/
│ │ │ │ ├── rest.en.ktml
│ │ │ │ ├── rest.pl.ktml
│ │ │ │ ├── template1.en.ktml
│ │ │ │ └── template1.pl.ktml
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── showcase.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── ShowcaseSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── template/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── modules/
│ │ │ ├── css/
│ │ │ │ └── kvapp.css
│ │ │ └── i18n/
│ │ │ ├── messages-en.po
│ │ │ ├── messages-pl.po
│ │ │ └── messages.pot
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── template-tailwindcss/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── App.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ ├── modules/
│ │ │ │ ├── css/
│ │ │ │ │ └── kvapp.css
│ │ │ │ └── i18n/
│ │ │ │ ├── messages-en.po
│ │ │ │ ├── messages-pl.po
│ │ │ │ └── messages.pot
│ │ │ └── tailwind/
│ │ │ ├── tailwind.config.js
│ │ │ └── tailwind.css
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── todomvc/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── Todomvc.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── package.json
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
├── todomvc-ballast/
│ ├── .gettext.json
│ ├── .gitignore
│ ├── README.md
│ ├── build.gradle.kts
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle.kts
│ ├── src/
│ │ ├── jsMain/
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ ├── TodoContract.kt
│ │ │ │ ├── TodoEventHandler.kt
│ │ │ │ ├── TodoInputHandler.kt
│ │ │ │ ├── TodoModel.kt
│ │ │ │ ├── TodoModule.kt
│ │ │ │ ├── TodoSavedStateAdapter.kt
│ │ │ │ ├── TodoViewModel.kt
│ │ │ │ └── Todomvc.kt
│ │ │ └── resources/
│ │ │ ├── index.html
│ │ │ └── package.json
│ │ └── jsTest/
│ │ └── kotlin/
│ │ └── test/
│ │ └── com/
│ │ └── example/
│ │ └── AppSpec.kt
│ └── webpack.config.d/
│ ├── bootstrap.js
│ ├── css.js
│ ├── file.js
│ ├── handlebars.js
│ ├── tailwind.js
│ └── webpack.js
└── todomvc-signal/
├── .gettext.json
├── .gitignore
├── README.md
├── build.gradle.kts
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
├── src/
│ ├── jsMain/
│ │ ├── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── Todomvc.kt
│ │ └── resources/
│ │ ├── index.html
│ │ └── package.json
│ └── jsTest/
│ └── kotlin/
│ └── test/
│ └── com/
│ └── example/
│ └── AppSpec.kt
└── webpack.config.d/
├── bootstrap.js
├── css.js
├── file.js
├── handlebars.js
├── tailwind.js
└── webpack.js
Showing preview only (3,779K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (42446 symbols across 14 files)
FILE: addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/schema.sql
type users (line 1) | CREATE TABLE IF NOT EXISTS users (
type address (line 9) | CREATE TABLE IF NOT EXISTS address (
FILE: addressbook-fullstack-spring-boot/src/jvmMain/resources/schema.sql
type users (line 1) | CREATE TABLE IF NOT EXISTS users (
type address (line 10) | CREATE TABLE IF NOT EXISTS address (
FILE: docs/addressbook-tabulator/main.bundle.js
function a (line 2) | function a(t,e,i){var n;n=()=>{t[e]=i},r(()=>{r(n)})}
function s (line 2) | function s(t,e){let i,r;const n=e.elm;let s=t.data.style,o=e.data.style;...
function n (line 2) | function n(t){return"string"==typeof t||"number"==typeof t||t instanceof...
function r (line 2) | function r(t){if(n(t)){for(;t&&n(t);)t=a(t).parent;return null!=t?t:null...
function n (line 2) | function n(t){return 11===t.nodeType}
function a (line 2) | function a(t,e){var i,r,n;const a=t;return null!==(i=a.parent)&&void 0!=...
function r (line 2) | function r(t,e){let i,r,n;const a=e.elm;let s=t.data.props,o=e.data.prop...
function a (line 2) | function a(t,e,i){if(t.ns="http://www.w3.org/2000/svg","foreignObject"!=...
function s (line 2) | function s(t,e,i){let s,o,l,h={};if(void 0!==i?(null!==e&&(h=e),n.Y(i)?s...
function o (line 2) | function o(t){let e,i;if(n.Y(t)?e=t:n.M(e)?i=t:e&&e.sel&&(e=[t]),void 0!...
function s (line 2) | function s(t,e,i,r,n){var a=e.indexOf("<",r),s=e.slice(r,-1===a?void 0:a...
function i (line 2) | function i(t){for(var i=-1,r=0;r<e.length;r++)if(e[r].identifier===t){i=...
function r (line 2) | function r(t,r){for(var a={},s=[],o=0;o<t.length;o++){var l=t[o],h=r.bas...
function n (line 2) | function n(t,e){var i=e.domAPI(e);return i.update(t),function(e){if(e){i...
function r (line 2) | function r(t,e,i){if("function"==typeof t)t.call(e,i,e);else if("object"...
function n (line 2) | function n(t,e){const i=t.type,n=e.data.on;n&&n[i]&&r(n[i],e,t)}
function a (line 2) | function a(t,e){const i=t.data.on,r=t.listener,a=t.elm,s=e&&e.data.on,o=...
function o (line 2) | function o(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enume...
function l (line 2) | function l(t,e,i){return t instanceof Array&&t.length>0?t.map(function(t...
function h (line 2) | function h(t,e,i){var r;return r="text"===t.type?(0,s.createTextVNode)(t...
function o (line 2) | function o(t,e){var i,r;const n=t.key===e.key,a=(null===(i=t.data)||void...
function l (line 2) | function l(){throw new Error("The document fragment is not supported on ...
function h (line 2) | function h(t,e,i){var r;const n={};for(let a=e;a<=i;++a){const e=null===...
function c (line 2) | function c(t,e,i){const c={create:[],update:[],remove:[],destroy:[],pre:...
function s (line 2) | function s(t,e){var i;const r=null===(i=e.data)||void 0===i?void 0:i.ns;...
function o (line 2) | function o(t){const e=t.data;s(e.fn(...e.args),t)}
function l (line 2) | function l(t,e){let i;const r=t.data,n=e.data,a=r.args,o=n.args;if(r.fn=...
function c (line 2) | function c(t,e){const i=t.data.attachData;e.data.attachData.placeholder=...
function d (line 2) | function d(t,e){e.elm=e.data.attachData.placeholder}
function f (line 2) | function f(t){void 0!==t.elm&&t.elm.parentNode.removeChild(t.elm),t.elm=...
function p (line 2) | function p(t,e){const i=e.elm,r=e.data.attachData,n=document.createEleme...
function m (line 2) | function m(t,e){void 0===e.data&&(e.data={}),void 0===e.data.hook&&(e.da...
function b (line 2) | function b(t){return t.slice(5).replace(/-([a-z])/g,(t,e)=>e.toUpperCase...
function v (line 2) | function v(t,e){var i;const n=void 0!==e?e:r.i;let s;if(n.isElement(t)){...
function x (line 2) | function x(t,e){const i=e.elm;let r,n=t.data.dataset,a=e.data.dataset;if...
function T (line 2) | function T(t,...e){const i=S(e,[]);return 1===i.length&&!i[0].sel&&i[0]....
function S (line 2) | function S(t,e){for(const i of t)null!=i&&!1!==i&&""!==i&&(Array.isArray...
function R (line 2) | function R(t,e,...i){const r=S(i,[]);return"function"==typeof t?t(e,r):1...
function r (line 2) | function r(t,e){let i;const r=e.elm;let n=t.data.attrs,a=e.data.attrs;if...
function s (line 2) | function s(t,e){return a||(a=e.createElement("div")),t.replace(n,functio...
function r (line 2) | function r(t,e,i,r,n){return{sel:t,data:e,children:i,text:r,elm:n,key:vo...
function r (line 2) | function r(t,e){let i,r;const n=e.elm;let a=t.data.class,s=e.data.class;...
function i (line 2) | function i(r){var n=e[r];if(void 0!==n)return n.exports;var a=e[r]={id:r...
class Rt (line 2) | class Rt{}
class Mt (line 2) | class Mt{}
class At (line 2) | class At{constructor(t,e,i){this.h_1=t,this.i_1=e,this.j_1=i}k(){return ...
method constructor (line 2) | constructor(t,e,i){this.h_1=t,this.i_1=e,this.j_1=i}
method k (line 2) | k(){return this.h_1}
method l (line 2) | l(){return this.i_1}
method m (line 2) | m(){return this.j_1}
method equals (line 2) | equals(t){return!!(t instanceof At&&Aa(this.h_1,t.h_1)&&Aa(this.i_1,t....
method hashCode (line 2) | hashCode(){var t=this.h_1,e=null==t?null:La(t);return zt(zt(null==e?0:...
method toString (line 2) | toString(){var t,e=this.h_1;if(null!=e&&ls(e,ai)){var i=this.h_1.o();t...
class Lt (line 2) | class Lt{constructor(t){this.y1_1=t}v(){return this.y1_1.v()}}
method constructor (line 2) | constructor(t){this.y1_1=t}
method v (line 2) | v(){return this.y1_1.v()}
class jt (line 2) | class jt{}
class Dt (line 2) | class Dt{constructor(t){this.g2_1=t}v(){return this.g2_1.v()}}
method constructor (line 2) | constructor(t){this.g2_1=t}
method v (line 2) | v(){return this.g2_1.v()}
class Ot (line 2) | class Ot{constructor(){a=this,this.i2_1=0,this.j2_1=65535,this.k2_1=5529...
method constructor (line 2) | constructor(){a=this,this.i2_1=0,this.j2_1=65535,this.k2_1=55296,this....
class Pt (line 2) | class Pt{constructor(t){xn(),this.h2_1=t}s2(t){return vn(this.h2_1,t)}t2...
method constructor (line 2) | constructor(t){xn(),this.h2_1=t}
method s2 (line 2) | s2(t){return vn(this.h2_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return vn(t.h2_1,e instanceof Pt?e.h2_1:Va(...
method toString (line 2) | toString(){return yn(this.h2_1)}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Pt&&t===e.h2_1}(thi...
method hashCode (line 2) | hashCode(){return this.h2_1}
class Ft (line 2) | class Ft{}
class qt (line 2) | class qt{}
class It (line 2) | class It{}
class Ht (line 2) | class Ht{}
class Nt (line 2) | class Nt{}
class Bt (line 2) | class Bt{}
class Vt (line 2) | class Vt{}
class Wt (line 2) | class Wt{}
class Ut (line 2) | class Ut{}
class Gt (line 2) | class Gt{constructor(t,e){this.l3_1=t,this.m3_1=e}n3(t){return Ea(this.m...
method constructor (line 2) | constructor(t,e){this.l3_1=t,this.m3_1=e}
method n3 (line 2) | n3(t){return Ea(this.m3_1,t.m3_1)}
method t2 (line 2) | t2(t){return this.n3(t instanceof Gt?t:Va())}
method equals (line 2) | equals(t){return this===t}
method hashCode (line 2) | hashCode(){return Sa(this)}
method toString (line 2) | toString(){return this.l3_1}
class Jt (line 2) | class Jt{constructor(){s=this,this.o3_1=new Yt(0,-2147483648),this.p3_1=...
method constructor (line 2) | constructor(){s=this,this.o3_1=new Yt(0,-2147483648),this.p3_1=new Yt(...
class Yt (line 2) | class Yt extends Mt{constructor(t,e){kn(),super(),this.s3_1=t,this.t3_1=...
method constructor (line 2) | constructor(t,e){kn(),super(),this.s3_1=t,this.t3_1=e}
method u3 (line 2) | u3(t){return Nn(this,t)}
method t2 (line 2) | t2(t){return this.u3(t instanceof Yt?t:Va())}
method toString (line 2) | toString(){return Gn(this,10)}
method equals (line 2) | equals(t){return t instanceof Yt&&Jn(this,t)}
method hashCode (line 2) | hashCode(){return va(),this.s3_1^this.t3_1}
method valueOf (line 2) | valueOf(){return Un(this)}
class $t (line 2) | class $t{}
class Kt (line 2) | class Kt{constructor(t){this.x3_1=t,this.w3_1=0}w(){return!(this.w3_1===...
method constructor (line 2) | constructor(t){this.x3_1=t,this.w3_1=0}
method w (line 2) | w(){return!(this.w3_1===this.x3_1.length)}
method x (line 2) | x(){if(this.w3_1===this.x3_1.length)throw Ye.g1(""+this.w3_1);var t=th...
class Xt (line 2) | class Xt{constructor(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_...
method constructor (line 2) | constructor(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1...
method q4 (line 2) | q4(){return this.MIN_VALUE}
method r4 (line 2) | r4(){return this.MAX_VALUE}
method s4 (line 2) | s4(){return this.SIZE_BYTES}
method t4 (line 2) | t4(){return this.SIZE_BITS}
class Qt (line 2) | class Qt{constructor(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.S...
method constructor (line 2) | constructor(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYT...
method q4 (line 2) | q4(){return this.MIN_VALUE}
method r4 (line 2) | r4(){return this.MAX_VALUE}
method s4 (line 2) | s4(){return this.SIZE_BYTES}
method t4 (line 2) | t4(){return this.SIZE_BITS}
class Zt (line 2) | class Zt{constructor(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483...
method constructor (line 2) | constructor(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,thi...
method q4 (line 2) | q4(){return this.MIN_VALUE}
method r4 (line 2) | r4(){return this.MAX_VALUE}
method s4 (line 2) | s4(){return this.SIZE_BYTES}
method t4 (line 2) | t4(){return this.SIZE_BITS}
class te (line 2) | class te{constructor(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,...
method constructor (line 2) | constructor(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.PO...
method q4 (line 2) | q4(){return this.MIN_VALUE}
method r4 (line 2) | r4(){return this.MAX_VALUE}
method u4 (line 2) | u4(){return this.POSITIVE_INFINITY}
method v4 (line 2) | v4(){return this.NEGATIVE_INFINITY}
method w4 (line 2) | w4(){return this.NaN}
method s4 (line 2) | s4(){return this.SIZE_BYTES}
method t4 (line 2) | t4(){return this.SIZE_BITS}
class ee (line 2) | class ee{constructor(){this.MIN_VALUE=5e-324,this.MAX_VALUE=179769313486...
method constructor (line 2) | constructor(){this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e2...
method q4 (line 2) | q4(){return this.MIN_VALUE}
method r4 (line 2) | r4(){return this.MAX_VALUE}
method u4 (line 2) | u4(){return this.POSITIVE_INFINITY}
method v4 (line 2) | v4(){return this.NEGATIVE_INFINITY}
method w4 (line 2) | w4(){return this.NaN}
method s4 (line 2) | s4(){return this.SIZE_BYTES}
method t4 (line 2) | t4(){return this.SIZE_BITS}
class ie (line 2) | class ie{}
class re (line 2) | class re{}
class ne (line 2) | class ne{constructor(){z=this,this.y4_1=new Int32Array([48,1632,1776,198...
method constructor (line 2) | constructor(){z=this,this.y4_1=new Int32Array([48,1632,1776,1984,2406,...
class ae (line 2) | class ae{}
class se (line 2) | class se{static j5(t){return Fa(this,t)}u2(t){var e;t:if(ls(this,Ft)&&th...
method j5 (line 2) | static j5(t){return Fa(this,t)}
method u2 (line 2) | u2(t){var e;t:if(ls(this,Ft)&&this.t())e=!1;else{for(var i=this.v();i....
method v2 (line 2) | v2(t){var e;t:if(ls(t,Ft)&&t.t())e=!0;else{for(var i=t.v();i.w();){var...
method t (line 2) | t(){return 0===this.l1()}
method toString (line 2) | toString(){return Xr(this,", ","[","]",E,E,(t=this,e=>e===t?"(this Col...
method toArray (line 2) | toArray(){return Bs(this)}
class oe (line 2) | class oe extends se{static b5(t){return this.j5(t)}v(){return new bi(thi...
method b5 (line 2) | static b5(t){return this.j5(t)}
method v (line 2) | v(){return new bi(this)}
method equals (line 2) | equals(t){return t===this||!(null==t||!ls(t,qt))&&V.a6(this,t)}
method hashCode (line 2) | hashCode(){return V.b6(this)}
class le (line 2) | class le extends oe{static a5(t,e){return e===E&&(e={}),e.z4_1=t,this.b5...
method a5 (line 2) | static a5(t,e){return e===E&&(e={}),e.z4_1=t,this.b5(e)}
method l1 (line 2) | l1(){return this.z4_1.length}
method t1 (line 2) | t1(t){if(!(0<=t&&t<=Vl(this)))throw $e.f5("index "+t+" is not in range...
class he (line 2) | class he{toString(){return"kotlin.Unit"}}
method toString (line 2) | toString(){return"kotlin.Unit"}
class ue (line 2) | class ue extends se{static i5(){return this.j5()}w2(t){this.k5();for(var...
method i5 (line 2) | static i5(){return this.j5()}
method w2 (line 2) | w2(t){this.k5();for(var e=this.v();e.w();)if(Aa(e.x(),t))return e.l5()...
method q1 (line 2) | q1(t){this.k5();for(var e=!1,i=t.v();i.w();){var r=i.x();this.b1(r)&&(...
method x2 (line 2) | x2(){this.k5();for(var t=this.v();t.w();)t.x(),t.l5()}
method toJSON (line 2) | toJSON(){return this.toArray()}
method k5 (line 2) | k5(){}
class ce (line 2) | class ce{constructor(t,e){qa(this,e),this.o5_1=t,this.m5_1=0,this.n5_1=-...
method constructor (line 2) | constructor(t,e){qa(this,e),this.o5_1=t,this.m5_1=0,this.n5_1=-1}
method w (line 2) | w(){return this.m5_1<this.o5_1.l1()}
method x (line 2) | x(){if(!this.w())throw Ye.p5();var t=this.m5_1;return this.m5_1=t+1|0,...
method l5 (line 2) | l5(){if(-1===this.n5_1)throw Ge.d4(Ma("Call next() or previous() befor...
class de (line 2) | class de extends ce{constructor(t,e,i){i===E&&(i={}),i.u5_1=t,super(t,i)...
method constructor (line 2) | constructor(t,e,i){i===E&&(i={}),i.u5_1=t,super(t,i),V.v5(e,this.u5_1....
class fe (line 2) | class fe extends ue{static w5(){var t=this.i5();return t.q5_1=0,t}b1(t){...
method w5 (line 2) | static w5(){var t=this.i5();return t.q5_1=0,t}
method b1 (line 2) | b1(t){return this.k5(),this.x5(this.l1(),t),!0}
method x2 (line 2) | x2(){this.k5(),this.y5(0,this.l1())}
method v (line 2) | v(){return new ce(this)}
method u2 (line 2) | u2(t){return this.z5(t)>=0}
method z5 (line 2) | z5(t){var e;t:{for(var i=0,r=this.v();r.w();){if(Aa(r.x(),t)){e=i;brea...
method a3 (line 2) | a3(t){return new de(this,t)}
method y5 (line 2) | y5(t,e){var i=this.a3(t),r=e-t|0,n=0;if(n<r)do{n=n+1|0,i.x(),i.l5()}wh...
method equals (line 2) | equals(t){return t===this||!(null==t||!ls(t,qt))&&V.a6(this,t)}
method hashCode (line 2) | hashCode(){return V.b6(this)}
class pe (line 2) | class pe{static j6(){var t=Fa(this);return t.h6_1=null,t.i6_1=null,t}d3(...
method j6 (line 2) | static j6(){var t=Fa(this);return t.h6_1=null,t.i6_1=null,t}
method d3 (line 2) | d3(t){return!(null==Hl(this,t))}
method e3 (line 2) | e3(t){var e,i=this.z1();t:if(ls(i,Ft)&&i.t())e=!1;else{for(var r=i.v()...
method q6 (line 2) | q6(t){if(null==t||!ls(t,Bt))return!1;var e=t.b3(),i=t.c3(),r=(ls(this,...
method equals (line 2) | equals(t){if(t===this)return!0;if(null==t||!ls(t,Vt))return!1;if(this....
method f3 (line 2) | f3(t){var e=Hl(this,t);return null==e?null:e.c3()}
method hashCode (line 2) | hashCode(){return La(this.z1())}
method t (line 2) | t(){return 0===this.l1()}
method l1 (line 2) | l1(){return this.z1().l1()}
method g3 (line 2) | g3(){return null==this.h6_1&&(this.h6_1=Ci.gf(this)),Wa(this.h6_1)}
method toString (line 2) | toString(){var t;return Xr(this.z1(),", ","{","}",E,E,(t=this,e=>{retu...
method h3 (line 2) | h3(){return null==this.i6_1&&(this.i6_1=ki.jf(this)),Wa(this.i6_1)}
class me (line 2) | class me extends pe{static g6(){var t=this.j6();return t.e6_1=null,t.f6_...
method g6 (line 2) | static g6(){var t=this.j6();return t.e6_1=null,t.f6_1=null,t}
method k6 (line 2) | k6(){return Ee.m6(this)}
method n6 (line 2) | n6(){return Te.p6(this)}
method g3 (line 2) | g3(){var t,e=this.e6_1;if(null==e){var i=this.k6();this.e6_1=i,t=i}els...
method h3 (line 2) | h3(){var t,e=this.f6_1;if(null==e){var i=this.n6();this.f6_1=i,t=i}els...
method x2 (line 2) | x2(){this.z1().x2()}
method k3 (line 2) | k3(t){this.k5();for(var e=t.z1().v();e.w();){var i=e.x(),r=i.b3(),n=i....
method j3 (line 2) | j3(t){this.k5();for(var e=this.z1().v();e.w();){var i=e.x();if(Aa(t,i....
method k5 (line 2) | k5(){}
class ge (line 2) | class ge extends ue{static r6(){return this.i5()}equals(t){return t===th...
method r6 (line 2) | static r6(){return this.i5()}
method equals (line 2) | equals(t){return t===this||!(null==t||!ls(t,It))&&W.s6(this,t)}
method hashCode (line 2) | hashCode(){return W.t6(this)}
class be (line 2) | class be{constructor(){S=this;var t=ve.p1(0);t.o1_1=!0,this.u6_1=t}}
method constructor (line 2) | constructor(){S=this;var t=ve.p1(0);t.o1_1=!0,this.u6_1=t}
class ve (line 2) | class ve extends fe{static x4(t){Xs();var e=this.w5();return e.n1_1=t,e....
method x4 (line 2) | static x4(t){Xs();var e=this.w5();return e.n1_1=t,e.o1_1=!1,e}
method x1 (line 2) | static x1(){return Xs(),this.x4([])}
method p1 (line 2) | static p1(t){Xs();var e=this.x4([]);if(!(t>=0)){var i="Negative initia...
method v1 (line 2) | static v1(t){Xs();var e=Ws(t);return this.x4(e)}
method w6 (line 2) | w6(t){}
method l1 (line 2) | l1(){return this.n1_1.length}
method t1 (line 2) | t1(t){return this.n1_1[Qs(this,t)]}
method y2 (line 2) | y2(t,e){this.k5(),Qs(this,t);var i=this.n1_1[t];return this.n1_1[t]=e,i}
method b1 (line 2) | b1(t){return this.k5(),this.n1_1.push(t),this.q5_1=this.q5_1+1|0,!0}
method x5 (line 2) | x5(t,e){this.k5(),this.n1_1.splice(function(t,e){return V.v5(e,t.l1())...
method q1 (line 2) | q1(t){if(this.k5(),t.t())return!1;for(var e,i,r,n=(e=this,i=t.l1(),r=e...
method z2 (line 2) | z2(t){return this.k5(),Qs(this,t),this.q5_1=this.q5_1+1|0,t===Vl(this)...
method w2 (line 2) | w2(t){this.k5();var e=0,i=this.n1_1.length-1|0;if(e<=i)do{var r=e;if(e...
method y5 (line 2) | y5(t,e){this.k5(),this.q5_1=this.q5_1+1|0,this.n1_1.splice(t,e-t|0)}
method x2 (line 2) | x2(){this.k5(),this.n1_1=[],this.q5_1=this.q5_1+1|0}
method z5 (line 2) | z5(t){return Jr(this.n1_1,t)}
method toString (line 2) | toString(){return t=this.n1_1,e=(e=", ")===E?", ":e,i=(i="[")===E?"":i...
method x6 (line 2) | x6(){return[].slice.call(this.n1_1)}
method toArray (line 2) | toArray(){return this.x6()}
method k5 (line 2) | k5(){if(this.o1_1)throw Ue.b7()}
class _e (line 2) | class _e extends me{static i7(t){var e=this.g6();return e.h7_1=null,e.g7...
method i7 (line 2) | static i7(t){var e=this.g6();return e.h7_1=null,e.g7_1=t,e}
method j7 (line 2) | static j7(){return this.i7(Pe.u7())}
method v7 (line 2) | static v7(t,e){return this.i7(Pe.w7(t,e))}
method x7 (line 2) | static x7(t){return this.v7(t,1)}
method y7 (line 2) | static y7(t){return this.i7(Pe.z7(t))}
method x2 (line 2) | x2(){this.g7_1.x2()}
method d3 (line 2) | d3(t){return this.g7_1.a8(t)}
method e3 (line 2) | e3(t){return this.g7_1.e3(t)}
method k6 (line 2) | k6(){return we.c8(this.g7_1)}
method n6 (line 2) | n6(){return ye.e8(this.g7_1)}
method z1 (line 2) | z1(){var t,e=this.h7_1;if(null==e){var i=Ce.g8(this.g7_1);this.h7_1=i,...
method f3 (line 2) | f3(t){return this.g7_1.f3(t)}
method i3 (line 2) | i3(t,e){return this.g7_1.i3(t,e)}
method j3 (line 2) | j3(t){return this.g7_1.j3(t)}
method l1 (line 2) | l1(){return this.g7_1.l1()}
method k3 (line 2) | k3(t){return this.g7_1.k3(t)}
class we (line 2) | class we extends ge{static c8(t){var e=this.r6();return e.b8_1=t,e}l1(){...
method c8 (line 2) | static c8(t){var e=this.r6();return e.b8_1=t,e}
method l1 (line 2) | l1(){return this.b8_1.l1()}
method t (line 2) | t(){return 0===this.b8_1.l1()}
method u2 (line 2) | u2(t){return this.b8_1.a8(t)}
method x2 (line 2) | x2(){return this.b8_1.x2()}
method b1 (line 2) | b1(t){throw Ue.b7()}
method q1 (line 2) | q1(t){throw Ue.b7()}
method w2 (line 2) | w2(t){return this.b8_1.h8(t)}
method v (line 2) | v(){return this.b8_1.i8()}
method k5 (line 2) | k5(){return this.b8_1.j8()}
class ye (line 2) | class ye extends ue{static e8(t){var e=this.i5();return e.d8_1=t,e}l1(){...
method e8 (line 2) | static e8(t){var e=this.i5();return e.d8_1=t,e}
method l1 (line 2) | l1(){return this.d8_1.l1()}
method t (line 2) | t(){return 0===this.d8_1.l1()}
method k8 (line 2) | k8(t){return this.d8_1.e3(t)}
method u2 (line 2) | u2(t){return this.k8(t)}
method l8 (line 2) | l8(t){throw Ue.b7()}
method b1 (line 2) | b1(t){return this.l8(t)}
method m8 (line 2) | m8(t){throw Ue.b7()}
method q1 (line 2) | q1(t){return this.m8(t)}
method v (line 2) | v(){return this.d8_1.n8()}
method o8 (line 2) | o8(t){return this.d8_1.p8(t)}
method w2 (line 2) | w2(t){return this.o8(t)}
method k5 (line 2) | k5(){return this.d8_1.j8()}
class xe (line 2) | class xe extends ge{static r8(t){var e=this.r6();return e.q8_1=t,e}l1(){...
method r8 (line 2) | static r8(t){var e=this.r6();return e.q8_1=t,e}
method l1 (line 2) | l1(){return this.q8_1.l1()}
method t (line 2) | t(){return 0===this.q8_1.l1()}
method t8 (line 2) | t8(t){return this.q8_1.w8(t)}
method u2 (line 2) | u2(t){return!(null==t||!ls(t,Bt))&&this.t8(null!=t&&ls(t,Bt)?t:Va())}
method x2 (line 2) | x2(){return this.q8_1.x2()}
method u8 (line 2) | u8(t){throw Ue.b7()}
method b1 (line 2) | b1(t){return this.u8(null!=t&&ls(t,Bt)?t:Va())}
method q1 (line 2) | q1(t){throw Ue.b7()}
method v8 (line 2) | v8(t){return this.q8_1.x8(t)}
method w2 (line 2) | w2(t){return!(null==t||!ls(t,Bt))&&this.v8(null!=t&&ls(t,Bt)?t:Va())}
method v2 (line 2) | v2(t){return this.q8_1.y8(t)}
method k5 (line 2) | k5(){return this.q8_1.j8()}
class Ce (line 2) | class Ce extends xe{static g8(t){return this.r8(t)}v(){return this.q8_1....
method g8 (line 2) | static g8(t){return this.r8(t)}
method v (line 2) | v(){return this.q8_1.s8()}
class ke (line 2) | class ke{constructor(t){this.z8_1=t}w(){return this.z8_1.w()}x(){return ...
method constructor (line 2) | constructor(t){this.z8_1=t}
method w (line 2) | w(){return this.z8_1.w()}
method x (line 2) | x(){return this.z8_1.x().b3()}
method l5 (line 2) | l5(){return this.z8_1.l5()}
class Ee (line 2) | class Ee extends ge{static m6(t){var e=this.r6();return e.l6_1=t,e}a9(t)...
method m6 (line 2) | static m6(t){var e=this.r6();return e.l6_1=t,e}
method a9 (line 2) | a9(t){throw Ue.b9("Add is not supported on keys")}
method b1 (line 2) | b1(t){return this.a9(t)}
method x2 (line 2) | x2(){return this.l6_1.x2()}
method a8 (line 2) | a8(t){return this.l6_1.d3(t)}
method u2 (line 2) | u2(t){return this.a8(t)}
method v (line 2) | v(){var t=this.l6_1.z1().v();return new ke(t)}
method j3 (line 2) | j3(t){return this.k5(),!!this.l6_1.d3(t)&&(this.l6_1.j3(t),!0)}
method w2 (line 2) | w2(t){return this.j3(t)}
method l1 (line 2) | l1(){return this.l6_1.l1()}
method k5 (line 2) | k5(){return this.l6_1.k5()}
class ze (line 2) | class ze{constructor(t){this.c9_1=t}w(){return this.c9_1.w()}x(){return ...
method constructor (line 2) | constructor(t){this.c9_1=t}
method w (line 2) | w(){return this.c9_1.w()}
method x (line 2) | x(){return this.c9_1.x().c3()}
method l5 (line 2) | l5(){return this.c9_1.l5()}
class Te (line 2) | class Te extends ue{static p6(t){var e=this.i5();return e.o6_1=t,e}l8(t)...
method p6 (line 2) | static p6(t){var e=this.i5();return e.o6_1=t,e}
method l8 (line 2) | l8(t){throw Ue.b9("Add is not supported on values")}
method b1 (line 2) | b1(t){return this.l8(t)}
method k8 (line 2) | k8(t){return this.o6_1.e3(t)}
method u2 (line 2) | u2(t){return this.k8(t)}
method v (line 2) | v(){var t=this.o6_1.z1().v();return new ze(t)}
method l1 (line 2) | l1(){return this.o6_1.l1()}
method k5 (line 2) | k5(){return this.o6_1.k5()}
class Se (line 2) | class Se extends ge{static d9(t){var e=this.r6();return e.r1_1=t,e}stati...
method d9 (line 2) | static d9(t){var e=this.r6();return e.r1_1=t,e}
method e9 (line 2) | static e9(){return this.d9(Pe.u7())}
method f9 (line 2) | static f9(t){for(var e=this.d9(Pe.g9(t.l1())),i=t.v();i.w();){var r=i....
method h9 (line 2) | static h9(t,e){return this.d9(Pe.w7(t,e))}
method s1 (line 2) | static s1(t){return this.h9(t,1)}
method b1 (line 2) | b1(t){return null==this.r1_1.i3(t,!0)}
method x2 (line 2) | x2(){this.r1_1.x2()}
method u2 (line 2) | u2(t){return this.r1_1.a8(t)}
method t (line 2) | t(){return 0===this.r1_1.l1()}
method v (line 2) | v(){return this.r1_1.i8()}
method w2 (line 2) | w2(t){return!(null==this.r1_1.j3(t))}
method l1 (line 2) | l1(){return this.r1_1.l1()}
class Re (line 2) | class Re{constructor(){this.t9_1=-1640531527,this.u9_1=8,this.v9_1=2,thi...
method constructor (line 2) | constructor(){this.t9_1=-1640531527,this.u9_1=8,this.v9_1=2,this.w9_1=-1}
class Me (line 2) | class Me{constructor(t){this.x9_1=t,this.y9_1=0,this.z9_1=-1,this.aa_1=t...
method constructor (line 2) | constructor(t){this.x9_1=t,this.y9_1=0,this.z9_1=-1,this.aa_1=this.x9_...
method ba (line 2) | ba(){for(;this.y9_1<this.x9_1.p7_1&&this.x9_1.m7_1[this.y9_1]<0;)this....
method w (line 2) | w(){return this.y9_1<this.x9_1.p7_1}
method l5 (line 2) | l5(){if(this.ca(),-1===this.z9_1)throw Ge.d4(Ma("Call next() before re...
method ca (line 2) | ca(){if(this.x9_1.r7_1!==this.aa_1)throw Ze.da()}
class Ae (line 2) | class Ae extends Me{x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye....
method x (line 2) | x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye.p5();var t=this.y9...
class Le (line 2) | class Le extends Me{x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye....
method x (line 2) | x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye.p5();var t=this.y9...
class je (line 2) | class je extends Me{x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye....
method x (line 2) | x(){if(this.ca(),this.y9_1>=this.x9_1.p7_1)throw Ye.p5();var t=this.y9...
method qa (line 2) | qa(){if(this.y9_1>=this.x9_1.p7_1)throw Ye.p5();var t=this.y9_1;this.y...
method ra (line 2) | ra(t){if(this.y9_1>=this.x9_1.p7_1)throw Ye.p5();var e=this.y9_1;this....
class De (line 2) | class De{constructor(t,e){this.m9_1=t,this.n9_1=e,this.o9_1=this.m9_1.r7...
method constructor (line 2) | constructor(t,e){this.m9_1=t,this.n9_1=e,this.o9_1=this.m9_1.r7_1}
method b3 (line 2) | b3(){return eo(this),this.m9_1.k7_1[this.n9_1]}
method c3 (line 2) | c3(){return eo(this),Wa(this.m9_1.l7_1)[this.n9_1]}
method equals (line 2) | equals(t){return!(null==t||!ls(t,Bt)||!Aa(t.b3(),this.b3()))&&Aa(t.c3(...
method hashCode (line 2) | hashCode(){var t=this.b3(),e=null==t?null:La(t),i=null==e?0:e,r=this.c...
method toString (line 2) | toString(){return Cn(this.b3())+"="+Cn(this.c3())}
class Oe (line 2) | class Oe{}
class Pe (line 2) | class Pe{static sa(t,e,i,r,n,a){var s=Fa(this);return s.k7_1=t,s.l7_1=e,...
method sa (line 2) | static sa(t,e,i,r,n,a){var s=Fa(this);return s.k7_1=t,s.l7_1=e,s.m7_1=...
method l1 (line 2) | l1(){return this.s7_1}
method u7 (line 2) | static u7(){return this.g9(8)}
method g9 (line 2) | static g9(t){return this.sa(Js(t),null,new Int32Array(t),new Int32Arra...
method z7 (line 2) | static z7(t){var e=this.g9(t.l1());return e.k3(t),e}
method w7 (line 2) | static w7(t,e){var i=this.g9(t);if(!(e>0)){var r="Non-positive load fa...
method e3 (line 2) | e3(t){return fo(this,t)>=0}
method f3 (line 2) | f3(t){var e=co(this,t);return e<0?null:Wa(this.l7_1)[e]}
method a8 (line 2) | a8(t){return co(this,t)>=0}
method i3 (line 2) | i3(t,e){var i=po(this,t),r=so(this);if(i<0){var n=r[(0|-i)-1|0];return...
method k3 (line 2) | k3(t){this.j8(),function(t,e){if(e.t())return!1;ao(t,e.l1());for(var i...
method j3 (line 2) | j3(t){this.j8();var e=co(this,t);if(e<0)return null;var i=Wa(this.l7_1...
method x2 (line 2) | x2(){this.j8();var t=0,e=this.p7_1-1|0;if(t<=e)do{var i=t;t=t+1|0;var ...
method equals (line 2) | equals(t){var e,i;return t===this?e=!0:(i=!(null==t||!ls(t,Vt))&&funct...
method hashCode (line 2) | hashCode(){for(var t=0,e=this.s8();e.w();)t=t+e.qa()|0;return t}
method toString (line 2) | toString(){var t=pi.ta(2+zt(this.s7_1,3)|0);t.s("{");for(var e=0,i=thi...
method j8 (line 2) | j8(){if(this.t7_1)throw Ue.b7()}
method h8 (line 2) | h8(t){this.j8();var e=co(this,t);return!(e<0||(mo(this,e),0))}
method w8 (line 2) | w8(t){var e=co(this,t.b3());return!(e<0)&&Aa(Wa(this.l7_1)[e],t.c3())}
method ua (line 2) | ua(t){return this.w8(ls(t,Bt)?t:Va())}
method x8 (line 2) | x8(t){this.j8();var e=co(this,t.b3());return!(e<0||!Aa(Wa(this.l7_1)[e...
method p8 (line 2) | p8(t){this.j8();var e=fo(this,t);return!(e<0||(mo(this,e),0))}
method i8 (line 2) | i8(){return new Ae(this)}
method n8 (line 2) | n8(){return new Le(this)}
method s8 (line 2) | s8(){return new je(this)}
class Fe (line 2) | class Fe extends _e{static bb(){return this.j7()}static cb(t){return thi...
method bb (line 2) | static bb(){return this.j7()}
method cb (line 2) | static cb(t){return this.x7(t)}
method db (line 2) | static db(t){return this.y7(t)}
method k5 (line 2) | k5(){return this.g7_1.j8()}
class qe (line 2) | class qe extends Se{static u1(){return this.e9()}static w1(t){return thi...
method u1 (line 2) | static u1(){return this.e9()}
method w1 (line 2) | static w1(t){return this.f9(t)}
method eb (line 2) | static eb(t,e){return this.h9(t,e)}
method a1 (line 2) | static a1(t){return this.eb(t,1)}
method k5 (line 2) | k5(){return this.r1_1.j8()}
class Ie (line 2) | class Ie{}
class He (line 2) | class He{fb(){throw Ge.d4(Ma("This continuation is already complete"))}g...
method fb (line 2) | fb(){throw Ge.d4(Ma("This continuation is already complete"))}
method gb (line 2) | gb(t){throw Ge.d4(Ma("This continuation is already complete"))}
method hb (line 2) | hb(t){return this.gb(t)}
method toString (line 2) | toString(){return"This continuation is already complete"}
class Ne (line 2) | class Ne{constructor(){this.ob_1=null}pb(){var t=this.ob_1;null!=t&&t!==...
method constructor (line 2) | constructor(){this.ob_1=null}
method pb (line 2) | pb(){var t=this.ob_1;null!=t&&t!==this&&Wa(this.fb().qb($)).rb(t),this...
class Be (line 2) | class Be extends Ne{constructor(t){super(),this.jb_1=t,this.kb_1=E;var e...
method constructor (line 2) | constructor(t){super(),this.jb_1=t,this.kb_1=E;var e=this.jb_1;this.lb...
method fb (line 2) | fb(){return Wa(this.lb_1)}
method mb (line 2) | mb(t){var e,i=ah(),r=(e=t)instanceof xr?e.vj_1:null,n=null==r?this.kb_...
method nb (line 2) | nb(t,e){return t=t===E?null:t,e===E?this.mb(t):e.mb.call(this,new Cr(t))}
method gb (line 2) | gb(t){var e,i=null;try{e=this.mb(t)}catch(t){if(!(t instanceof Error))...
method hb (line 2) | hb(t){return this.gb(t)}
class Ve (line 2) | class Ve extends Error{static dc(){var t=Ia(this,Error,[null]);return Na...
method dc (line 2) | static dc(){var t=Ia(this,Error,[null]);return Na(t),Co(t),t}
method z3 (line 2) | static z3(t){var e=Ia(this,Error,[t]);return Na(e,t),Co(e),e}
method ec (line 2) | static ec(t,e){var i=Ia(this,Error,[t,Ha(e)]);return Na(i,t,e),Co(i),i}
class We (line 2) | class We extends Ve{static wb(){var t=this.dc();return xo(t),t}static r9...
method wb (line 2) | static wb(){var t=this.dc();return xo(t),t}
method r9 (line 2) | static r9(t){var e=this.z3(t);return xo(e),e}
method cc (line 2) | static cc(t,e){var i=this.ec(t,e);return xo(i),i}
class Ue (line 2) | class Ue extends We{static b7(){var t=this.wb();return _o(t),t}static b9...
method b7 (line 2) | static b7(){var t=this.wb();return _o(t),t}
method b9 (line 2) | static b9(t){var e=this.r9(t);return _o(e),e}
class Ge (line 2) | class Ge extends We{static zb(){var t=this.wb();return wo(t),t}static d4...
method zb (line 2) | static zb(){var t=this.wb();return wo(t),t}
method d4 (line 2) | static d4(t){var e=this.r9(t);return wo(e),e}
class Je (line 2) | class Je extends We{static ac(){var t=this.wb();return yo(t),t}static k1...
method ac (line 2) | static ac(){var t=this.wb();return yo(t),t}
method k1 (line 2) | static k1(t){var e=this.r9(t);return yo(e),e}
method bc (line 2) | static bc(t,e){var i=this.cc(t,e);return yo(i),i}
class Ye (line 2) | class Ye extends We{static p5(){var t=this.wb();return ko(t),t}static g1...
method p5 (line 2) | static p5(){var t=this.wb();return ko(t),t}
method g1 (line 2) | static g1(t){var e=this.r9(t);return ko(e),e}
class $e (line 2) | class $e extends We{static fc(){var t=this.wb();return Eo(t),t}static f5...
method fc (line 2) | static fc(){var t=this.wb();return Eo(t),t}
method f5 (line 2) | static f5(t){var e=this.r9(t);return Eo(e),e}
class Ke (line 2) | class Ke extends Error{static hc(){var t=Ia(this,Error,[null]);return Na...
method hc (line 2) | static hc(){var t=Ia(this,Error,[null]);return Na(t),zo(t),t}
method ic (line 2) | static ic(t){var e=Ia(this,Error,[t]);return Na(e,t),zo(e),e}
method jc (line 2) | static jc(t,e){var i=Ia(this,Error,[t,Ha(e)]);return Na(i,t,e),zo(i),i}
class Xe (line 2) | class Xe extends Ke{static mc(){var t=this.hc();return To(t),t}static nc...
method mc (line 2) | static mc(){var t=this.hc();return To(t),t}
method nc (line 2) | static nc(t){var e=null==t?null:Ma(t),i=this.jc(e,t instanceof Error?t...
class Qe (line 2) | class Qe extends We{static rc(){var t=this.wb();return So(t),t}static sc...
method rc (line 2) | static rc(){var t=this.wb();return So(t),t}
method sc (line 2) | static sc(t){var e=this.r9(t);return So(e),e}
class Ze (line 2) | class Ze extends We{static da(){var t=this.wb();return Ro(t),t}static l9...
method da (line 2) | static da(){var t=this.wb();return Ro(t),t}
method l9 (line 2) | static l9(t){var e=this.r9(t);return Ro(e),e}
class ti (line 2) | class ti extends Je{static xc(){var t=this.ac();return Mo(t),t}static yc...
method xc (line 2) | static xc(){var t=this.ac();return Mo(t),t}
method yc (line 2) | static yc(t){var e=this.k1(t);return Mo(e),e}
class ei (line 2) | class ei extends We{static zc(){var t=this.wb();return Ao(t),t}static g(...
method zc (line 2) | static zc(){var t=this.wb();return Ao(t),t}
method g (line 2) | static g(t){var e=this.r9(t);return Ao(e),e}
class ii (line 2) | class ii extends We{static h4(){var t,e=this.wb();return Oa(t=e,t.g4_1),e}}
method h4 (line 2) | static h4(){var t,e=this.wb();return Oa(t=e,t.g4_1),e}
class ri (line 2) | class ri extends We{static l4(){var t,e=this.wb();return Oa(t=e,t.k4_1),e}}
method l4 (line 2) | static l4(){var t,e=this.wb();return Oa(t=e,t.k4_1),e}
class ni (line 2) | class ni extends We{static p4(){var t,e=this.wb();return Oa(t=e,t.o4_1),e}}
method p4 (line 2) | static p4(){var t,e=this.wb();return Oa(t=e,t.o4_1),e}
class ai (line 2) | class ai{}
class si (line 2) | class si{o(){return null}equals(t){return!(t instanceof li)&&t instanceo...
method o (line 2) | o(){return null}
method equals (line 2) | equals(t){return!(t instanceof li)&&t instanceof si&&Aa(this.ad(),t.ad...
method hashCode (line 2) | hashCode(){var t=this.p(),e=null==t?null:Da(t);return null==e?0:e}
method toString (line 2) | toString(){return"class "+this.p()}
class oi (line 2) | class oi extends si{constructor(t,e,i){super(),this.cd_1=t,this.dd_1=e,t...
method constructor (line 2) | constructor(t,e,i){super(),this.cd_1=t,this.dd_1=e,this.ed_1=i}
method ad (line 2) | ad(){return this.cd_1}
method equals (line 2) | equals(t){return t instanceof oi&&super.equals(t)&&this.dd_1===t.dd_1}
method p (line 2) | p(){return this.dd_1}
method bd (line 2) | bd(t){return this.ed_1(t)}
class li (line 2) | class li extends si{constructor(){M=null,super(),M=this,this.fd_1="Nothi...
method constructor (line 2) | constructor(){M=null,super(),M=this,this.fd_1="Nothing"}
method p (line 2) | p(){return this.fd_1}
method bd (line 2) | bd(t){return!1}
method ad (line 2) | ad(){throw Ue.b9("There's no native JS class for Nothing type")}
method equals (line 2) | equals(t){return t===this}
method hashCode (line 2) | hashCode(){return 0}
class hi (line 2) | class hi extends si{constructor(t){super(),this.gd_1=t;var e=this.gd_1.$...
method constructor (line 2) | constructor(t){super(),this.gd_1=t;var e=this.gd_1.$metadata$;this.hd_...
method ad (line 2) | ad(){return this.gd_1}
method p (line 2) | p(){return this.hd_1}
method bd (line 2) | bd(t){return function(t,e){if(e===Object)return null!=t;var i=typeof t...
class ui (line 2) | class ui{}
class ci (line 2) | class ci{}
class di (line 2) | class di{constructor(){L=this;var t=Object;this.anyClass=new oi(t,"Any",...
method constructor (line 2) | constructor(){L=this;var t=Object;this.anyClass=new oi(t,"Any",No);var...
method kd (line 2) | kd(){return this.anyClass}
method ld (line 2) | ld(){return this.numberClass}
method md (line 2) | md(){return this.nothingClass}
method nd (line 2) | nd(){return this.booleanClass}
method od (line 2) | od(){return this.byteClass}
method pd (line 2) | pd(){return this.shortClass}
method qd (line 2) | qd(){return this.intClass}
method rd (line 2) | rd(){return this.longClass}
method sd (line 2) | sd(){return this.floatClass}
method td (line 2) | td(){return this.doubleClass}
method ud (line 2) | ud(){return this.arrayClass}
method vd (line 2) | vd(){return this.stringClass}
method wd (line 2) | wd(){return this.throwableClass}
method xd (line 2) | xd(){return this.booleanArrayClass}
method yd (line 2) | yd(){return this.charArrayClass}
method zd (line 2) | zd(){return this.byteArrayClass}
method ae (line 2) | ae(){return this.shortArrayClass}
method be (line 2) | be(){return this.intArrayClass}
method ce (line 2) | ce(){return this.floatArrayClass}
method de (line 2) | de(){return this.doubleArrayClass}
method functionClass (line 2) | functionClass(t){var e,i,r=Ho()[t];if(null==r){var n=new oi(Function,"...
class fi (line 2) | class fi extends Ve{static ge(t){var e=this.z3(t);return Oa(e,e.fe_1),e}...
method ge (line 2) | static ge(t){var e=this.z3(t);return Oa(e,e.fe_1),e}
method he (line 2) | static he(){return this.ge(null)}
class pi (line 2) | class pi{static ie(t){var e=Fa(this);return e.q_1=t,e}static ta(t){retur...
method ie (line 2) | static ie(t){var e=Fa(this);return e.q_1=t,e}
method ta (line 2) | static ta(t){return this.r()}
method r (line 2) | static r(){return this.ie("")}
method a (line 2) | a(){return this.q_1.length}
method b (line 2) | b(t){var e=this.q_1;if(!(0<=t&&t<=(xa(e)-1|0)))throw $e.f5("index: "+t...
method c (line 2) | c(t,e){return gl(this.q_1,t,e)}
method u (line 2) | u(t){return this.q_1=this.q_1+yn(t),this}
method c1 (line 2) | c1(t){return this.q_1=this.q_1+Cn(t),this}
method je (line 2) | je(t,e,i){return this.ke(null==t?"null":t,e,i)}
method y (line 2) | y(t){return this.q_1=this.q_1+Cn(t),this}
method le (line 2) | le(t){return this.s(t.toString())}
method me (line 2) | me(t){return this.s(t.toString())}
method s (line 2) | s(t){var e=this.q_1;return this.q_1=e+(null==t?"null":t),this}
method ne (line 2) | ne(t,e){return V.v5(t,this.a()),this.q_1=gl(this.q_1,0,t)+yn(e)+bl(thi...
method oe (line 2) | oe(t){if(t<0)throw Je.k1("Negative new length: "+t+".");if(t<=this.a()...
method toString (line 2) | toString(){return this.q_1}
method pe (line 2) | pe(){return this.q_1="",this}
method qe (line 2) | qe(t){return V.v6(t,this.a()),this.q_1=gl(this.q_1,0,t)+bl(this.q_1,t+...
method ke (line 2) | ke(t,e,i){var r=Ma(t);return V.re(e,i,r.length),this.q_1=this.q_1+gl(r...
class mi (line 2) | class mi{constructor(t){this.se_1=t}te(t,e){return this.se_1(t,e)}compar...
method constructor (line 2) | constructor(t){this.se_1=t}
method te (line 2) | te(t,e){return this.se_1(t,e)}
method compare (line 2) | compare(t,e){return this.te(t,e)}
method v3 (line 2) | v3(){return this.se_1}
method equals (line 2) | equals(t){return!(null==t||!ls(t,ae))&&(!(null==t||!ls(t,$t))&&Aa(this...
method hashCode (line 2) | hashCode(){return La(this.v3())}
class gi (line 2) | class gi extends Gt{constructor(t,e,i){super(t,e),this.we_1=i}}
method constructor (line 2) | constructor(t,e,i){super(t,e),this.we_1=i}
class bi (line 2) | class bi{constructor(t){this.cf_1=t,this.bf_1=0}w(){return this.bf_1<thi...
method constructor (line 2) | constructor(t){this.cf_1=t,this.bf_1=0}
method w (line 2) | w(){return this.bf_1<this.cf_1.l1()}
method x (line 2) | x(){if(!this.w())throw Ye.p5();var t=this.bf_1;return this.bf_1=t+1|0,...
class vi (line 2) | class vi{constructor(){this.g5_1=2147483639}v6(t,e){if(t<0||t>=e)throw $...
method constructor (line 2) | constructor(){this.g5_1=2147483639}
method v6 (line 2) | v6(t,e){if(t<0||t>=e)throw $e.f5("index: "+t+", size: "+e)}
method v5 (line 2) | v5(t,e){if(t<0||t>e)throw $e.f5("index: "+t+", size: "+e)}
method h5 (line 2) | h5(t,e,i){if(t<0||e>i)throw $e.f5("fromIndex: "+t+", toIndex: "+e+", s...
method re (line 2) | re(t,e,i){if(t<0||e>i)throw $e.f5("startIndex: "+t+", endIndex: "+e+",...
method s9 (line 2) | s9(t,e){var i=t+(t>>1)|0;return(i-e|0)<0&&(i=e),(i-2147483639|0)>0&&(i...
method b6 (line 2) | b6(t){for(var e=1,i=t.v();i.w();){var r=i.x(),n=zt(31,e),a=null==r?nul...
method a6 (line 2) | a6(t,e){if(t.l1()!==e.l1())return!1;for(var i=e.v(),r=t.v();r.w();)if(...
class _i (line 2) | class _i{constructor(t){this.df_1=t}w(){return this.df_1.w()}x(){return ...
method constructor (line 2) | constructor(t){this.df_1=t}
method w (line 2) | w(){return this.df_1.w()}
method x (line 2) | x(){return this.df_1.x().b3()}
class wi (line 2) | class wi{constructor(t){this.ef_1=t}w(){return this.ef_1.w()}x(){return ...
method constructor (line 2) | constructor(t){this.ef_1=t}
method w (line 2) | w(){return this.ef_1.w()}
method x (line 2) | x(){return this.ef_1.x().c3()}
class yi (line 2) | class yi{}
class xi (line 2) | class xi extends se{static hf(t){return this.j5(t)}equals(t){return t===...
method hf (line 2) | static hf(t){return this.j5(t)}
method equals (line 2) | equals(t){return t===this||!(null==t||!ls(t,It))&&W.s6(this,t)}
method hashCode (line 2) | hashCode(){return W.t6(this)}
class Ci (line 2) | class Ci extends xi{static gf(t,e){return e===E&&(e={}),e.ff_1=t,this.hf...
method gf (line 2) | static gf(t,e){return e===E&&(e={}),e.ff_1=t,this.hf(e)}
method a8 (line 2) | a8(t){return this.ff_1.d3(t)}
method u2 (line 2) | u2(t){return this.a8(t)}
method v (line 2) | v(){var t=this.ff_1.z1().v();return new _i(t)}
method l1 (line 2) | l1(){return this.ff_1.l1()}
class ki (line 2) | class ki extends se{static jf(t,e){return e===E&&(e={}),e.if_1=t,this.j5...
method jf (line 2) | static jf(t,e){return e===E&&(e={}),e.if_1=t,this.j5(e)}
method k8 (line 2) | k8(t){return this.if_1.e3(t)}
method u2 (line 2) | u2(t){return this.k8(t)}
method v (line 2) | v(){var t=this.if_1.z1().v();return new wi(t)}
method l1 (line 2) | l1(){return this.if_1.l1()}
class Ei (line 2) | class Ei{t6(t){for(var e=0,i=t.v();i.w();){var r=i.x(),n=e,a=null==r?nul...
method t6 (line 2) | t6(t){for(var e=0,i=t.v();i.w();){var r=i.x(),n=e,a=null==r?null:La(r)...
method s6 (line 2) | s6(t,e){return t.l1()===e.l1()&&t.v2(e)}
class zi (line 2) | class zi{constructor(){U=this,this.kf_1=new Yt(-1478467534,-1720727600)}...
method constructor (line 2) | constructor(){U=this,this.kf_1=new Yt(-1478467534,-1720727600)}
method equals (line 2) | equals(t){return!(null==t||!ls(t,qt))&&t.t()}
method hashCode (line 2) | hashCode(){return 1}
method toString (line 2) | toString(){return"[]"}
method l1 (line 2) | l1(){return 0}
method t (line 2) | t(){return!0}
method lf (line 2) | lf(t){return!1}
method u2 (line 2) | u2(t){return!1}
method t1 (line 2) | t1(t){throw $e.f5("Empty list doesn't contain element at index "+t+".")}
method v (line 2) | v(){return G}
class Ti (line 2) | class Ti{w(){return!1}x(){throw Ye.p5()}}
method w (line 2) | w(){return!1}
method x (line 2) | x(){throw Ye.p5()}
class Si (line 2) | class Si{constructor(t,e){this.mf_1=t,this.nf_1=e}toString(){return"Inde...
method constructor (line 2) | constructor(t,e){this.mf_1=t,this.nf_1=e}
method toString (line 2) | toString(){return"IndexedValue(index="+this.mf_1+", value="+Cn(this.nf...
method hashCode (line 2) | hashCode(){var t=this.mf_1;return zt(t,31)+(null==this.nf_1?0:La(this....
method equals (line 2) | equals(t){return this===t||t instanceof Si&&this.mf_1===t.mf_1&&!!Aa(t...
class Ri (line 2) | class Ri{constructor(t){this.of_1=t}v(){return new Mi(this.of_1())}}
method constructor (line 2) | constructor(t){this.of_1=t}
method v (line 2) | v(){return new Mi(this.of_1())}
class Mi (line 2) | class Mi{constructor(t){this.pf_1=t,this.qf_1=0}w(){return this.pf_1.w()...
method constructor (line 2) | constructor(t){this.pf_1=t,this.qf_1=0}
method w (line 2) | w(){return this.pf_1.w()}
method x (line 2) | x(){var t=this.qf_1;return this.qf_1=t+1|0,new Si(Us(t),this.pf_1.x())}
class Ai (line 2) | class Ai{}
class Li (line 2) | class Li{constructor(t,e){this.tf_1=t,this.uf_1=e}sf(){return this.tf_1}...
method constructor (line 2) | constructor(t,e){this.tf_1=t,this.uf_1=e}
method sf (line 2) | sf(){return this.tf_1}
method equals (line 2) | equals(t){return Aa(this.tf_1,t)}
method hashCode (line 2) | hashCode(){return La(this.tf_1)}
method toString (line 2) | toString(){return Ma(this.tf_1)}
method l1 (line 2) | l1(){return this.tf_1.l1()}
method t (line 2) | t(){return this.tf_1.t()}
method d3 (line 2) | d3(t){return this.tf_1.d3(t)}
method f3 (line 2) | f3(t){return this.tf_1.f3(t)}
method g3 (line 2) | g3(){return this.tf_1.g3()}
method h3 (line 2) | h3(){return this.tf_1.h3()}
method z1 (line 2) | z1(){return this.tf_1.z1()}
method rf (line 2) | rf(t){var e=this.tf_1,i=e.f3(t);return null!=i||e.d3(t)?i:this.uf_1(t)}
class ji (line 2) | class ji{constructor(){J=this,this.vf_1=new Yt(-888910638,1920087921)}eq...
method constructor (line 2) | constructor(){J=this,this.vf_1=new Yt(-888910638,1920087921)}
method equals (line 2) | equals(t){return!(null==t||!ls(t,Vt))&&t.t()}
method hashCode (line 2) | hashCode(){return 0}
method toString (line 2) | toString(){return"{}"}
method l1 (line 2) | l1(){return 0}
method t (line 2) | t(){return!0}
method wf (line 2) | wf(t){return!1}
method d3 (line 2) | d3(t){return this.wf(t)}
method xf (line 2) | xf(t){return null}
method f3 (line 2) | f3(t){return this.xf(t)}
method z1 (line 2) | z1(){return rh()}
method g3 (line 2) | g3(){return rh()}
method h3 (line 2) | h3(){return Wl()}
class Di (line 2) | class Di{x(){return this.cg()}}
method x (line 2) | x(){return this.cg()}
class Oi (line 2) | class Oi{constructor(){Y=this,this.dg_1=new Yt(1993859828,793161749)}equ...
method constructor (line 2) | constructor(){Y=this,this.dg_1=new Yt(1993859828,793161749)}
method equals (line 2) | equals(t){return!(null==t||!ls(t,It))&&t.t()}
method hashCode (line 2) | hashCode(){return 0}
method toString (line 2) | toString(){return"[]"}
method l1 (line 2) | l1(){return 0}
method t (line 2) | t(){return!0}
method lf (line 2) | lf(t){return!1}
method u2 (line 2) | u2(t){return!1}
method eg (line 2) | eg(t){return t.t()}
method v2 (line 2) | v2(t){return this.eg(t)}
method v (line 2) | v(){return G}
class Pi (line 2) | class Pi{}
class Fi (line 2) | class Fi{constructor(){K=this,this.fg_1=new Yt(0,0)}qb(t){return null}ha...
method constructor (line 2) | constructor(){K=this,this.fg_1=new Yt(0,0)}
method qb (line 2) | qb(t){return null}
method hashCode (line 2) | hashCode(){return 0}
method toString (line 2) | toString(){return"EmptyCoroutineContext"}
class qi (line 2) | class qi extends Gt{}
class Ii (line 2) | class Ii extends oe{static hg(t){var e=this.b5();return e.gg_1=t,e}l1(){...
method hg (line 2) | static hg(t){var e=this.b5();return e.gg_1=t,e}
method l1 (line 2) | l1(){return this.gg_1.length}
method t1 (line 2) | t1(t){return V.v6(t,this.gg_1.length),this.gg_1[t]}
method ig (line 2) | ig(t){return null!==t&&(e=this.gg_1,(0<=(i=t.m3_1)&&i<=(e.length-1|0)?...
method u2 (line 2) | u2(t){return t instanceof Gt&&this.ig(t instanceof Gt?t:Va())}
class Hi (line 2) | class Hi{}
class Ni (line 2) | class Ni{constructor(t,e){qa(this,e),this.jg_1=t}kg(t,e,i){return!0}lg(t...
method constructor (line 2) | constructor(t,e){qa(this,e),this.jg_1=t}
method kg (line 2) | kg(t,e,i){return!0}
method lg (line 2) | lg(t,e,i){}
method mg (line 2) | mg(t,e){return this.jg_1}
method ng (line 2) | ng(t,e){return this.mg(t,e)}
method og (line 2) | og(t,e,i){var r=this.jg_1;if(!this.kg(e,r,i))return T;this.jg_1=i,this...
method pg (line 2) | pg(t,e,i){return this.og(t,e,i)}
method toString (line 2) | toString(){return"ObservableProperty(value="+Cn(this.jg_1)+")"}
class Bi (line 2) | class Bi{constructor(){Z=this,this.a2_1=new Ui(1,0)}}
method constructor (line 2) | constructor(){Z=this,this.a2_1=new Ui(1,0)}
class Vi (line 2) | class Vi{constructor(t,e,i){if(0===i)throw Je.k1("Step must be non-zero....
method constructor (line 2) | constructor(t,e,i){if(0===i)throw Je.k1("Step must be non-zero.");if(-...
method v (line 2) | v(){return new Gi(this.c2_1,this.d2_1,this.e2_1)}
method t (line 2) | t(){return this.e2_1>0?this.c2_1>this.d2_1:this.c2_1<this.d2_1}
method equals (line 2) | equals(t){return t instanceof Vi&&(this.t()&&t.t()||this.c2_1===t.c2_1...
method hashCode (line 2) | hashCode(){return this.t()?-1:zt(31,zt(31,this.c2_1)+this.d2_1|0)+this...
method toString (line 2) | toString(){return this.e2_1>0?this.c2_1+".."+this.d2_1+" step "+this.e...
class Wi (line 2) | class Wi{}
class Ui (line 2) | class Ui extends Vi{constructor(t,e){lh(),super(t,e,1)}tg(){return this....
method constructor (line 2) | constructor(t,e){lh(),super(t,e,1)}
method tg (line 2) | tg(){return this.c2_1}
method ug (line 2) | ug(){return this.d2_1}
method vg (line 2) | vg(t){return this.c2_1<=t&&t<=this.d2_1}
method f2 (line 2) | f2(t){return this.vg("number"==typeof t?t:Va())}
method t (line 2) | t(){return this.c2_1>this.d2_1}
method equals (line 2) | equals(t){return t instanceof Ui&&(this.t()&&t.t()||this.c2_1===t.c2_1...
method hashCode (line 2) | hashCode(){return this.t()?-1:zt(31,this.c2_1)+this.d2_1|0}
method toString (line 2) | toString(){return this.c2_1+".."+this.d2_1}
class Gi (line 2) | class Gi extends Di{constructor(t,e,i){super(),this.wg_1=i,this.xg_1=e,t...
method constructor (line 2) | constructor(t,e,i){super(),this.wg_1=i,this.xg_1=e,this.yg_1=this.wg_1...
method w (line 2) | w(){return this.yg_1}
method cg (line 2) | cg(){var t=this.zg_1;if(t===this.xg_1){if(!this.yg_1)throw Ye.p5();thi...
class Ji (line 2) | class Ji{b2(t,e,i){return new Vi(t,e,i)}}
method b2 (line 2) | b2(t,e,i){return new Vi(t,e,i)}
class Yi (line 2) | class Yi{}
class $i (line 2) | class $i{constructor(){et=this,this.id_1=new Ki(null,null)}jd(t){return ...
method constructor (line 2) | constructor(){et=this,this.id_1=new Ki(null,null)}
method jd (line 2) | jd(t){return new Ki((function(){if(rt)return T;rt=!0,it=new Xi("INVARI...
class Ki (line 2) | class Ki{constructor(t,e){if(hh(),this.ah_1=t,this.bh_1=e,null==this.ah_...
method constructor (line 2) | constructor(t,e){if(hh(),this.ah_1=t,this.bh_1=e,null==this.ah_1!=(nul...
method toString (line 2) | toString(){var t,e=this.ah_1;switch(null==e?-1:e.m3_1){case-1:t="*";br...
method hashCode (line 2) | hashCode(){var t=null==this.ah_1?0:this.ah_1.hashCode();return zt(t,31...
method equals (line 2) | equals(t){return this===t||t instanceof Ki&&!!Aa(this.ah_1,t.ah_1)&&!!...
class Xi (line 2) | class Xi extends Gt{}
class Qi (line 2) | class Qi{constructor(t){this.hh_1=t,this.ch_1=-1,this.dh_1=function(t,e,...
method constructor (line 2) | constructor(t){this.hh_1=t,this.ch_1=-1,this.dh_1=function(t,e,i){if(0...
method x (line 2) | x(){if(-1===this.ch_1&&Ah(this),0===this.ch_1)throw Ye.p5();var t=this...
method w (line 2) | w(){return-1===this.ch_1&&Ah(this),1===this.ch_1}
class Zi (line 2) | class Zi{constructor(t,e,i,r){this.ih_1=t,this.jh_1=e,this.kh_1=i,this.l...
method constructor (line 2) | constructor(t,e,i,r){this.ih_1=t,this.jh_1=e,this.kh_1=i,this.lh_1=r}
method v (line 2) | v(){return new Qi(this)}
class tr (line 2) | class tr{constructor(){this.mh_1=0,this.nh_1=1,this.oh_1=2}}
method constructor (line 2) | constructor(){this.mh_1=0,this.nh_1=1,this.oh_1=2}
class er (line 2) | class er{constructor(t){this.ph_1=t,this.qh_1=0,this.rh_1=0,this.sh_1=0,...
method constructor (line 2) | constructor(t){this.ph_1=t,this.qh_1=0,this.rh_1=0,this.sh_1=0,this.th...
method w (line 2) | w(){if(0!==this.qh_1)return 1===this.qh_1;if(this.th_1<0)return this.q...
method x (line 2) | x(){if(!this.w())throw Ye.p5();this.qh_1=0;var t=this.sh_1,e=this.rh_1...
class ir (line 2) | class ir{constructor(t){this.uh_1=t}v(){return new er(this.uh_1)}}
method constructor (line 2) | constructor(t){this.uh_1=t}
method v (line 2) | v(){return new er(this.uh_1)}
class rr (line 2) | class rr{constructor(){ot=this,this.vh_1=new Yt(0,0),this.wh_1=$h(new Yt...
method constructor (line 2) | constructor(){ot=this,this.vh_1=new Yt(0,0),this.wh_1=$h(new Yt(-1,107...
method ai (line 2) | ai(t){var e=new nr(t),i=e.bi_1;if(jh(i)){var r=Lh(i);if(!(Nn(new Yt(38...
method ci (line 2) | ci(t){var e;try{var i=new nr(function(t,e,i){if(i=i===E||i,0===xa(t)){...
class nr (line 2) | class nr{constructor(t){Oh(),this.bi_1=t}di(t){return Bh(this.bi_1,t)}t2...
method constructor (line 2) | constructor(t){Oh(),this.bi_1=t}
method di (line 2) | di(t){return Bh(this.bi_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return Bh(t.bi_1,e instanceof nr?e.bi_1:Va(...
method toString (line 2) | toString(){return function(t){var e,i=t;if(Jn(i,new Yt(0,0)))e="0s";el...
method hashCode (line 2) | hashCode(){return this.bi_1.hashCode()}
method equals (line 2) | equals(t){return function(t,e){return e instanceof nr&&!!Jn(t,e.bi_1)}...
class ar (line 2) | class ar{constructor(){lt=this,this.ei_1=new sr(new Yt(-1,1073741823),!0...
method constructor (line 2) | constructor(){lt=this,this.ei_1=new sr(new Yt(-1,1073741823),!0),this....
class sr (line 2) | class sr{constructor(t,e){eu(),this.gi_1=t,this.hi_1=e;var i=this.gi_1;t...
method constructor (line 2) | constructor(t,e){eu(),this.gi_1=t,this.hi_1=e;var i=this.gi_1;this.ii_...
class or (line 2) | class or{}
class lr (line 2) | class lr{constructor(){ft=this,this.ki_1=new hr(new Yt(342103040,-734744...
method constructor (line 2) | constructor(){ft=this,this.ki_1=new hr(new Yt(342103040,-7347440),0),t...
method mi (line 2) | mi(t,e){var i=new Yt(1e9,0),r=aa(e,i);Nn(fa(e,i),new Yt(0,0))<0&&!Jn(Q...
method ni (line 2) | ni(t,e){return this.mi(t,Yn(e))}
method oi (line 2) | oi(t){return function(t){Cu();var e=t,i=0;if(0===xa(e))return new cr("...
class hr (line 2) | class hr{constructor(t,e){uu(),this.qi_1=t,this.ri_1=e;var i=this.qi_1;i...
method constructor (line 2) | constructor(t,e){uu(),this.qi_1=t,this.ri_1=e;var i=this.qi_1;if(!(Nn(...
method si (line 2) | si(t){var e=this.qi_1.u3(t.qi_1);return 0!==e?e:Ea(this.ri_1,t.ri_1)}
method t2 (line 2) | t2(t){return this.si(t instanceof hr?t:Va())}
method equals (line 2) | equals(t){return this===t||!!(t instanceof hr&&Jn(this.qi_1,t.qi_1))&&...
method hashCode (line 2) | hashCode(){return this.qi_1.hashCode()+zt(51,this.ri_1)|0}
method toString (line 2) | toString(){return function(t){Cu();var e,i=pi.r(),r=pt.ti(t),n=r.ui_1;...
class ur (line 2) | class ur{constructor(t,e){this.bj_1=t,this.cj_1=e}pi(){if(Nn(this.bj_1,u...
method constructor (line 2) | constructor(t,e){this.bj_1=t,this.cj_1=e}
method pi (line 2) | pi(){if(Nn(this.bj_1,uu().ki_1.qi_1)<0||Nn(this.bj_1,uu().li_1.qi_1)>0...
class cr (line 2) | class cr{constructor(t,e){this.ij_1=t,this.jj_1=e}pi(){throw pr.hj(this....
method constructor (line 2) | constructor(t,e){this.ij_1=t,this.jj_1=e}
method pi (line 2) | pi(){throw pr.hj(this.ij_1+' when parsing an Instant from "'+cu(this.j...
class dr (line 2) | class dr{ti(t){var e=t.qi_1,i=new Yt(86400,0),r=aa(e,i);Nn(fa(e,i),new Y...
method ti (line 2) | ti(t){var e=t.qi_1,i=new Yt(86400,0),r=aa(e,i);Nn(fa(e,i),new Yt(0,0))...
class fr (line 2) | class fr{constructor(t,e,i,r,n,a,s){this.ui_1=t,this.vi_1=e,this.wi_1=i,...
method constructor (line 2) | constructor(t,e,i,r,n,a,s){this.ui_1=t,this.vi_1=e,this.wi_1=i,this.xi...
method toString (line 2) | toString(){return"UnboundLocalDateTime("+this.ui_1+"-"+this.vi_1+"-"+t...
class pr (line 2) | class pr extends Je{static hj(t){var e=this.k1(t);return Oa(e,e.gj_1),e}}
method hj (line 2) | static hj(t){var e=this.k1(t);return Oa(e,e.gj_1),e}
class mr (line 2) | class mr{}
class gr (line 2) | class gr{constructor(t){this.lj_1=t}}
method constructor (line 2) | constructor(t){this.lj_1=t}
class br (line 2) | class br extends mr{constructor(t,e){super(),this.mj_1=function(t){if("f...
method constructor (line 2) | constructor(t,e){super(),this.mj_1=function(t){if("function"==typeof t...
method fb (line 2) | fb(){return K===E&&new Fi,K}
method rj (line 2) | rj(t){this.oj_1=null,this.pj_1=t}
method hb (line 2) | hb(t){return this.rj(t)}
method kj (line 2) | *kj(t,e){return yield()=>{var i=e;return this.oj_1=ls(i,Ie)?i:Va(),thi...
method qj (line 2) | qj(){t:for(;;){var t=this.pj_1,e=this.oj_1;if(null==e){var i=new Cr(t)...
class vr (line 2) | class vr extends Gt{}
class _r (line 2) | class _r{constructor(t){this.sj_1=t,this.tj_1=wt}c3(){return this.tj_1==...
method constructor (line 2) | constructor(t){this.sj_1=t,this.tj_1=wt}
method c3 (line 2) | c3(){return this.tj_1===wt&&(this.tj_1=Wa(this.sj_1)(),this.sj_1=null)...
method uj (line 2) | uj(){return!(this.tj_1===wt)}
method toString (line 2) | toString(){return this.uj()?Cn(this.c3()):"Lazy value not initialized ...
class wr (line 2) | class wr{}
class yr (line 2) | class yr{}
class xr (line 2) | class xr{constructor(t){this.vj_1=t}equals(t){return t instanceof xr&&Aa...
method constructor (line 2) | constructor(t){this.vj_1=t}
method equals (line 2) | equals(t){return t instanceof xr&&Aa(this.vj_1,t.vj_1)}
method hashCode (line 2) | hashCode(){return La(this.vj_1)}
method toString (line 2) | toString(){return"Failure("+this.vj_1.toString()+")"}
class Cr (line 2) | class Cr{constructor(t){this.wj_1=t}toString(){return(t=this.wj_1)instan...
method constructor (line 2) | constructor(t){this.wj_1=t}
method toString (line 2) | toString(){return(t=this.wj_1)instanceof xr?t.toString():"Success("+Cn...
method hashCode (line 2) | hashCode(){return null==(t=this.wj_1)?0:La(t);var t}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Cr&&!!Aa(t,e.wj_1)}...
class kr (line 2) | class kr extends Ke{static ub(t){t=t===E?"An operation is not implemente...
method ub (line 2) | static ub(t){t=t===E?"An operation is not implemented.":t;var e=this.i...
class Er (line 2) | class Er{constructor(t,e){this.yf_1=t,this.zf_1=e}toString(){return"("+C...
method constructor (line 2) | constructor(t,e){this.yf_1=t,this.zf_1=e}
method toString (line 2) | toString(){return"("+Cn(this.yf_1)+", "+Cn(this.zf_1)+")"}
method ag (line 2) | ag(){return this.yf_1}
method bg (line 2) | bg(){return this.zf_1}
method hashCode (line 2) | hashCode(){var t=null==this.yf_1?0:La(this.yf_1);return zt(t,31)+(null...
method equals (line 2) | equals(t){return this===t||t instanceof Er&&!!Aa(this.yf_1,t.yf_1)&&!!...
class zr (line 2) | class zr{constructor(t,e,i){this.xj_1=t,this.yj_1=e,this.zj_1=i}toString...
method constructor (line 2) | constructor(t,e,i){this.xj_1=t,this.yj_1=e,this.zj_1=i}
method toString (line 2) | toString(){return"("+Cn(this.xj_1)+", "+Cn(this.yj_1)+", "+Cn(this.zj_...
method hashCode (line 2) | hashCode(){var t=null==this.xj_1?0:La(this.xj_1);return t=zt(t,31)+(nu...
method equals (line 2) | equals(t){return this===t||t instanceof zr&&!!Aa(this.xj_1,t.xj_1)&&!!...
class Tr (line 2) | class Tr{constructor(){yt=this,this.xe_1=new Sr(new Yt(0,0),new Yt(0,0))...
method constructor (line 2) | constructor(){yt=this,this.xe_1=new Sr(new Yt(0,0),new Yt(0,0)),this.y...
method af (line 2) | af(t,e){return Jn(t,new Yt(0,0))&&Jn(e,new Yt(0,0))?this.xe_1:new Sr(t...
method ak (line 2) | ak(t){var e,i;switch(t.length){case 36:e=function(t){var e="a hexadeci...
class Sr (line 2) | class Sr{constructor(t,e){Lu(),this.bk_1=t,this.ck_1=e}toString(){return...
method constructor (line 2) | constructor(t,e){Lu(),this.bk_1=t,this.ck_1=e}
method toString (line 2) | toString(){return this.dk()}
method dk (line 2) | dk(){var t=new Int8Array(36);Fl(this.bk_1,t,0,0,4);t[8]=Xa(45),Fl(this...
method equals (line 2) | equals(t){return this===t||t instanceof Sr&&Jn(this.bk_1,t.bk_1)&&Jn(t...
method ek (line 2) | ek(t){return Jn(this.bk_1,t.bk_1)?Is(this.ck_1,t.ck_1):Is(this.bk_1,t....
method t2 (line 2) | t2(t){return this.ek(t instanceof Sr?t:Va())}
method hashCode (line 2) | hashCode(){return fa(this.bk_1,this.ck_1).hashCode()}
class Rr (line 2) | class Rr{constructor(){xt=this,this.fk_1=0,this.gk_1=-1,this.hk_1=1,this...
method constructor (line 2) | constructor(){xt=this,this.fk_1=0,this.gk_1=-1,this.hk_1=1,this.ik_1=8}
class Mr (line 2) | class Mr{constructor(t){Ou(),this.jk_1=t}kk(t){return Pu(this.jk_1,t)}t2...
method constructor (line 2) | constructor(t){Ou(),this.jk_1=t}
method kk (line 2) | kk(t){return Pu(this.jk_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return Pu(t.jk_1,e instanceof Mr?e.jk_1:Va(...
method toString (line 2) | toString(){return Fu(this.jk_1)}
method hashCode (line 2) | hashCode(){return this.jk_1}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Mr&&t===e.jk_1}(thi...
class Ar (line 2) | class Ar{constructor(t){this.lk_1=t,this.mk_1=0}w(){return this.mk_1<thi...
method constructor (line 2) | constructor(t){this.lk_1=t,this.mk_1=0}
method w (line 2) | w(){return this.mk_1<this.lk_1.length}
method nk (line 2) | nk(){if(!(this.mk_1<this.lk_1.length))throw Ye.g1(this.mk_1.toString()...
method x (line 2) | x(){return new Mr(this.nk())}
class Lr (line 2) | class Lr{constructor(t){this.ok_1=t}l1(){return Iu(this.ok_1)}v(){return...
method constructor (line 2) | constructor(t){this.ok_1=t}
method l1 (line 2) | l1(){return Iu(this.ok_1)}
method v (line 2) | v(){return t=this.ok_1,new Ar(t);var t}
method t (line 2) | t(){return 0===this.ok_1.length}
method toString (line 2) | toString(){return"UByteArray(storage="+Ma(this.ok_1)+")"}
method hashCode (line 2) | hashCode(){return La(this.ok_1)}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Lr&&!!Aa(t,e.ok_1)}...
class jr (line 2) | class jr{constructor(){Ct=this,this.pk_1=0,this.qk_1=-1,this.rk_1=4,this...
method constructor (line 2) | constructor(){Ct=this,this.pk_1=0,this.qk_1=-1,this.rk_1=4,this.sk_1=32}
class Dr (line 2) | class Dr{constructor(t){Bu(),this.tk_1=t}uk(t){return Vu(this.tk_1,t)}t2...
method constructor (line 2) | constructor(t){Bu(),this.tk_1=t}
method uk (line 2) | uk(t){return Vu(this.tk_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return Vu(t.tk_1,e instanceof Dr?e.tk_1:Va(...
method toString (line 2) | toString(){return Wu(this.tk_1)}
method hashCode (line 2) | hashCode(){return this.tk_1}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Dr&&t===e.tk_1}(thi...
class Or (line 2) | class Or{constructor(t){this.vk_1=t,this.wk_1=0}w(){return this.wk_1<thi...
method constructor (line 2) | constructor(t){this.vk_1=t,this.wk_1=0}
method w (line 2) | w(){return this.wk_1<this.vk_1.length}
method xk (line 2) | xk(){if(!(this.wk_1<this.vk_1.length))throw Ye.g1(this.wk_1.toString()...
method x (line 2) | x(){return new Dr(this.xk())}
class Pr (line 2) | class Pr{constructor(t){this.yk_1=t}l1(){return Gu(this.yk_1)}v(){return...
method constructor (line 2) | constructor(t){this.yk_1=t}
method l1 (line 2) | l1(){return Gu(this.yk_1)}
method v (line 2) | v(){return t=this.yk_1,new Or(t);var t}
method t (line 2) | t(){return 0===this.yk_1.length}
method toString (line 2) | toString(){return"UIntArray(storage="+Ma(this.yk_1)+")"}
method hashCode (line 2) | hashCode(){return La(this.yk_1)}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Pr&&!!Aa(t,e.yk_1)}...
class Fr (line 2) | class Fr{constructor(){kt=this,this.zk_1=new Yt(0,0),this.al_1=new Yt(-1...
method constructor (line 2) | constructor(){kt=this,this.zk_1=new Yt(0,0),this.al_1=new Yt(-1,-1),th...
class qr (line 2) | class qr{constructor(t){$u(),this.dl_1=t}el(t){return Ku(this.dl_1,t)}t2...
method constructor (line 2) | constructor(t){$u(),this.dl_1=t}
method el (line 2) | el(t){return Ku(this.dl_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return Ku(t.dl_1,e instanceof qr?e.dl_1:Va(...
method toString (line 2) | toString(){return Xu(this.dl_1)}
method hashCode (line 2) | hashCode(){return this.dl_1.hashCode()}
method equals (line 2) | equals(t){return function(t,e){return e instanceof qr&&!!Jn(t,e.dl_1)}...
class Ir (line 2) | class Ir{constructor(t){this.fl_1=t,this.gl_1=0}w(){return this.gl_1<thi...
method constructor (line 2) | constructor(t){this.fl_1=t,this.gl_1=0}
method w (line 2) | w(){return this.gl_1<this.fl_1.length}
method hl (line 2) | hl(){if(!(this.gl_1<this.fl_1.length))throw Ye.g1(this.gl_1.toString()...
method x (line 2) | x(){return new qr(this.hl())}
class Hr (line 2) | class Hr{constructor(t){this.il_1=t}l1(){return Zu(this.il_1)}v(){return...
method constructor (line 2) | constructor(t){this.il_1=t}
method l1 (line 2) | l1(){return Zu(this.il_1)}
method v (line 2) | v(){return t=this.il_1,new Ir(t);var t}
method t (line 2) | t(){return 0===this.il_1.length}
method toString (line 2) | toString(){return"ULongArray(storage="+Ma(this.il_1)+")"}
method hashCode (line 2) | hashCode(){return La(this.il_1)}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Hr&&!!Aa(t,e.il_1)}...
class Nr (line 2) | class Nr{constructor(){Et=this,this.jl_1=0,this.kl_1=-1,this.ll_1=2,this...
method constructor (line 2) | constructor(){Et=this,this.jl_1=0,this.kl_1=-1,this.ll_1=2,this.ml_1=16}
class Br (line 2) | class Br{constructor(t){ec(),this.nl_1=t}ol(t){return ic(this.nl_1,t)}t2...
method constructor (line 2) | constructor(t){ec(),this.nl_1=t}
method ol (line 2) | ol(t){return ic(this.nl_1,t)}
method t2 (line 2) | t2(t){return function(t,e){return ic(t.nl_1,e instanceof Br?e.nl_1:Va(...
method toString (line 2) | toString(){return rc(this.nl_1)}
method hashCode (line 2) | hashCode(){return this.nl_1}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Br&&t===e.nl_1}(thi...
class Vr (line 2) | class Vr{constructor(t){this.pl_1=t,this.ql_1=0}w(){return this.ql_1<thi...
method constructor (line 2) | constructor(t){this.pl_1=t,this.ql_1=0}
method w (line 2) | w(){return this.ql_1<this.pl_1.length}
method rl (line 2) | rl(){if(!(this.ql_1<this.pl_1.length))throw Ye.g1(this.ql_1.toString()...
method x (line 2) | x(){return new Br(this.rl())}
class Wr (line 2) | class Wr{constructor(t){this.sl_1=t}l1(){return ac(this.sl_1)}v(){return...
method constructor (line 2) | constructor(t){this.sl_1=t}
method l1 (line 2) | l1(){return ac(this.sl_1)}
method v (line 2) | v(){return t=this.sl_1,new Vr(t);var t}
method t (line 2) | t(){return 0===this.sl_1.length}
method toString (line 2) | toString(){return"UShortArray(storage="+Ma(this.sl_1)+")"}
method hashCode (line 2) | hashCode(){return La(this.sl_1)}
method equals (line 2) | equals(t){return function(t,e){return e instanceof Wr&&!!Aa(t,e.sl_1)}...
function Ur (line 2) | function Ur(t){throw ei.g("lateinit property "+t+" has not been initiali...
function Gr (line 2) | function Gr(t){var e;switch(t.length){case 0:e=Bl();break;case 1:e=Vs(t[...
function Jr (line 2) | function Jr(t,e){if(null==e){var i=0,r=t.length-1|0;if(i<=r)do{var n=i;i...
function Yr (line 2) | function Yr(t){switch(t.length){case 0:return nh();case 1:return Gs(t[0]...
function $r (line 2) | function $r(t,e){for(var i=0,r=t.length;i<r;){var n=t[i];i=i+1|0,e.b1(n)...
function Kr (line 2) | function Kr(t,e){return Jr(t,e)>=0}
function Xr (line 2) | function Xr(t,e,i,r,n,a,s){return e=e===E?", ":e,i=i===E?"":i,r=r===E?""...
function Qr (line 2) | function Qr(t,e,i,r,n,a,s,o){i=i===E?", ":i,r=r===E?"":r,n=n===E?"":n,a=...
function Zr (line 2) | function Zr(t,e){for(var i=t.v();i.w();){var r=i.x();e.b1(r)}return e}
function tn (line 2) | function tn(t){if(ls(t,Ft)){var e;switch(t.l1()){case 0:e=nh();break;cas...
function en (line 2) | function en(t,e){if(ls(e,Ft)){var i=ve.p1(t.l1()+e.l1()|0);return i.q1(t...
function rn (line 2) | function rn(t){if(ls(t,qt))return function(t){if(t.t())throw Ye.g1("List...
function nn (line 2) | function nn(t){if(t.t())throw Ye.g1("List is empty.");return t.t1(Vl(t))}
function an (line 2) | function an(t){return ls(t,Ft)?qe.w1(t):Zr(t,qe.u1())}
function sn (line 2) | function sn(t){return t.t()?null:t.t1(0)}
function on (line 2) | function on(t){return 1===t.l1()?t.t1(0):null}
function ln (line 2) | function ln(t){return ve.v1(t)}
function hn (line 2) | function hn(t,e){return e<=-2147483648?lh().a2_1:is(t,e-1|0)}
function un (line 2) | function un(t,e){return tt.b2(t,e,-1)}
function cn (line 2) | function cn(t,e,i){if(Nn(e,i)>0)throw Je.k1("Cannot coerce value to an e...
function dn (line 2) | function dn(t,e){return t<e?e:t}
function fn (line 2) | function fn(t,e){return t>e?e:t}
function pn (line 2) | function pn(t,e){return Nn(t,e)>0?e:t}
function mn (line 2) | function mn(t,e){var i=function(t){return Nn(new Yt(-2147483648,-1),t)<=...
function gn (line 2) | function gn(t,e){if(!(e>=0)){var i="Requested character count "+e+" is l...
function bn (line 2) | function bn(t){return t}
function vn (line 2) | function vn(t,e){return t-e|0}
function _n (line 2) | function _n(t,e){return t-e|0}
function wn (line 2) | function wn(t){return t}
function yn (line 2) | function yn(t){return String.fromCharCode(t)}
function xn (line 2) | function xn(){return a===E&&new Ot,a}
function Cn (line 2) | function Cn(t){var e=null==t?null:Ma(t);return null==e?"null":e}
function kn (line 2) | function kn(){return s===E&&new Jt,s}
function En (line 2) | function En(t){return new Kt(t)}
function zn (line 2) | function zn(t){var e=Tn(Array(t),!1);return e.$type$="BooleanArray",e}
function Tn (line 2) | function Tn(t,e){var i=0,r=t.length-1|0;if(i<=r)do{var n=i;i=i+1|0,t[n]=...
function Sn (line 2) | function Sn(t){var e=new Uint16Array(t);return e.$type$="CharArray",e}
function Rn (line 2) | function Rn(t){var e=Tn(Array(t),new Yt(0,0));return e.$type$="LongArray...
function Mn (line 2) | function Mn(){return Dn(),o}
function An (line 2) | function An(){return Dn(),l}
function Ln (line 2) | function Ln(){return Dn(),h}
function jn (line 2) | function jn(){return Dn(),u}
function Dn (line 2) | function Dn(){d||(d=!0,o=new ArrayBuffer(8),l=new Float64Array(Mn()),new...
function On (line 2) | function On(){return va(),f}
function Pn (line 2) | function Pn(){return va(),p}
function Fn (line 2) | function Fn(){return va(),m}
function qn (line 2) | function qn(){return va(),b}
function In (line 2) | function In(){return va(),v}
function Hn (line 2) | function Hn(){return va(),_}
function Nn (line 2) | function Nn(t,e){if(va(),Jn(t,e))return 0;var i=$n(t),r=$n(e);return i&&...
function Bn (line 2) | function Bn(t){return va(),Xa(t.s3_1)}
function Vn (line 2) | function Vn(t){return va(),ts(t.s3_1)}
function Wn (line 2) | function Wn(t){return va(),t.s3_1}
function Un (line 2) | function Un(t){return va(),4294967296*t.t3_1+function(t){return va(),t.s...
function Gn (line 2) | function Gn(t,e){if(va(),Xn(t))return"0";if($n(t)){if(Jn(t,qn())){var i=...
function Jn (line 2) | function Jn(t,e){return va(),t.t3_1===e.t3_1&&t.s3_1===e.s3_1}
function Yn (line 2) | function Yn(t){return va(),new Yt(t,t<0?-1:0)}
function $n (line 2) | function $n(t){return va(),t.t3_1<0}
function Kn (line 2) | function Kn(t,e){return va(),ea(t,Zn(e))}
function Xn (line 2) | function Xn(t){return va(),0===t.t3_1&&0===t.s3_1}
function Qn (line 2) | function Qn(t,e){if(va(),Xn(t))return On();if(Xn(e))return On();if(Jn(t,...
function Zn (line 2) | function Zn(t){return va(),ea(na(t),new Yt(1,0))}
function ta (line 2) | function ta(t){if(va(),Ls(t))return On();if(t<=-0x8000000000000000)retur...
function ea (line 2) | function ea(t,e){va();var i=t.t3_1>>>16|0,r=65535&t.t3_1,n=t.s3_1>>>16|0...
function ia (line 2) | function ia(t){return va(),!(1&~t.s3_1)}
function ra (line 2) | function ra(t,e){return va(),Nn(t,e)<0}
function na (line 2) | function na(t){return va(),new Yt(~t.s3_1,~t.t3_1)}
function aa (line 2) | function aa(t,e){if(va(),Xn(e))throw Ve.z3("division by zero");if(Xn(t))...
function sa (line 2) | function sa(t,e){va();var i=63&e;return 0===i?t:i<32?new Yt(t.s3_1>>>i|t...
function oa (line 2) | function oa(t,e){va();var i=63&e;return 0===i?t:i<32?new Yt(t.s3_1<<i,t....
function la (line 2) | function la(t,e){return va(),Nn(t,e)>0}
function ha (line 2) | function ha(t,e){return va(),Nn(t,e)>=0}
function ua (line 2) | function ua(t,e){return va(),Kn(t,Qn(aa(t,e),e))}
function ca (line 2) | function ca(t,e){return va(),new Yt(t.s3_1&e.s3_1,t.t3_1&e.t3_1)}
function da (line 2) | function da(t,e){return va(),new Yt(t.s3_1|e.s3_1,t.t3_1|e.t3_1)}
function fa (line 2) | function fa(t,e){return va(),new Yt(t.s3_1^e.s3_1,t.t3_1^e.t3_1)}
function pa (line 2) | function pa(t,e){va();var i=63&e;return 0===i?t:i<32?new Yt(t.s3_1>>>i|t...
function ma (line 2) | function ma(t){return va(),t instanceof Yt?t:ta(t)}
function ga (line 2) | function ga(t){return va(),os(t)&&"LongArray"===t.$type$}
function ba (line 2) | function ba(t){return va(),null!=t&&ga(t)}
function va (line 2) | function va(){w||(w=!0,f=Yn(0),p=Yn(1),m=Yn(-1),g=new Yt(-1,2147483647),...
function _a (line 2) | function _a(t,e){return wa(t)?ya(t,e):t.b(e)}
function wa (line 2) | function wa(t){return"string"==typeof t}
function ya (line 2) | function ya(t,e){return t.charCodeAt(e)}
function xa (line 2) | function xa(t){return wa(t)?t.length:t.a()}
function Ca (line 2) | function Ca(t,e,i){return wa(t)?gl(t,e,i):t.c(e,i)}
function ka (line 2) | function ka(t){return Ma(t)}
function Ea (line 2) | function Ea(t,e){var i;switch(typeof t){case"number":i="number"==typeof ...
function za (line 2) | function za(t,e){var i;if(t<e)i=-1;else if(t>e)i=1;else if(t===e){var r;...
function Ta (line 2) | function Ta(t,e){return t<e?-1:t>e?1:0}
function Sa (line 2) | function Sa(t){if(!("kotlinHashCodeValue$"in t)){var e=Ra(),i=new Object...
function Ra (line 2) | function Ra(){return 4294967296*Math.random()|0}
function Ma (line 2) | function Ma(t){return null==t?"null":ss(t)?"[...]":"function"!=typeof t....
function Aa (line 2) | function Aa(t,e){if(null==t)return null==e;if(null==e)return!1;if("objec...
function La (line 2) | function La(t){if(null==t)return 0;var e,i=typeof t;switch(i){case"objec...
function ja (line 2) | function ja(t){return t?1231:1237}
function Da (line 2) | function Da(t){var e=0,i=0,r=t.length-1|0;if(i<=r)do{var n=i;i=i+1|0;var...
function Oa (line 2) | function Oa(t,e){null!=Error.captureStackTrace?Error.captureStackTrace(t...
function Pa (line 2) | function Pa(t){return t.prototype}
function Fa (line 2) | function Fa(t,e){var i=Object.create(t.prototype);return qa(i,e),i}
function qa (line 2) | function qa(t,e){e!==E&&Object.assign(t,e)}
function Ia (line 2) | function Ia(t,e,i,r){var n;if(r===E)n=t;else{var a=class extends t{};Obj...
function Ha (line 2) | function Ha(t){return{cause:t}}
function Na (line 2) | function Na(t,e,i){if(t.name=Object.getPrototypeOf(t).constructor.name,n...
function Ba (line 2) | function Ba(){throw ii.h4()}
function Va (line 2) | function Va(){throw ni.p4()}
function Wa (line 2) | function Wa(t){var e;return null==t?function(){throw ri.l4()}():e=t,e}
function Ua (line 2) | function Ua(t,e,i,r,n,a){return{kind:t,simpleName:e,associatedObjectKey:...
function Ga (line 2) | function Ga(t,e,i,r,n,a,s,o){Ja("class",t,e,i,r,n,a,s,o)}
function Ja (line 2) | function Ja(t,e,i,r,n,a,s,o,l){null!=n&&(e.prototype=Object.create(n.pro...
function Ya (line 2) | function Ya(t,e,i,r,n,a,s,o){Ja("object",t,e,i,r,n,a,s,o)}
function $a (line 2) | function $a(t,e,i,r,n,a,s,o){Ja("interface",t,e,i,r,n,a,s,o)}
function Ka (line 2) | function Ka(t,e,i,r){Ya(t,"Companion",E,e,i,r,E,E)}
function Xa (line 2) | function Xa(t){return t<<24>>24}
function Qa (line 2) | function Qa(t){var e;return e=t instanceof Yt?Wn(t):function(t){return t...
function Za (line 2) | function Za(t){return Number(t)}
function ts (line 2) | function ts(t){return t<<16>>16}
function es (line 2) | function es(t){return 65535&ts(Qa(t))}
function is (line 2) | function is(t,e){return new Ui(t,e)}
function rs (line 2) | function rs(){return as(),Ua("class",E,E,E,E,E)}
function ns (line 2) | function ns(t,e,i,r,n,a){return as(),r.get=r,r.set=n,r.callableName=t,fu...
function as (line 2) | function as(){if(!k){k=!0;var t=[rs(),rs()],e=[rs(),rs()];C=[t,e,[rs(),r...
function ss (line 2) | function ss(t){return os(t)||Tt(t)}
function os (line 2) | function os(t){return Array.isArray(t)}
function ls (line 2) | function ls(t,e){return!0===t[e.Symbol]}
function hs (line 2) | function hs(t){return!!os(t)&&!t.$type$}
function us (line 2) | function us(t){return"number"==typeof t||t instanceof Yt}
function cs (line 2) | function cs(t){return"string"==typeof t||ls(t,Rt)}
function ds (line 2) | function ds(t){return os(t)&&"BooleanArray"===t.$type$}
function fs (line 2) | function fs(t){return t instanceof Int8Array}
function ps (line 2) | function ps(t){return t instanceof Int16Array}
function ms (line 2) | function ms(t){return t instanceof Uint16Array&&"CharArray"===t.$type$}
function gs (line 2) | function gs(t){return t instanceof Int32Array}
function bs (line 2) | function bs(t){return t instanceof Float32Array}
function vs (line 2) | function vs(t){return t instanceof Float64Array}
function _s (line 2) | function _s(t,e){return function(t,e){var i=t,r=e;if(i===r)return!0;if(n...
function ws (line 2) | function ws(t){return ve.x4(t)}
function ys (line 2) | function ys(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function xs (line 2) | function xs(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Cs (line 2) | function Cs(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function ks (line 2) | function ks(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Es (line 2) | function Es(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function zs (line 2) | function zs(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Ts (line 2) | function Ts(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Ss (line 2) | function Ss(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Rs (line 2) | function Rs(t,e){if(!(e>=0)){var i="Invalid new array size: "+e+".";thro...
function Ms (line 2) | function Ms(){return z===E&&new ne,z}
function As (line 2) | function As(t){return le.a5(t)}
function Ls (line 2) | function Ls(t){return!(t==t)}
function js (line 2) | function js(t){var e,i=t.t3_1;if(0===i){var r=t.s3_1;e=32+St(r)|0}else e...
function Ds (line 2) | function Ds(t){return!function(t){return t===1/0||t===-1/0}(t)&&!functio...
function Os (line 2) | function Os(t){return!function(t){return t===1/0||t===-1/0}(t)&&!Ls(t)}
function Ps (line 2) | function Ps(t){var e=t.s3_1;return 0===e?32+Fs(t.t3_1)|0:Fs(e)}
function Fs (line 2) | function Fs(t){return 32-St(~(0|t|-t))|0}
function qs (line 2) | function qs(t,e){return Ea(-2147483648^t,-2147483648^e)}
function Is (line 2) | function Is(t,e){return fa(t,new Yt(0,-2147483648)).u3(fa(e,new Yt(0,-21...
function Hs (line 2) | function Hs(t,e){return Wn(aa(ca(Yn(t),new Yt(-1,0)),ca(Yn(e),new Yt(-1,...
function Ns (line 2) | function Ns(t,e){var i=t,r=e;if(Nn(r,new Yt(0,0))<0)return Is(t,e)<0?new...
function Bs (line 2) | function Bs(t){return function(t){if(t.t())return[];for(var e=t.l1(),i=A...
function Vs (line 2) | function Vs(t){var e=[t];return ve.x4(e)}
function Ws (line 2) | function Ws(t){return void 0!==t.toArray?t.toArray():Bs(t)}
function Us (line 2) | function Us(t){return t<0&&function(){throw Qe.sc("Index overflow has ha...
function Gs (line 2) | function Gs(t){return $r(e=[t],Se.s1(e.length));var e}
function Js (line 2) | function Js(t){if(!(t>=0))throw Je.k1(Ma("capacity must be non-negative....
function Ys (line 2) | function Ys(t,e,i){t.fill(null,e,i)}
function $s (line 2) | function $s(t,e){return Rs(t,e)}
function Ks (line 2) | function Ks(t,e){t[e]=null}
function Xs (line 2) | function Xs(){return S===E&&new be,S}
function Qs (line 2) | function Qs(t,e){return V.v6(e,t.l1()),e}
function Zs (line 2) | function Zs(t,e){return 0===(i=zt(dn(e,1),3))?0:1<<31-St(i);var i}
function to (line 2) | function to(t,e){return St(e)+1|0}
function eo (line 2) | function eo(t){if(t.m9_1.r7_1!==t.o9_1)throw Ze.l9("The backing map has ...
function io (line 2) | function io(t){return t.k7_1.length}
function ro (line 2) | function ro(t){return t.n7_1.length}
function no (line 2) | function no(t){t.r7_1=t.r7_1+1|0}
function ao (line 2) | function ao(t,e){!function(t,e){var i=io(t)-t.p7_1|0,r=t.p7_1-t.l1()|0;r...
function so (line 2) | function so(t){var e=t.l7_1;if(null!=e)return e;var i=Js(io(t));return t...
function oo (line 2) | function oo(t,e){return null==e?0:zt(La(e),-1640531527)>>>t.q7_1|0}
function lo (line 2) | function lo(t,e){for(var i=0,r=0,n=t.l7_1;i<t.p7_1;){var a=t.m7_1[i];a>=...
function ho (line 2) | function ho(t,e){no(t),t.p7_1>t.s7_1&&lo(t,!1),t.n7_1=new Int32Array(e),...
function uo (line 2) | function uo(t,e){for(var i=oo(t,t.k7_1[e]),r=t.o7_1;;){if(0===t.n7_1[i])...
function co (line 2) | function co(t,e){for(var i=oo(t,e),r=t.o7_1;;){var n=t.n7_1[i];if(0===n)...
function fo (line 2) | function fo(t,e){for(var i=t.p7_1;(i=i-1|0)>=0;)if(t.m7_1[i]>=0&&Aa(Wa(t...
function po (line 2) | function po(t,e){t.j8();t:for(;;)for(var i=oo(t,e),r=fn(zt(t.o7_1,2),ro(...
function mo (line 2) | function mo(t,e){Ks(t.k7_1,e);var i=t.l7_1;null==i||Ks(i,e),function(t,e...
function go (line 2) | function go(t,e){var i=po(t,e.b3()),r=so(t);if(i>=0)return r[i]=e.c3(),!...
function bo (line 2) | function bo(t,e,i,r){var n=new Be(r),a="function"==typeof t?t(e,i,n):t.v...
function vo (line 2) | function vo(t){var e=t;return null!=t.iterator?t.iterator():ss(e)?En(e):...
function _o (line 2) | function _o(t){Oa(t,t.a7_1)}
function wo (line 2) | function wo(t){Oa(t,t.c4_1)}
function yo (line 2) | function yo(t){Oa(t,t.j1_1)}
function xo (line 2) | function xo(t){Oa(t,t.q9_1)}
function Co (line 2) | function Co(t){Oa(t,t.y3_1)}
function ko (line 2) | function ko(t){Oa(t,t.f1_1)}
function Eo (line 2) | function Eo(t){Oa(t,t.e5_1)}
function zo (line 2) | function zo(t){Oa(t,t.gc_1)}
function To (line 2) | function To(t){Oa(t,t.lc_1)}
function So (line 2) | function So(t){Oa(t,t.qc_1)}
function Ro (line 2) | function Ro(t){Oa(t,t.k9_1)}
function Mo (line 2) | function Mo(t){Oa(t,t.wc_1)}
function Ao (line 2) | function Ao(t){Oa(t,t.f_1)}
function Lo (line 2) | function Lo(t,e){return new _r(e)}
function jo (line 2) | function jo(t){return new _r(t)}
function Do (line 2) | function Do(t,e){for(var i=t.length,r=e.length,n=0,a=e;n<i&&n<r;){var s=...
function Oo (line 2) | function Oo(t,e,i){var r=t.slice(0,e);void 0!==t.$type$&&(r.$type$=t.$ty...
function Po (line 2) | function Po(t){if(Ls(t))throw Je.k1("Cannot round NaN value.");return t>...
function Fo (line 2) | function Fo(t){return(t instanceof si?t:Va()).ad()}
function qo (line 2) | function qo(t,e,i){return new At(t,ws(e),i)}
function Io (line 2) | function Io(t){return hh().jd(t)}
function Ho (line 2) | function Ho(){return j||(j=!0,A=Array(0)),A}
function No (line 2) | function No(t){return!(null==t)}
function Bo (line 2) | function Bo(t){return us(t)}
function Vo (line 2) | function Vo(t){return null!=t&&"boolean"==typeof t}
function Wo (line 2) | function Wo(t){return null!=t&&"number"==typeof t}
function Uo (line 2) | function Uo(t){return null!=t&&"number"==typeof t}
function Go (line 2) | function Go(t){return null!=t&&"number"==typeof t}
function Jo (line 2) | function Jo(t){return t instanceof Yt}
function Yo (line 2) | function Yo(t){return null!=t&&"number"==typeof t}
function $o (line 2) | function $o(t){return null!=t&&"number"==typeof t}
function Ko (line 2) | function Ko(t){return null!=t&&hs(t)}
function Xo (line 2) | function Xo(t){return null!=t&&"string"==typeof t}
function Qo (line 2) | function Qo(t){return t instanceof Error}
function Zo (line 2) | function Zo(t){return null!=t&&ds(t)}
function tl (line 2) | function tl(t){return null!=t&&ms(t)}
function el (line 2) | function el(t){return null!=t&&fs(t)}
function il (line 2) | function il(t){return null!=t&&ps(t)}
function rl (line 2) | function rl(t){return null!=t&&gs(t)}
function nl (line 2) | function nl(t){return null!=t&&bs(t)}
function al (line 2) | function al(t){return null!=t&&vs(t)}
function sl (line 2) | function sl(){return L===E&&new di,L}
function ol (line 2) | function ol(t){if(t===String)return sl().stringClass;var e,i=t.$metadata...
function ll (line 2) | function ll(t){var e;switch(typeof t){case"string":e=sl().stringClass;br...
function hl (line 2) | function hl(t){var e=yn(t).toUpperCase();return e.length>1?t:ya(e,0)}
function ul (line 2) | function ul(t){return function(t){return 9<=t&&t<=13||28<=t&&t<=32||160=...
function cl (line 2) | function cl(t,e){return Gn(t,dl(e))}
function dl (line 2) | function dl(t){if(!(2<=t&&t<=36))throw Je.k1("radix "+t+" was not in val...
function fl (line 2) | function fl(t,e){var i,r,n,a=vn(t,48)>=0&&vn(t,57)<=0?_n(t,48):vn(t,65)>...
function pl (line 2) | function pl(t){var e=+t;return(Ls(e)&&!ml(t)||0===e&&xh(t))&&_h(t),e}
function ml (line 2) | function ml(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":r...
function gl (line 2) | function gl(t,e,i){return _l(),t.substring(e,i)}
function bl (line 2) | function bl(t,e){return _l(),t.substring(e)}
function vl (line 2) | function vl(t,e){return _l(),function(t,e,i){if(i=i!==E&&i,_l(),i){var r...
function _l (line 2) | function _l(){D||(D=!0,new mi(vl))}
function wl (line 2) | function wl(t,e,i,r,n,a){return Eh(t,e,i,r,n,a=a!==E&&a)}
function yl (line 2) | function yl(t,e,i){return(i=i!==E&&i)?wl(t,0,e,0,e.length,i):t.startsWit...
function xl (line 2) | function xl(t,e,i){if(null==t)return null==e;if(null==e)return!1;if(!(i=...
function Cl (line 2) | function Cl(t,e,i,r,n){if(Tl(),!(30&e)||i>=r)return zl(0,i,n);var a=t[i]...
function kl (line 2) | function kl(t,e,i,r,n){if(Tl(),i>=r)return zl(0,i,n);var a=t[i];if(15&e)...
function El (line 2) | function El(t,e,i,r,n){if(Tl(),i>=r)return zl(0,i,n);var a=t[i];if(15&e)...
function zl (line 2) | function zl(t,e,i){if(Tl(),i)throw fi.ge("Malformed sequence starting at...
function Tl (line 2) | function Tl(){O||(O=!0,new Int8Array([-17,-65,-67]))}
function Sl (line 2) | function Sl(){if(B)return T;B=!0,P=new gi("NANOSECONDS",0,1),new gi("MIC...
function Rl (line 2) | function Rl(t,e,i){var r,n=Ea(e.we_1,i.we_1);if(n>0){var a=ma(e.we_1/i.w...
function Ml (line 2) | function Ml(t,e,i){var r=Ea(e.we_1,i.we_1);return r>0?Qn(t,ma(e.we_1/i.w...
function Al (line 2) | function Al(){return Sl(),P}
function Ll (line 2) | function Ll(){return Sl(),F}
function jl (line 2) | function jl(){return Sl(),q}
function Dl (line 2) | function Dl(){return Sl(),I}
function Ol (line 2) | function Ol(){return Sl(),H}
function Pl (line 2) | function Pl(){return Sl(),N}
function Fl (line 2) | function Fl(t,e,i,r,n){var a=i;r<4&&(a=ql(t.t3_1,e,a,r,fn(n,4))),n>4&&ql...
function ql (line 2) | function ql(t,e,i,r,n){var a=i,s=3-r|0,o=4-n|0;if(o<=s)do{var l=s;s=s+-1...
function Il (line 2) | function Il(t,e){return e===t?"(this Map)":Cn(e)}
function Hl (line 2) | function Hl(t,e){var i;t:{for(var r=t.z1().v();r.w();){var n=r.x();if(Aa...
function Nl (line 2) | function Nl(t){return t.length>0?ws(t):Bl()}
function Bl (line 2) | function Bl(){return Wl()}
function Vl (line 2) | function Vl(t){return t.l1()-1|0}
function Wl (line 2) | function Wl(){return U===E&&new zi,U}
function Ul (line 2) | function Ul(t,e){return ls(t,Ft)?t.l1():e}
function Gl (line 2) | function Gl(t,e){return ls(t,Ai)?Gl(t.sf(),e):new Li(t,e)}
function Jl (line 2) | function Jl(){var t=(J===E&&new ji,J);return ls(t,Vt)?t:Va()}
function Yl (line 2) | function Yl(t){return t.length>0?(e=t,Ql(i=Fe.cb(t.length),e),i):Jl();va...
function $l (line 2) | function $l(t,e){return function(t,e){if(ls(t,Ai))return t.rf(e);var i=t...
function Kl (line 2) | function Kl(t){if(ls(t,Ft)){var e;switch(t.l1()){case 0:e=Jl();break;cas...
function Xl (line 2) | function Xl(t,e){return function(t,e){for(var i=e.v();i.w();){var r=i.x(...
function Ql (line 2) | function Ql(t,e){for(var i=0,r=e.length;i<r;){var n=e[i];i=i+1|0;var a=n...
function Zl (line 2) | function Zl(t){var e=Fe.cb(t.length);return Ql(e,t),e}
function th (line 2) | function th(t,e){var i=Fe.db(t);return i.k3(e),i}
function eh (line 2) | function eh(t){if(t.t())throw Ye.g1("List is empty.");return t.z2(Vl(t))}
function ih (line 2) | function ih(t,e){if(ls(e,Ft))return t.q1(e);for(var i=!1,r=e.v();r.w();)...
function rh (line 2) | function rh(){return Y===E&&new Oi,Y}
function nh (line 2) | function nh(){return rh()}
function ah (line 2) | function ah(){return function(){if(Q)return T;Q=!0,X=new qi("COROUTINE_S...
function sh (line 2) | function sh(t,e,i){return oh(oh(t,i)-oh(e,i)|0,i)}
function oh (line 2) | function oh(t,e){var i=t%e|0;return i>=0?i:i+e|0}
function lh (line 2) | function lh(){return Z===E&&new Bi,Z}
function hh (line 2) | function hh(){return et===E&&new $i,et}
function uh (line 2) | function uh(t,e,i){null!=i?t.c1(i(e)):null==e||cs(e)?t.c1(e):e instanceo...
function ch (line 2) | function ch(t,e,i){if(t===e)return!0;if(!(i=i!==E&&i))return!1;var r=hl(...
function dh (line 2) | function dh(){return ph(),nt}
function fh (line 2) | function fh(){return ph(),at}
function ph (line 2) | function ph(){if(!st){st=!0;for(var t=0,e=new Int32Array(256);t<256;){va...
function mh (line 2) | function mh(t){return function(t,e){e=e===E?"":e;for(var i=function(t){r...
function gh (line 2) | function gh(t){var e;t:{var i=0,r=xa(t)-1|0;if(i<=r)do{var n=i;if(i=i+1|...
function bh (line 2) | function bh(t){return t}
function vh (line 2) | function vh(t){return function(t){dl(10);var e,i,r,n=t.length;if(0===n)r...
function _h (line 2) | function _h(t){throw ti.yc("Invalid number format: '"+t+"'")}
function wh (line 2) | function wh(t,e,i){return i=i!==E&&i,"string"==typeof e?Ch(t,e,E,i)>=0:k...
function yh (line 2) | function yh(t){return xa(t)-1|0}
function xh (line 2) | function xh(t){var e;t:{for(var i=0;i<xa(t);){var r=_a(t,i);if(i=i+1|0,!...
function Ch (line 2) | function Ch(t,e,i,r){return i=i===E?0:i,(r=r!==E&&r)||"string"!=typeof t...
function kh (line 2) | function kh(t,e,i,r,n,a){var s=(a=a!==E&&a)?un(fn(i,yh(t)),dn(r,0)):is(d...
function Eh (line 2) | function Eh(t,e,i,r,n,a){if(r<0||e<0||e>(xa(t)-n|0)||r>(xa(i)-n|0))retur...
function zh (line 2) | function zh(t){if(!(t>=0)){var e="Limit must be non-negative, but was "+...
function Th (line 2) | function Th(t,e,i,r){var n,a;if(i=i===E?0:i,(r=r!==E&&r)||"string"!=type...
function Sh (line 2) | function Sh(t,e,i,r){if(i=i!==E&&i,r=r===E?0:r,1===e.length){var n=e[0];...
function Rh (line 2) | function Rh(t,e,i,r){return i=i===E?yh(t):i,(r=r!==E&&r)||"string"!=type...
function Mh (line 2) | function Mh(t,e){return Ma(Ca(t,e.tg(),e.ug()+1|0))}
function Ah (line 2) | function Ah(t){if(t.eh_1<0)t.ch_1=0,t.fh_1=null;else{var e;if(t.hh_1.kh_...
function Lh (line 2) | function Lh(t){return sa(t,1)}
function jh (line 2) | function jh(t){return!(1&Wn(t))}
function Dh (line 2) | function Dh(t){return!(1&~Wn(t))}
function Oh (line 2) | function Oh(){return ot===E&&new rr,ot}
function Ph (line 2) | function Ph(t){return e=Zn(Lh(t)),i=1&Wn(t),r=Oh(),n=ea(oa(e,1),Yn(i)),r...
function Fh (line 2) | function Fh(t,e){var i,r,n;if((1&Wn(t))==(1&Wn(e))){var a;if(jh(t))n=ea(...
function qh (line 2) | function qh(t,e,i){var r,n=Qh(i),a=Xh(e,n);if(Nn(new Yt(1108857478,-1074...
function Ih (line 2) | function Ih(t){return Nn(t,new Yt(0,0))<0}
function Hh (line 2) | function Hh(t){return Jn(t,Oh().wh_1)||Jn(t,Oh().xh_1)}
function Nh (line 2) | function Nh(t){return Ih(t)?Ph(t):t}
function Bh (line 2) | function Bh(t,e){var i=fa(t,e);if(Nn(i,new Yt(0,0))<0||!(1&Wn(i)))return...
function Vh (line 2) | function Vh(t){var e;if(Hh(t))e=0;else{var i=function(t){return Gh(t,Dl(...
function Wh (line 2) | function Wh(t){var e;if(Hh(t))e=0;else{var i=function(t){return Gh(t,jl(...
function Uh (line 2) | function Uh(t){return Hh(t)?0:Dh(t)?Wn(Zh(ua(Lh(t),Yn(1e3)))):Wn(ua(Lh(t...
function Gh (line 2) | function Gh(t,e){var i=t;return Jn(i,Oh().wh_1)?new Yt(-1,2147483647):Jn...
function Jh (line 2) | function Jh(t){return Gh(t,Ol())}
function Yh (line 2) | function Yh(t,e,i,r,n,a,s){if(e.le(i),0!==r){e.u(46);var o,l=(f=r.toStri...
function $h (line 2) | function $h(t){var e=Oh(),i=ea(oa(t,1),Yn(1));return e.ai(i)}
function Kh (line 2) | function Kh(t,e){var i,r,n=Ml(new Yt(-387905,1073741823),Al(),e);if(Nn(Z...
function Xh (line 2) | function Xh(t,e){return Jn(t,new Yt(-1,1073741823))||Jn(t,new Yt(1,-1073...
function Qh (line 2) | function Qh(t){return aa(t,Yn(1e6))}
function Zh (line 2) | function Zh(t){return Qn(t,Yn(1e6))}
function tu (line 2) | function tu(t){return Oh().ai(oa(t,1))}
function eu (line 2) | function eu(){return lt===E&&new ar,lt}
function iu (line 2) | function iu(t){return t.gi_1}
function ru (line 2) | function ru(t){return t.hi_1}
function nu (line 2) | function nu(t){return t.ii_1}
function au (line 2) | function au(t){return t.ji_1}
function su (line 2) | function su(t,e){var i=function(t){var e;switch(t.m3_1){case 0:e=1e-15;b...
function ou (line 2) | function ou(t,e){var i=ya(t,e);return 68===i?Pl():72===i?Ol():77===i?Dl(...
function lu (line 2) | function lu(t,e){return function(t,e){var i;if(Jn(t,new Yt(0,0)))i=new Y...
function hu (line 2) | function hu(){return Cu(),ht}
function uu (line 2) | function uu(){return ft===E&&new lr,ft}
function cu (line 2) | function cu(t,e){return Cu(),xa(t)<=e?Ma(t):Ma(Ca(t,0,e))+"..."}
function du (line 2) | function du(t){return Cu(),!(3&t||!(t%100|0)&&t%400|0)}
function fu (line 2) | function fu(t,e,i){i<10&&t.u(48),e.le(i)}
function pu (line 2) | function pu(t,e){return new cr(e+' when parsing an Instant from "'+cu(t,...
function mu (line 2) | function mu(t,e,i,r){var n=_a(t,i);return r(new Pt(n))?null:pu(t,"Expect...
function gu (line 2) | function gu(t){return Cu(),Aa(t,new Pt(45))}
function bu (line 2) | function bu(t){return Cu(),Aa(t,new Pt(45))}
function vu (line 2) | function vu(t){return Cu(),Aa(t,new Pt(84))||Aa(t,new Pt(116))}
function _u (line 2) | function _u(t){return Cu(),Aa(t,new Pt(58))}
function wu (line 2) | function wu(t){return Cu(),Aa(t,new Pt(58))}
function yu (line 2) | function yu(t){Cu();var e=t.h2_1;return 48<=e&&e<=57}
function xu (line 2) | function xu(t,e){return zt(_n(_a(t,e),48),10)+_n(_a(t,e+1|0),48)|0}
function Cu (line 2) | function Cu(){mt||(mt=!0,ht=new Int32Array([1,10,100,1e3,1e4,1e5,1e6,1e7...
function ku (line 2) | function ku(){return Eu(),gt}
function Eu (line 2) | function Eu(){if(!bt){bt=!0;var t=ah();gt=t}}
function zu (line 2) | function zu(){return function(){if(_t)return T;_t=!0,new vr("SYNCHRONIZE...
function Tu (line 2) | function Tu(t){return t}
function Su (line 2) | function Su(t){return t}
function Ru (line 2) | function Ru(t){if(t instanceof xr)throw t.vj_1}
function Mu (line 2) | function Mu(t){return new xr(t)}
function Au (line 2) | function Au(t,e){return new Er(t,e)}
function Lu (line 2) | function Lu(){return yt===E&&new Tr,yt}
function ju (line 2) | function ju(t,e,i){throw Je.k1("Expected "+e+" at index "+i+", but was '...
function Du (line 2) | function Du(t){return t}
function Ou (line 2) | function Ou(){return xt===E&&new Rr,xt}
function Pu (line 2) | function Pu(t,e){return Ea(255&t,255&e)}
function Fu (line 2) | function Fu(t){return(255&t).toString()}
function qu (line 2) | function qu(t,e){return t[e]}
function Iu (line 2) | function Iu(t){return t.length}
function Hu (line 2) | function Hu(t){return t}
function Nu (line 2) | function Nu(t){return t}
function Bu (line 2) | function Bu(){return Ct===E&&new jr,Ct}
function Vu (line 2) | function Vu(t,e){return qs(t,e)}
function Wu (line 2) | function Wu(t){return ca(Yn(t),new Yt(-1,0)).toString()}
function Uu (line 2) | function Uu(t,e){return t[e]}
function Gu (line 2) | function Gu(t){return t.length}
function Ju (line 2) | function Ju(t){return t}
function Yu (line 2) | function Yu(t){return t}
function $u (line 2) | function $u(){return kt===E&&new Fr,kt}
function Ku (line 2) | function Ku(t,e){return Is(t,e)}
function Xu (line 2) | function Xu(t){return function(t,e){if(Nn(t,new Yt(0,0))>=0)return cl(t,...
function Qu (line 2) | function Qu(t,e){return t[e]}
function Zu (line 2) | function Zu(t){return t.length}
function tc (line 2) | function tc(t){return t}
function ec (line 2) | function ec(){return Et===E&&new Nr,Et}
function ic (line 2) | function ic(t,e){return Ea(65535&t,65535&e)}
function rc (line 2) | function rc(t){return(65535&t).toString()}
function nc (line 2) | function nc(t,e){return t[e]}
function ac (line 2) | function ac(t){return t.length}
function sc (line 2) | function sc(t){return function(t){dl(10);var e=t.length;if(0===e)return ...
function oc (line 2) | function oc(t,e){dl(e);var i=t.length;if(0===i)return null;var r,n=ya(t,...
class Td (line 2) | class Td{}
class Sd (line 2) | class Sd{}
class Rd (line 2) | class Rd{}
class Md (line 2) | class Md{jm(t,e){var i=cm(this,t,e),r=this.tl(),n=t.mp(r);n.br(this.tl()...
method jm (line 2) | jm(t,e){var i=cm(this,t,e),r=this.tl(),n=t.mp(r);n.br(this.tl(),0,i.tl...
method ul (line 2) | ul(t,e){return this.jm(t,null!=e?e:Va())}
method vl (line 2) | vl(t){var e,i=this.tl(),r=t.mp(i),n=null,a=null;if(r.cq())e=function(t...
method km (line 2) | km(t,e){return t.bq().kr(this.im(),e)}
method lm (line 2) | lm(t,e){return t.bq().lr(this.im(),e)}
class Ad (line 2) | class Ad extends Md{constructor(t){var e;super(),this.fm_1=t,this.gm_1=B...
method constructor (line 2) | constructor(t){var e;super(),this.fm_1=t,this.gm_1=Bl(),zu(),this.hm_1...
method im (line 2) | im(){return this.fm_1}
method tl (line 2) | tl(){var t=this.hm_1;return ns("descriptor",1,ui,t=>t.tl(),null),t.c3()}
method toString (line 2) | toString(){return"kotlinx.serialization.PolymorphicSerializer(baseClas...
class Ld (line 2) | class Ld extends Je{static qm(){var t=this.ac();return fm(t),t}static rm...
method qm (line 2) | static qm(){var t=this.ac();return fm(t),t}
method rm (line 2) | static rm(t){var e=this.k1(t);return fm(e),e}
method sm (line 2) | static sm(t,e){var i=this.bc(t,e);return fm(i),i}
class jd (line 2) | class jd extends Ld{static ym(t){var e=this.rm(t);return Oa(e,e.xm_1),e}...
method ym (line 2) | static ym(t){var e=this.rm(t);return Oa(e,e.xm_1),e}
method zm (line 2) | static zm(t){return this.ym("An unknown field for index "+t)}
class Dd (line 2) | class Dd extends Ld{static hn(t,e,i,r){var n=this.sm(t,e);return Oa(n,n....
method hn (line 2) | static hn(t,e,i,r){var n=this.sm(t,e);return Oa(n,n.gn_1),n.en_1=i,n.f...
method in (line 2) | static in(t,e){var i=1===t.l1()?"Field '"+t.t1(0)+"' is required for t...
method jn (line 2) | jn(t){return Dd.hn(t,this,this.en_1,this.fn_1)}
class Od (line 2) | class Od{}
function Pd (line 2) | function Pd(){return!1}
function Fd (line 2) | function Fd(){return!1}
function qd (line 2) | function qd(){return Bl()}
class Id (line 2) | class Id{constructor(t,e){this.qn_1=t,this.rn_1=e,this.sn_1=this.qn_1.tn...
method constructor (line 2) | constructor(t,e){this.qn_1=t,this.rn_1=e,this.sn_1=this.qn_1.tn()+"<"+...
method tn (line 2) | tn(){return this.sn_1}
method equals (line 2) | equals(t){var e=t instanceof Id?t:null;if(null==e)return!1;var i=e;ret...
method hashCode (line 2) | hashCode(){var t=this.rn_1.hashCode();return zd(31,t)+Da(this.sn_1)|0}
method toString (line 2) | toString(){return"ContextDescriptor(kClass: "+Ma(this.rn_1)+", origina...
method un (line 2) | un(){return this.qn_1.un()}
method pn (line 2) | pn(){return this.qn_1.pn()}
method vn (line 2) | vn(){return this.qn_1.vn()}
method wn (line 2) | wn(){return this.qn_1.wn()}
method xn (line 2) | xn(){return this.qn_1.xn()}
method yn (line 2) | yn(t){return this.qn_1.yn(t)}
method zn (line 2) | zn(t){return this.qn_1.zn(t)}
method ao (line 2) | ao(t){return this.qn_1.ao(t)}
method bo (line 2) | bo(t){return this.qn_1.bo(t)}
method co (line 2) | co(t){return this.qn_1.co(t)}
class Hd (line 2) | class Hd{constructor(t){this.ho_1=t,this.go_1=t.wn()}w(){return this.go_...
method constructor (line 2) | constructor(t){this.ho_1=t,this.go_1=t.wn()}
method w (line 2) | w(){return this.go_1>0}
method x (line 2) | x(){var t=this.ho_1.wn(),e=this.go_1;return this.go_1=e-1|0,this.ho_1....
class Nd (line 2) | class Nd{constructor(t){this.io_1=t}v(){return new Hd(this.io_1)}}
method constructor (line 2) | constructor(t){this.io_1=t}
method v (line 2) | v(){return new Hd(this.io_1)}
class Bd (line 2) | class Bd{constructor(t){this.wl_1=t,this.xl_1=!1,this.yl_1=Bl(),this.zl_...
method constructor (line 2) | constructor(t){this.wl_1=t,this.xl_1=!1,this.yl_1=Bl(),this.zl_1=ve.x1...
method jo (line 2) | jo(t,e,i,r){if(!this.am_1.b1(t)){var n="Element with name '"+t+"' is a...
method em (line 2) | em(t,e,i,r,n){var a;return i=i===E?Bl():i,r=r!==E&&r,n===E?(this.jo(t,...
class Vd (line 2) | class Vd{}
class Wd (line 2) | class Wd{constructor(t,e,i,r,n){var a;this.ko_1=t,this.lo_1=e,this.mo_1=...
method constructor (line 2) | constructor(t,e,i,r,n){var a;this.ko_1=t,this.lo_1=e,this.mo_1=i,this....
method tn (line 2) | tn(){return this.ko_1}
method un (line 2) | un(){return this.lo_1}
method wn (line 2) | wn(){return this.mo_1}
method xn (line 2) | xn(){return this.no_1}
method wo (line 2) | wo(){return this.oo_1}
method yn (line 2) | yn(t){return jg(this.po_1,t)}
method zn (line 2) | zn(t){var e=this.to_1.f3(t);return null==e?-3:e}
method ao (line 2) | ao(t){return jg(this.ro_1,t)}
method bo (line 2) | bo(t){return jg(this.qo_1,t)}
method co (line 2) | co(t){return Dg(this.so_1,t)}
method equals (line 2) | equals(t){var e;t:if(this!==t)if(t instanceof Wd)if(this.tn()===t.tn()...
method hashCode (line 2) | hashCode(){return Um(this)}
method toString (line 2) | toString(){return bg(this)}
class Ud (line 2) | class Ud{toString(){return Wa(ll(this).p())}hashCode(){return Da(this.to...
method toString (line 2) | toString(){return Wa(ll(this).p())}
method hashCode (line 2) | hashCode(){return Da(this.toString())}
class Gd (line 2) | class Gd extends Ud{constructor(){fc=null,super(),fc=this}}
method constructor (line 2) | constructor(){fc=null,super(),fc=this}
class Jd (line 2) | class Jd extends Ud{constructor(){pc=null,super(),pc=this}}
method constructor (line 2) | constructor(){pc=null,super(),pc=this}
class Yd (line 2) | class Yd extends Ud{}
class $d (line 2) | class $d extends Yd{constructor(){mc=null,super(),mc=this}}
method constructor (line 2) | constructor(){mc=null,super(),mc=this}
class Kd (line 2) | class Kd extends Yd{constructor(){gc=null,super(),gc=this}}
method constructor (line 2) | constructor(){gc=null,super(),gc=this}
class Xd (line 2) | class Xd extends Yd{constructor(){bc=null,super(),bc=this}}
method constructor (line 2) | constructor(){bc=null,super(),bc=this}
class Qd (line 2) | class Qd extends Yd{constructor(){vc=null,super(),vc=this}}
method constructor (line 2) | constructor(){vc=null,super(),vc=this}
class Zd (line 2) | class Zd extends Ud{}
class tf (line 2) | class tf extends Zd{constructor(){_c=null,super(),_c=this}}
method constructor (line 2) | constructor(){_c=null,super(),_c=this}
class ef (line 2) | class ef extends Zd{constructor(){wc=null,super(),wc=this}}
method constructor (line 2) | constructor(){wc=null,super(),wc=this}
class rf (line 2) | class rf extends Zd{constructor(){yc=null,super(),yc=this}}
method constructor (line 2) | constructor(){yc=null,super(),yc=this}
class nf (line 2) | class nf extends Zd{constructor(){xc=null,super(),xc=this}}
method constructor (line 2) | constructor(){xc=null,super(),xc=this}
class af (line 2) | class af extends Zd{constructor(){Cc=null,super(),Cc=this}}
method constructor (line 2) | constructor(){Cc=null,super(),Cc=this}
class sf (line 2) | class sf extends Zd{constructor(){kc=null,super(),kc=this}}
method constructor (line 2) | constructor(){kc=null,super(),kc=this}
class of (line 2) | class of extends Zd{constructor(){Ec=null,super(),Ec=this}}
method constructor (line 2) | constructor(){Ec=null,super(),Ec=this}
class lf (line 2) | class lf extends Zd{constructor(){zc=null,super(),zc=this}}
method constructor (line 2) | constructor(){zc=null,super(),zc=this}
class hf (line 2) | class hf extends Zd{constructor(){Tc=null,super(),Tc=this}}
method constructor (line 2) | constructor(){Tc=null,super(),Tc=this}
class uf (line 2) | class uf extends Ud{}
class cf (line 2) | class cf extends uf{constructor(){Sc=null,super(),Sc=this}}
method constructor (line 2) | constructor(){Sc=null,super(),Sc=this}
class df (line 2) | class df extends uf{constructor(){Rc=null,super(),Rc=this}}
method constructor (line 2) | constructor(){Rc=null,super(),Rc=this}
class ff (line 2) | class ff{}
function pf (line 2) | function pf(t){return t.vl(this)}
class mf (line 2) | class mf{}
function gf (line 2) | function gf(){return!1}
function bf (line 2) | function bf(t){return-1}
function vf (line 2) | function vf(t,e,i,r,n){return r=r===E?null:r,n===E?this.yp(t,e,i,r):n.yp...
class _f (line 2) | class _f{xo(){throw Ld.rm(Ma(ll(this))+" can't retrieve untyped values")...
method xo (line 2) | xo(){throw Ld.rm(Ma(ll(this))+" can't retrieve untyped values")}
method yo (line 2) | yo(){return!0}
method zo (line 2) | zo(){return null}
method ap (line 2) | ap(){var t=this.xo();return"boolean"==typeof t?t:Va()}
method bp (line 2) | bp(){var t=this.xo();return"number"==typeof t?t:Va()}
method cp (line 2) | cp(){var t=this.xo();return"number"==typeof t?t:Va()}
method dp (line 2) | dp(){var t=this.xo();return"number"==typeof t?t:Va()}
method ep (line 2) | ep(){var t=this.xo();return t instanceof Yt?t:Va()}
method fp (line 2) | fp(){var t=this.xo();return"number"==typeof t?t:Va()}
method gp (line 2) | gp(){var t=this.xo();return"number"==typeof t?t:Va()}
method hp (line 2) | hp(){var t=this.xo();return t instanceof Pt?t.h2_1:Va()}
method ip (line 2) | ip(){var t=this.xo();return"string"==typeof t?t:Va()}
method jp (line 2) | jp(t){return this}
method kp (line 2) | kp(t,e){return this.lp(t)}
method mp (line 2) | mp(t){return this}
method np (line 2) | np(t){}
method op (line 2) | op(t,e){return this.ap()}
method pp (line 2) | pp(t,e){return this.bp()}
method qp (line 2) | qp(t,e){return this.cp()}
method rp (line 2) | rp(t,e){return this.dp()}
method sp (line 2) | sp(t,e){return this.ep()}
method tp (line 2) | tp(t,e){return this.fp()}
method up (line 2) | up(t,e){return this.gp()}
method vp (line 2) | vp(t,e){return this.hp()}
method wp (line 2) | wp(t,e){return this.ip()}
method xp (line 2) | xp(t,e){return this.jp(t.bo(e))}
method yp (line 2) | yp(t,e,i,r){return this.kp(i,r)}
method aq (line 2) | aq(t,e,i,r){return i.tl().pn()||this.yo()?this.kp(i,r):this.zo()}
class wf (line 2) | class wf{}
class yf (line 2) | class yf{}
class xf (line 2) | class xf{static fq(){return Fa(this)}mp(t){return this}np(t){}gq(t,e){re...
method fq (line 2) | static fq(){return Fa(this)}
method mp (line 2) | mp(t){return this}
method np (line 2) | np(t){}
method gq (line 2) | gq(t,e){return!0}
method hq (line 2) | hq(t){throw Ld.rm("Non-serializable "+Ma(ll(t))+" is not supported by ...
method iq (line 2) | iq(){throw Ld.rm("'null' is not supported by default")}
method jq (line 2) | jq(t){return this.hq(t)}
method kq (line 2) | kq(t){return this.hq(t)}
method lq (line 2) | lq(t){return this.hq(t)}
method mq (line 2) | mq(t){return this.hq(t)}
method nq (line 2) | nq(t){return this.hq(t)}
method oq (line 2) | oq(t){return this.hq(t)}
method pq (line 2) | pq(t){return this.hq(t)}
method qq (line 2) | qq(t){return this.hq(new Pt(t))}
method rq (line 2) | rq(t){return this.hq(t)}
method sq (line 2) | sq(t){return this}
method tq (line 2) | tq(t,e,i){this.gq(t,e)&&this.jq(i)}
method uq (line 2) | uq(t,e,i){this.gq(t,e)&&this.kq(i)}
method vq (line 2) | vq(t,e,i){this.gq(t,e)&&this.lq(i)}
method wq (line 2) | wq(t,e,i){this.gq(t,e)&&this.mq(i)}
method xq (line 2) | xq(t,e,i){this.gq(t,e)&&this.nq(i)}
method yq (line 2) | yq(t,e,i){this.gq(t,e)&&this.oq(i)}
method zq (line 2) | zq(t,e,i){this.gq(t,e)&&this.pq(i)}
method ar (line 2) | ar(t,e,i){this.gq(t,e)&&this.qq(i)}
method br (line 2) | br(t,e,i){this.gq(t,e)&&this.rq(i)}
method cr (line 2) | cr(t,e){return this.gq(t,e)?this.sq(t.bo(e)):(Oc===E&&ep.bx(),Oc)}
method dr (line 2) | dr(t,e,i,r){this.gq(t,e)&&this.er(i,r)}
method fr (line 2) | fr(t,e,i,r){this.gq(t,e)&&this.gr(i,r)}
class Cf (line 2) | class Cf{constructor(){Mc=this,this.mr_1=(Pc===E&&new ip,Pc)}tl(){return...
method constructor (line 2) | constructor(){Mc=this,this.mr_1=(Pc===E&&new ip,Pc)}
method tl (line 2) | tl(){return this.mr_1}
method nr (line 2) | nr(t,e){throw Ld.rm("'kotlin.Nothing' cannot be serialized")}
method ul (line 2) | ul(t,e){var i;return i=Va(),this.nr(t,i)}
method vl (line 2) | vl(t){throw Ld.rm("'kotlin.Nothing' does not have instances")}
class kf (line 2) | class kf{constructor(){Ac=this,this.or_1=new Lp("kotlin.time.Duration",e...
method constructor (line 2) | constructor(){Ac=this,this.or_1=new Lp("kotlin.time.Duration",eg())}
method tl (line 2) | tl(){return this.or_1}
method pr (line 2) | pr(t,e){t.rq(function(t){var e=pi.r();Ih(t)&&e.u(45),e.s("PT");var i=N...
method ul (line 2) | ul(t,e){return this.pr(t,e instanceof nr?e.bi_1:Va())}
method qr (line 2) | qr(t){return Oh().ci(t.ip())}
method vl (line 2) | vl(t){return new nr(this.qr(t))}
class Ef (line 2) | class Ef{constructor(){Lc=this,this.rr_1=new Lp("kotlin.time.Instant",eg...
method constructor (line 2) | constructor(){Lc=this,this.rr_1=new Lp("kotlin.time.Instant",eg())}
method tl (line 2) | tl(){return this.rr_1}
method sr (line 2) | sr(t,e){t.rq(e.toString())}
method ul (line 2) | ul(t,e){return this.sr(t,e instanceof hr?e:Va())}
method vl (line 2) | vl(t){return uu().oi(t.ip())}
class zf (line 2) | class zf{constructor(){jc=this,this.tr_1=new Lp("kotlin.uuid.Uuid",eg())...
method constructor (line 2) | constructor(){jc=this,this.tr_1=new Lp("kotlin.uuid.Uuid",eg())}
method tl (line 2) | tl(){return this.tr_1}
method ur (line 2) | ur(t,e){t.rq(e.toString())}
method ul (line 2) | ul(t,e){return this.ur(t,e instanceof Sr?e:Va())}
method vl (line 2) | vl(t){return Lu().ak(t.ip())}
class Tf (line 2) | class Tf{constructor(t){this.xr_1=t,this.yr_1=1}un(){return Qm()}wn(){re...
method constructor (line 2) | constructor(t){this.xr_1=t,this.yr_1=1}
method un (line 2) | un(){return Qm()}
method wn (line 2) | wn(){return this.yr_1}
method yn (line 2) | yn(t){return t.toString()}
method zn (line 2) | zn(t){var e=vh(t);if(null==e)throw Je.k1(t+" is not a valid list index...
method co (line 2) | co(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method ao (line 2) | ao(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method bo (line 2) | bo(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method equals (line 2) | equals(t){return this===t||t instanceof Tf&&!(!Aa(this.xr_1,t.xr_1)||t...
method hashCode (line 2) | hashCode(){return zd(La(this.xr_1),31)+Da(this.tn())|0}
method toString (line 2) | toString(){return this.tn()+"("+Ma(this.xr_1)+")"}
class Sf (line 2) | class Sf extends Tf{tn(){return"kotlin.collections.ArrayList"}}
method tn (line 2) | tn(){return"kotlin.collections.ArrayList"}
class Rf (line 2) | class Rf extends Tf{tn(){return"kotlin.collections.HashSet"}}
method tn (line 2) | tn(){return"kotlin.collections.HashSet"}
class Mf (line 2) | class Mf extends Tf{tn(){return"kotlin.collections.LinkedHashSet"}}
method tn (line 2) | tn(){return"kotlin.collections.LinkedHashSet"}
class Af (line 2) | class Af{constructor(t,e,i){this.ds_1=t,this.es_1=e,this.fs_1=i,this.gs_...
method constructor (line 2) | constructor(t,e,i){this.ds_1=t,this.es_1=e,this.fs_1=i,this.gs_1=2}
method tn (line 2) | tn(){return this.ds_1}
method un (line 2) | un(){return Zm()}
method wn (line 2) | wn(){return this.gs_1}
method yn (line 2) | yn(t){return t.toString()}
method zn (line 2) | zn(t){var e=vh(t);if(null==e)throw Je.k1(t+" is not a valid map index"...
method co (line 2) | co(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method ao (line 2) | ao(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method bo (line 2) | bo(t){if(!(t>=0)){var e="Illegal index "+t+", "+this.tn()+" expects on...
method equals (line 2) | equals(t){return this===t||t instanceof Af&&this.tn()===t.tn()&&!!Aa(t...
method hashCode (line 2) | hashCode(){var t=Da(this.tn());return t=zd(31,t)+La(this.es_1)|0,zd(31...
method toString (line 2) | toString(){return this.tn()+"("+Ma(this.es_1)+", "+Ma(this.fs_1)+")"}
class Lf (line 2) | class Lf extends Af{constructor(t,e){super("kotlin.collections.HashMap",...
method constructor (line 2) | constructor(t,e){super("kotlin.collections.HashMap",t,e)}
class jf (line 2) | class jf extends Af{constructor(t,e){super("kotlin.collections.LinkedHas...
method constructor (line 2) | constructor(t,e){super("kotlin.collections.LinkedHashMap",t,e)}
class Df (line 2) | class Df extends Tf{tn(){return"kotlin.Array"}}
method tn (line 2) | tn(){return"kotlin.Array"}
class Of (line 2) | class Of extends Tf{constructor(t){super(t),this.ls_1=t.tn()+"Array"}tn(...
method constructor (line 2) | constructor(t){super(t),this.ls_1=t.tn()+"Array"}
method tn (line 2) | tn(){return this.ls_1}
class Pf (line 2) | class Pf{ht(t,e){var i=null==e?null:this.us(e),r=null==i?this.os():i,n=t...
method ht (line 2) | ht(t,e){var i=null==e?null:this.us(e),r=null==i?this.os():i,n=this.qs(...
method vl (line 2) | vl(t){return this.ht(t,null)}
method gt (line 2) | gt(t,e,i,r,n){var a;return r=r===E||r,n===E?(this.ft(t,e,i,r),a=T):a=n...
class Ff (line 2) | class Ff extends Pf{constructor(t){super(),this.ct_1=t}dt(t,e){var i=thi...
method constructor (line 2) | constructor(t){super(),this.ct_1=t}
method dt (line 2) | dt(t,e){var i=this.zt(e),r=this.tl(),n=t.ir(r,i),a=this.bu(e),s=0;if(s...
method ul (line 2) | ul(t,e){return this.dt(t,e)}
method et (line 2) | et(t,e,i,r){if(!(r>=0))throw Je.k1(Ma("Size must be known in advance w...
method ft (line 2) | ft(t,e,i,r){this.ys(i,e,t.zp(this.tl(),e,this.ct_1))}
class qf (line 2) | class qf extends Ff{at(t){return t.l1()}zt(t){return this.at(null!=t&&ls...
method at (line 2) | at(t){return t.l1()}
method zt (line 2) | zt(t){return this.at(null!=t&&ls(t,Ft)?t:Va())}
method bt (line 2) | bt(t){return t.v()}
method bu (line 2) | bu(t){return this.bt(null!=t&&ls(t,Ft)?t:Va())}
class If (line 2) | class If extends qf{constructor(t){super(t),this.ns_1=new Sf(t.tl())}tl(...
method constructor (line 2) | constructor(t){super(t),this.ns_1=new Sf(t.tl())}
method tl (line 2) | tl(){return this.ns_1}
method os (line 2) | os(){return ve.x1()}
method ps (line 2) | ps(t){return t.l1()}
method qs (line 2) | qs(t){return this.ps(t instanceof ve?t:Va())}
method rs (line 2) | rs(t){return t}
method ss (line 2) | ss(t){return this.rs(t instanceof ve?t:Va())}
method ts (line 2) | ts(t){var e=t instanceof ve?t:null;return null==e?ve.v1(t):e}
method us (line 2) | us(t){return this.ts(null!=t&&ls(t,qt)?t:Va())}
method vs (line 2) | vs(t,e){return t.w6(e)}
method ws (line 2) | ws(t,e){return this.vs(t instanceof ve?t:Va(),e)}
method xs (line 2) | xs(t,e,i){t.x5(e,i)}
method ys (line 2) | ys(t,e,i){return this.xs(t instanceof ve?t:Va(),e,i)}
class Hf (line 2) | class Hf extends qf{constructor(t){super(t),this.jt_1=new Rf(t.tl())}tl(...
method constructor (line 2) | constructor(t){super(t),this.jt_1=new Rf(t.tl())}
method tl (line 2) | tl(){return this.jt_1}
method os (line 2) | os(){return Se.e9()}
method kt (line 2) | kt(t){return t.l1()}
method qs (line 2) | qs(t){return this.kt(t instanceof Se?t:Va())}
method lt (line 2) | lt(t){return t}
method ss (line 2) | ss(t){return this.lt(t instanceof Se?t:Va())}
method mt (line 2) | mt(t){var e=t instanceof Se?t:null;return null==e?Se.f9(t):e}
method us (line 2) | us(t){return this.mt(null!=t&&ls(t,It)?t:Va())}
method nt (line 2) | nt(t,e){}
method ws (line 2) | ws(t,e){return this.nt(t instanceof Se?t:Va(),e)}
method ot (line 2) | ot(t,e,i){t.b1(i)}
method ys (line 2) | ys(t,e,i){return this.ot(t instanceof Se?t:Va(),e,i)}
class Nf (line 2) | class Nf extends qf{constructor(t){super(t),this.qt_1=new Mf(t.tl())}tl(...
method constructor (line 2) | constructor(t){super(t),this.qt_1=new Mf(t.tl())}
method tl (line 2) | tl(){return this.qt_1}
method os (line 2) | os(){return qe.u1()}
method rt (line 2) | rt(t){return t.l1()}
method qs (line 2) | qs(t){return this.rt(t instanceof qe?t:Va())}
method st (line 2) | st(t){return t}
method ss (line 2) | ss(t){return this.st(t instanceof qe?t:Va())}
method mt (line 2) | mt(t){var e=t instanceof qe?t:null;return null==e?qe.w1(t):e}
method us (line 2) | us(t){return this.mt(null!=t&&ls(t,It)?t:Va())}
method tt (line 2) | tt(t,e){}
method ws (line 2) | ws(t,e){return this.tt(t instanceof qe?t:Va(),e)}
method ut (line 2) | ut(t,e,i){t.b1(i)}
method ys (line 2) | ys(t,e,i){return this.ut(t instanceof qe?t:Va(),e,i)}
class Bf (line 2) | class Bf extends Pf{constructor(t,e){super(),this.gu_1=t,this.hu_1=e}iu(...
method constructor (line 2) | constructor(t,e){super(),this.gu_1=t,this.hu_1=e}
method iu (line 2) | iu(t,e,i,r){if(!(r>=0))throw Je.k1(Ma("Size must be known in advance w...
method et (line 2) | et(t,e,i,r){return this.iu(t,null!=e&&ls(e,Wt)?e:Va(),i,r)}
method ju (line 2) | ju(t,e,i,r){var n,a=t.zp(this.tl(),e,this.gu_1);if(r){var s=t.dq(this....
method ft (line 2) | ft(t,e,i,r){return this.ju(t,e,null!=i&&ls(i,Wt)?i:Va(),r)}
method dt (line 2) | dt(t,e){for(var i=this.zt(e),r=this.tl(),n=t.ir(r,i),a=0,s=this.bu(e);...
method ul (line 2) | ul(t,e){return this.dt(t,e)}
class Vf (line 2) | class Vf extends Bf{constructor(t,e){super(t,e),this.xt_1=new Lf(t.tl(),...
method constructor (line 2) | constructor(t,e){super(t,e),this.xt_1=new Lf(t.tl(),e.tl())}
method tl (line 2) | tl(){return this.xt_1}
method yt (line 2) | yt(t){return t.l1()}
method zt (line 2) | zt(t){return this.yt(null!=t&&ls(t,Vt)?t:Va())}
method au (line 2) | au(t){return t.z1().v()}
method bu (line 2) | bu(t){return this.au(null!=t&&ls(t,Vt)?t:Va())}
method os (line 2) | os(){return _e.j7()}
method cu (line 2) | cu(t){return zd(t.l1(),2)}
method qs (line 2) | qs(t){return this.cu(t instanceof _e?t:Va())}
method du (line 2) | du(t){return t}
method ss (line 2) | ss(t){return this.du(t instanceof _e?t:Va())}
method eu (line 2) | eu(t){var e=t instanceof _e?t:null;return null==e?_e.y7(t):e}
method us (line 2) | us(t){return this.eu(null!=t&&ls(t,Vt)?t:Va())}
method fu (line 2) | fu(t,e){}
method ws (line 2) | ws(t,e){return this.fu(t instanceof _e?t:Va(),e)}
class Wf (line 2) | class Wf extends Bf{constructor(t,e){super(t,e),this.mu_1=new jf(t.tl(),...
method constructor (line 2) | constructor(t,e){super(t,e),this.mu_1=new jf(t.tl(),e.tl())}
method tl (line 2) | tl(){return this.mu_1}
method yt (line 2) | yt(t){return t.l1()}
method zt (line 2) | zt(t){return this.yt(null!=t&&ls(t,Vt)?t:Va())}
method au (line 2) | au(t){return t.z1().v()}
method bu (line 2) | bu(t){return this.au(null!=t&&ls(t,Vt)?t:Va())}
method os (line 2) | os(){return Fe.bb()}
method nu (line 2) | nu(t){return zd(t.l1(),2)}
method qs (line 2) | qs(t){return this.nu(t instanceof Fe?t:Va())}
method ou (line 2) | ou(t){return t}
method ss (line 2) | ss(t){return this.ou(t instanceof Fe?t:Va())}
method eu (line 2) | eu(t){var e=t instanceof Fe?t:null;return null==e?Fe.db(t):e}
method us (line 2) | us(t){return this.eu(null!=t&&ls(t,Vt)?t:Va())}
method pu (line 2) | pu(t,e){}
method ws (line 2) | ws(t,e){return this.pu(t instanceof Fe?t:Va(),e)}
class Uf (line 2) | class Uf extends Ff{constructor(t,e){super(e),this.ru_1=t,this.su_1=new ...
method constructor (line 2) | constructor(t,e){super(e),this.ru_1=t,this.su_1=new Df(e.tl())}
method tl (line 2) | tl(){return this.su_1}
method tu (line 2) | tu(t){return t.length}
method zt (line 2) | zt(t){return this.tu(null!=t&&hs(t)?t:Va())}
method uu (line 2) | uu(t){return En(t)}
method bu (line 2) | bu(t){return this.uu(null!=t&&hs(t)?t:Va())}
method os (line 2) | os(){return ve.x1()}
method vu (line 2) | vu(t){return t.l1()}
method qs (line 2) | qs(t){return this.vu(t instanceof ve?t:Va())}
method wu (line 2) | wu(t){return function(t){return Ws(t)}(t,this.ru_1)}
method ss (line 2) | ss(t){return this.wu(t instanceof ve?t:Va())}
method xu (line 2) | xu(t){return ve.v1(ws(t))}
method us (line 2) | us(t){return this.xu(null!=t&&hs(t)?t:Va())}
method yu (line 2) | yu(t,e){return t.w6(e)}
method ws (line 2) | ws(t,e){return this.yu(t instanceof ve?t:Va(),e)}
method zu (line 2) | zu(t,e,i){t.x5(e,i)}
method ys (line 2) | ys(t,e,i){return this.zu(t instanceof ve?t:Va(),e,i)}
class Gf (line 2) | class Gf extends Ff{constructor(t){super(t),this.bv_1=new Of(t.tl())}tl(...
method constructor (line 2) | constructor(t){super(t),this.bv_1=new Of(t.tl())}
method tl (line 2) | tl(){return this.bv_1}
method cv (line 2) | cv(t){return t.dv()}
method qs (line 2) | qs(t){return this.cv(t instanceof Jf?t:Va())}
method ev (line 2) | ev(t){return t.fv()}
method ss (line 2) | ss(t){return this.ev(t instanceof Jf?t:Va())}
method gv (line 2) | gv(t,e){return t.hv(e)}
method ws (line 2) | ws(t,e){return this.gv(t instanceof Jf?t:Va(),e)}
method iv (line 2) | iv(t){throw Ge.d4(Ma("This method lead to boxing and must not be used,...
method bu (line 2) | bu(t){return this.iv(t)}
method jv (line 2) | jv(t,e,i){throw Ge.d4(Ma("This method lead to boxing and must not be u...
method ys (line 2) | ys(t,e,i){return this.jv(t instanceof Jf?t:Va(),e,i)}
method os (line 2) | os(){return this.us(this.kv())}
method nv (line 2) | nv(t,e){var i=this.zt(e),r=this.bv_1,n=t.ir(r,i);this.mv(n,e,i),n.np(r)}
method ul (line 2) | ul(t,e){return this.nv(t,e)}
method dt (line 2) | dt(t,e){return this.nv(t,e)}
method vl (line 2) | vl(t){return this.ht(t,null)}
class Jf (line 2) | class Jf{ov(t,e){var i;return t=t===E?this.dv()+1|0:t,e===E?(this.hv(t),...
method ov (line 2) | ov(t,e){var i;return t=t===E?this.dv()+1|0:t,e===E?(this.hv(t),i=T):i=...
class Yf (line 2) | class Yf{constructor(){Dc=this,this.pv_1=Rn(0)}}
method constructor (line 2) | constructor(){Dc=this,this.pv_1=Rn(0)}
class $f (line 2) | class $f{constructor(t,e){ng(),this.qv_1=t,this.rv_1=e;var i,r=this.qv_1...
method constructor (line 2) | constructor(t,e){ng(),this.qv_1=t,this.rv_1=e;var i,r=this.qv_1.wn();r...
method uv (line 2) | uv(t){t<64?this.sv_1=da(this.sv_1,oa(new Yt(1,0),t)):function(t,e){var...
method vv (line 2) | vv(){for(var t=this.qv_1.wn();!Jn(this.sv_1,new Yt(-1,-1));){var e=Ps(...
class Kf (line 2) | class Kf{constructor(t,e,i){e=e===E?null:e,this.jw_1=t,this.kw_1=e,this....
method constructor (line 2) | constructor(t,e,i){e=e===E?null:e,this.jw_1=t,this.kw_1=e,this.lw_1=i,...
method tn (line 2) | tn(){return this.jw_1}
method wn (line 2) | wn(){return this.lw_1}
method un (line 2) | un(){return Xm()}
method xn (line 2) | xn(){var t=this.pw_1;return null==t?Bl():t}
method wo (line 2) | wo(){return this.rw_1.g3()}
method vw (line 2) | vw(){var t=this.tw_1;return ns("typeParameterDescriptors",1,ui,t=>t.vw...
method ww (line 2) | ww(t,e){this.mw_1=this.mw_1+1|0,this.nw_1[this.mw_1]=t,this.qw_1[this....
method bo (line 2) | bo(t){return jg(pg(this),t).tl()}
method co (line 2) | co(t){return Dg(this.qw_1,t)}
method ao (line 2) | ao(t){var e=jg(this.ow_1,t);return null==e?Bl():e}
method yn (line 2) | yn(t){return jg(this.nw_1,t)}
method zn (line 2) | zn(t){var e=this.rw_1.f3(t);return null==e?-3:e}
method equals (line 2) | equals(t){var e;t:if(this!==t)if(t instanceof Kf)if(this.tn()===t.tn()...
method hashCode (line 2) | hashCode(){return mg(this)}
method toString (line 2) | toString(){return bg(this)}
class Xf (line 2) | class Xf extends Kf{constructor(t,e){super(t,e,1),this.iw_1=!0}vn(){retu...
method constructor (line 2) | constructor(t,e){super(t,e,1),this.iw_1=!0}
method vn (line 2) | vn(){return this.iw_1}
method hashCode (line 2) | hashCode(){return zd(super.hashCode(),31)}
method equals (line 2) | equals(t){var e;t:if(this!==t)if(t instanceof Xf)if(this.tn()===t.tn()...
class Qf (line 2) | class Qf{}
function Zf (line 2) | function Zf(){return vg()}
class tp (line 2) | class tp{constructor(t){this.xw_1=t}yw(){return[this.xw_1]}tl(){throw Ge...
method constructor (line 2) | constructor(t){this.xw_1=t}
method yw (line 2) | yw(){return[this.xw_1]}
method tl (line 2) | tl(){throw Ge.d4(Ma("unsupported"))}
method ul (line 2) | ul(t,e){throw Ge.d4(Ma("unsupported"))}
method vl (line 2) | vl(t){throw Ge.d4(Ma("unsupported"))}
class ep (line 2) | class ep extends xf{static bx(){Oc=null;var t=this.fq();return Oc=t,t.ax...
method bx (line 2) | static bx(){Oc=null;var t=this.fq();return Oc=t,t.ax_1=Rg(),t}
method bq (line 2) | bq(){return this.ax_1}
method hq (line 2) | hq(t){return T}
method iq (line 2) | iq(){return T}
method jq (line 2) | jq(t){return T}
method kq (line 2) | kq(t){return T}
method lq (line 2) | lq(t){return T}
method mq (line 2) | mq(t){return T}
method nq (line 2) | nq(t){return T}
method oq (line 2) | oq(t){return T}
method pq (line 2) | pq(t){return T}
method qq (line 2) | qq(t){return T}
method rq (line 2) | rq(t){return T}
class ip (line 2) | class ip{constructor(){Pc=this,this.cx_1=tg(),this.dx_1="kotlin.Nothing"...
method constructor (line 2) | constructor(){Pc=this,this.cx_1=tg(),this.dx_1="kotlin.Nothing"}
method un (line 2) | un(){return this.cx_1}
method tn (line 2) | tn(){return this.dx_1}
method wn (line 2) | wn(){return 0}
method yn (line 2) | yn(t){og()}
method zn (line 2) | zn(t){og()}
method co (line 2) | co(t){og()}
method bo (line 2) | bo(t){og()}
method ao (line 2) | ao(t){og()}
method toString (line 2) | toString(){return"NothingSerialDescriptor"}
method equals (line 2) | equals(t){return this===t}
method hashCode (line 2) | hashCode(){return Da(this.dx_1)+zd(31,this.cx_1.hashCode())|0}
class rp (line 2) | class rp{constructor(t){this.ex_1=t,this.fx_1=new np(this.ex_1.tl())}tl(...
method constructor (line 2) | constructor(t){this.ex_1=t,this.fx_1=new np(this.ex_1.tl())}
method tl (line 2) | tl(){return this.fx_1}
method gx (line 2) | gx(t,e){null!=e?(t.hr(),t.er(this.ex_1,e)):t.iq()}
method ul (line 2) | ul(t,e){return this.gx(t,e)}
method vl (line 2) | vl(t){return t.yo()?t.lp(this.ex_1):t.zo()}
method equals (line 2) | equals(t){return this===t||!(null==t||!ll(this).equals(ll(t)))&&(t ins...
method hashCode (line 2) | hashCode(){return La(this.ex_1)}
class np (line 2) | class np{constructor(t){this.do_1=t,this.eo_1=this.do_1.tn()+"?",this.fo...
method constructor (line 2) | constructor(t){this.do_1=t,this.eo_1=this.do_1.tn()+"?",this.fo_1=lg(t...
method tn (line 2) | tn(){return this.eo_1}
method wo (line 2) | wo(){return this.fo_1}
method pn (line 2) | pn(){return!0}
method equals (line 2) | equals(t){return this===t||t instanceof np&&!!Aa(this.do_1,t.do_1)}
method toString (line 2) | toString(){return Ma(this.do_1)+"?"}
method hashCode (line 2) | hashCode(){return zd(La(this.do_1),31)}
method un (line 2) | un(){return this.do_1.un()}
method vn (line 2) | vn(){return this.do_1.vn()}
method wn (line 2) | wn(){return this.do_1.wn()}
method xn (line 2) | xn(){return this.do_1.xn()}
method yn (line 2) | yn(t){return this.do_1.yn(t)}
method zn (line 2) | zn(t){return this.do_1.zn(t)}
method ao (line 2) | ao(t){return this.do_1.ao(t)}
method bo (line 2) | bo(t){return this.do_1.bo(t)}
method co (line 2) | co(t){return this.do_1.co(t)}
class ap (line 2) | class ap{constructor(t,e){var i,r;this.hx_1=e,this.ix_1=Bl(),zu(),this.j...
method constructor (line 2) | constructor(t,e){var i,r;this.hx_1=e,this.ix_1=Bl(),zu(),this.jx_1=Lo(...
method tl (line 2) | tl(){var t=this.jx_1;return ns("descriptor",1,ui,t=>t.tl(),null),t.c3()}
method jm (line 2) | jm(t,e){t.mp(this.tl()).np(this.tl())}
method ul (line 2) | ul(t,e){return this.jm(t,null!=e?e:Va())}
method vl (line 2) | vl(t){var e=this.tl(),i=t.mp(e);if(i.cq());else{var r=i.dq(this.tl());...
class sp (line 2) | class sp{}
class op (line 2) | class op extends Gf{constructor(){Nc=null,super(Pm(xn())),Nc=this}nx(t){...
method constructor (line 2) | constructor(){Nc=null,super(Pm(xn())),Nc=this}
method nx (line 2) | nx(t){return t.length}
method zt (line 2) | zt(t){return this.nx(null!=t&&ms(t)?t:Va())}
method ox (line 2) | ox(t){return new _p(t)}
method us (line 2) | us(t){return this.ox(null!=t&&ms(t)?t:Va())}
method kv (line 2) | kv(){return Sn(0)}
method px (line 2) | px(t,e,i,r){i.sx(t.vp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.px(t,e,i instanceof _p?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.px(t,e,i instanceof _p?i:Va(),r)}
method tx (line 2) | tx(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.ar(this.bv_1,n,e[n])}whi...
method mv (line 2) | mv(t,e,i){return this.tx(t,null!=e&&ms(e)?e:Va(),i)}
class lp (line 2) | class lp extends Gf{constructor(){Bc=null,super(Fm()),Bc=this}wx(t){retu...
method constructor (line 2) | constructor(){Bc=null,super(Fm()),Bc=this}
method wx (line 2) | wx(t){return t.length}
method zt (line 2) | zt(t){return this.wx(null!=t&&vs(t)?t:Va())}
method xx (line 2) | xx(t){return new wp(t)}
method us (line 2) | us(t){return this.xx(null!=t&&vs(t)?t:Va())}
method kv (line 2) | kv(){return new Float64Array(0)}
method yx (line 2) | yx(t,e,i,r){i.by(t.up(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.yx(t,e,i instanceof wp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.yx(t,e,i instanceof wp?i:Va(),r)}
method cy (line 2) | cy(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.zq(this.bv_1,n,e[n])}whi...
method mv (line 2) | mv(t,e,i){return this.cy(t,null!=e&&vs(e)?e:Va(),i)}
class hp (line 2) | class hp extends Gf{constructor(){Vc=null,super(qm()),Vc=this}fy(t){retu...
method constructor (line 2) | constructor(){Vc=null,super(qm()),Vc=this}
method fy (line 2) | fy(t){return t.length}
method zt (line 2) | zt(t){return this.fy(null!=t&&bs(t)?t:Va())}
method gy (line 2) | gy(t){return new yp(t)}
method us (line 2) | us(t){return this.gy(null!=t&&bs(t)?t:Va())}
method kv (line 2) | kv(){return new Float32Array(0)}
method hy (line 2) | hy(t,e,i,r){i.ky(t.tp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.hy(t,e,i instanceof yp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.hy(t,e,i instanceof yp?i:Va(),r)}
method ly (line 2) | ly(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.yq(this.bv_1,n,e[n])}whi...
method mv (line 2) | mv(t,e,i){return this.ly(t,null!=e&&bs(e)?e:Va(),i)}
class up (line 2) | class up extends Gf{constructor(){Wc=null,super(jm(kn())),Wc=this}oy(t){...
method constructor (line 2) | constructor(){Wc=null,super(jm(kn())),Wc=this}
method oy (line 2) | oy(t){return t.length}
method zt (line 2) | zt(t){return this.oy(null!=t&&ga(t)?t:Va())}
method py (line 2) | py(t){return new xp(t)}
method us (line 2) | us(t){return this.py(null!=t&&ga(t)?t:Va())}
method kv (line 2) | kv(){return Rn(0)}
method qy (line 2) | qy(t,e,i,r){i.ty(t.sp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.qy(t,e,i instanceof xp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.qy(t,e,i instanceof xp?i:Va(),r)}
method uy (line 2) | uy(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.xq(this.bv_1,n,e[n])}whi...
method mv (line 2) | mv(t,e,i){return this.uy(t,null!=e&&ga(e)?e:Va(),i)}
class cp (line 2) | class cp extends Gf{constructor(){Uc=null,super(Sm($u())),Uc=this}xy(t){...
method constructor (line 2) | constructor(){Uc=null,super(Sm($u())),Uc=this}
method xy (line 2) | xy(t){return Zu(t)}
method zt (line 2) | zt(t){return this.xy(t instanceof Hr?t.il_1:Va())}
method yy (line 2) | yy(t){return new Cp(t)}
method us (line 2) | us(t){return this.yy(t instanceof Hr?t.il_1:Va())}
method zy (line 2) | zy(){return Rn(0)}
method kv (line 2) | kv(){return new Hr(this.zy())}
method az (line 2) | az(t,e,i,r){var n=t.xp(this.bv_1,e).ep();i.dz(n)}
method ft (line 2) | ft(t,e,i,r){return this.az(t,e,i instanceof Cp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.az(t,e,i instanceof Cp?i:Va(),r)}
method ez (line 2) | ez(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0;var a=t.cr(this.bv_1,n),s=...
method mv (line 2) | mv(t,e,i){return this.ez(t,e instanceof Hr?e.il_1:Va(),i)}
class dp (line 2) | class dp extends Gf{constructor(){Gc=null,super(Lm()),Gc=this}hz(t){retu...
method constructor (line 2) | constructor(){Gc=null,super(Lm()),Gc=this}
method hz (line 2) | hz(t){return t.length}
method zt (line 2) | zt(t){return this.hz(null!=t&&gs(t)?t:Va())}
method iz (line 2) | iz(t){return new kp(t)}
method us (line 2) | us(t){return this.iz(null!=t&&gs(t)?t:Va())}
method kv (line 2) | kv(){return new Int32Array(0)}
method jz (line 2) | jz(t,e,i,r){i.mz(t.rp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.jz(t,e,i instanceof kp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.jz(t,e,i instanceof kp?i:Va(),r)}
method nz (line 2) | nz(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.wq(this.bv_1,n,e[n])}whi...
method mv (line 2) | mv(t,e,i){return this.nz(t,null!=e&&gs(e)?e:Va(),i)}
class fp (line 2) | class fp extends Gf{constructor(){Jc=null,super(Tm(Bu())),Jc=this}qz(t){...
method constructor (line 2) | constructor(){Jc=null,super(Tm(Bu())),Jc=this}
method qz (line 2) | qz(t){return Gu(t)}
method zt (line 2) | zt(t){return this.qz(t instanceof Pr?t.yk_1:Va())}
method rz (line 2) | rz(t){return new Ep(t)}
method us (line 2) | us(t){return this.rz(t instanceof Pr?t.yk_1:Va())}
method sz (line 2) | sz(){return new Int32Array(0)}
method kv (line 2) | kv(){return new Pr(this.sz())}
method tz (line 2) | tz(t,e,i,r){var n=t.xp(this.bv_1,e).dp();i.wz(n)}
method ft (line 2) | ft(t,e,i,r){return this.tz(t,e,i instanceof Ep?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.tz(t,e,i instanceof Ep?i:Va(),r)}
method xz (line 2) | xz(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0;var a=t.cr(this.bv_1,n),s=...
method mv (line 2) | mv(t,e,i){return this.xz(t,e instanceof Pr?e.yk_1:Va(),i)}
class pp (line 2) | class pp extends Gf{constructor(){Yc=null,super(Om()),Yc=this}a10(t){ret...
method constructor (line 2) | constructor(){Yc=null,super(Om()),Yc=this}
method a10 (line 2) | a10(t){return t.length}
method zt (line 2) | zt(t){return this.a10(null!=t&&ps(t)?t:Va())}
method b10 (line 2) | b10(t){return new zp(t)}
method us (line 2) | us(t){return this.b10(null!=t&&ps(t)?t:Va())}
method kv (line 2) | kv(){return new Int16Array(0)}
method c10 (line 2) | c10(t,e,i,r){i.f10(t.qp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.c10(t,e,i instanceof zp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.c10(t,e,i instanceof zp?i:Va(),r)}
method g10 (line 2) | g10(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.vq(this.bv_1,n,e[n])}wh...
method mv (line 2) | mv(t,e,i){return this.g10(t,null!=e&&ps(e)?e:Va(),i)}
class mp (line 2) | class mp extends Gf{constructor(){$c=null,super(Mm(ec())),$c=this}j10(t)...
method constructor (line 2) | constructor(){$c=null,super(Mm(ec())),$c=this}
method j10 (line 2) | j10(t){return ac(t)}
method zt (line 2) | zt(t){return this.j10(t instanceof Wr?t.sl_1:Va())}
method k10 (line 2) | k10(t){return new Tp(t)}
method us (line 2) | us(t){return this.k10(t instanceof Wr?t.sl_1:Va())}
method l10 (line 2) | l10(){return new Int16Array(0)}
method kv (line 2) | kv(){return new Wr(this.l10())}
method m10 (line 2) | m10(t,e,i,r){var n=t.xp(this.bv_1,e).cp();i.p10(n)}
method ft (line 2) | ft(t,e,i,r){return this.m10(t,e,i instanceof Tp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.m10(t,e,i instanceof Tp?i:Va(),r)}
method q10 (line 2) | q10(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0;var a=t.cr(this.bv_1,n),s...
method mv (line 2) | mv(t,e,i){return this.q10(t,e instanceof Wr?e.sl_1:Va(),i)}
class gp (line 2) | class gp extends Gf{constructor(){Kc=null,super(Dm()),Kc=this}t10(t){ret...
method constructor (line 2) | constructor(){Kc=null,super(Dm()),Kc=this}
method t10 (line 2) | t10(t){return t.length}
method zt (line 2) | zt(t){return this.t10(null!=t&&fs(t)?t:Va())}
method u10 (line 2) | u10(t){return new Sp(t)}
method us (line 2) | us(t){return this.u10(null!=t&&fs(t)?t:Va())}
method kv (line 2) | kv(){return new Int8Array(0)}
method v10 (line 2) | v10(t,e,i,r){i.y10(t.pp(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.v10(t,e,i instanceof Sp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.v10(t,e,i instanceof Sp?i:Va(),r)}
method z10 (line 2) | z10(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.uq(this.bv_1,n,e[n])}wh...
method mv (line 2) | mv(t,e,i){return this.z10(t,null!=e&&fs(e)?e:Va(),i)}
class bp (line 2) | class bp extends Gf{constructor(){Xc=null,super(Rm(Ou())),Xc=this}c11(t)...
method constructor (line 2) | constructor(){Xc=null,super(Rm(Ou())),Xc=this}
method c11 (line 2) | c11(t){return Iu(t)}
method zt (line 2) | zt(t){return this.c11(t instanceof Lr?t.ok_1:Va())}
method d11 (line 2) | d11(t){return new Rp(t)}
method us (line 2) | us(t){return this.d11(t instanceof Lr?t.ok_1:Va())}
method e11 (line 2) | e11(){return new Int8Array(0)}
method kv (line 2) | kv(){return new Lr(this.e11())}
method f11 (line 2) | f11(t,e,i,r){var n=t.xp(this.bv_1,e).bp();i.i11(n)}
method ft (line 2) | ft(t,e,i,r){return this.f11(t,e,i instanceof Rp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.f11(t,e,i instanceof Rp?i:Va(),r)}
method j11 (line 2) | j11(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0;var a=t.cr(this.bv_1,n),s...
method mv (line 2) | mv(t,e,i){return this.j11(t,e instanceof Lr?e.ok_1:Va(),i)}
class vp (line 2) | class vp extends Gf{constructor(){Qc=null,super(Im()),Qc=this}m11(t){ret...
method constructor (line 2) | constructor(){Qc=null,super(Im()),Qc=this}
method m11 (line 2) | m11(t){return t.length}
method zt (line 2) | zt(t){return this.m11(null!=t&&ds(t)?t:Va())}
method n11 (line 2) | n11(t){return new Mp(t)}
method us (line 2) | us(t){return this.n11(null!=t&&ds(t)?t:Va())}
method kv (line 2) | kv(){return zn(0)}
method o11 (line 2) | o11(t,e,i,r){i.r11(t.op(this.bv_1,e))}
method ft (line 2) | ft(t,e,i,r){return this.o11(t,e,i instanceof Mp?i:Va(),r)}
method lv (line 2) | lv(t,e,i,r){return this.o11(t,e,i instanceof Mp?i:Va(),r)}
method s11 (line 2) | s11(t,e,i){var r=0;if(r<i)do{var n=r;r=r+1|0,t.tq(this.bv_1,n,e[n])}wh...
method mv (line 2) | mv(t,e,i){return this.s11(t,null!=e&&ds(e)?e:Va(),i)}
class _p (line 2) | class _p extends Jf{constructor(t){super(),this.qx_1=t,this.rx_1=t.lengt...
method constructor (line 2) | constructor(t){super(),this.qx_1=t,this.rx_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.rx_1}
method hv (line 2) | hv(t){this.qx_1.length<t&&(this.qx_1=ys(this.qx_1,dn(t,zd(this.qx_1.le...
method sx (line 2) | sx(t){this.ov();var e=this.qx_1,i=this.rx_1;this.rx_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return ys(this.qx_1,this.rx_1)}
class wp (line 2) | class wp extends Jf{constructor(t){super(),this.zx_1=t,this.ay_1=t.lengt...
method constructor (line 2) | constructor(t){super(),this.zx_1=t,this.ay_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.ay_1}
method hv (line 2) | hv(t){this.zx_1.length<t&&(this.zx_1=xs(this.zx_1,dn(t,zd(this.zx_1.le...
method by (line 2) | by(t){this.ov();var e=this.zx_1,i=this.ay_1;this.ay_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return xs(this.zx_1,this.ay_1)}
class yp (line 2) | class yp extends Jf{constructor(t){super(),this.iy_1=t,this.jy_1=t.lengt...
method constructor (line 2) | constructor(t){super(),this.iy_1=t,this.jy_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.jy_1}
method hv (line 2) | hv(t){this.iy_1.length<t&&(this.iy_1=Cs(this.iy_1,dn(t,zd(this.iy_1.le...
method ky (line 2) | ky(t){this.ov();var e=this.iy_1,i=this.jy_1;this.jy_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return Cs(this.iy_1,this.jy_1)}
class xp (line 2) | class xp extends Jf{constructor(t){super(),this.ry_1=t,this.sy_1=t.lengt...
method constructor (line 2) | constructor(t){super(),this.ry_1=t,this.sy_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.sy_1}
method hv (line 2) | hv(t){this.ry_1.length<t&&(this.ry_1=ks(this.ry_1,dn(t,zd(this.ry_1.le...
method ty (line 2) | ty(t){this.ov();var e=this.ry_1,i=this.sy_1;this.sy_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return ks(this.ry_1,this.sy_1)}
class Cp (line 2) | class Cp extends Jf{constructor(t){super(),this.bz_1=t,this.cz_1=Zu(t),t...
method constructor (line 2) | constructor(t){super(),this.bz_1=t,this.cz_1=Zu(t),this.hv(10)}
method dv (line 2) | dv(){return this.cz_1}
method hv (line 2) | hv(t){if(Zu(this.bz_1)<t){var e=this.bz_1,i=dn(t,zd(Zu(this.bz_1),2));...
method dz (line 2) | dz(t){this.ov();var e,i=this.bz_1,r=this.cz_1;this.cz_1=r+1|0,e=t,i[r]=e}
method t11 (line 2) | t11(){return ks(this.bz_1,this.cz_1)}
method fv (line 2) | fv(){return new Hr(this.t11())}
class kp (line 2) | class kp extends Jf{constructor(t){super(),this.kz_1=t,this.lz_1=t.lengt...
method constructor (line 2) | constructor(t){super(),this.kz_1=t,this.lz_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.lz_1}
method hv (line 2) | hv(t){this.kz_1.length<t&&(this.kz_1=Es(this.kz_1,dn(t,zd(this.kz_1.le...
method mz (line 2) | mz(t){this.ov();var e=this.kz_1,i=this.lz_1;this.lz_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return Es(this.kz_1,this.lz_1)}
class Ep (line 2) | class Ep extends Jf{constructor(t){super(),this.uz_1=t,this.vz_1=Gu(t),t...
method constructor (line 2) | constructor(t){super(),this.uz_1=t,this.vz_1=Gu(t),this.hv(10)}
method dv (line 2) | dv(){return this.vz_1}
method hv (line 2) | hv(t){if(Gu(this.uz_1)<t){var e=this.uz_1,i=dn(t,zd(Gu(this.uz_1),2));...
method wz (line 2) | wz(t){this.ov();var e,i=this.uz_1,r=this.vz_1;this.vz_1=r+1|0,e=t,i[r]=e}
method u11 (line 2) | u11(){return Es(this.uz_1,this.vz_1)}
method fv (line 2) | fv(){return new Pr(this.u11())}
class zp (line 2) | class zp extends Jf{constructor(t){super(),this.d10_1=t,this.e10_1=t.len...
method constructor (line 2) | constructor(t){super(),this.d10_1=t,this.e10_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.e10_1}
method hv (line 2) | hv(t){this.d10_1.length<t&&(this.d10_1=zs(this.d10_1,dn(t,zd(this.d10_...
method f10 (line 2) | f10(t){this.ov();var e=this.d10_1,i=this.e10_1;this.e10_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return zs(this.d10_1,this.e10_1)}
class Tp (line 2) | class Tp extends Jf{constructor(t){super(),this.n10_1=t,this.o10_1=ac(t)...
method constructor (line 2) | constructor(t){super(),this.n10_1=t,this.o10_1=ac(t),this.hv(10)}
method dv (line 2) | dv(){return this.o10_1}
method hv (line 2) | hv(t){if(ac(this.n10_1)<t){var e=this.n10_1,i=dn(t,zd(ac(this.n10_1),2...
method p10 (line 2) | p10(t){this.ov();var e,i=this.n10_1,r=this.o10_1;this.o10_1=r+1|0,e=t,...
method v11 (line 2) | v11(){return zs(this.n10_1,this.o10_1)}
method fv (line 2) | fv(){return new Wr(this.v11())}
class Sp (line 2) | class Sp extends Jf{constructor(t){super(),this.w10_1=t,this.x10_1=t.len...
method constructor (line 2) | constructor(t){super(),this.w10_1=t,this.x10_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.x10_1}
method hv (line 2) | hv(t){this.w10_1.length<t&&(this.w10_1=Ts(this.w10_1,dn(t,zd(this.w10_...
method y10 (line 2) | y10(t){this.ov();var e=this.w10_1,i=this.x10_1;this.x10_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return Ts(this.w10_1,this.x10_1)}
class Rp (line 2) | class Rp extends Jf{constructor(t){super(),this.g11_1=t,this.h11_1=Iu(t)...
method constructor (line 2) | constructor(t){super(),this.g11_1=t,this.h11_1=Iu(t),this.hv(10)}
method dv (line 2) | dv(){return this.h11_1}
method hv (line 2) | hv(t){if(Iu(this.g11_1)<t){var e=this.g11_1,i=dn(t,zd(Iu(this.g11_1),2...
method i11 (line 2) | i11(t){this.ov();var e,i=this.g11_1,r=this.h11_1;this.h11_1=r+1|0,e=t,...
method w11 (line 2) | w11(){return Ts(this.g11_1,this.h11_1)}
method fv (line 2) | fv(){return new Lr(this.w11())}
class Mp (line 2) | class Mp extends Jf{constructor(t){super(),this.p11_1=t,this.q11_1=t.len...
method constructor (line 2) | constructor(t){super(),this.p11_1=t,this.q11_1=t.length,this.hv(10)}
method dv (line 2) | dv(){return this.q11_1}
method hv (line 2) | hv(t){this.p11_1.length<t&&(this.p11_1=Ss(this.p11_1,dn(t,zd(this.p11_...
method r11 (line 2) | r11(t){this.ov();var e=this.p11_1,i=this.q11_1;this.q11_1=i+1|0,e[i]=t}
method fv (line 2) | fv(){return Ss(this.p11_1,this.q11_1)}
class Ap (line 2) | class Ap{constructor(){td=this,this.x11_1=new Lp("kotlin.String",eg())}t...
method constructor (line 2) | constructor(){td=this,this.x11_1=new Lp("kotlin.String",eg())}
method tl (line 2) | tl(){return this.x11_1}
method y11 (line 2) | y11(t,e){return t.rq(e)}
method ul (line 2) | ul(t,e){return this.y11(t,null!=e&&"string"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.ip()}
class Lp (line 2) | class Lp{constructor(t,e){this.z11_1=t,this.a12_1=e}tn(){return this.z11...
method constructor (line 2) | constructor(t,e){this.z11_1=t,this.a12_1=e}
method tn (line 2) | tn(){return this.z11_1}
method un (line 2) | un(){return this.a12_1}
method wn (line 2) | wn(){return 0}
method yn (line 2) | yn(t){yg(this)}
method zn (line 2) | zn(t){yg(this)}
method co (line 2) | co(t){yg(this)}
method bo (line 2) | bo(t){yg(this)}
method ao (line 2) | ao(t){yg(this)}
method toString (line 2) | toString(){return"PrimitiveDescriptor("+this.z11_1+")"}
method equals (line 2) | equals(t){return this===t||t instanceof Lp&&!(this.z11_1!==t.z11_1||!A...
method hashCode (line 2) | hashCode(){return Da(this.z11_1)+zd(31,this.a12_1.hashCode())|0}
class jp (line 2) | class jp{constructor(){ed=this,this.b12_1=new Lp("kotlin.Int",(Cc===E&&n...
method constructor (line 2) | constructor(){ed=this,this.b12_1=new Lp("kotlin.Int",(Cc===E&&new af,C...
method tl (line 2) | tl(){return this.b12_1}
method c12 (line 2) | c12(t,e){return t.mq(e)}
method ul (line 2) | ul(t,e){return this.c12(t,null!=e&&"number"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.dp()}
class Dp (line 2) | class Dp{constructor(){id=this,this.d12_1=new Lp("kotlin.Long",(kc===E&&...
method constructor (line 2) | constructor(){id=this,this.d12_1=new Lp("kotlin.Long",(kc===E&&new sf,...
method tl (line 2) | tl(){return this.d12_1}
method e12 (line 2) | e12(t,e){return t.nq(e)}
method ul (line 2) | ul(t,e){return this.e12(t,e instanceof Yt?e:Va())}
method vl (line 2) | vl(t){return t.ep()}
class Op (line 2) | class Op{constructor(){rd=this,this.f12_1=new Lp("kotlin.Byte",(wc===E&&...
method constructor (line 2) | constructor(){rd=this,this.f12_1=new Lp("kotlin.Byte",(wc===E&&new ef,...
method tl (line 2) | tl(){return this.f12_1}
method g12 (line 2) | g12(t,e){return t.kq(e)}
method ul (line 2) | ul(t,e){return this.g12(t,null!=e&&"number"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.bp()}
class Pp (line 2) | class Pp{constructor(){nd=this,this.h12_1=new Lp("kotlin.Short",(xc===E&...
method constructor (line 2) | constructor(){nd=this,this.h12_1=new Lp("kotlin.Short",(xc===E&&new nf...
method tl (line 2) | tl(){return this.h12_1}
method i12 (line 2) | i12(t,e){return t.lq(e)}
method ul (line 2) | ul(t,e){return this.i12(t,null!=e&&"number"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.cp()}
class Fp (line 2) | class Fp{constructor(){ad=this,this.j12_1=new Lp("kotlin.Char",(yc===E&&...
method constructor (line 2) | constructor(){ad=this,this.j12_1=new Lp("kotlin.Char",(yc===E&&new rf,...
method tl (line 2) | tl(){return this.j12_1}
method k12 (line 2) | k12(t,e){return t.qq(e)}
method ul (line 2) | ul(t,e){return this.k12(t,e instanceof Pt?e.h2_1:Va())}
method l12 (line 2) | l12(t){return t.hp()}
method vl (line 2) | vl(t){return new Pt(this.l12(t))}
class qp (line 2) | class qp{constructor(){sd=this,this.m12_1=new Lp("kotlin.Double",(zc===E...
method constructor (line 2) | constructor(){sd=this,this.m12_1=new Lp("kotlin.Double",(zc===E&&new l...
method tl (line 2) | tl(){return this.m12_1}
method n12 (line 2) | n12(t,e){return t.pq(e)}
method ul (line 2) | ul(t,e){return this.n12(t,null!=e&&"number"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.gp()}
class Ip (line 2) | class Ip{constructor(){od=this,this.o12_1=new Lp("kotlin.Float",(Ec===E&...
method constructor (line 2) | constructor(){od=this,this.o12_1=new Lp("kotlin.Float",(Ec===E&&new of...
method tl (line 2) | tl(){return this.o12_1}
method p12 (line 2) | p12(t,e){return t.oq(e)}
method ul (line 2) | ul(t,e){return this.p12(t,null!=e&&"number"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.fp()}
class Hp (line 2) | class Hp{constructor(){ld=this,this.q12_1=new Lp("kotlin.Boolean",(_c===...
method constructor (line 2) | constructor(){ld=this,this.q12_1=new Lp("kotlin.Boolean",(_c===E&&new ...
method tl (line 2) | tl(){return this.q12_1}
method r12 (line 2) | r12(t,e){return t.jq(e)}
method ul (line 2) | ul(t,e){return this.r12(t,null!=e&&"boolean"==typeof e?e:Va())}
method vl (line 2) | vl(t){return t.ap()}
class Np (line 2) | class Np{constructor(){hd=this,this.s12_1=new ap("kotlin.Unit",T)}tl(){r...
method constructor (line 2) | constructor(){hd=this,this.s12_1=new ap("kotlin.Unit",T)}
method tl (line 2) | tl(){return this.s12_1.tl()}
method t12 (line 2) | t12(t,e){this.s12_1.jm(t,T)}
method ul (line 2) | ul(t,e){return this.t12(t,e instanceof he?e:Va())}
method u12 (line 2) | u12(t){this.s12_1.vl(t)}
method vl (line 2) | vl(t){return this.u12(t),T}
class Bp (line 2) | class Bp{constructor(){this.a13_1=ve.x1(),this.b13_1=!1}bq(){return Rg()...
method constructor (line 2) | constructor(){this.a13_1=ve.x1(),this.b13_1=!1}
method bq (line 2) | bq(){return Rg()}
method f13 (line 2) | f13(t){throw Ld.rm(Ma(ll(this))+" can't retrieve untyped values")}
method g13 (line 2) | g13(t){return!0}
method h13 (line 2) | h13(t){var e=this.f13(t);return"boolean"==typeof e?e:Va()}
method i13 (line 2) | i13(t){var e=this.f13(t);return"number"==typeof e?e:Va()}
method j13 (line 2) | j13(t){var e=this.f13(t);return"number"==typeof e?e:Va()}
method k13 (line 2) | k13(t){var e=this.f13(t);return"number"==typeof e?e:Va()}
method l13 (line 2) | l13(t){var e=this.f13(t);return e instanceof Yt?e:Va()}
method m13 (line 2) | m13(t){var e=this.f13(t);return"number"==typeof e?e:Va()}
method n13 (line 2) | n13(t){var e=this.f13(t);return"number"==typeof e?e:Va()}
method o13 (line 2) | o13(t){var e=this.f13(t);return e instanceof Pt?e.h2_1:Va()}
method p13 (line 2) | p13(t){var e=this.f13(t);return"string"==typeof e?e:Va()}
method q13 (line 2) | q13(t,e){return this.r13(t),this}
method kp (line 2) | kp(t,e){return this.lp(t)}
method jp (line 2) | jp(t){return this.q13(this.s13(),t)}
method yo (line 2) | yo(){var t=this.c13();if(null==t)return!1;var e=t;return this.g13(e)}
method zo (line 2) | zo(){return null}
method ap (line 2) | ap(){return this.h13(this.s13())}
method bp (line 2) | bp(){return this.i13(this.s13())}
method cp (line 2) | cp(){return this.j13(this.s13())}
method dp (line 2) | dp(){return this.k13(this.s13())}
method ep (line 2) | ep(){return this.l13(this.s13())}
method fp (line 2) | fp(){return this.m13(this.s13())}
method gp (line 2) | gp(){return this.n13(this.s13())}
method hp (line 2) | hp(){return this.o13(this.s13())}
method ip (line 2) | ip(){return this.p13(this.s13())}
method mp (line 2) | mp(t){return this}
method np (line 2) | np(t){}
method op (line 2) | op(t,e){return this.h13(this.x12(t,e))}
method pp (line 2) | pp(t,e){return this.i13(this.x12(t,e))}
method qp (line 2) | qp(t,e){return this.j13(this.x12(t,e))}
method rp (line 2) | rp(t,e){return this.k13(this.x12(t,e))}
method sp (line 2) | sp(t,e){return this.l13(this.x12(t,e))}
method tp (line 2) | tp(t,e){return this.m13(this.x12(t,e))}
method up (line 2) | up(t,e){return this.n13(this.x12(t,e))}
method vp (line 2) | vp(t,e){return this.o13(this.x12(t,e))}
method wp (line 2) | wp(t,e){return this.p13(this.x12(t,e))}
method xp (line 2) | xp(t,e){return this.q13(this.x12(t,e),t.bo(e))}
method yp (line 2) | yp(t,e,i,r){var n,a,s;return Eg(this,this.x12(t,e),(n=this,a=i,s=r,()=...
method aq (line 2) | aq(t,e,i,r){var n,a,s;return Eg(this,this.x12(t,e),(n=this,a=i,s=r,()=...
method c13 (line 2) | c13(){return(t=this.a13_1).t()?null:t.t1(t.l1()-1|0);var t}
method r13 (line 2) | r13(t){this.a13_1.b1(t)}
method s13 (line 2) | s13(){var t=this.a13_1.z2(Vl(this.a13_1));return this.b13_1=!0,t}
class Vp (line 2) | class Vp extends Bp{x12(t,e){return this.z12(this.y12(t,e))}z12(t){var e...
method x12 (line 2) | x12(t,e){return this.z12(this.y12(t,e))}
method z12 (line 2) | z12(t){var e=this.c13();return this.d13(null==e?"":e,t)}
method y12 (line 2) | y12(t,e){return t.yn(e)}
method d13 (line 2) | d13(t,e){return 0===xa(t)?e:t+"."+e}
method e13 (line 2) | e13(){return this.a13_1.t()?"$":Xr(this.a13_1,".","$.")}
class Wp (line 2) | class Wp{constructor(t,e){this.t13_1=t,this.u13_1=e}b3(){return this.t13...
method constructor (line 2) | constructor(t,e){this.t13_1=t,this.u13_1=e}
method b3 (line 2) | b3(){return this.t13_1}
method c3 (line 2) | c3(){return this.u13_1}
method toString (line 2) | toString(){return"MapEntry(key="+Cn(this.t13_1)+", value="+Cn(this.u13...
method hashCode (line 2) | hashCode(){var t=null==this.t13_1?0:La(this.t13_1);return zd(t,31)+(nu...
method equals (line 2) | equals(t){return this===t||t instanceof Wp&&!!Aa(this.t13_1,t.t13_1)&&...
class Up (line 2) | class Up{constructor(t,e){this.d14_1=t,this.e14_1=e}f14(t,e){var i=t.mp(...
method constructor (line 2) | constructor(t,e){this.d14_1=t,this.e14_1=e}
method f14 (line 2) | f14(t,e){var i=t.mp(this.tl());i.dr(this.tl(),0,this.d14_1,this.z13(e)...
method ul (line 2) | ul(t,e){return this.f14(t,e)}
method vl (line 2) | vl(t){var e,i=this.tl(),r=t.mp(i);if(r.cq()){var n=r.zp(this.tl(),0,th...
class Gp (line 2) | class Gp extends Up{constructor(t,e){super(t,e);var i,r,n=Zm();this.x13_...
method constructor (line 2) | constructor(t,e){super(t,e);var i,r,n=Zm();this.x13_1=Wm("kotlin.colle...
method tl (line 2) | tl(){return this.x13_1}
method y13 (line 2) | y13(t){return t.b3()}
method z13 (line 2) | z13(t){return this.y13(null!=t&&ls(t,Bt)?t:Va())}
method a14 (line 2) | a14(t){return t.c3()}
method b14 (line 2) | b14(t){return this.a14(null!=t&&ls(t,Bt)?t:Va())}
method c14 (line 2) | c14(t,e){return new Wp(t,e)}
class Jp (line 2) | class Jp extends Up{constructor(t,e){var i,r;super(t,e),this.i14_1=Gm("k...
method constructor (line 2) | constructor(t,e){var i,r;super(t,e),this.i14_1=Gm("kotlin.Pair",[],(i=...
method tl (line 2) | tl(){return this.i14_1}
method j14 (line 2) | j14(t){return t.yf_1}
method z13 (line 2) | z13(t){return this.j14(t instanceof Er?t:Va())}
method k14 (line 2) | k14(t){return t.zf_1}
method b14 (line 2) | b14(t){return this.k14(t instanceof Er?t:Va())}
method c14 (line 2) | c14(t,e){return Au(t,e)}
class Yp (line 2) | class Yp{constructor(t,e,i){var r;this.l14_1=t,this.m14_1=e,this.n14_1=i...
method constructor (line 2) | constructor(t,e,i){var r;this.l14_1=t,this.m14_1=e,this.n14_1=i,this.o...
method tl (line 2) | tl(){return this.o14_1}
method p14 (line 2) | p14(t,e){var i=t.mp(this.o14_1);i.dr(this.o14_1,0,this.l14_1,e.xj_1),i...
method ul (line 2) | ul(t,e){return this.p14(t,e instanceof zr?e:Va())}
method vl (line 2) | vl(t){var e=t.mp(this.o14_1);return e.cq()?function(t,e){var i=e.zp(t....
class $p (line 2) | class $p{constructor(){fd=this,this.q14_1=ag("kotlin.UInt",Lm())}tl(){re...
method constructor (line 2) | constructor(){fd=this,this.q14_1=ag("kotlin.UInt",Lm())}
method tl (line 2) | tl(){return this.q14_1}
method r14 (line 2) | r14(t,e){var i=e;t.sq(this.q14_1).mq(i)}
method ul (line 2) | ul(t,e){return this.r14(t,e instanceof Dr?e.tk_1:Va())}
method s14 (line 2) | s14(t){return t.jp(this.q14_1).dp()}
method vl (line 2) | vl(t){return new Dr(this.s14(t))}
class Kp (line 2) | class Kp{constructor(){pd=this,this.t14_1=ag("kotlin.ULong",jm(kn()))}tl...
method constructor (line 2) | constructor(){pd=this,this.t14_1=ag("kotlin.ULong",jm(kn()))}
method tl (line 2) | tl(){return this.t14_1}
method u14 (line 2) | u14(t,e){var i=e;t.sq(this.t14_1).nq(i)}
method ul (line 2) | ul(t,e){return this.u14(t,e instanceof qr?e.dl_1:Va())}
method v14 (line 2) | v14(t){return t.jp(this.t14_1).ep()}
method vl (line 2) | vl(t){return new qr(this.v14(t))}
class Xp (line 2) | class Xp{constructor(){md=this,this.w14_1=ag("kotlin.UByte",Dm())}tl(){r...
method constructor (line 2) | constructor(){md=this,this.w14_1=ag("kotlin.UByte",Dm())}
method tl (line 2) | tl(){return this.w14_1}
method x14 (line 2) | x14(t,e){var i=e;t.sq(this.w14_1).kq(i)}
method ul (line 2) | ul(t,e){return this.x14(t,e instanceof Mr?e.jk_1:Va())}
method y14 (line 2) | y14(t){return t.jp(this.w14_1).bp()}
method vl (line 2) | vl(t){return new Mr(this.y14(t))}
class Qp (line 2) | class Qp{constructor(){gd=this,this.z14_1=ag("kotlin.UShort",Om())}tl(){...
method constructor (line 2) | constructor(){gd=this,this.z14_1=ag("kotlin.UShort",Om())}
method tl (line 2) | tl(){return this.z14_1}
method a15 (line 2) | a15(t,e){var i=e;t.sq(this.z14_1).lq(i)}
method ul (line 2) | ul(t,e){return this.a15(t,e instanceof Br?e.nl_1:Va())}
method b15 (line 2) | b15(t){return t.jp(this.z14_1).cp()}
method vl (line 2) | vl(t){return new Br(this.b15(t))}
class Zp (line 2) | class Zp{ln(t,e,i){return e=e===E?Bl():e,i===E?this.mn(t,e):i.mn.call(th...
method ln (line 2) | ln(t,e,i){return e=e===E?Bl():e,i===E?this.mn(t,e):i.mn.call(this,t,e)}
class tm (line 2) | class tm extends Zp{constructor(t,e,i,r,n,a){super(),this.d15_1=t,this.e...
method constructor (line 2) | constructor(t,e,i,r,n,a){super(),this.d15_1=t,this.e15_1=e,this.f15_1=...
method kn (line 2) | kn(){return this.i15_1}
method lr (line 2) | lr(t,e){if(!t.bd(e))return null;var i=this.e15_1.f3(t),r=null==i?null:...
method kr (line 2) | kr(t,e){var i=this.g15_1.f3(t),r=null==i?null:(ls(i,Vt)?i:Va()).f3(e),...
method mn (line 2) | mn(t,e){var i=this.d15_1.f3(t),r=null==i?null:i.j15(e);return null==r|...
method c15 (line 2) | c15(t){for(var e=this.d15_1.z1().v();e.w();){var i=e.x(),r=i.b3(),n=i....
class em (line 2) | class em{}
class im (line 2) | class im extends em{constructor(t){super(),this.m15_1=t}j15(t){return th...
method constructor (line 2) | constructor(t){super(),this.m15_1=t}
method j15 (line 2) | j15(t){return this.m15_1}
method equals (line 2) | equals(t){return t instanceof im&&Aa(t.m15_1,this.m15_1)}
method hashCode (line 2) | hashCode(){return La(this.m15_1)}
class rm (line 2) | class rm extends em{constructor(t){super(),this.k15_1=t}j15(t){return th...
method constructor (line 2) | constructor(t){super(),this.k15_1=t}
method j15 (line 2) | j15(t){return this.k15_1(t)}
class nm (line 2) | class nm{}
class am (line 2) | class am{constructor(t){this.y15_1=t}n15(t,e){this.y15_1.z15(t,new im(e)...
method constructor (line 2) | constructor(t){this.y15_1=t}
method n15 (line 2) | n15(t,e){this.y15_1.z15(t,new im(e),!0)}
method l15 (line 2) | l15(t,e){this.y15_1.z15(t,new rm(e),!0)}
method o15 (line 2) | o15(t,e,i){this.y15_1.a16(t,e,i,!0)}
method p15 (line 2) | p15(t,e){this.y15_1.b16(t,e,!0)}
method q15 (line 2) | q15(t,e){this.y15_1.c16(t,e,!0)}
class sm (line 2) | class sm{constructor(){this.r15_1=_e.j7(),this.s15_1=_e.j7(),this.t15_1=...
method constructor (line 2) | constructor(){this.r15_1=_e.j7(),this.s15_1=_e.j7(),this.t15_1=_e.j7()...
method n15 (line 2) | n15(t,e){return this.d16(t,new im(e))}
method l15 (line 2) | l15(t,e){return this.d16(t,new rm(e))}
method o15 (line 2) | o15(t,e,i){this.e16(t,e,i)}
method p15 (line 2) | p15(t,e){this.b16(t,e,!1)}
method q15 (line 2) | q15(t,e){this.c16(t,e,!1)}
method x15 (line 2) | x15(t){t.c15(this)}
method z15 (line 2) | z15(t,e,i){if(!i){var r=this.r15_1.f3(t);if(null!=r&&!Aa(r,e))throw om...
method d16 (line 2) | d16(t,e,i,r){var n;return i=i!==E&&i,r===E?(this.z15(t,e,i),n=T):n=r.z...
method b16 (line 2) | b16(t,e,i){var r=this.t15_1.f3(t);if(null!=r&&!Aa(r,e)&&!i)throw Je.k1...
method c16 (line 2) | c16(t,e,i){var r=this.v15_1.f3(t);if(null!=r&&!Aa(r,e)&&!i)throw Je.k1...
method a16 (line 2) | a16(t,e,i,r){var n,a=i.tl().tn(),s=this.s15_1,o=s.f3(t);if(null==o){va...
method e16 (line 2) | e16(t,e,i,r,n){var a;return r=r!==E&&r,n===E?(this.a16(t,e,i,r),a=T):a...
method fv (line 2) | fv(){return new tm(this.r15_1,this.s15_1,this.t15_1,this.u15_1,this.v1...
class om (line 2) | class om extends Je{static j16(t){var e=this.k1(t);return Oa(e,e.i16_1),...
method j16 (line 2) | static j16(t){var e=this.k1(t);return Oa(e,e.i16_1),e}
method k16 (line 2) | static k16(t,e){return this.j16("Serializer for "+Ma(e)+" already regi...
class lm (line 2) | class lm{constructor(t){this.l16_1=t}equals(t){if(!(t instanceof lm))ret...
method constructor (line 2) | constructor(t){this.l16_1=t}
method equals (line 2) | equals(t){if(!(t instanceof lm))return!1;var e=t instanceof lm?t:Va();...
method hashCode (line 2) | hashCode(){return zd(Da("serializer"),127)^this.l16_1.hashCode()}
method toString (line 2) | toString(){return"@kotlinx.serialization.SerializableWith(serializer="...
class hm (line 2) | class hm{constructor(t){this.m16_1=t}nn(t){return this.m16_1(t)}}
method constructor (line 2) | constructor(t){this.m16_1=t}
method nn (line 2) | nn(t){return this.m16_1(t)}
class um (line 2) | class um{constructor(t){this.n16_1=t}on(t,e){var i;try{i=this.n16_1(t,e)...
method constructor (line 2) | constructor(t){this.n16_1=t}
method on (line 2) | on(t,e){var i;try{i=this.n16_1(t,e)}catch(t){if(!(t instanceof Error))...
function cm (line 2) | function cm(t,e,i){var r,n=t.lm(e,i);return null==n?function(t,e){var i=...
function dm (line 2) | function dm(t,e,i){var r,n=t.km(e,i);return null==n?ig(i,t.im()):r=n,r}
function fm (line 2) | function fm(t){Oa(t,t.pm_1)}
function pm (line 2) | function pm(t){var e=function(t){var e,i=Og(t,[]);if(null==i){var r;if(t...
function mm (line 2) | function mm(t,e,i){var r;if(i){for(var n=ve.p1(Ul(e,10)),a=e.v();a.w();)...
function gm (line 2) | function gm(t,e,i){var r=function(t,e,i){var r,n,a,s,o,l,h,u;if(t.equals...
function bm (line 2) | function bm(t,e){var i,r=_m(t,e,!0);return null==r?function(t){throw Ld....
function vm (line 2) | function vm(t,e){return _m(t,e,!1)}
function _m (line 2) | function _m(t,e,i){for(var r=ug(e),n=e.m(),a=e.l(),s=ve.p1(Ul(a,10)),o=a...
function wm (line 2) | function wm(t){return bm(Rg(),t)}
function ym (line 2) | function ym(t){Em();var e=pm(t);return null==e?Ag(t)?new Ad(t):null:e}
function xm (line 2) | function xm(t){Em();var e,i=pm(t),r=null==(e=null==i?Ag(t)?new Ad(t):nul...
function Cm (line 2) | function Cm(t,e){var i;return Em(),gm(t,Wa(mm(Rg(),e,!0)),(i=e,()=>i.t1(...
function km (line 2) | function km(t,e){Em();var i,r=gm(t,Wa(mm(Rg(),e,!0)),(i=e,()=>i.t1(0).k(...
function Em (line 2) | function Em(){dc||(dc=!0,lc=Mg(ym),hc=Mg(xm),uc=Lg(Cm),cc=Lg(km))}
function zm (line 2) | function zm(t){return wg()}
function Tm (line 2) | function Tm(t){return fd===E&&new $p,fd}
function Sm (line 2) | function Sm(t){return pd===E&&new Kp,pd}
function Rm (line 2) | function Rm(t){return md===E&&new Xp,md}
function Mm (line 2) | function Mm(t){return gd===E&&new Qp,gd}
function Am (line 2) | function Am(t){return t.tl().pn()?ls(t,Rd)?t:Va():new rp(t)}
function Lm (line 2) | function Lm(t){return xg()}
function jm (line 2) | function jm(t){return id===E&&new Dp,id}
function Dm (line 2) | function Dm(t){return rd===E&&new Op,rd}
function Om (line 2) | function Om(t){return nd===E&&new Pp,nd}
function Pm (line 2) | function Pm(t){return ad===E&&new Fp,ad}
function Fm (line 2) | function Fm(t){return sd===E&&new qp,sd}
function qm (line 2) | function qm(t){return od===E&&new Ip,od}
function Im (line 2) | function Im(t){return Cg()}
function Hm (line 2) | function Hm(t){return new If(t)}
function Nm (line 2) | function Nm(t,e){return new Wf(t,e)}
function Bm (line 2) | function Bm(t,e){var i,r=Vm(e);if(null==r)i=null;else{var n=t.ln(r);i=nu...
function Vm (line 2) | function Vm(t){return t instanceof Id?t.rn_1:t instanceof np?Vm(t.do_1):...
function Wm (line 2) | function Wm(t,e,i,r){if(r=r===E?Jm:r,xh(t))throw Je.k1(Ma("Blank serial ...
function Um (line 2) | function Um(t){var e=t.vo_1;return ns("_hashCode",1,ui,t=>Um(t),null),e....
function Gm (line 2) | function Gm(t,e,i){if(i=i===E?Ym:i,xh(t))throw Je.k1(Ma("Blank serial na...
function Jm (line 2) | function Jm(t){return T}
function Ym (line 2) | function Ym(t){return T}
function $m (line 2) | function $m(){return fc===E&&new Gd,fc}
function Km (line 2) | function Km(){return pc===E&&new Jd,pc}
function Xm (line 2) | function Xm(){return mc===E&&new $d,mc}
function Qm (line 2) | function Qm(){return gc===E&&new Kd,gc}
function Zm (line 2) | function Zm(){return bc===E&&new Xd,bc}
function tg (line 2) | function tg(){return vc===E&&new Qd,vc}
function eg (line 2) | function eg(){return Tc===E&&new hf,Tc}
function ig (line 2) | function ig(t,e){var i="in the polymorphic scope of '"+e.p()+"'";throw L...
function rg (line 2) | function rg(){return Mc===E&&new Cf,Mc}
function ng (line 2) | function ng(){return Dc===E&&new Yf,Dc}
function ag (line 2) | function ag(t,e){return new Xf(t,new tp(e))}
function sg (line 2) | function sg(t){return lg(t)}
function og (line 2) | function og(t){throw Ge.d4("Descriptor for type `kotlin.Nothing` does no...
function lg (line 2) | function lg(t){if(dg(),ls(t,Vd))return t.wo();var e=Se.s1(t.wn()),i=0,r=...
function hg (line 2) | function hg(t){var e;dg();var i=null==(e=null==t||t.t()?null:t)?null:Ws(...
function ug (line 2) | function ug(t){dg();var e=t.k();if(null==e||!ls(e,ai))throw null!=e&&ls(...
function cg (line 2) | function cg(t){dg();var e=t.bh_1;if(null==e){var i="Star projections in ...
function dg (line 2) | function dg(){qc||(qc=!0,Fc=[])}
function fg (line 2) | function fg(t,e,i){var r=ve.x1(),n=e&~t,a=0;if(a<32)do{var s=a;if(a=a+1|...
function pg (line 2) | function pg(t){var e=t.sw_1;return ns("childSerializers",1,ui,t=>pg(t),n...
function mg (line 2) | function mg(t){var e=t.uw_1;return ns("_hashCode",1,ui,t=>mg(t),null),e....
function gg (line 2) | function gg(t,e){var i=Da(t.tn());i=zd(31,i)+function(t){return function...
function bg (line 2) | function bg(t){var e;return Xr(hn(0,t.wn()),", ",t.tn()+"(",")",E,E,(e=t...
function vg (line 2) | function vg(){return Hc||(Hc=!0,Ic=[]),Ic}
function _g (line 2) | function _g(){return kg(),Zc}
function wg (line 2) | function wg(){return td===E&&new Ap,td}
function yg (line 2) | function yg(t){throw Ge.d4("Primitive descriptor "+t.z11_1+" does not ha...
function xg (line 2) | function xg(){return ed===E&&new jp,ed}
function Cg (line 2) | function Cg(){return ld===E&&new Hp,ld}
function kg (line 2) | function kg(){ud||(ud=!0,Zc=Yl([Au(sl().vd(),zm()),Au(ol(Pt),Pm(xn())),A...
function Eg (line 2) | function Eg(t,e,i){t.r13(e);var r=i();return t.b13_1||t.s13(),t.b13_1=!1,r}
function zg (line 2) | function zg(){return dd||(dd=!0,cd=new Object),cd}
function Tg (line 2) | function Tg(t,e){Sg();var i=new sm;return i.x15(t),e.c15(new am(i)),i.fv()}
function Sg (line 2) | function Sg(){vd||(vd=!0,bd=new tm(Jl(),Jl(),Jl(),Jl(),Jl(),!1))}
function Rg (line 2) | function Rg(){return Sg(),bd}
function Mg (line 2) | function Mg(t){return new hm(t)}
function Ag (line 2) | function Ag(t){return function(t){if(t===sl().md())return!1;var e=Fo(t)....
function Lg (line 2) | function Lg(t){return new um(t)}
function jg (line 2) | function jg(t,e){if(!(0<=e&&e<=(t.length-1|0)))throw $e.f5("Index "+e+" ...
function Dg (line 2) | function Dg(t,e){if(!(0<=e&&e<=(t.length-1|0)))throw $e.f5("Index "+e+" ...
function Og (line 2) | function Og(t,e){var i;try{var r,n=function(t,e){if(t instanceof si&&e i...
class Hg (line 2) | class Hg{o16(){return Vg()}}
method o16 (line 2) | o16(){return Vg()}
class Ng (line 2) | class Ng{constructor(){Fg=this;var t=new Kf("io.kvision.types.KFile",thi...
method constructor (line 2) | constructor(){Fg=this;var t=new Kf("io.kvision.types.KFile",this,3);t....
method q16 (line 2) | q16(t,e){var i=this.p16_1,r=t.mp(i);r.br(i,0,e.r16_1),r.wq(i,1,e.s16_1...
method ul (line 2) | ul(t,e){return this.q16(t,e instanceof Bg?e:Va())}
method vl (line 2) | vl(t){var e=this.p16_1,i=!0,r=0,n=0,a=null,s=0,o=null,l=t.mp(e);if(l.c...
method tl (line 2) | tl(){return this.p16_1}
method yw (line 2) | yw(){return[wg(),xg(),Am(wg())]}
class Bg (line 2) | class Bg{constructor(t,e,i){i=i===E?null:i,this.r16_1=t,this.s16_1=e,thi...
method constructor (line 2) | constructor(t,e,i){i=i===E?null:i,this.r16_1=t,this.s16_1=e,this.t16_1=i}
method toString (line 2) | toString(){return"KFile(name="+this.r16_1+", size="+this.s16_1+", cont...
method hashCode (line 2) | hashCode(){var t=Da(this.r16_1);return t=Ig(t,31)+this.s16_1|0,Ig(t,31...
method equals (line 2) | equals(t){return this===t||t instanceof Bg&&this.r16_1===t.r16_1&&this...
method u16 (line 2) | static u16(t,e,i,r,n){3&~t&&fg(t,3,Vg().p16_1);var a=Fa(this);return a...
function Vg (line 2) | function Vg(){return Fg===E&&new Ng,Fg}
function Wg (line 2) | function Wg(){return qg}
class Cb (line 2) | class Cb{constructor(t,e){Rv(),this.v16_1=t,this.w16_1=e,this.x16_1=new ...
method constructor (line 2) | constructor(t,e){Rv(),this.v16_1=t,this.w16_1=e,this.x16_1=new fv}
method bq (line 2) | bq(){return this.w16_1}
method y16 (line 2) | y16(t,e){var i=new Sv;try{return function(t,e,i,r){var n,a=N_(),s=(nul...
method z16 (line 2) | z16(t,e){var i=nw(this,e),r=new mv(this,N_(),i,t.tl(),null).lp(t);retu...
class kb (line 2) | class kb extends Cb{constructor(){Ug=null,super(new Mb,Rg()),Ug=this}}
method constructor (line 2) | constructor(){Ug=null,super(new Mb,Rg()),Ug=this}
class Eb (line 2) | class Eb{constructor(t){this.p17_1=t.v16_1.i18_1,this.q17_1=t.v16_1.n18_...
method constructor (line 2) | constructor(t){this.p17_1=t.v16_1.i18_1,this.q17_1=t.v16_1.n18_1,this....
method h18 (line 2) | h18(){if(this.f18_1){if("type"!==this.w17_1)throw Je.k1(Ma("Class disc...
class zb (line 2) | class zb extends Cb{constructor(t,e){super(t,e),function(t){if(Aa(t.bq()...
method constructor (line 2) | constructor(t,e){super(t,e),function(t){if(Aa(t.bq(),Rg()))return T;va...
class Tb (line 2) | class Tb{}
class Sb (line 2) | class Sb{}
class Rb (line 2) | class Rb{}
class Mb (line 2) | class Mb{constructor(t,e,i,r,n,a,s,o,l,h,u,c,d,f,p,m,g){t=t!==E&&t,e=e!=...
method constructor (line 2) | constructor(t,e,i,r,n,a,s,o,l,h,u,c,d,f,p,m,g){t=t!==E&&t,e=e!==E&&e,i...
method toString (line 2) | toString(){return"JsonConfiguration(encodeDefaults="+this.i18_1+", ign...
class Ab (line 2) | class Ab extends Gt{}
class Lb (line 2) | class Lb{}
class jb (line 2) | class jb{}
class Db (line 2) | class Db{}
class Ob (line 2) | class Ob{}
class Pb (line 2) | class Pb extends Db{constructor(t){super(),this.b19_1=t}equals(t){return...
method constructor (line 2) | constructor(t){super(),this.b19_1=t}
method equals (line 2) | equals(t){return Aa(this.b19_1,t)}
method hashCode (line 2) | hashCode(){return La(this.b19_1)}
method toString (line 2) | toString(){return Xr(this.b19_1.z1(),",","{","}",E,E,Dv)}
method t (line 2) | t(){return this.b19_1.t()}
method c19 (line 2) | c19(t){return this.b19_1.d3(t)}
method d3 (line 2) | d3(t){return null!=t&&"string"==typeof t&&this.c19(null!=t&&"string"==...
method d19 (line 2) | d19(t){return this.b19_1.f3(t)}
method f3 (line 2) | f3(t){return null==t||"string"!=typeof t?null:this.d19(null!=t&&"strin...
method l1 (line 2) | l1(){return this.b19_1.l1()}
method g3 (line 2) | g3(){return this.b19_1.g3()}
method h3 (line 2) | h3(){return this.b19_1.h3()}
method z1 (line 2) | z1(){return this.b19_1.z1()}
class Fb (line 2) | class Fb{}
class qb (line 2) | class qb extends Db{toString(){return this.e19()}}
method toString (line 2) | toString(){return this.e19()}
class Ib (line 2) | class Ib extends qb{constructor(){Xg=null,super(),Xg=this,this.f19_1="nu...
method constructor (line 2) | constructor(){Xg=null,super(),Xg=this,this.f19_1="null"}
method e19 (line 2) | e19(){return this.f19_1}
method o16 (line 2) | o16(){return $v()}
method kx (line 2) | kx(t){return this.o16()}
class Hb (line 2) | class Hb extends qb{constructor(t,e,i){if(i=i===E?null:i,super(),this.g1...
method constructor (line 2) | constructor(t,e,i){if(i=i===E?null:i,super(),this.g19_1=e,this.h19_1=i...
method e19 (line 2) | e19(){return this.i19_1}
method toString (line 2) | toString(){var t;if(this.g19_1){var e=pi.r();j_(e,this.i19_1),t=e.toSt...
method equals (line 2) | equals(t){return this===t||!(null==t||!ll(this).equals(ll(t)))&&(t ins...
method hashCode (line 2) | hashCode(){var t=ja(this.g19_1);return xb(31,t)+Da(this.i19_1)|0}
class Nb (line 2) | class Nb{}
class Bb (line 2) | class Bb extends Db{constructor(t){super(),this.j19_1=t}equals(t){return...
method constructor (line 2) | constructor(t){super(),this.j19_1=t}
method equals (line 2) | equals(t){return Aa(this.j19_1,t)}
method hashCode (line 2) | hashCode(){return La(this.j19_1)}
method toString (line 2) | toString(){return Xr(this.j19_1,",","[","]")}
method t (line 2) | t(){return this.j19_1.t()}
method k19 (line 2) | k19(t){return this.j19_1.u2(t)}
method u2 (line 2) | u2(t){return t instanceof Db&&this.k19(t instanceof Db?t:Va())}
method v (line 2) | v(){return this.j19_1.v()}
method t1 (line 2) | t1(t){return this.j19_1.t1(t)}
method l1 (line 2) | l1(){return this.j19_1.l1()}
class Vb (line 2) | class Vb{constructor(){Zg=this;var t=(Sc===E&&new cf,Sc);this.r19_1=Wm("...
method constructor (line 2) | constructor(){Zg=this;var t=(Sc===E&&new cf,Sc);this.r19_1=Wm("kotlinx...
method tl (line 2) | tl(){return this.r19_1}
method s19 (line 2) | s19(t,e){Zv(t),e instanceof qb?t.er(Yv(),e):e instanceof Pb?t.er(Jv(),...
method ul (line 2) | ul(t,e){return this.s19(t,e instanceof Db?e:Va())}
method vl (line 2) | vl(t){return t_(t).a19()}
class Wb (line 2) | class Wb{constructor(){tb=this,this.t19_1=Nm(zm(),Gv()).tl(),this.u19_1=...
method constructor (line 2) | constructor(){tb=this,this.t19_1=Nm(zm(),Gv()).tl(),this.u19_1="kotlin...
method tn (line 2) | tn(){return this.u19_1}
method yn (line 2) | yn(t){return this.t19_1.yn(t)}
method zn (line 2) | zn(t){return this.t19_1.zn(t)}
method ao (line 2) | ao(t){return this.t19_1.ao(t)}
method bo (line 2) | bo(t){return this.t19_1.bo(t)}
method co (line 2) | co(t){return this.t19_1.co(t)}
method un (line 2) | un(){return this.t19_1.un()}
method pn (line 2) | pn(){return this.t19_1.pn()}
method vn (line 2) | vn(){return this.t19_1.vn()}
method wn (line 2) | wn(){return this.t19_1.wn()}
method xn (line 2) | xn(){return this.t19_1.xn()}
class Ub (line 2) | class Ub{constructor(){eb=this,this.p19_1=(tb===E&&new Wb,tb)}tl(){retur...
method constructor (line 2) | constructor(){eb=this,this.p19_1=(tb===E&&new Wb,tb)}
method tl (line 2) | tl(){return this.p19_1}
method v19 (line 2) | v19(t,e){Zv(t),Nm(zm(),Gv()).ul(t,e)}
method ul (line 2) | ul(t,e){return this.v19(t,e instanceof Pb?e:Va())}
method vl (line 2) | vl(t){return e_(t),new Pb(Nm(zm(),Gv()).vl(t))}
class Gb (line 2) | class Gb{constructor(){ib=this,this.m19_1=Wm("kotlinx.serialization.json...
method constructor (line 2) | constructor(){ib=this,this.m19_1=Wm("kotlinx.serialization.json.JsonPr...
method tl (line 2) | tl(){return this.m19_1}
method w19 (line 2) | w19(t,e){var i;if(Zv(t),e instanceof Ib)t.er($v(),Fv()),i=T;else{var r...
method ul (line 2) | ul(t,e){return this.w19(t,e instanceof qb?e:Va())}
method vl (line 2) | vl(t){var e=t_(t).a19();if(!(e instanceof qb))throw r_(-1,"Unexpected ...
class Jb (line 2) | class Jb{constructor(){rb=this,this.n19_1=Wm("kotlinx.serialization.json...
method constructor (line 2) | constructor(){rb=this,this.n19_1=Wm("kotlinx.serialization.json.JsonNu...
method tl (line 2) | tl(){return this.n19_1}
method x19 (line 2) | x19(t,e){Zv(t),t.iq()}
method ul (line 2) | ul(t,e){return this.x19(t,e instanceof Ib?e:Va())}
method vl (line 2) | vl(t){if(e_(t),t.yo())throw av.e1a("Expected 'null' literal");return t...
class Yb (line 2) | class Yb{constructor(){nb=this,this.f1a_1=Hm(Gv()).tl(),this.g1a_1="kotl...
method constructor (line 2) | constructor(){nb=this,this.f1a_1=Hm(Gv()).tl(),this.g1a_1="kotlinx.ser...
method tn (line 2) | tn(){return this.g1a_1}
method yn (line 2) | yn(t){return this.f1a_1.yn(t)}
method zn (line 2) | zn(t){return this.f1a_1.zn(t)}
method ao (line 2) | ao(t){return this.f1a_1.ao(t)}
method bo (line 2) | bo(t){return this.f1a_1.bo(t)}
method co (line 2) | co(t){return this.f1a_1.co(t)}
method un (line 2) | un(){return this.f1a_1.un()}
method pn (line 2) | pn(){return this.f1a_1.pn()}
method vn (line 2) | vn(){return this.f1a_1.vn()}
method wn (line 2) | wn(){return this.f1a_1.wn()}
method xn (line 2) | xn(){return this.f1a_1.xn()}
class $b (line 2) | class $b{constructor(){ab=this,this.q19_1=(nb===E&&new Yb,nb)}tl(){retur...
method constructor (line 2) | constructor(){ab=this,this.q19_1=(nb===E&&new Yb,nb)}
method tl (line 2) | tl(){return this.q19_1}
method h1a (line 2) | h1a(t,e){Zv(t),Hm(Gv()).ul(t,e)}
method ul (line 2) | ul(t,e){return this.h1a(t,e instanceof Bb?e:Va())}
method vl (line 2) | vl(t){return e_(t),new Bb(Hm(Gv()).vl(t))}
class Kb (line 2) | class Kb{constructor(){sb=this,this.o19_1=function(t,e){if(xh(t))throw J...
method constructor (line 2) | constructor(){sb=this,this.o19_1=function(t,e){if(xh(t))throw Je.k1(Ma...
method tl (line 2) | tl(){return this.o19_1}
method i1a (line 2) | i1a(t,e){if(Zv(t),e.g19_1)return t.rq(e.i19_1);if(null!=e.h19_1)return...
method ul (line 2) | ul(t,e){return this.i1a(t,e instanceof Hb?e:Va())}
method vl (line 2) | vl(t){var e=t_(t).a19();if(!(e instanceof Hb))throw r_(-1,"Unexpected ...
class Xb (line 2) | class Xb{constructor(t){this.j1a_1=jo(t)}tn(){return i_(this).tn()}un(){...
method constructor (line 2) | constructor(t){this.j1a_1=jo(t)}
method tn (line 2) | tn(){return i_(this).tn()}
method un (line 2) | un(){return i_(this).un()}
method wn (line 2) | wn(){return i_(this).wn()}
method yn (line 2) | yn(t){return i_(this).yn(t)}
method zn (line 2) | zn(t){return i_(this).zn(t)}
method ao (line 2) | ao(t){return i_(this).ao(t)}
method bo (line 2) | bo(t){return i_(this).bo(t)}
method co (line 2) | co(t){return i_(this).co(t)}
class Qb (line 2) | class Qb{}
class Zb (line 2) | class Zb{constructor(t){this.k1a_1=t,this.l1a_1=!0}m1a(){this.l1a_1=!0}n...
method constructor (line 2) | constructor(t){this.k1a_1=t,this.l1a_1=!0}
method m1a (line 2) | m1a(){this.l1a_1=!0}
method n1a (line 2) | n1a(){return T}
method o1a (line 2) | o1a(){this.l1a_1=!1}
method p1a (line 2) | p1a(){this.l1a_1=!1}
method q1a (line 2) | q1a(){return T}
method r1a (line 2) | r1a(t){return this.k1a_1.s1a(t)}
method t1a (line 2) | t1a(t){return this.k1a_1.u1a(t)}
method v1a (line 2) | v1a(t){return this.k1a_1.u1a(t.toString())}
method w1a (line 2) | w1a(t){return this.k1a_1.u1a(t.toString())}
method x1a (line 2) | x1a(t){return this.k1a_1.y1a(Yn(t))}
method z1a (line 2) | z1a(t){return this.k1a_1.y1a(Yn(t))}
method a1b (line 2) | a1b(t){return this.k1a_1.y1a(Yn(t))}
method b1b (line 2) | b1b(t){return this.k1a_1.y1a(t)}
method c1b (line 2) | c1b(t){return this.k1a_1.u1a(t.toString())}
method d1b (line 2) | d1b(t){return this.k1a_1.e1b(t)}
class tv (line 2) | class tv extends Zb{constructor(t,e){super(t),this.h1b_1=e}a1b(t){if(thi...
method constructor (line 2) | constructor(t,e){super(t),this.h1b_1=e}
method a1b (line 2) | a1b(t){if(this.h1b_1){var e=t;this.d1b(Wu(e))}else{var i=t;this.t1a(Wu...
method b1b (line 2) | b1b(t){if(this.h1b_1){var e=t;this.d1b(Xu(e))}else{var i=t;this.t1a(Xu...
method x1a (line 2) | x1a(t){if(this.h1b_1){var e=t;this.d1b(Fu(e))}else{var i=t;this.t1a(Fu...
method z1a (line 2) | z1a(t){if(this.h1b_1){var e=t;this.d1b(rc(e))}else{var i=t;this.t1a(rc...
class ev (line 2) | class ev extends Zb{constructor(t,e){super(t),this.k1b_1=e}d1b(t){this.k...
method constructor (line 2) | constructor(t,e){super(t),this.k1b_1=e}
method d1b (line 2) | d1b(t){this.k1b_1?super.d1b(t):super.t1a(t)}
class iv (line 2) | class iv extends Zb{constructor(t,e){super(t),this.n1b_1=e,this.o1b_1=0}...
method constructor (line 2) | constructor(t,e){super(t),this.n1b_1=e,this.o1b_1=0}
method m1a (line 2) | m1a(){this.l1a_1=!0,this.o1b_1=this.o1b_1+1|0}
method n1a (line 2) | n1a(){this.o1b_1=this.o1b_1-1|0}
method o1a (line 2) | o1a(){this.l1a_1=!1,this.t1a("\n");var t=this.o1b_1,e=0;if(e<t)do{e=e+...
method p1a (line 2) | p1a(){this.l1a_1?this.l1a_1=!1:this.o1a()}
method q1a (line 2) | q1a(){this.r1a(32)}
class rv (line 2) | class rv{constructor(t){var e,i;this.p1b_1=new $f(t,(e=this,i=(t,i)=>fun...
method constructor (line 2) | constructor(t){var e,i;this.p1b_1=new $f(t,(e=this,i=(t,i)=>function(t...
method r1b (line 2) | r1b(t){this.p1b_1.uv(t)}
method s1b (line 2) | s1b(){return this.p1b_1.vv()}
class nv (line 2) | class nv extends Ld{static y1b(t){var e=this.rm(t);return Oa(e,e.x1b_1),e}}
method y1b (line 2) | static y1b(t){var e=this.rm(t);return Oa(e,e.x1b_1),e}
class av (line 2) | class av extends nv{static e1a(t){var e=this.y1b(t);return Oa(e,e.d1a_1)...
method e1a (line 2) | static e1a(t){var e=this.y1b(t);return Oa(e,e.d1a_1),e}
class sv (line 2) | class sv extends nv{static h1c(t){var e=this.y1b(t);return Oa(e,e.g1c_1)...
method h1c (line 2) | static h1c(t){var e=this.y1b(t);return Oa(e,e.g1c_1),e}
class ov (line 2) | class ov{}
class lv (line 2) | class lv{constructor(){this.m1c_1=Array(8);for(var t=0,e=new Int32Array(...
method constructor (line 2) | constructor(){this.m1c_1=Array(8);for(var t=0,e=new Int32Array(8);t<8;...
method p1c (line 2) | p1c(t){this.o1c_1=this.o1c_1+1|0;var e=this.o1c_1;e===this.m1c_1.lengt...
method q1c (line 2) | q1c(t){this.n1c_1[this.o1c_1]=t}
method r1c (line 2) | r1c(t){var e;-2!==this.n1c_1[this.o1c_1]?(this.o1c_1=this.o1c_1+1|0,e=...
method s1c (line 2) | s1c(){-2===this.n1c_1[this.o1c_1]&&(this.m1c_1[this.o1c_1]=ub)}
method t1c (line 2) | t1c(){var t=this.o1c_1;-2===this.n1c_1[t]&&(this.n1c_1[t]=-1,this.o1c_...
method u1c (line 2) | u1c(){var t=pi.r();t.s("$");var e=this.o1c_1+1|0,i=0;if(i<e)do{var r=i...
method toString (line 2) | toString(){return this.u1c()}
class hv (line 2) | class hv{constructor(t){this.v1c_1=t.q18_1,this.w1c_1=!t.y18_1.equals(Lv...
method constructor (line 2) | constructor(t){this.v1c_1=t.q18_1,this.w1c_1=!t.y18_1.equals(Lv())}
method l15 (line 2) | l15(t,e){}
method o15 (line 2) | o15(t,e,i){!function(t,e,i){var r=e.un();if(r instanceof uf||Aa(r,Km()...
method p15 (line 2) | p15(t,e){}
method q15 (line 2) | q15(t,e){}
class uv (line 2) | class uv{constructor(t){this.s1d_1=t}*t1d(t,e,i){var r,n=this.s1d_1.h1d_...
method constructor (line 2) | constructor(t){this.s1d_1=t}
method t1d (line 2) | *t1d(t,e,i){var r,n=this.s1d_1.h1d_1.m1d();return 1===n?r=k_(this.s1d_...
method vb (line 2) | vb(t,e,i){var r=t instanceof mr?t:Va();return this.t1d(r,e instanceof ...
class cv (line 2) | class cv{constructor(t,e){this.h1d_1=e,this.i1d_1=t.k18_1,this.j1d_1=t.w...
method constructor (line 2) | constructor(t,e){this.h1d_1=e,this.i1d_1=t.k18_1,this.j1d_1=t.w18_1,th...
method q1d (line 2) | q1d(){var t,e,i,r,n,a=this.h1d_1.m1d();if(1===a)t=k_(this,!0);else if(...
class dv (line 2) | class dv{}
class fv (line 2) | class fv{constructor(){this.i1c_1=sw(16)}v1d(t,e,i){var r,n=this.i1c_1,a...
method constructor (line 2) | constructor(){this.i1c_1=sw(16)}
method v1d (line 2) | v1d(t,e,i){var r,n=this.i1c_1,a=n.f3(t);if(null==a){var s=sw(2);n.i3(t...
method j1c (line 2) | j1c(t,e,i){var r=this.w1d(t,e);if(null!=r)return r;var n=i();return th...
method w1d (line 2) | w1d(t,e){var i,r=this.i1c_1.f3(t);return null!=(i=null==r?null:r.f3(e ...
class pv (line 2) | class pv{constructor(t){this.x1d_1=t}}
method constructor (line 2) | constructor(t){this.x1d_1=t}
class mv (line 2) | class mv extends _f{constructor(t,e,i,r,n){super(),this.c17_1=t,this.d17...
method constructor (line 2) | constructor(t,e,i,r,n){super(),this.c17_1=t,this.d17_1=e,this.e17_1=i,...
method z18 (line 2) | z18(){return this.c17_1}
method bq (line 2) | bq(){return this.f17_1}
method a19 (line 2) | a19(){return new cv(this.c17_1.v16_1,this.e17_1).q1d()}
method lp (line 2) | lp(t){try{if(!(t instanceof Md)||this.c17_1.v16_1.q18_1)return t.vl(th...
method mp (line 2) | mp(t){var e,i,r=I_(this.c17_1,t);switch(this.e17_1.l17_1.p1c(t),this.e...
method np (line 2) | np(t){0===t.wn()&&d_(t,this.c17_1)&&function(t,e){for(;-1!==t.dq(e););...
method yo (line 2) | yo(){var t=this.j17_1,e=null==t?null:t.q1b_1;return!(null!=e&&e||this....
method zo (line 2) | zo(){return null}
method yp (line 2) | yp(t,e,i,r){var n=this.d17_1.equals(V_())&&!(1&e);n&&this.e17_1.l17_1....
method dq (line 2) | dq(t){var e,i,r,n;switch(this.d17_1.m3_1){case 0:e=function(t,e){for(v...
method ap (line 2) | ap(){return this.e17_1.m1e()}
method bp (line 2) | bp(){var t=this.e17_1.n1e();return Jn(t,Yn(Bn(t)))||this.e17_1.a1c("Fa...
method cp (line 2) | cp(){var t=this.e17_1.n1e();return Jn(t,Yn(Vn(t)))||this.e17_1.a1c("Fa...
method dp (line 2) | dp(){var t=this.e17_1.n1e();return Jn(t,Yn(Wn(t)))||this.e17_1.a1c("Fa...
method ep (line 2) | ep(){return this.e17_1.n1e()}
method fp (line 2) | fp(){var t,e=this.e17_1;t:{var i=e.p1d();try{t=pl(i);break t}catch(t){...
method gp (line 2) | gp(){var t,e=this.e17_1;t:{var i=e.p1d();try{t=pl(i);break t}catch(t){...
method hp (line 2) | hp(){var t=this.e17_1.p1d();return 1!==t.length&&this.e17_1.a1c("Expec...
method ip (line 2) | ip(){return this.i17_1.k18_1?this.e17_1.f1e():this.e17_1.o1d()}
method jp (line 2) | jp(t){return R_(t)?new gv(this.e17_1,this.c17_1):super.jp(t)}
class gv (line 2) | class gv extends _f{constructor(t,e){super(),this.o1e_1=t,this.p1e_1=e.b...
method constructor (line 2) | constructor(t,e){super(),this.o1e_1=t,this.p1e_1=e.bq()}
method bq (line 2) | bq(){return this.p1e_1}
method dq (line 2) | dq(t){throw Ge.d4(Ma("unsupported"))}
method dp (line 2) | dp(){var t,e,i,r,n=this.o1e_1;t:{var a=n.p1d();try{null==(null==(r=fun...
method ep (line 2) | ep(){var t,e,i,r,n=this.o1e_1;t:{var a=n.p1d();try{null==(null==(r=sc(...
method bp (line 2) | bp(){var t,e,i,r,n=this.o1e_1;t:{var a=n.p1d();try{null==(null==(r=fun...
method cp (line 2) | cp(){var t,e,i,r,n=this.o1e_1;t:{var a=n.p1d();try{null==(null==(r=fun...
class bv (line 2) | class bv extends xf{static q1e(t,e,i,r){var n=this.fq();n.x1c_1=t,n.y1c_...
method q1e (line 2) | static q1e(t,e,i,r){var n=this.fq();n.x1c_1=t,n.y1c_1=e,n.z1c_1=i,n.a1...
method z18 (line 2) | z18(){return this.y1c_1}
method g1d (line 2) | static g1d(t,e,i,r){return this.q1e(function(t,e){return e.v16_1.m18_1...
method bq (line 2) | bq(){return this.b1d_1}
method jr (line 2) | jr(t,e){return this.c1d_1.i18_1}
method er (line 2) | er(t,e){if(this.z18().v16_1.q18_1)t.ul(this,e);else{var i,r=t instance...
method mp (line 2) | mp(t){var e=I_(this.y1c_1,t);0!==e.j1e_1&&(this.x1c_1.r1a(e.j1e_1),thi...
method np (line 2) | np(t){0!==this.z1c_1.k1e_1&&(this.x1c_1.n1a(),this.x1c_1.p1a(),this.x1...
method gq (line 2) | gq(t,e){switch(this.z1c_1.m3_1){case 1:this.x1c_1.l1a_1||this.x1c_1.r1...
method fr (line 2) | fr(t,e,i,r){(null!=r||this.c1d_1.n18_1)&&super.fr(t,e,i,r)}
method sq (line 2) | sq(t){var e,i;if(R_(t)){var r;if(this.x1c_1 instanceof tv)r=this.x1c_1...
method iq (line 2) | iq(){this.x1c_1.t1a("null")}
method jq (line 2) | jq(t){this.d1d_1?this.rq(t.toString()):this.x1c_1.c1b(t)}
method kq (line 2) | kq(t){this.d1d_1?this.rq(t.toString()):this.x1c_1.x1a(t)}
method lq (line 2) | lq(t){this.d1d_1?this.rq(t.toString()):this.x1c_1.z1a(t)}
method mq (line 2) | mq(t){this.d1d_1?this.rq(t.toString()):this.x1c_1.a1b(t)}
method nq (line 2) | nq(t){this.d1d_1?this.rq(t.toString()):this.x1c_1.b1b(t)}
method oq (line 2) | oq(t){if(this.d1d_1?this.rq(t.toString()):this.x1c_1.v1a(t),!this.c1d_...
method pq (line 2) | pq(t){if(this.d1d_1?this.rq(t.toString()):this.x1c_1.w1a(t),!this.c1d_...
method qq (line 2) | qq(t){this.rq(yn(t))}
method rq (line 2) | rq(t){return this.x1c_1.d1b(t)}
class vv (line 2) | class vv extends Vp{constructor(t,e,i){i=i===E?null:i,super(),this.t1e_1...
method constructor (line 2) | constructor(t,e,i){i=i===E?null:i,super(),this.t1e_1=t,this.u1e_1=e,th...
method z18 (line 2) | z18(){return this.t1e_1}
method c3 (line 2) | c3(){return this.u1e_1}
method bq (line 2) | bq(){return this.z18().bq()}
method y1e (line 2) | y1e(){var t=this.c13(),e=null==t?null:this.z1e(t);return null==e?this....
method x1e (line 2) | x1e(t){return this.e13()+"."+t}
method a19 (line 2) | a19(){return this.y1e()}
method lp (line 2) | lp(t){var e;if(t instanceof Md&&!this.z18().v16_1.q18_1){var i=E_(t.tl...
method d13 (line 2) | d13(t,e){return e}
method mp (line 2) | mp(t){var e,i=this.y1e(),r=t.un();if(Aa(r,Qm())||r instanceof uf){var ...
method np (line 2) | np(t){}
method yo (line 2) | yo(){return!(this.y1e()instanceof Ib)}
method a1f (line 2) | a1f(t){return!(this.z1e(t)===Fv())}
method g13 (line 2) | g13(t){return this.a1f(null!=t&&"string"==typeof t?t:Va())}
method b1f (line 2) | b1f(t){var e,i;t:{var r=this.z1e(t);if(!(r instanceof qb))throw r_(-1,...
method h13 (line 2) | h13(t){return this.b1f(null!=t&&"string"==typeof t?t:Va())}
method c1f (line 2) | c1f(t){var e;t:{var i=this.z1e(t);if(!(i instanceof qb))throw r_(-1,"E...
method i13 (line 2) | i13(t){return this.c1f(null!=t&&"string"==typeof t?t:Va())}
method d1f (line 2) | d1f(t){var e;t:{var i=this.z1e(t);if(!(i instanceof qb))throw r_(-1,"E...
method j13 (line 2) | j13(t){return this.d1f(null!=t&&"string"==typeof t?t:Va())}
method e1f (line 2) | e1f(t){var e;t:{var i=this.z1e(t);if(!(i instanceof qb))throw r_(-1,"E...
method k13 (line 2) | k13(t){return this.e1f(null!=t&&"string"==typeof t?t:Va())}
method f1f (line 2) | f1f(t){var e;t:{var i=this.z1e(t);if(!(i instanceof qb))throw r_(-1,"E...
method l13 (line 2) | l13(t){return this.f1f(null!=t&&"string"==typeof t?t:Va())}
method g1f (line 2) | g1f(t){var e,i;t:{var r=this.z1e(t);if(!(r instanceof qb))throw r_(-1,...
method m13 (line 2) | m13(t){return this.g1f(null!=t&&"string"==typeof t?t:Va())}
method h1f (line 2) | h1f(t){var e,i;t:{var r=this.z1e(t);if(!(r instanceof qb))throw r_(-1,...
method n13 (line 2) | n13(t){return this.h1f(null!=t&&"string"==typeof t?t:Va())}
method i1f (line 2) | i1f(t){var e;t:{var i=this.z1e(t);if(!(i instanceof qb))throw r_(-1,"E...
method o13 (line 2) | o13(t){return this.i1f(null!=t&&"string"==typeof t?t:Va())}
method j1f (line 2) | j1f(t){var e=this.z1e(t);if(!(e instanceof qb))throw r_(-1,"Expected "...
method p13 (line 2) | p13(t){return this.j1f(null!=t&&"string"==typeof t?t:Va())}
method k1f (line 2) | k1f(t,e){var i;if(R_(e)){var r=this.z18(),n=this.z1e(t),a=e.tn();if(!(...
method q13 (line 2) | q13(t,e){return this.k1f(null!=t&&"string"==typeof t?t:Va(),e)}
method jp (line 2) | jp(t){return null!=this.c13()?super.jp(t):new yv(this.z18(),this.c3(),...
class _v (line 2) | class _v extends vv{constructor(t,e,i,r){r=r===E?null:r,super(t,e,i=i===...
method constructor (line 2) | constructor(t,e,i,r){r=r===E?null:r,super(t,e,i=i===E?null:i),this.r1f...
method c3 (line 2) | c3(){return this.r1f_1}
method dq (line 2) | dq(t){t:for(;this.t1f_1<t.wn();){var e=this.t1f_1;this.t1f_1=e+1|0;var...
method yo (line 2) | yo(){return!this.u1f_1&&super.yo()}
method y12 (line 2) | y12(t,e){var i=p_(t,this.z18()),r=t.yn(e);if(null==i){if(!this.w1e_1.t...
method z1e (line 2) | z1e(t){return $l(this.c3(),t)}
method v1f (line 2) | v1f(t){return this.c3().d19(t)}
method mp (line 2) | mp(t){if(t===this.s1f_1){var e=this.z18(),i=this.y1e(),r=this.s1f_1.tn...
method np (line 2) | np(t){if(!!d_(t,this.z18()
Copy disabled (too large)
Download .json
Condensed preview — 538 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,186K chars).
[
{
"path": ".gitignore",
"chars": 187,
"preview": ".idea\nheroku-addressbook.sh\nheroku-numbers.sh\nheroku-tweets.sh\nheroku-encoder.sh\nbuild.sh\nbuild-fullstack.sh\n*.imp\n*.ipr"
},
{
"path": "LICENSE",
"chars": 1081,
"preview": "The MIT License\n\nCopyright (c) 2017-present Robert Jaros\n\nPermission is hereby granted, free of charge, to any person ob"
},
{
"path": "README.md",
"chars": 3615,
"preview": "# KVision examples\n\nA set of examples for [KVision](https://github.com/rjaros/kvision) framework.\n\n## Mini template\n\nA m"
},
{
"path": "addressbook/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "addressbook/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "addressbook/README.md",
"chars": 402,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "addressbook/build.gradle.kts",
"chars": 1429,
"preview": "plugins {\n val kotlinVersion: String by System.getProperties()\n kotlin(\"plugin.serialization\") version kotlinVersi"
},
{
"path": "addressbook/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "addressbook/gradle.properties",
"chars": 173,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\n#Dependencies\nsystemProp.kvisionVersion=9.5.0\n\norg.gradle.parallel=true\norg.gra"
},
{
"path": "addressbook/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "addressbook/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "addressbook/settings.gradle.kts",
"chars": 152,
"preview": "pluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCentral()\n mavenLocal()\n }\n}\nr"
},
{
"path": "addressbook/src/jsMain/kotlin/com/example/App.kt",
"chars": 1362,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapModule\nimport io.kvision.CoreModule\nimport"
},
{
"path": "addressbook/src/jsMain/kotlin/com/example/EditPanel.kt",
"chars": 2195,
"preview": "package com.example\n\nimport io.kvision.core.Container\nimport io.kvision.core.onEvent\nimport io.kvision.form.check.CheckB"
},
{
"path": "addressbook/src/jsMain/kotlin/com/example/ListPanel.kt",
"chars": 4587,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.Container\nimport io.kvision.core.FontStyle"
},
{
"path": "addressbook/src/jsMain/kotlin/com/example/Model.kt",
"chars": 3758,
"preview": "package com.example\n\nimport kotlinx.browser.localStorage\nimport kotlinx.serialization.Serializable\nimport kotlinx.serial"
},
{
"path": "addressbook/src/jsMain/resources/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "addressbook/src/jsMain/resources/modules/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook/src/jsMain/resources/modules/i18n/messages-en.po",
"chars": 716,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook/src/jsMain/resources/modules/i18n/messages-pl.po",
"chars": 808,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook/src/jsTest/kotlin/test/com/example/AppSpec.kt",
"chars": 243,
"preview": "package test.com.example\n\nimport io.kvision.test.DomSpec\nimport kotlin.test.Test\nimport kotlin.test.assertTrue\n\nclass Ap"
},
{
"path": "addressbook/src/jsTest/resources/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "addressbook/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "addressbook/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "addressbook/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "addressbook/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "addressbook/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "addressbook-fullstack-ktor/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "addressbook-fullstack-ktor/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "addressbook-fullstack-ktor/README.md",
"chars": 819,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "addressbook-fullstack-ktor/build.gradle.kts",
"chars": 4573,
"preview": "import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi\n\nplugins {\n val kotlinVersion: String by System."
},
{
"path": "addressbook-fullstack-ktor/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "addressbook-fullstack-ktor/gradle.properties",
"chars": 456,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\nsystemProp.kspVersion=2.3.6\nsystemProp.kiluaRpcVersion=0.0.43\n#Dependencies\nsys"
},
{
"path": "addressbook-fullstack-ktor/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "addressbook-fullstack-ktor/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "addressbook-fullstack-ktor/logs/ktor.log",
"chars": 3276,
"preview": "[2023-08-13 15:32:37,087]-[main] INFO Application - Autoreload is disabled because the development mode is off.\n[2023-0"
},
{
"path": "addressbook-fullstack-ktor/settings.gradle.kts",
"chars": 167,
"preview": "pluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCentral()\n mavenLocal()\n }\n}\nr"
},
{
"path": "addressbook-fullstack-ktor/src/commonMain/kotlin/com/example/Model.kt",
"chars": 743,
"preview": "@file:UseContextualSerialization(LocalDateTime::class)\n\npackage com.example\n\nimport kotlinx.serialization.Serializable\ni"
},
{
"path": "addressbook-fullstack-ktor/src/commonMain/kotlin/com/example/Service.kt",
"chars": 660,
"preview": "package com.example\n\nimport dev.kilua.rpc.annotations.RpcService\nimport kotlinx.serialization.Serializable\n\n@Serializabl"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/App.kt",
"chars": 1649,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapModule\nimport io.kvision.CoreModule\nimport"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/EditPanel.kt",
"chars": 3582,
"preview": "package com.example\n\nimport io.kvision.core.onEvent\nimport io.kvision.form.FormPanel\nimport io.kvision.form.check.CheckB"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/ListPanel.kt",
"chars": 3779,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.FontStyle\nimport io.kvision.core.onEvent\ni"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/MainPanel.kt",
"chars": 788,
"preview": "package com.example\n\nimport io.kvision.core.JustifyContent\nimport io.kvision.html.ButtonStyle\nimport io.kvision.html.but"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/Model.kt",
"chars": 2223,
"preview": "package com.example\n\nimport dev.kilua.rpc.getService\nimport io.kvision.state.ObservableList\nimport io.kvision.state.Obse"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/kotlin/com/example/Security.kt",
"chars": 6087,
"preview": "package com.example\n\nimport dev.kilua.rpc.SecurityException\nimport io.kvision.core.onEvent\nimport io.kvision.form.FormPa"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/resources/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/resources/modules/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages-en.po",
"chars": 2441,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages-pl.po",
"chars": 2500,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-ktor/src/jsMain/resources/modules/i18n/messages.pot",
"chars": 2444,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Dao.kt",
"chars": 908,
"preview": "package com.example\n\nimport org.jetbrains.exposed.sql.ReferenceOption\nimport org.jetbrains.exposed.sql.Table\n\nobject Add"
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Db.kt",
"chars": 3634,
"preview": "package com.example\n\nimport com.axiomalaska.jdbc.NamedParameterPreparedStatement\nimport com.zaxxer.hikari.HikariConfig\ni"
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Main.kt",
"chars": 3060,
"preview": "package com.example\n\nimport com.example.Db.dbQuery\nimport dev.kilua.rpc.getServiceManager\nimport dev.kilua.rpc.initRpc\ni"
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/kotlin/com/example/Service.kt",
"chars": 6511,
"preview": "package com.example\n\nimport com.example.Db.dbQuery\nimport com.example.Db.queryList\nimport com.github.andrewoma.kwery.cor"
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/resources/application.conf",
"chars": 268,
"preview": "ktor {\n deployment {\n port = 8080\n watch = [build/classes/kotlin/jvm/main]\n }\n\n application {\n modules = [co"
},
{
"path": "addressbook-fullstack-ktor/src/jvmMain/resources/logback.xml",
"chars": 1281,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration scan=\"true\" scanPeriod=\"15 seconds\" debug=\"false\">\n <appender n"
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/proxy.js",
"chars": 404,
"preview": "if (config.devServer) {\n config.devServer.proxy = [\n {\n context: [\"/rpc/*\", \"/rpcsse/*\"],\n "
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "addressbook-fullstack-ktor/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "addressbook-fullstack-spring-boot/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "addressbook-fullstack-spring-boot/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "addressbook-fullstack-spring-boot/README.md",
"chars": 819,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "addressbook-fullstack-spring-boot/application/build.gradle.kts",
"chars": 399,
"preview": "plugins {\n kotlin(\"jvm\")\n id(\"org.springframework.boot\")\n}\n\ndependencies {\n implementation(rootProject)\n imp"
},
{
"path": "addressbook-fullstack-spring-boot/build.gradle.kts",
"chars": 4153,
"preview": "import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi\n\nplugins {\n val kotlinVersion: String by System."
},
{
"path": "addressbook-fullstack-spring-boot/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "addressbook-fullstack-spring-boot/gradle.properties",
"chars": 404,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\nsystemProp.kspVersion=2.3.6\nsystemProp.kiluaRpcVersion=0.0.43\nsystemProp.spring"
},
{
"path": "addressbook-fullstack-spring-boot/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "addressbook-fullstack-spring-boot/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "addressbook-fullstack-spring-boot/settings.gradle.kts",
"chars": 340,
"preview": "@file:Suppress(\"UnstableApiUsage\")\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCent"
},
{
"path": "addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Model.kt",
"chars": 574,
"preview": "@file:UseContextualSerialization(OffsetDateTime::class)\n\npackage com.example\n\nimport kotlinx.serialization.Serializable\n"
},
{
"path": "addressbook-fullstack-spring-boot/src/commonMain/kotlin/com/example/Service.kt",
"chars": 660,
"preview": "package com.example\n\nimport dev.kilua.rpc.annotations.RpcService\nimport kotlinx.serialization.Serializable\n\n@Serializabl"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/App.kt",
"chars": 1649,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapModule\nimport io.kvision.CoreModule\nimport"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/EditPanel.kt",
"chars": 3582,
"preview": "package com.example\n\nimport io.kvision.core.onEvent\nimport io.kvision.form.FormPanel\nimport io.kvision.form.check.CheckB"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/ListPanel.kt",
"chars": 3779,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.FontStyle\nimport io.kvision.core.onEvent\ni"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/MainPanel.kt",
"chars": 788,
"preview": "package com.example\n\nimport io.kvision.core.JustifyContent\nimport io.kvision.html.ButtonStyle\nimport io.kvision.html.but"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/Model.kt",
"chars": 2223,
"preview": "package com.example\n\nimport dev.kilua.rpc.getService\nimport io.kvision.state.ObservableList\nimport io.kvision.state.Obse"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/kotlin/com/example/Security.kt",
"chars": 6246,
"preview": "package com.example\n\nimport dev.kilua.rpc.SecurityException\nimport io.kvision.core.onEvent\nimport io.kvision.form.FormPa"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/resources/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/resources/modules/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages-en.po",
"chars": 2441,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages-pl.po",
"chars": 2500,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot/src/jsMain/resources/modules/i18n/messages.pot",
"chars": 2458,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Main.kt",
"chars": 1279,
"preview": "package com.example\n\nimport dev.kilua.rpc.getAllServiceManagers\nimport io.kvision.remote.registerRemoteTypes\nimport io.r"
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Security.kt",
"chars": 6024,
"preview": "package com.example\n\nimport dev.kilua.rpc.getServiceManager\nimport dev.kilua.rpc.serviceMatchers\nimport kotlinx.serializ"
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/kotlin/com/example/Service.kt",
"chars": 5794,
"preview": "package com.example\n\nimport io.kvision.types.OffsetDateTime\nimport kotlinx.coroutines.flow.toList\nimport kotlinx.corouti"
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/resources/application.yml",
"chars": 293,
"preview": "spring:\n r2dbc:\n url: r2dbc:h2:file:////tmp/example_spring?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE\n\nserver:"
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/resources/logback.xml",
"chars": 345,
"preview": "<configuration>\n\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n <encoder>\n <pattern>%d "
},
{
"path": "addressbook-fullstack-spring-boot/src/jvmMain/resources/schema.sql",
"chars": 619,
"preview": "CREATE TABLE IF NOT EXISTS users (\n id serial NOT NULL,\n username varchar(255) NOT NULL,\n password varchar(255) NOT N"
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/proxy.js",
"chars": 404,
"preview": "if (config.devServer) {\n config.devServer.proxy = [\n {\n context: [\"/rpc/*\", \"/rpcsse/*\"],\n "
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "addressbook-fullstack-spring-boot/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/README.md",
"chars": 982,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/application/build.gradle.kts",
"chars": 643,
"preview": "plugins {\n kotlin(\"jvm\")\n id(\"org.springframework.boot\")\n}\n\ndependencies {\n implementation(rootProject)\n imp"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/build.gradle.kts",
"chars": 4339,
"preview": "import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi\n\nplugins {\n val kotlinVersion: String by System."
},
{
"path": "addressbook-fullstack-spring-boot-oauth/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/gradle.properties",
"chars": 404,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\nsystemProp.kspVersion=2.3.6\nsystemProp.kiluaRpcVersion=0.0.43\nsystemProp.spring"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "addressbook-fullstack-spring-boot-oauth/settings.gradle.kts",
"chars": 346,
"preview": "@file:Suppress(\"UnstableApiUsage\")\n\npluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCent"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/commonMain/kotlin/com/example/Model.kt",
"chars": 574,
"preview": "@file:UseContextualSerialization(OffsetDateTime::class)\n\npackage com.example\n\nimport kotlinx.serialization.Serializable\n"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/commonMain/kotlin/com/example/Service.kt",
"chars": 531,
"preview": "package com.example\n\nimport dev.kilua.rpc.annotations.RpcService\nimport kotlinx.serialization.Serializable\n\n@Serializabl"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/App.kt",
"chars": 1649,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapModule\nimport io.kvision.CoreModule\nimport"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/EditPanel.kt",
"chars": 3582,
"preview": "package com.example\n\nimport io.kvision.core.onEvent\nimport io.kvision.form.FormPanel\nimport io.kvision.form.check.CheckB"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/ListPanel.kt",
"chars": 3779,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.FontStyle\nimport io.kvision.core.onEvent\ni"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/MainPanel.kt",
"chars": 788,
"preview": "package com.example\n\nimport io.kvision.core.JustifyContent\nimport io.kvision.html.ButtonStyle\nimport io.kvision.html.but"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/Model.kt",
"chars": 1880,
"preview": "package com.example\n\nimport dev.kilua.rpc.getService\nimport io.kvision.state.ObservableList\nimport io.kvision.state.Obse"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/kotlin/com/example/Security.kt",
"chars": 2412,
"preview": "package com.example\n\nimport dev.kilua.rpc.SecurityException\nimport io.kvision.html.Button\nimport io.kvision.html.ButtonS"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/i18n/messages-en.po",
"chars": 2441,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/i18n/messages-pl.po",
"chars": 2500,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jsMain/resources/modules/i18n/messages.pot",
"chars": 2458,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/kotlin/com/example/Main.kt",
"chars": 1708,
"preview": "package com.example\n\nimport dev.kilua.rpc.getAllServiceManagers\nimport io.kvision.remote.registerRemoteTypes\nimport io.r"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/kotlin/com/example/Security.kt",
"chars": 7234,
"preview": "package com.example\n\nimport dev.kilua.rpc.RpcServiceManager\nimport dev.kilua.rpc.serviceMatchers\nimport kotlinx.serializ"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/kotlin/com/example/Service.kt",
"chars": 5695,
"preview": "package com.example\n\nimport io.kvision.types.OffsetDateTime\nimport kotlinx.coroutines.flow.toList\nimport kotlinx.corouti"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/application.yml",
"chars": 693,
"preview": "spring:\n r2dbc:\n url: r2dbc:h2:file:////tmp/example_spring?options=DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE\n securi"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/logback.xml",
"chars": 345,
"preview": "<configuration>\n\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n <encoder>\n <pattern>%d "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/src/jvmMain/resources/schema.sql",
"chars": 585,
"preview": "CREATE TABLE IF NOT EXISTS users (\n id serial NOT NULL,\n username varchar(255) NOT NULL,\n name varchar(255) NOT NULL,"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/proxy.js",
"chars": 436,
"preview": "if (config.devServer) {\n config.devServer.proxy = [\n {\n context: [\"/rpc/*\", \"/rpcsse/*\"],\n "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "addressbook-fullstack-spring-boot-oauth/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "addressbook-tabulator/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "addressbook-tabulator/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "addressbook-tabulator/README.md",
"chars": 402,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "addressbook-tabulator/build.gradle.kts",
"chars": 1433,
"preview": "plugins {\n val kotlinVersion: String by System.getProperties()\n kotlin(\"plugin.serialization\") version kotlinVersi"
},
{
"path": "addressbook-tabulator/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "addressbook-tabulator/gradle.properties",
"chars": 173,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\n#Dependencies\nsystemProp.kvisionVersion=9.5.0\n\norg.gradle.parallel=true\norg.gra"
},
{
"path": "addressbook-tabulator/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "addressbook-tabulator/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "addressbook-tabulator/settings.gradle.kts",
"chars": 162,
"preview": "pluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCentral()\n mavenLocal()\n }\n}\nr"
},
{
"path": "addressbook-tabulator/src/jsMain/kotlin/com/example/App.kt",
"chars": 1508,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapModule\nimport io.kvision.CoreModule\nimport"
},
{
"path": "addressbook-tabulator/src/jsMain/kotlin/com/example/EditPanel.kt",
"chars": 2195,
"preview": "package com.example\n\nimport io.kvision.core.Container\nimport io.kvision.core.onEvent\nimport io.kvision.form.check.CheckB"
},
{
"path": "addressbook-tabulator/src/jsMain/kotlin/com/example/ListPanel.kt",
"chars": 3983,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.Container\nimport io.kvision.core.JustifyCo"
},
{
"path": "addressbook-tabulator/src/jsMain/kotlin/com/example/Model.kt",
"chars": 3562,
"preview": "package com.example\n\nimport io.kvision.state.ObservableValue\nimport kotlinx.browser.localStorage\nimport kotlinx.serializ"
},
{
"path": "addressbook-tabulator/src/jsMain/resources/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "addressbook-tabulator/src/jsMain/resources/modules/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook-tabulator/src/jsMain/resources/modules/i18n/messages-en.po",
"chars": 716,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-tabulator/src/jsMain/resources/modules/i18n/messages-pl.po",
"chars": 808,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "addressbook-tabulator/src/jsTest/kotlin/test/com/example/AppSpec.kt",
"chars": 243,
"preview": "package test.com.example\n\nimport io.kvision.test.DomSpec\nimport kotlin.test.Test\nimport kotlin.test.assertTrue\n\nclass Ap"
},
{
"path": "addressbook-tabulator/src/jsTest/resources/css/kvapp.css",
"chars": 0,
"preview": ""
},
{
"path": "addressbook-tabulator/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "addressbook-tabulator/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "addressbook-tabulator/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "addressbook-tabulator/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "addressbook-tabulator/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "addressbook-tabulator/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "desktop/.gettext.json",
"chars": 658,
"preview": "{\n \"js\": {\n \"parsers\": [\n {\n \"expression\": \"tr\",\n \"arguments\": {\n \"text\": 0\n }\n "
},
{
"path": "desktop/.gitignore",
"chars": 53,
"preview": ".*/\nbuild/\nout/\n/refresh.sh\n*.imp\n*.ipr\n*.iws\n*.idea\n"
},
{
"path": "desktop/README.md",
"chars": 402,
"preview": "## Gradle Tasks\n\n### Resource Processing\n* generatePotFile - Generates a `src/jsMain/resources/modules/i18n/messages.pot"
},
{
"path": "desktop/build.gradle.kts",
"chars": 1366,
"preview": "plugins {\n val kotlinVersion: String by System.getProperties()\n kotlin(\"plugin.serialization\") version kotlinVersi"
},
{
"path": "desktop/gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "desktop/gradle.properties",
"chars": 173,
"preview": "#Plugins\nsystemProp.kotlinVersion=2.3.20\n#Dependencies\nsystemProp.kvisionVersion=9.5.0\n\norg.gradle.parallel=true\norg.gra"
},
{
"path": "desktop/gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "desktop/gradlew.bat",
"chars": 2803,
"preview": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \""
},
{
"path": "desktop/settings.gradle.kts",
"chars": 148,
"preview": "pluginManagement {\n repositories {\n gradlePluginPortal()\n mavenCentral()\n mavenLocal()\n }\n}\nr"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/App.kt",
"chars": 5098,
"preview": "package com.example\n\nimport io.kvision.Application\nimport io.kvision.BootstrapCssModule\nimport io.kvision.BootstrapModul"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/Calculator.kt",
"chars": 4351,
"preview": "package com.example\n\nimport io.kvision.core.Border\nimport io.kvision.core.BorderStyle\nimport io.kvision.core.Container\ni"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/DesktopIcon.kt",
"chars": 501,
"preview": "package com.example\n\nimport io.kvision.core.AlignItems\nimport io.kvision.core.WhiteSpace\nimport io.kvision.html.icon\nimp"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/DesktopWindow.kt",
"chars": 2201,
"preview": "package com.example\n\nimport com.example.App.Companion.addTask\nimport com.example.App.Companion.removeTask\nimport io.kvis"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/Paint.kt",
"chars": 15474,
"preview": "package com.example\n\nimport org.w3c.dom.CanvasRenderingContext2D\nimport io.kvision.core.AlignItems\nimport io.kvision.cor"
},
{
"path": "desktop/src/jsMain/kotlin/com/example/TextEditor.kt",
"chars": 920,
"preview": "package com.example\n\nimport io.kvision.core.Container\nimport io.kvision.core.CssSize\nimport io.kvision.core.UNIT\nimport "
},
{
"path": "desktop/src/jsMain/kotlin/com/example/WebBrowser.kt",
"chars": 2270,
"preview": "package com.example\n\nimport io.kvision.core.Container\nimport io.kvision.core.CssSize\nimport io.kvision.core.UNIT\nimport "
},
{
"path": "desktop/src/jsMain/resources/index.html",
"chars": 285,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "desktop/src/jsMain/resources/modules/css/kvapp.css",
"chars": 156,
"preview": "body {\n overflow: hidden;\n}\n\n.stripes {\n background-image: repeating-linear-gradient(145deg, #ccc, #ccc 5px, #dbdb"
},
{
"path": "desktop/src/jsTest/kotlin/test/com/example/AppSpec.kt",
"chars": 243,
"preview": "package test.com.example\n\nimport io.kvision.test.DomSpec\nimport kotlin.test.Test\nimport kotlin.test.assertTrue\n\nclass Ap"
},
{
"path": "desktop/webpack.config.d/bootstrap.js",
"chars": 255,
"preview": "config.module.rules.push({test: /\\.(woff|woff2)(\\?v=\\d+\\.\\d+\\.\\d+)?$/, type: 'asset'});\nconfig.module.rules.push({test: "
},
{
"path": "desktop/webpack.config.d/css.js",
"chars": 125,
"preview": "config.module.rules.push({ test: /\\.css$/, use: [\"style-loader\", { loader: \"css-loader\", options: {sourceMap: false} } ]"
},
{
"path": "desktop/webpack.config.d/file.js",
"chars": 113,
"preview": "config.module.rules.push(\n {\n test: /\\.(jpe?g|png|gif|svg)$/i,\n type: 'asset/resource'\n }\n);\n"
},
{
"path": "desktop/webpack.config.d/handlebars.js",
"chars": 101,
"preview": "config.module.rules.push(\n {\n test: /\\.hbs$/i,\n loader: 'handlebars-loader'\n }\n);"
},
{
"path": "desktop/webpack.config.d/tailwind.js",
"chars": 132,
"preview": ";(function() {\n config.module.rules.push({\n test: /tailwind\\.css$/,\n use: [ '@tailwindcss/webpack' ]\n "
},
{
"path": "desktop/webpack.config.d/webpack.js",
"chars": 520,
"preview": "config.resolve.modules.push(\"kotlin\");\nif (config.devServer) {\n config.devServer.client = {\n overlay: false\n "
},
{
"path": "docs/addressbook/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "docs/addressbook/main.bundle.js",
"chars": 553990,
"preview": "/*! For license information please see main.bundle.js.LICENSE.txt */\n!function(t,e){\"object\"==typeof exports&&\"object\"=="
},
{
"path": "docs/addressbook/main.bundle.js.LICENSE.txt",
"chars": 237,
"preview": "/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
},
{
"path": "docs/addressbook-tabulator/index.html",
"chars": 490,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "docs/addressbook-tabulator/main.bundle.js",
"chars": 1093574,
"preview": "/*! For license information please see main.bundle.js.LICENSE.txt */\n!function(t,e){\"object\"==typeof exports&&\"object\"=="
},
{
"path": "docs/addressbook-tabulator/main.bundle.js.LICENSE.txt",
"chars": 237,
"preview": "/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
},
{
"path": "docs/desktop/index.html",
"chars": 285,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "docs/desktop/main.bundle.js",
"chars": 852195,
"preview": "/*! For license information please see main.bundle.js.LICENSE.txt */\n!function(t,e){\"object\"==typeof exports&&\"object\"=="
},
{
"path": "docs/desktop/main.bundle.js.LICENSE.txt",
"chars": 426,
"preview": "/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
},
{
"path": "docs/fomantic/index.html",
"chars": 333,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "docs/fomantic/main.bundle.js",
"chars": 1087651,
"preview": "/*! For license information please see main.bundle.js.LICENSE.txt */\n!function(e,t){\"object\"==typeof exports&&\"object\"=="
},
{
"path": "docs/fomantic/main.bundle.js.LICENSE.txt",
"chars": 571,
"preview": "/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Va"
},
{
"path": "docs/helloworld/index.html",
"chars": 293,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-"
},
{
"path": "docs/helloworld/main.bundle.js",
"chars": 119714,
"preview": "!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n():\"function\"==typeof define&&define.am"
}
]
// ... and 338 more files (download for full content)
About this extraction
This page contains the full source code of the rjaros/kvision-examples GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 538 files (10.4 MB), approximately 2.7M tokens, and a symbol index with 42446 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.