@turnipxenon/pineapple 2.1.1 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (751) hide show
  1. package/.env +5 -0
  2. package/.eslintignore +16 -0
  3. package/.eslintrc.cjs +20 -0
  4. package/.gitignore +14 -0
  5. package/.idea/.gitignore +5 -0
  6. package/.idea/codeStyles/Project.xml +65 -0
  7. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  8. package/.idea/discord.xml +7 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +22 -0
  10. package/.idea/modules.xml +8 -0
  11. package/.idea/pineapple.iml +14 -0
  12. package/.idea/vcs.xml +6 -0
  13. package/.idea/workspace.xml +663 -0
  14. package/.npmrc +1 -0
  15. package/.prettierignore +17 -0
  16. package/.prettierrc +9 -0
  17. package/.svelte-kit/__package__/app.postcss +153 -0
  18. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_ares.png +0 -0
  19. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_corn.png +0 -0
  20. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
  21. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
  22. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_tomato.png +0 -0
  23. package/.svelte-kit/__package__/assets/bg_tiled/bg_tiled_turnip.png +0 -0
  24. package/.svelte-kit/__package__/assets/characters/ares/ares_blushing.webp +0 -0
  25. package/.svelte-kit/__package__/assets/characters/ares/ares_disappointed.webp +0 -0
  26. package/.svelte-kit/__package__/assets/characters/ares/ares_happy.webp +0 -0
  27. package/.svelte-kit/__package__/assets/characters/ares/ares_lets_go.webp +0 -0
  28. package/.svelte-kit/__package__/assets/characters/ares/ares_logo.webp +0 -0
  29. package/.svelte-kit/__package__/assets/characters/ares/ares_mad.webp +0 -0
  30. package/.svelte-kit/__package__/assets/characters/ares/ares_neutral.webp +0 -0
  31. package/.svelte-kit/__package__/assets/characters/ares/ares_slightly_mad.webp +0 -0
  32. package/.svelte-kit/__package__/assets/characters/ares/ares_surprised.webp +0 -0
  33. package/.svelte-kit/__package__/assets/characters/ares/ares_yay.webp +0 -0
  34. package/.svelte-kit/__package__/assets/game_dev/footage-chef-wings.gif +0 -0
  35. package/.svelte-kit/__package__/assets/game_dev/footage-depreciation.webm +0 -0
  36. package/.svelte-kit/__package__/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
  37. package/.svelte-kit/__package__/assets/game_dev/screenshot-game-jam-mama.png +0 -0
  38. package/.svelte-kit/__package__/assets/game_dev/screenshot-string-hop.png +0 -0
  39. package/.svelte-kit/__package__/assets/game_dev/screenshot-wet-ass-road.png +0 -0
  40. package/.svelte-kit/__package__/assets/icons/bitbucket-icon.svg +1 -0
  41. package/.svelte-kit/__package__/assets/icons/chat-cursor.svg +47 -0
  42. package/.svelte-kit/__package__/assets/icons/external-link.svg +50 -0
  43. package/.svelte-kit/__package__/assets/icons/github-mark.svg +1 -0
  44. package/.svelte-kit/__package__/assets/icons/link-icon.svg +1 -0
  45. package/.svelte-kit/__package__/assets/icons/linkedin.svg +1 -0
  46. package/.svelte-kit/__package__/assets/icons/mail.svg +1 -0
  47. package/.svelte-kit/__package__/assets/others/seaweed-showcase.mp4 +0 -0
  48. package/.svelte-kit/__package__/assets/others/weaver-footage.gif +0 -0
  49. package/.svelte-kit/__package__/assets/others/window-set.png +0 -0
  50. package/.svelte-kit/__package__/assets/placeholder/placeholder_circle.png +0 -0
  51. package/.svelte-kit/__package__/assets/temp/background-image.jpg +0 -0
  52. package/.svelte-kit/__package__/assets/temp/bitbucket-logo.png +0 -0
  53. package/.svelte-kit/__package__/assets/temp/github-logo.png +0 -0
  54. package/.svelte-kit/__package__/assets/temp/header-hep-cat.mp4 +0 -0
  55. package/.svelte-kit/__package__/assets/temp/header-hep-cat.ogg +0 -0
  56. package/.svelte-kit/__package__/assets/temp/header-hep-cat.webm +0 -0
  57. package/.svelte-kit/__package__/assets/temp/header-pengi.mp4 +0 -0
  58. package/.svelte-kit/__package__/assets/temp/header-pengi.webm +0 -0
  59. package/.svelte-kit/__package__/assets/temp/header-soulwork.mp4 +0 -0
  60. package/.svelte-kit/__package__/assets/temp/header-soulwork.ogg +0 -0
  61. package/.svelte-kit/__package__/assets/temp/header-soulwork.webm +0 -0
  62. package/.svelte-kit/__package__/components/Card.svelte +31 -0
  63. package/.svelte-kit/__package__/components/Card.svelte.d.ts +35 -0
  64. package/.svelte-kit/__package__/components/CarouselElement.svelte +21 -0
  65. package/.svelte-kit/__package__/components/CarouselElement.svelte.d.ts +19 -0
  66. package/.svelte-kit/__package__/components/Chip.svelte +12 -0
  67. package/.svelte-kit/__package__/components/Chip.svelte.d.ts +27 -0
  68. package/.svelte-kit/__package__/components/DialogOverlay.svelte +95 -0
  69. package/.svelte-kit/__package__/components/DialogOverlay.svelte.d.ts +14 -0
  70. package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte +18 -0
  71. package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte.d.ts +18 -0
  72. package/.svelte-kit/__package__/components/LazyAsset.svelte +96 -0
  73. package/.svelte-kit/__package__/components/LazyAsset.svelte.d.ts +20 -0
  74. package/.svelte-kit/__package__/components/LazyAssetType.d.ts +10 -0
  75. package/.svelte-kit/__package__/components/LazyAssetType.js +12 -0
  76. package/.svelte-kit/__package__/components/OnElementVisbilityChanged.d.ts +1 -0
  77. package/.svelte-kit/__package__/components/OnElementVisbilityChanged.js +1 -0
  78. package/.svelte-kit/__package__/components/RandomizedBackground.svelte +64 -0
  79. package/.svelte-kit/__package__/components/RandomizedBackground.svelte.d.ts +16 -0
  80. package/.svelte-kit/__package__/components/RandomizedImage.svelte +37 -0
  81. package/.svelte-kit/__package__/components/RandomizedImage.svelte.d.ts +17 -0
  82. package/.svelte-kit/__package__/components/SocialSection.svelte +160 -0
  83. package/.svelte-kit/__package__/components/SocialSection.svelte.d.ts +29 -0
  84. package/.svelte-kit/__package__/components/StickyElement.svelte +36 -0
  85. package/.svelte-kit/__package__/components/StickyElement.svelte.d.ts +18 -0
  86. package/.svelte-kit/__package__/components/ToggleableContent.svelte +66 -0
  87. package/.svelte-kit/__package__/components/ToggleableContent.svelte.d.ts +19 -0
  88. package/.svelte-kit/__package__/components/ToggleableContentType.d.ts +4 -0
  89. package/.svelte-kit/__package__/components/ToggleableContentType.js +5 -0
  90. package/.svelte-kit/__package__/components/dialog_manager/DialogManager.d.ts +77 -0
  91. package/.svelte-kit/__package__/components/dialog_manager/DialogManager.js +239 -0
  92. package/.svelte-kit/__package__/components/dialog_manager/DialogManagerStore.d.ts +41 -0
  93. package/.svelte-kit/__package__/components/dialog_manager/DialogManagerStore.js +45 -0
  94. package/.svelte-kit/__package__/components/dialog_manager/DialogProcessor.d.ts +13 -0
  95. package/.svelte-kit/__package__/components/dialog_manager/DialogProcessor.js +62 -0
  96. package/.svelte-kit/__package__/components/dialog_manager/DialogUtils.d.ts +5 -0
  97. package/.svelte-kit/__package__/components/dialog_manager/DialogUtils.js +8 -0
  98. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +15 -0
  99. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BTreeUtils.js +34 -0
  100. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.d.ts +4 -0
  101. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.js +1 -0
  102. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorNode.d.ts +3 -0
  103. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorNode.js +1 -0
  104. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorStatus.d.ts +5 -0
  105. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/BehaviorStatus.js +6 -0
  106. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/SelectorNode.d.ts +12 -0
  107. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/core/SelectorNode.js +22 -0
  108. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +5 -0
  109. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionArguments.js +1 -0
  110. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.d.ts +4 -0
  111. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.js +1 -0
  112. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +15 -0
  113. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +220 -0
  114. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionResult.d.ts +5 -0
  115. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionResult.js +1 -0
  116. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.d.ts +8 -0
  117. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.js +15 -0
  118. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionState.d.ts +3 -0
  119. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/ExpressionState.js +1 -0
  120. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts +10 -0
  121. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperandNode.js +15 -0
  122. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperatorNode.d.ts +11 -0
  123. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/OperatorNode.js +30 -0
  124. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.d.ts +6 -0
  125. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.js +21 -0
  126. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.d.ts +9 -0
  127. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.js +19 -0
  128. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandMap.d.ts +9 -0
  129. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/CommandMap.js +18 -0
  130. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.d.ts +15 -0
  131. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.js +24 -0
  132. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.d.ts +20 -0
  133. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.js +32 -0
  134. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts +13 -0
  135. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +25 -0
  136. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/AndOperator.d.ts +7 -0
  137. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/AndOperator.js +15 -0
  138. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.d.ts +7 -0
  139. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.js +14 -0
  140. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.d.ts +7 -0
  141. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.js +12 -0
  142. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.d.ts +7 -0
  143. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.js +12 -0
  144. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.d.ts +7 -0
  145. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.js +12 -0
  146. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.d.ts +7 -0
  147. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.js +12 -0
  148. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.d.ts +7 -0
  149. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.js +12 -0
  150. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.d.ts +7 -0
  151. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.js +13 -0
  152. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.d.ts +17 -0
  153. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.js +32 -0
  154. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.d.ts +9 -0
  155. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.js +47 -0
  156. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OrOperator.d.ts +7 -0
  157. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/OrOperator.js +13 -0
  158. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/XorOperator.d.ts +7 -0
  159. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/XorOperator.js +17 -0
  160. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.d.ts +7 -0
  161. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.js +14 -0
  162. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.d.ts +7 -0
  163. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.js +14 -0
  164. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.d.ts +7 -0
  165. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.js +12 -0
  166. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.d.ts +7 -0
  167. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.js +14 -0
  168. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.d.ts +7 -0
  169. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.js +14 -0
  170. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.d.ts +4 -0
  171. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.js +1 -0
  172. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.d.ts +6 -0
  173. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.js +1 -0
  174. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +6 -0
  175. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.js +1 -0
  176. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.d.ts +8 -0
  177. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.js +15 -0
  178. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/BehaviorState.d.ts +5 -0
  179. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/BehaviorState.js +5 -0
  180. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.d.ts +11 -0
  181. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +53 -0
  182. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseNode.d.ts +11 -0
  183. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/ElseNode.js +49 -0
  184. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/EndIfNode.d.ts +11 -0
  185. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/EndIfNode.js +23 -0
  186. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfMode.d.ts +6 -0
  187. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfMode.js +8 -0
  188. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts +12 -0
  189. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IfNode.js +43 -0
  190. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.d.ts +11 -0
  191. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.js +25 -0
  192. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.d.ts +6 -0
  193. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.js +18 -0
  194. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.d.ts +6 -0
  195. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.js +17 -0
  196. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts +10 -0
  197. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +38 -0
  198. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts +11 -0
  199. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +31 -0
  200. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts +8 -0
  201. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +39 -0
  202. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +8 -0
  203. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +40 -0
  204. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts +9 -0
  205. package/.svelte-kit/__package__/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +28 -0
  206. package/.svelte-kit/__package__/components/layouts/LayoutConstants.d.ts +1 -0
  207. package/.svelte-kit/__package__/components/layouts/LayoutConstants.js +1 -0
  208. package/.svelte-kit/__package__/components/layouts/PineappleBaseLayout.svelte +189 -0
  209. package/.svelte-kit/__package__/components/layouts/PineappleBaseLayout.svelte.d.ts +18 -0
  210. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte +95 -0
  211. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte.d.ts +23 -0
  212. package/.svelte-kit/__package__/consts.d.ts +2 -0
  213. package/.svelte-kit/__package__/consts.js +2 -0
  214. package/.svelte-kit/__package__/index.d.ts +9 -0
  215. package/.svelte-kit/__package__/index.js +9 -0
  216. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.d.ts +1 -0
  217. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.js +41 -0
  218. package/.svelte-kit/__package__/scripts/pineapple_fiber/PineappleWeaver.d.ts +9 -0
  219. package/.svelte-kit/__package__/scripts/pineapple_fiber/PineappleWeaver.js +201 -0
  220. package/.svelte-kit/__package__/scripts/util/FileManagement.d.ts +7 -0
  221. package/.svelte-kit/__package__/scripts/util/FileManagement.js +35 -0
  222. package/.svelte-kit/__package__/scripts/util/ManualCheck.d.ts +1 -0
  223. package/.svelte-kit/__package__/scripts/util/ManualCheck.js +28 -0
  224. package/.svelte-kit/__package__/scripts/util/ManualCheckRun.d.ts +1 -0
  225. package/.svelte-kit/__package__/scripts/util/ManualCheckRun.js +6 -0
  226. package/.svelte-kit/__package__/store.d.ts +17 -0
  227. package/.svelte-kit/__package__/store.js +17 -0
  228. package/.svelte-kit/__package__/styles/DefaultGridContainer.css +61 -0
  229. package/.svelte-kit/__package__/styles/global.css +1 -0
  230. package/.svelte-kit/__package__/template/SeaweedTemplate.svelte +907 -0
  231. package/.svelte-kit/__package__/template/SeaweedTemplate.svelte.d.ts +19 -0
  232. package/.svelte-kit/__package__/theme.postcss +116 -0
  233. package/.svelte-kit/__package__/types/BlogBlurbMeta.d.ts +11 -0
  234. package/.svelte-kit/__package__/types/BlogBlurbMeta.js +16 -0
  235. package/.svelte-kit/__package__/types/BreadcrumbData.d.ts +4 -0
  236. package/.svelte-kit/__package__/types/BreadcrumbData.js +1 -0
  237. package/.svelte-kit/__package__/types/pineapple_fiber/DialogDetail.d.ts +6 -0
  238. package/.svelte-kit/__package__/types/pineapple_fiber/DialogDetail.js +1 -0
  239. package/.svelte-kit/__package__/types/pineapple_fiber/DialogState.d.ts +5 -0
  240. package/.svelte-kit/__package__/types/pineapple_fiber/DialogState.js +6 -0
  241. package/.svelte-kit/__package__/types/pineapple_fiber/DialogVariableStore.d.ts +2 -0
  242. package/.svelte-kit/__package__/types/pineapple_fiber/DialogVariableStore.js +20 -0
  243. package/.svelte-kit/__package__/types/pineapple_fiber/PortraitType.d.ts +11 -0
  244. package/.svelte-kit/__package__/types/pineapple_fiber/PortraitType.js +12 -0
  245. package/.svelte-kit/__package__/util/create_go_to_function.d.ts +1 -0
  246. package/.svelte-kit/__package__/util/create_go_to_function.js +5 -0
  247. package/.svelte-kit/__package__/util/stable_random.d.ts +2 -0
  248. package/.svelte-kit/__package__/util/stable_random.js +15 -0
  249. package/.svelte-kit/ambient.d.ts +398 -0
  250. package/.svelte-kit/generated/client/app.js +28 -0
  251. package/.svelte-kit/generated/client/matchers.js +1 -0
  252. package/.svelte-kit/generated/client/nodes/0.js +1 -0
  253. package/.svelte-kit/generated/client/nodes/1.js +1 -0
  254. package/.svelte-kit/generated/client/nodes/2.js +1 -0
  255. package/.svelte-kit/generated/client/nodes/3.js +1 -0
  256. package/.svelte-kit/generated/client/nodes/4.js +1 -0
  257. package/.svelte-kit/generated/client/nodes/5.js +1 -0
  258. package/.svelte-kit/generated/client/nodes/6.js +1 -0
  259. package/.svelte-kit/generated/client-optimized/app.js +28 -0
  260. package/.svelte-kit/generated/client-optimized/matchers.js +1 -0
  261. package/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
  262. package/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
  263. package/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
  264. package/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
  265. package/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
  266. package/.svelte-kit/generated/client-optimized/nodes/5.js +1 -0
  267. package/.svelte-kit/generated/client-optimized/nodes/6.js +1 -0
  268. package/.svelte-kit/generated/root.svelte +64 -0
  269. package/.svelte-kit/generated/server/internal.js +34 -0
  270. package/.svelte-kit/non-ambient.d.ts +25 -0
  271. package/.svelte-kit/output/client/.vite/manifest.json +360 -0
  272. package/.svelte-kit/output/client/_app/immutable/assets/0.B_SY1GJM.css +0 -0
  273. package/.svelte-kit/output/client/_app/immutable/assets/4.B8rxJaIe.css +1 -0
  274. package/.svelte-kit/output/client/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  275. package/.svelte-kit/output/client/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  276. package/.svelte-kit/output/client/_app/immutable/assets/ProgressBar.DmpmGWm6.css +1 -0
  277. package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.DNE9SdPz.css +1 -0
  278. package/.svelte-kit/output/client/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  279. package/.svelte-kit/output/client/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  280. package/.svelte-kit/output/client/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  281. package/.svelte-kit/output/client/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  282. package/.svelte-kit/output/client/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  283. package/.svelte-kit/output/client/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  284. package/.svelte-kit/output/client/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  285. package/.svelte-kit/output/client/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  286. package/.svelte-kit/output/client/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  287. package/.svelte-kit/output/client/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  288. package/.svelte-kit/output/client/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  289. package/.svelte-kit/output/client/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  290. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  291. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  292. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  293. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  294. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  295. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  296. package/.svelte-kit/output/client/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  297. package/.svelte-kit/output/client/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  298. package/.svelte-kit/output/client/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  299. package/.svelte-kit/output/client/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  300. package/.svelte-kit/output/client/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  301. package/.svelte-kit/output/client/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  302. package/.svelte-kit/output/client/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  303. package/.svelte-kit/output/client/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  304. package/.svelte-kit/output/client/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  305. package/.svelte-kit/output/client/_app/immutable/chunks/DialogManagerStore.CGTbGbVf.js +3 -0
  306. package/.svelte-kit/output/client/_app/immutable/chunks/PineappleBaseLayout.BEmcdUbJ.js +1 -0
  307. package/.svelte-kit/output/client/_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.CmgCUata.js +1 -0
  308. package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.Dn5ajBSa.js +98 -0
  309. package/.svelte-kit/output/client/_app/immutable/chunks/entry.DjOrlFF-.js +3 -0
  310. package/.svelte-kit/output/client/_app/immutable/chunks/index.CvmYViMX.js +1 -0
  311. package/.svelte-kit/output/client/_app/immutable/chunks/index.DcUpu3_h.js +4 -0
  312. package/.svelte-kit/output/client/_app/immutable/chunks/index.Duksw40K.js +1 -0
  313. package/.svelte-kit/output/client/_app/immutable/chunks/public.kPGcNb8-.js +1 -0
  314. package/.svelte-kit/output/client/_app/immutable/chunks/scheduler.DXwjFp5a.js +1 -0
  315. package/.svelte-kit/output/client/_app/immutable/chunks/store.lTf0RalW.js +1 -0
  316. package/.svelte-kit/output/client/_app/immutable/chunks/transitions.BzalH0R-.js +3 -0
  317. package/.svelte-kit/output/client/_app/immutable/entry/app.gjWLgY1c.js +7 -0
  318. package/.svelte-kit/output/client/_app/immutable/entry/start.D1fQHQ70.js +1 -0
  319. package/.svelte-kit/output/client/_app/immutable/nodes/0.Dp97myFE.js +1 -0
  320. package/.svelte-kit/output/client/_app/immutable/nodes/1.I7DMxkG1.js +4 -0
  321. package/.svelte-kit/output/client/_app/immutable/nodes/2.BDQ3d4fl.js +1 -0
  322. package/.svelte-kit/output/client/_app/immutable/nodes/3.IkK-Vp1t.js +1 -0
  323. package/.svelte-kit/output/client/_app/immutable/nodes/4.C0MZnSyC.js +1 -0
  324. package/.svelte-kit/output/client/_app/immutable/nodes/5.BjbBqeg5.js +1 -0
  325. package/.svelte-kit/output/client/_app/immutable/nodes/6.ifg4QDG7.js +1 -0
  326. package/.svelte-kit/output/client/_app/version.json +1 -0
  327. package/.svelte-kit/output/client/default-card.png +0 -0
  328. package/.svelte-kit/output/client/favicon.png +0 -0
  329. package/.svelte-kit/output/client/robots.txt +5 -0
  330. package/.svelte-kit/output/prerendered/dependencies/portfolio/__data.json +1 -0
  331. package/.svelte-kit/output/prerendered/pages/portfolio.html +225 -0
  332. package/.svelte-kit/output/server/.vite/manifest.json +324 -0
  333. package/.svelte-kit/output/server/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  334. package/.svelte-kit/output/server/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  335. package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.DNE9SdPz.css +1 -0
  336. package/.svelte-kit/output/server/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  337. package/.svelte-kit/output/server/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  338. package/.svelte-kit/output/server/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  339. package/.svelte-kit/output/server/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  340. package/.svelte-kit/output/server/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  341. package/.svelte-kit/output/server/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  342. package/.svelte-kit/output/server/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  343. package/.svelte-kit/output/server/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  344. package/.svelte-kit/output/server/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  345. package/.svelte-kit/output/server/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  346. package/.svelte-kit/output/server/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  347. package/.svelte-kit/output/server/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  348. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  349. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  350. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  351. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  352. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  353. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  354. package/.svelte-kit/output/server/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  355. package/.svelte-kit/output/server/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  356. package/.svelte-kit/output/server/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  357. package/.svelte-kit/output/server/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  358. package/.svelte-kit/output/server/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  359. package/.svelte-kit/output/server/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  360. package/.svelte-kit/output/server/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  361. package/.svelte-kit/output/server/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  362. package/.svelte-kit/output/server/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  363. package/.svelte-kit/output/server/chunks/DialogManagerStore.js +1269 -0
  364. package/.svelte-kit/output/server/chunks/PineappleBaseLayout.js +94 -0
  365. package/.svelte-kit/output/server/chunks/ProgressBar.svelte_svelte_type_style_lang.js +60 -0
  366. package/.svelte-kit/output/server/chunks/SeaweedTemplate.js +597 -0
  367. package/.svelte-kit/output/server/chunks/exports.js +200 -0
  368. package/.svelte-kit/output/server/chunks/index.js +52 -0
  369. package/.svelte-kit/output/server/chunks/index2.js +83 -0
  370. package/.svelte-kit/output/server/chunks/index3.js +7 -0
  371. package/.svelte-kit/output/server/chunks/internal.js +247 -0
  372. package/.svelte-kit/output/server/chunks/prod-ssr.js +6 -0
  373. package/.svelte-kit/output/server/chunks/public.js +4 -0
  374. package/.svelte-kit/output/server/chunks/ssr.js +308 -0
  375. package/.svelte-kit/output/server/chunks/store.js +292 -0
  376. package/.svelte-kit/output/server/entries/pages/_error.svelte.js +29 -0
  377. package/.svelte-kit/output/server/entries/pages/_layout.svelte.js +279 -0
  378. package/.svelte-kit/output/server/entries/pages/_page.svelte.js +18 -0
  379. package/.svelte-kit/output/server/entries/pages/personal/_layout.svelte.js +13 -0
  380. package/.svelte-kit/output/server/entries/pages/personal/_page.svelte.js +13 -0
  381. package/.svelte-kit/output/server/entries/pages/portfolio/_page.server.ts.js +8 -0
  382. package/.svelte-kit/output/server/entries/pages/portfolio/_page.svelte.js +12 -0
  383. package/.svelte-kit/output/server/entries/pages/portfolio/actual/_page.svelte.js +18 -0
  384. package/.svelte-kit/output/server/index.js +2955 -0
  385. package/.svelte-kit/output/server/internal.js +13 -0
  386. package/.svelte-kit/output/server/manifest-full.js +60 -0
  387. package/.svelte-kit/output/server/manifest.js +52 -0
  388. package/.svelte-kit/output/server/nodes/0.js +8 -0
  389. package/.svelte-kit/output/server/nodes/1.js +8 -0
  390. package/.svelte-kit/output/server/nodes/2.js +8 -0
  391. package/.svelte-kit/output/server/nodes/3.js +8 -0
  392. package/.svelte-kit/output/server/nodes/4.js +8 -0
  393. package/.svelte-kit/output/server/nodes/5.js +10 -0
  394. package/.svelte-kit/output/server/nodes/6.js +8 -0
  395. package/.svelte-kit/tsconfig.json +50 -0
  396. package/.svelte-kit/types/route_meta_data.json +8 -0
  397. package/.svelte-kit/types/src/routes/$types.d.ts +22 -0
  398. package/.svelte-kit/types/src/routes/personal/$types.d.ts +22 -0
  399. package/.svelte-kit/types/src/routes/portfolio/$types.d.ts +24 -0
  400. package/.svelte-kit/types/src/routes/portfolio/actual/$types.d.ts +17 -0
  401. package/.svelte-kit/types/src/routes/portfolio/proxy+page.server.ts +46 -0
  402. package/.svelte-kit/vercel-tmp/index.js +46 -0
  403. package/.svelte-kit/vercel-tmp/manifest.js +52 -0
  404. package/.vercel/output/config.json +34 -0
  405. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/DialogManagerStore.js +1269 -0
  406. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/PineappleBaseLayout.js +94 -0
  407. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/ProgressBar.svelte_svelte_type_style_lang.js +60 -0
  408. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/SeaweedTemplate.js +597 -0
  409. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/exports.js +200 -0
  410. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index.js +52 -0
  411. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index2.js +83 -0
  412. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index3.js +7 -0
  413. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/internal.js +247 -0
  414. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/prod-ssr.js +6 -0
  415. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/public.js +4 -0
  416. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/ssr.js +308 -0
  417. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/store.js +292 -0
  418. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_error.svelte.js +29 -0
  419. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_layout.svelte.js +279 -0
  420. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_page.svelte.js +18 -0
  421. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/personal/_layout.svelte.js +13 -0
  422. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/personal/_page.svelte.js +13 -0
  423. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/portfolio/actual/_page.svelte.js +18 -0
  424. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/index.js +2955 -0
  425. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/0.js +8 -0
  426. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/1.js +8 -0
  427. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/2.js +8 -0
  428. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/3.js +8 -0
  429. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/4.js +8 -0
  430. package/.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/6.js +8 -0
  431. package/.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/index.js +46 -0
  432. package/.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/manifest.js +52 -0
  433. package/.vercel/output/functions/fn.func/.vc-config.json +6 -0
  434. package/.vercel/output/functions/fn.func/package.json +1 -0
  435. package/.vercel/output/static/_app/immutable/assets/0.B_SY1GJM.css +0 -0
  436. package/.vercel/output/static/_app/immutable/assets/4.B8rxJaIe.css +1 -0
  437. package/.vercel/output/static/_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css +1 -0
  438. package/.vercel/output/static/_app/immutable/assets/ProgressBar.CaHExdkQ.css +1 -0
  439. package/.vercel/output/static/_app/immutable/assets/ProgressBar.DmpmGWm6.css +1 -0
  440. package/.vercel/output/static/_app/immutable/assets/SeaweedTemplate.CjiLUExY.css +1 -0
  441. package/.vercel/output/static/_app/immutable/assets/_layout.B_SY1GJM.css +0 -0
  442. package/.vercel/output/static/_app/immutable/assets/_page.B8rxJaIe.css +1 -0
  443. package/.vercel/output/static/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  444. package/.vercel/output/static/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  445. package/.vercel/output/static/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  446. package/.vercel/output/static/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  447. package/.vercel/output/static/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  448. package/.vercel/output/static/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  449. package/.vercel/output/static/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  450. package/.vercel/output/static/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  451. package/.vercel/output/static/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  452. package/.vercel/output/static/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  453. package/.vercel/output/static/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  454. package/.vercel/output/static/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  455. package/.vercel/output/static/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  456. package/.vercel/output/static/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  457. package/.vercel/output/static/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  458. package/.vercel/output/static/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  459. package/.vercel/output/static/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  460. package/.vercel/output/static/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  461. package/.vercel/output/static/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  462. package/.vercel/output/static/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  463. package/.vercel/output/static/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  464. package/.vercel/output/static/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  465. package/.vercel/output/static/_app/immutable/assets/store.y2fRW0z7.css +1 -0
  466. package/.vercel/output/static/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  467. package/.vercel/output/static/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  468. package/.vercel/output/static/_app/immutable/chunks/DialogManagerStore.CGTbGbVf.js +3 -0
  469. package/.vercel/output/static/_app/immutable/chunks/PineappleBaseLayout.Juc0v1b7.js +1 -0
  470. package/.vercel/output/static/_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.CmgCUata.js +1 -0
  471. package/.vercel/output/static/_app/immutable/chunks/SeaweedTemplate.DS-Z3LcL.js +98 -0
  472. package/.vercel/output/static/_app/immutable/chunks/entry.BViziCKK.js +3 -0
  473. package/.vercel/output/static/_app/immutable/chunks/index.CvmYViMX.js +1 -0
  474. package/.vercel/output/static/_app/immutable/chunks/index.DcUpu3_h.js +4 -0
  475. package/.vercel/output/static/_app/immutable/chunks/index.Duksw40K.js +1 -0
  476. package/.vercel/output/static/_app/immutable/chunks/public.kPGcNb8-.js +1 -0
  477. package/.vercel/output/static/_app/immutable/chunks/scheduler.DXwjFp5a.js +1 -0
  478. package/.vercel/output/static/_app/immutable/chunks/store.D47Cl8J0.js +1 -0
  479. package/.vercel/output/static/_app/immutable/chunks/transitions.BzalH0R-.js +3 -0
  480. package/.vercel/output/static/_app/immutable/entry/app.hYBk6umV.js +7 -0
  481. package/.vercel/output/static/_app/immutable/entry/start.bPtW9zOj.js +1 -0
  482. package/.vercel/output/static/_app/immutable/nodes/0.Dp97myFE.js +1 -0
  483. package/.vercel/output/static/_app/immutable/nodes/1.I7DMxkG1.js +4 -0
  484. package/.vercel/output/static/_app/immutable/nodes/2.C7G9m2NJ.js +1 -0
  485. package/.vercel/output/static/_app/immutable/nodes/3.D9NOS4Wy.js +1 -0
  486. package/.vercel/output/static/_app/immutable/nodes/4.C0MZnSyC.js +1 -0
  487. package/.vercel/output/static/_app/immutable/nodes/5.ARW_iEad.js +1 -0
  488. package/.vercel/output/static/_app/immutable/nodes/6.CJVGAs6D.js +1 -0
  489. package/.vercel/output/static/_app/version.json +1 -0
  490. package/.vercel/output/static/default-card.png +0 -0
  491. package/.vercel/output/static/favicon.png +0 -0
  492. package/.vercel/output/static/portfolio/__data.json +1 -0
  493. package/.vercel/output/static/portfolio.html +225 -0
  494. package/.vercel/output/static/robots.txt +5 -0
  495. package/dev/.gitignore +1 -0
  496. package/dev/README.md +9 -0
  497. package/dev/repo_list.txt +1 -0
  498. package/dev/update_all_repos.sh +16 -0
  499. package/dist/app.postcss +153 -0
  500. package/dist/assets/bg_tiled/bg_tiled_ares.png +0 -0
  501. package/dist/assets/bg_tiled/bg_tiled_corn.png +0 -0
  502. package/dist/assets/bg_tiled/bg_tiled_pineapple.png +0 -0
  503. package/dist/assets/bg_tiled/bg_tiled_reinhard.png +0 -0
  504. package/dist/assets/bg_tiled/bg_tiled_tomato.png +0 -0
  505. package/dist/assets/bg_tiled/bg_tiled_turnip.png +0 -0
  506. package/dist/assets/characters/ares/ares_blushing.webp +0 -0
  507. package/dist/assets/characters/ares/ares_disappointed.webp +0 -0
  508. package/dist/assets/characters/ares/ares_happy.webp +0 -0
  509. package/dist/assets/characters/ares/ares_lets_go.webp +0 -0
  510. package/dist/assets/characters/ares/ares_logo.webp +0 -0
  511. package/dist/assets/characters/ares/ares_mad.webp +0 -0
  512. package/dist/assets/characters/ares/ares_neutral.webp +0 -0
  513. package/dist/assets/characters/ares/ares_slightly_mad.webp +0 -0
  514. package/dist/assets/characters/ares/ares_surprised.webp +0 -0
  515. package/dist/assets/characters/ares/ares_yay.webp +0 -0
  516. package/dist/assets/game_dev/footage-chef-wings.gif +0 -0
  517. package/dist/assets/game_dev/footage-depreciation.webm +0 -0
  518. package/dist/assets/game_dev/footage-thinking-of-flowers.webm +0 -0
  519. package/dist/assets/game_dev/screenshot-game-jam-mama.png +0 -0
  520. package/dist/assets/game_dev/screenshot-string-hop.png +0 -0
  521. package/dist/assets/game_dev/screenshot-wet-ass-road.png +0 -0
  522. package/dist/assets/icons/bitbucket-icon.svg +1 -0
  523. package/dist/assets/icons/chat-cursor.svg +47 -0
  524. package/dist/assets/icons/external-link.svg +50 -0
  525. package/dist/assets/icons/github-mark.svg +1 -0
  526. package/dist/assets/icons/link-icon.svg +1 -0
  527. package/dist/assets/icons/linkedin.svg +1 -0
  528. package/dist/assets/icons/mail.svg +1 -0
  529. package/dist/assets/others/seaweed-showcase.mp4 +0 -0
  530. package/dist/assets/others/weaver-footage.gif +0 -0
  531. package/dist/assets/others/window-set.png +0 -0
  532. package/dist/assets/placeholder/placeholder_circle.png +0 -0
  533. package/dist/assets/temp/background-image.jpg +0 -0
  534. package/dist/assets/temp/bitbucket-logo.png +0 -0
  535. package/dist/assets/temp/github-logo.png +0 -0
  536. package/dist/assets/temp/header-hep-cat.mp4 +0 -0
  537. package/dist/assets/temp/header-hep-cat.ogg +0 -0
  538. package/dist/assets/temp/header-hep-cat.webm +0 -0
  539. package/dist/assets/temp/header-pengi.mp4 +0 -0
  540. package/dist/assets/temp/header-pengi.webm +0 -0
  541. package/dist/assets/temp/header-soulwork.mp4 +0 -0
  542. package/dist/assets/temp/header-soulwork.ogg +0 -0
  543. package/dist/assets/temp/header-soulwork.webm +0 -0
  544. package/dist/components/Card.svelte +31 -0
  545. package/dist/components/Card.svelte.d.ts +35 -0
  546. package/dist/components/CarouselElement.svelte +21 -0
  547. package/dist/components/CarouselElement.svelte.d.ts +19 -0
  548. package/dist/components/Chip.svelte +12 -0
  549. package/dist/components/Chip.svelte.d.ts +27 -0
  550. package/dist/components/DialogOverlay.svelte +95 -0
  551. package/dist/components/DialogOverlay.svelte.d.ts +14 -0
  552. package/dist/components/ElementVisbilityDetector.svelte +18 -0
  553. package/dist/components/ElementVisbilityDetector.svelte.d.ts +18 -0
  554. package/dist/components/LazyAsset.svelte +96 -0
  555. package/dist/components/LazyAsset.svelte.d.ts +20 -0
  556. package/dist/components/LazyAssetType.d.ts +10 -0
  557. package/dist/components/LazyAssetType.js +12 -0
  558. package/dist/components/OnElementVisbilityChanged.d.ts +1 -0
  559. package/dist/components/OnElementVisbilityChanged.js +1 -0
  560. package/dist/components/RandomizedBackground.svelte +64 -0
  561. package/dist/components/RandomizedBackground.svelte.d.ts +16 -0
  562. package/dist/components/RandomizedImage.svelte +37 -0
  563. package/dist/components/RandomizedImage.svelte.d.ts +17 -0
  564. package/dist/components/SocialSection.svelte +160 -0
  565. package/dist/components/SocialSection.svelte.d.ts +29 -0
  566. package/dist/components/StickyElement.svelte +36 -0
  567. package/dist/components/StickyElement.svelte.d.ts +18 -0
  568. package/dist/components/ToggleableContent.svelte +66 -0
  569. package/dist/components/ToggleableContent.svelte.d.ts +19 -0
  570. package/dist/components/ToggleableContentType.d.ts +4 -0
  571. package/dist/components/ToggleableContentType.js +5 -0
  572. package/dist/components/dialog_manager/DialogManager.d.ts +77 -0
  573. package/dist/components/dialog_manager/DialogManager.js +239 -0
  574. package/dist/components/dialog_manager/DialogManagerStore.d.ts +41 -0
  575. package/dist/components/dialog_manager/DialogManagerStore.js +45 -0
  576. package/dist/components/dialog_manager/DialogProcessor.d.ts +13 -0
  577. package/dist/components/dialog_manager/DialogProcessor.js +62 -0
  578. package/dist/components/dialog_manager/DialogUtils.d.ts +5 -0
  579. package/dist/components/dialog_manager/DialogUtils.js +8 -0
  580. package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.d.ts +15 -0
  581. package/dist/components/dialog_manager/behavior_tree/core/BTreeUtils.js +34 -0
  582. package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.d.ts +4 -0
  583. package/dist/components/dialog_manager/behavior_tree/core/BaseBehaviorResult.js +1 -0
  584. package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.d.ts +3 -0
  585. package/dist/components/dialog_manager/behavior_tree/core/BehaviorNode.js +1 -0
  586. package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.d.ts +5 -0
  587. package/dist/components/dialog_manager/behavior_tree/core/BehaviorStatus.js +6 -0
  588. package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.d.ts +12 -0
  589. package/dist/components/dialog_manager/behavior_tree/core/SelectorNode.js +22 -0
  590. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.d.ts +5 -0
  591. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionArguments.js +1 -0
  592. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.d.ts +4 -0
  593. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionBehaviorNode.js +1 -0
  594. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.d.ts +15 -0
  595. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionEvaluator.js +220 -0
  596. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.d.ts +5 -0
  597. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionResult.js +1 -0
  598. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.d.ts +8 -0
  599. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionSelectorNode.js +15 -0
  600. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.d.ts +3 -0
  601. package/dist/components/dialog_manager/behavior_tree/expression/ExpressionState.js +1 -0
  602. package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.d.ts +10 -0
  603. package/dist/components/dialog_manager/behavior_tree/expression/OperandNode.js +15 -0
  604. package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.d.ts +11 -0
  605. package/dist/components/dialog_manager/behavior_tree/expression/OperatorNode.js +30 -0
  606. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.d.ts +6 -0
  607. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandExpressionNode.js +21 -0
  608. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.d.ts +9 -0
  609. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandLogicNode.js +19 -0
  610. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.d.ts +9 -0
  611. package/dist/components/dialog_manager/behavior_tree/expression/commands/CommandMap.js +18 -0
  612. package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.d.ts +15 -0
  613. package/dist/components/dialog_manager/behavior_tree/expression/commands/RandomRangeCommand.js +24 -0
  614. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.d.ts +20 -0
  615. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCommand.js +32 -0
  616. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.d.ts +13 -0
  617. package/dist/components/dialog_manager/behavior_tree/expression/commands/VisitedCountCommand.js +25 -0
  618. package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.d.ts +7 -0
  619. package/dist/components/dialog_manager/behavior_tree/expression/operators/AndOperator.js +15 -0
  620. package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.d.ts +7 -0
  621. package/dist/components/dialog_manager/behavior_tree/expression/operators/EqualityOperator.js +14 -0
  622. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.d.ts +7 -0
  623. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanEqualOperator.js +12 -0
  624. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.d.ts +7 -0
  625. package/dist/components/dialog_manager/behavior_tree/expression/operators/GreaterThanOperator.js +12 -0
  626. package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.d.ts +7 -0
  627. package/dist/components/dialog_manager/behavior_tree/expression/operators/InequalityOperator.js +12 -0
  628. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.d.ts +7 -0
  629. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanEqualOperator.js +12 -0
  630. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.d.ts +7 -0
  631. package/dist/components/dialog_manager/behavior_tree/expression/operators/LessThanOperator.js +12 -0
  632. package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.d.ts +7 -0
  633. package/dist/components/dialog_manager/behavior_tree/expression/operators/NegationOperator.js +13 -0
  634. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.d.ts +17 -0
  635. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorLogicNode.js +32 -0
  636. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.d.ts +9 -0
  637. package/dist/components/dialog_manager/behavior_tree/expression/operators/OperatorMap.js +47 -0
  638. package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.d.ts +7 -0
  639. package/dist/components/dialog_manager/behavior_tree/expression/operators/OrOperator.js +13 -0
  640. package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.d.ts +7 -0
  641. package/dist/components/dialog_manager/behavior_tree/expression/operators/XorOperator.js +17 -0
  642. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.d.ts +7 -0
  643. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/DivisionOperator.js +14 -0
  644. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.d.ts +7 -0
  645. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MinusOperator.js +14 -0
  646. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.d.ts +7 -0
  647. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/MultiplicationOperator.js +12 -0
  648. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.d.ts +7 -0
  649. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/PlusOperator.js +14 -0
  650. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.d.ts +7 -0
  651. package/dist/components/dialog_manager/behavior_tree/expression/operators/arithmetic/RemainderDivisionOperator.js +14 -0
  652. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.d.ts +4 -0
  653. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorNode.js +1 -0
  654. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.d.ts +6 -0
  655. package/dist/components/dialog_manager/behavior_tree/line_core/LineBehaviorResult.js +1 -0
  656. package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.d.ts +6 -0
  657. package/dist/components/dialog_manager/behavior_tree/line_core/LineNodeArguments.js +1 -0
  658. package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.d.ts +8 -0
  659. package/dist/components/dialog_manager/behavior_tree/line_core/LineSelectorNode.js +15 -0
  660. package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.d.ts +5 -0
  661. package/dist/components/dialog_manager/behavior_tree/line_processors/BehaviorState.js +5 -0
  662. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.d.ts +11 -0
  663. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseIfNode.js +53 -0
  664. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.d.ts +11 -0
  665. package/dist/components/dialog_manager/behavior_tree/line_processors/ElseNode.js +49 -0
  666. package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.d.ts +11 -0
  667. package/dist/components/dialog_manager/behavior_tree/line_processors/EndIfNode.js +23 -0
  668. package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.d.ts +6 -0
  669. package/dist/components/dialog_manager/behavior_tree/line_processors/IfMode.js +8 -0
  670. package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.d.ts +12 -0
  671. package/dist/components/dialog_manager/behavior_tree/line_processors/IfNode.js +43 -0
  672. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.d.ts +11 -0
  673. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreGuardNode.js +25 -0
  674. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.d.ts +6 -0
  675. package/dist/components/dialog_manager/behavior_tree/line_processors/IgnoreJumpNode.js +18 -0
  676. package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.d.ts +6 -0
  677. package/dist/components/dialog_manager/behavior_tree/line_processors/LineCommentNode.js +17 -0
  678. package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.d.ts +10 -0
  679. package/dist/components/dialog_manager/behavior_tree/line_processors/NormalLineProcessorNode.js +38 -0
  680. package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.d.ts +11 -0
  681. package/dist/components/dialog_manager/behavior_tree/line_processors/SetVariableNode.js +31 -0
  682. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.d.ts +8 -0
  683. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/DeclareCommand.js +39 -0
  684. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +8 -0
  685. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +40 -0
  686. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.d.ts +9 -0
  687. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/UnvisitCommand.js +28 -0
  688. package/dist/components/layouts/LayoutConstants.d.ts +1 -0
  689. package/dist/components/layouts/LayoutConstants.js +1 -0
  690. package/dist/components/layouts/PineappleBaseLayout.svelte +189 -0
  691. package/dist/components/layouts/PineappleBaseLayout.svelte.d.ts +18 -0
  692. package/dist/components/layouts/SeaweedBaseLayout.svelte +95 -0
  693. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +23 -0
  694. package/dist/consts.d.ts +2 -0
  695. package/dist/consts.js +2 -0
  696. package/dist/index.d.ts +9 -0
  697. package/dist/index.js +9 -0
  698. package/dist/scripts/SetDefaultEnvironment.d.ts +1 -0
  699. package/dist/scripts/SetDefaultEnvironment.js +41 -0
  700. package/dist/scripts/pineapple_fiber/PineappleWeaver.d.ts +9 -0
  701. package/dist/scripts/pineapple_fiber/PineappleWeaver.js +201 -0
  702. package/dist/scripts/util/FileManagement.d.ts +7 -0
  703. package/dist/scripts/util/FileManagement.js +35 -0
  704. package/dist/scripts/util/ManualCheck.d.ts +1 -0
  705. package/dist/scripts/util/ManualCheck.js +28 -0
  706. package/dist/scripts/util/ManualCheckRun.d.ts +1 -0
  707. package/dist/scripts/util/ManualCheckRun.js +6 -0
  708. package/dist/store.d.ts +17 -0
  709. package/dist/store.js +17 -0
  710. package/dist/styles/DefaultGridContainer.css +61 -0
  711. package/dist/styles/global.css +1 -0
  712. package/dist/template/SeaweedTemplate.svelte +907 -0
  713. package/dist/template/SeaweedTemplate.svelte.d.ts +19 -0
  714. package/dist/theme.postcss +116 -0
  715. package/dist/types/BlogBlurbMeta.d.ts +11 -0
  716. package/dist/types/BlogBlurbMeta.js +16 -0
  717. package/dist/types/BreadcrumbData.d.ts +4 -0
  718. package/dist/types/BreadcrumbData.js +1 -0
  719. package/dist/types/pineapple_fiber/DialogDetail.d.ts +6 -0
  720. package/dist/types/pineapple_fiber/DialogDetail.js +1 -0
  721. package/dist/types/pineapple_fiber/DialogState.d.ts +5 -0
  722. package/dist/types/pineapple_fiber/DialogState.js +6 -0
  723. package/dist/types/pineapple_fiber/DialogVariableStore.d.ts +2 -0
  724. package/dist/types/pineapple_fiber/DialogVariableStore.js +20 -0
  725. package/dist/types/pineapple_fiber/PortraitType.d.ts +11 -0
  726. package/dist/types/pineapple_fiber/PortraitType.js +12 -0
  727. package/dist/util/create_go_to_function.d.ts +1 -0
  728. package/dist/util/create_go_to_function.js +5 -0
  729. package/dist/util/stable_random.d.ts +2 -0
  730. package/dist/util/stable_random.js +15 -0
  731. package/docs/GroupLazyLoad.md +34 -0
  732. package/docs/PineappleFiberSpec.md +356 -0
  733. package/docs/Workflow.md +5 -0
  734. package/docs/images/figure-ares-happy.png +0 -0
  735. package/docs/images/figure-yarn-spinner.png +0 -0
  736. package/package.json +14 -11
  737. package/postcss.config.cjs +6 -0
  738. package/src/lib/index.ts +1 -0
  739. package/src/lib/template/SeaweedTemplate.svelte +2 -1
  740. package/src/routes/+layout.svelte +19 -19
  741. package/src/routes/portfolio/+page.server.ts +44 -44
  742. package/src/routes/portfolio/.gitignore +1 -0
  743. package/svelte.config.js +25 -0
  744. package/tailwind.config.ts +29 -0
  745. package/tsconfig.json +22 -0
  746. package/vite.config.ts +6 -0
  747. package/vite.config.ts.timestamp-1709797261217-7fe7973433269.mjs +10 -0
  748. package/vite.config.ts.timestamp-1709801575567-e7eed430338b.mjs +10 -0
  749. package/vite.config.ts.timestamp-1710003919548-e3e0deafd6ef6.mjs +10 -0
  750. package/yarn.lock +2797 -0
  751. /package/src/{routes/portfolio → lib/components}/SocialSection.svelte +0 -0
@@ -0,0 +1,597 @@
1
+ import { c as create_ssr_component, a as subscribe, s as setContext, e as escape, b as createEventDispatcher, i as getContext, d as add_attribute, j as compute_slots, v as validate_component } from "./ssr.js";
2
+ import { p as prefersReducedMotionStore, a as autoModeWatcher } from "./ProgressBar.svelte_svelte_type_style_lang.js";
3
+ import { w as writable } from "./index.js";
4
+ import { e as enableBackground, A as AppShell, a as AppBar, L as LightSwitch, R as RandomizedBackground, p as page } from "./store.js";
5
+ import { e as enableDialogueOverlay } from "./DialogManagerStore.js";
6
+ import { s as slide, g as getModalStore } from "./index2.js";
7
+ const Accordion = create_ssr_component(($$result, $$props, $$bindings, slots) => {
8
+ let classesBase;
9
+ let $prefersReducedMotionStore, $$unsubscribe_prefersReducedMotionStore;
10
+ $$unsubscribe_prefersReducedMotionStore = subscribe(prefersReducedMotionStore, (value) => $prefersReducedMotionStore = value);
11
+ let { autocollapse = false } = $$props;
12
+ let { width = "w-full" } = $$props;
13
+ let { spacing = "space-y-1" } = $$props;
14
+ let { disabled = false } = $$props;
15
+ let { padding = "py-2 px-4" } = $$props;
16
+ let { hover = "hover:bg-primary-hover-token" } = $$props;
17
+ let { rounded = "rounded-container-token" } = $$props;
18
+ let { caretOpen = "rotate-180" } = $$props;
19
+ let { caretClosed = "" } = $$props;
20
+ let { regionControl = "" } = $$props;
21
+ let { regionPanel = "space-y-4" } = $$props;
22
+ let { regionCaret = "" } = $$props;
23
+ let { transitions = !$prefersReducedMotionStore } = $$props;
24
+ let { transitionIn = slide } = $$props;
25
+ let { transitionInParams = { duration: 200 } } = $$props;
26
+ let { transitionOut = slide } = $$props;
27
+ let { transitionOutParams = { duration: 200 } } = $$props;
28
+ const active = writable(null);
29
+ setContext("active", active);
30
+ setContext("autocollapse", autocollapse);
31
+ setContext("disabled", disabled);
32
+ setContext("padding", padding);
33
+ setContext("hover", hover);
34
+ setContext("rounded", rounded);
35
+ setContext("caretOpen", caretOpen);
36
+ setContext("caretClosed", caretClosed);
37
+ setContext("regionControl", regionControl);
38
+ setContext("regionPanel", regionPanel);
39
+ setContext("regionCaret", regionCaret);
40
+ setContext("transitions", transitions);
41
+ setContext("transitionIn", transitionIn);
42
+ setContext("transitionInParams", transitionInParams);
43
+ setContext("transitionOut", transitionOut);
44
+ setContext("transitionOutParams", transitionOutParams);
45
+ if ($$props.autocollapse === void 0 && $$bindings.autocollapse && autocollapse !== void 0)
46
+ $$bindings.autocollapse(autocollapse);
47
+ if ($$props.width === void 0 && $$bindings.width && width !== void 0)
48
+ $$bindings.width(width);
49
+ if ($$props.spacing === void 0 && $$bindings.spacing && spacing !== void 0)
50
+ $$bindings.spacing(spacing);
51
+ if ($$props.disabled === void 0 && $$bindings.disabled && disabled !== void 0)
52
+ $$bindings.disabled(disabled);
53
+ if ($$props.padding === void 0 && $$bindings.padding && padding !== void 0)
54
+ $$bindings.padding(padding);
55
+ if ($$props.hover === void 0 && $$bindings.hover && hover !== void 0)
56
+ $$bindings.hover(hover);
57
+ if ($$props.rounded === void 0 && $$bindings.rounded && rounded !== void 0)
58
+ $$bindings.rounded(rounded);
59
+ if ($$props.caretOpen === void 0 && $$bindings.caretOpen && caretOpen !== void 0)
60
+ $$bindings.caretOpen(caretOpen);
61
+ if ($$props.caretClosed === void 0 && $$bindings.caretClosed && caretClosed !== void 0)
62
+ $$bindings.caretClosed(caretClosed);
63
+ if ($$props.regionControl === void 0 && $$bindings.regionControl && regionControl !== void 0)
64
+ $$bindings.regionControl(regionControl);
65
+ if ($$props.regionPanel === void 0 && $$bindings.regionPanel && regionPanel !== void 0)
66
+ $$bindings.regionPanel(regionPanel);
67
+ if ($$props.regionCaret === void 0 && $$bindings.regionCaret && regionCaret !== void 0)
68
+ $$bindings.regionCaret(regionCaret);
69
+ if ($$props.transitions === void 0 && $$bindings.transitions && transitions !== void 0)
70
+ $$bindings.transitions(transitions);
71
+ if ($$props.transitionIn === void 0 && $$bindings.transitionIn && transitionIn !== void 0)
72
+ $$bindings.transitionIn(transitionIn);
73
+ if ($$props.transitionInParams === void 0 && $$bindings.transitionInParams && transitionInParams !== void 0)
74
+ $$bindings.transitionInParams(transitionInParams);
75
+ if ($$props.transitionOut === void 0 && $$bindings.transitionOut && transitionOut !== void 0)
76
+ $$bindings.transitionOut(transitionOut);
77
+ if ($$props.transitionOutParams === void 0 && $$bindings.transitionOutParams && transitionOutParams !== void 0)
78
+ $$bindings.transitionOutParams(transitionOutParams);
79
+ classesBase = `${width} ${spacing} ${$$props.class ?? ""}`;
80
+ $$unsubscribe_prefersReducedMotionStore();
81
+ return ` <div class="${"accordion " + escape(classesBase, true)}" data-testid="accordion">${slots.default ? slots.default({}) : ``}</div>`;
82
+ });
83
+ const cBase = "";
84
+ const cControl = "text-start w-full flex items-center space-x-4";
85
+ const cControlIcons = "fill-current w-3 transition-transform duration-[200ms]";
86
+ const cPanel = "";
87
+ const AccordionItem = create_ssr_component(($$result, $$props, $$bindings, slots) => {
88
+ let openState;
89
+ let classesBase;
90
+ let classesControl;
91
+ let classesCaretState;
92
+ let classesControlCaret;
93
+ let classesControlIcons;
94
+ let classesPanel;
95
+ let $$slots = compute_slots(slots);
96
+ let $active, $$unsubscribe_active;
97
+ const dispatch = createEventDispatcher();
98
+ let { open = false } = $$props;
99
+ let { id = String(Math.random()) } = $$props;
100
+ let { autocollapse = getContext("autocollapse") } = $$props;
101
+ let { active = getContext("active") } = $$props;
102
+ $$unsubscribe_active = subscribe(active, (value) => $active = value);
103
+ let { disabled = getContext("disabled") } = $$props;
104
+ let { padding = getContext("padding") } = $$props;
105
+ let { hover = getContext("hover") } = $$props;
106
+ let { rounded = getContext("rounded") } = $$props;
107
+ let { caretOpen = getContext("caretOpen") } = $$props;
108
+ let { caretClosed = getContext("caretClosed") } = $$props;
109
+ let { regionControl = getContext("regionControl") } = $$props;
110
+ let { regionPanel = getContext("regionPanel") } = $$props;
111
+ let { regionCaret = getContext("regionCaret") } = $$props;
112
+ let { transitions = getContext("transitions") } = $$props;
113
+ let { transitionIn = getContext("transitionIn") } = $$props;
114
+ let { transitionInParams = getContext("transitionInParams") } = $$props;
115
+ let { transitionOut = getContext("transitionOut") } = $$props;
116
+ let { transitionOutParams = getContext("transitionOutParams") } = $$props;
117
+ const svgCaretIcon = `
118
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class={classesControlCaret}>
119
+ <path d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z" />
120
+ </svg>`;
121
+ function setActive(event) {
122
+ if (autocollapse === true) {
123
+ active.set(id);
124
+ } else {
125
+ open = !open;
126
+ }
127
+ onToggle(event);
128
+ }
129
+ function onToggle(event) {
130
+ const currentOpenState = autocollapse ? $active === id : open;
131
+ dispatch("toggle", {
132
+ event,
133
+ id,
134
+ panelId: `accordion-panel-${id}`,
135
+ open: currentOpenState,
136
+ autocollapse
137
+ });
138
+ }
139
+ if (autocollapse && open)
140
+ setActive();
141
+ if ($$props.open === void 0 && $$bindings.open && open !== void 0)
142
+ $$bindings.open(open);
143
+ if ($$props.id === void 0 && $$bindings.id && id !== void 0)
144
+ $$bindings.id(id);
145
+ if ($$props.autocollapse === void 0 && $$bindings.autocollapse && autocollapse !== void 0)
146
+ $$bindings.autocollapse(autocollapse);
147
+ if ($$props.active === void 0 && $$bindings.active && active !== void 0)
148
+ $$bindings.active(active);
149
+ if ($$props.disabled === void 0 && $$bindings.disabled && disabled !== void 0)
150
+ $$bindings.disabled(disabled);
151
+ if ($$props.padding === void 0 && $$bindings.padding && padding !== void 0)
152
+ $$bindings.padding(padding);
153
+ if ($$props.hover === void 0 && $$bindings.hover && hover !== void 0)
154
+ $$bindings.hover(hover);
155
+ if ($$props.rounded === void 0 && $$bindings.rounded && rounded !== void 0)
156
+ $$bindings.rounded(rounded);
157
+ if ($$props.caretOpen === void 0 && $$bindings.caretOpen && caretOpen !== void 0)
158
+ $$bindings.caretOpen(caretOpen);
159
+ if ($$props.caretClosed === void 0 && $$bindings.caretClosed && caretClosed !== void 0)
160
+ $$bindings.caretClosed(caretClosed);
161
+ if ($$props.regionControl === void 0 && $$bindings.regionControl && regionControl !== void 0)
162
+ $$bindings.regionControl(regionControl);
163
+ if ($$props.regionPanel === void 0 && $$bindings.regionPanel && regionPanel !== void 0)
164
+ $$bindings.regionPanel(regionPanel);
165
+ if ($$props.regionCaret === void 0 && $$bindings.regionCaret && regionCaret !== void 0)
166
+ $$bindings.regionCaret(regionCaret);
167
+ if ($$props.transitions === void 0 && $$bindings.transitions && transitions !== void 0)
168
+ $$bindings.transitions(transitions);
169
+ if ($$props.transitionIn === void 0 && $$bindings.transitionIn && transitionIn !== void 0)
170
+ $$bindings.transitionIn(transitionIn);
171
+ if ($$props.transitionInParams === void 0 && $$bindings.transitionInParams && transitionInParams !== void 0)
172
+ $$bindings.transitionInParams(transitionInParams);
173
+ if ($$props.transitionOut === void 0 && $$bindings.transitionOut && transitionOut !== void 0)
174
+ $$bindings.transitionOut(transitionOut);
175
+ if ($$props.transitionOutParams === void 0 && $$bindings.transitionOutParams && transitionOutParams !== void 0)
176
+ $$bindings.transitionOutParams(transitionOutParams);
177
+ {
178
+ if (open && autocollapse)
179
+ setActive();
180
+ }
181
+ openState = autocollapse ? $active === id : open;
182
+ classesBase = `${cBase} ${$$props.class ?? ""}`;
183
+ classesControl = `${cControl} ${padding} ${hover} ${rounded} ${regionControl}`;
184
+ classesCaretState = openState ? caretOpen : caretClosed;
185
+ classesControlCaret = `${cControlIcons} ${regionCaret} ${classesCaretState}`;
186
+ classesControlIcons = `${cControlIcons} ${regionCaret}`;
187
+ classesPanel = `${cPanel} ${padding} ${rounded} ${regionPanel}`;
188
+ $$unsubscribe_active();
189
+ return ` <div class="${"accordion-item " + escape(classesBase, true)}" data-testid="accordion-item"> <button type="button" class="${"accordion-control " + escape(classesControl, true)}"${add_attribute("id", id, 0)}${add_attribute("aria-expanded", openState, 0)} aria-controls="${"accordion-panel-" + escape(id, true)}" ${disabled ? "disabled" : ""}> ${$$slots.lead ? `<div class="accordion-lead">${slots.lead ? slots.lead({}) : ``}</div>` : ``} <div class="accordion-summary flex-1">${slots.summary ? slots.summary({}) : `(summary)`}</div> ${$$slots.iconClosed || $$slots.iconOpen ? ` <div class="${"accordion-summary-icons " + escape(classesControlIcons, true)}">${openState ? `${slots.iconClosed ? slots.iconClosed({}) : `<!-- HTML_TAG_START -->${svgCaretIcon}<!-- HTML_TAG_END -->`}` : `${slots.iconOpen ? slots.iconOpen({}) : `<!-- HTML_TAG_START -->${svgCaretIcon}<!-- HTML_TAG_END -->`}`}</div>` : ` <div class="${"accordion-summary-caret " + escape(classesControlCaret, true)}"><!-- HTML_TAG_START -->${svgCaretIcon}<!-- HTML_TAG_END --></div>`}</button> ${openState ? `<div class="${"accordion-panel " + escape(classesPanel, true)}" id="${"accordion-panel-" + escape(id, true)}" role="region"${add_attribute("aria-hidden", !openState, 0)}${add_attribute("aria-labelledby", id, 0)}>${slots.content ? slots.content({}) : `(content)`}</div>` : ``}</div>`;
190
+ });
191
+ const MailIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3e%3cpath%20d='M160-160q-33%200-56.5-23.5T80-240v-480q0-33%2023.5-56.5T160-800h640q33%200%2056.5%2023.5T880-720v480q0%2033-23.5%2056.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80%20320-200H160l320%20200ZM160-640v-80%20480-400Z'/%3e%3c/svg%3e";
192
+ const GithubIcon = "data:image/svg+xml,%3csvg%20width='98'%20height='96'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M48.854%200C21.839%200%200%2022%200%2049.217c0%2021.756%2013.993%2040.172%2033.405%2046.69%202.427.49%203.316-1.059%203.316-2.362%200-1.141-.08-5.052-.08-9.127-13.59%202.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015%204.934.326%207.523%205.052%207.523%205.052%204.367%207.496%2011.404%205.378%2014.235%204.074.404-3.178%201.699-5.378%203.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283%200-5.378%201.94-9.778%205.014-13.2-.485-1.222-2.184-6.275.486-13.038%200%200%204.125-1.304%2013.426%205.052a46.97%2046.97%200%200%201%2012.214-1.63c4.125%200%208.33.571%2012.213%201.63%209.302-6.356%2013.427-5.052%2013.427-5.052%202.67%206.763.97%2011.816.485%2013.038%203.155%203.422%205.015%207.822%205.015%2013.2%200%2018.905-11.404%2023.06-22.324%2024.283%201.78%201.548%203.316%204.481%203.316%209.126%200%206.6-.08%2011.897-.08%2013.526%200%201.304.89%202.853%203.316%202.364%2019.412-6.52%2033.405-24.935%2033.405-46.691C97.707%2022%2075.788%200%2048.854%200z'%20fill='%2324292f'/%3e%3c/svg%3e";
193
+ const ItchLogoHotLink = "https://static.itch.io/images/itchio-textless-black.svg";
194
+ const LinkedinIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M19%200h-14c-2.761%200-5%202.239-5%205v14c0%202.761%202.239%205%205%205h14c2.762%200%205-2.239%205-5v-14c0-2.761-2.238-5-5-5zm-11%2019h-3v-11h3v11zm-1.5-12.268c-.966%200-1.75-.79-1.75-1.764s.784-1.764%201.75-1.764%201.75.79%201.75%201.764-.783%201.764-1.75%201.764zm13.5%2012.268h-3v-5.604c0-3.368-4-3.113-4%200v5.604h-3v-11h3v1.765c1.396-2.586%207-2.777%207%202.476v6.759z'/%3e%3c/svg%3e";
195
+ const css$4 = {
196
+ code: ".svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:is(.dark .social-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled{cursor:not-allowed;opacity:0.5}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;border-radius:var(--theme-rounded-base)}.social-button.svelte-urhqdc>.svelte-urhqdc:not([hidden])~.svelte-urhqdc:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:is(.dark .social-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}button.svelte-urhqdc>img.svelte-urhqdc.svelte-urhqdc{max-height:1lh}button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{min-width:0;min-height:0}.socials.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{display:flex;flex-wrap:wrap;justify-content:var(--preferred-justify-content)}.socials.svelte-urhqdc>button.svelte-urhqdc.svelte-urhqdc{margin:0 0.5em var(--preferred-overall-margin-bottom)}.socials.isSmall.svelte-urhqdc>button.svelte-urhqdc.svelte-urhqdc{margin-left:0.25em;margin-right:0.25em}",
197
+ map: null
198
+ };
199
+ const SocialSection = create_ssr_component(($$result, $$props, $$bindings, slots) => {
200
+ let { isSmallVersion = false } = $$props;
201
+ let { email = "turnipxenon@gmail.com" } = $$props;
202
+ let { linkedinSlug = "turnip-xenon" } = $$props;
203
+ let { isSlot = false } = $$props;
204
+ const style = `
205
+ --preferred-justify-content: ${isSlot ? "flex-start" : "center"};
206
+ --preferred-overall-margin-bottom: ${isSlot ? "0" : "0.75lh"};
207
+ `;
208
+ if ($$props.isSmallVersion === void 0 && $$bindings.isSmallVersion && isSmallVersion !== void 0)
209
+ $$bindings.isSmallVersion(isSmallVersion);
210
+ if ($$props.email === void 0 && $$bindings.email && email !== void 0)
211
+ $$bindings.email(email);
212
+ if ($$props.linkedinSlug === void 0 && $$bindings.linkedinSlug && linkedinSlug !== void 0)
213
+ $$bindings.linkedinSlug(linkedinSlug);
214
+ if ($$props.isSlot === void 0 && $$bindings.isSlot && isSlot !== void 0)
215
+ $$bindings.isSlot(isSlot);
216
+ $$result.css.add(css$4);
217
+ return `<div class="${["socials svelte-urhqdc", isSmallVersion ? "isSmall" : ""].join(" ").trim()}"${add_attribute("style", style, 0)}><button type="button" class="social-button turnip-button svelte-urhqdc" role="link" title="https://github.com/TurnipXenon"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-urhqdc"> ${!isSmallVersion ? `<span class="svelte-urhqdc" data-svelte-h="svelte-1yx4gc2">TurnipXenon</span>` : ``}</button> <button type="button" class="social-button turnip-button svelte-urhqdc" role="link"${add_attribute("title", `https://www.linkedin.com/in/${linkedinSlug}/`, 0)}><img${add_attribute("src", LinkedinIcon, 0)} alt="linkedikn icon" class="svelte-urhqdc"> ${!isSmallVersion ? `<span class="svelte-urhqdc">${escape(linkedinSlug)}</span>` : ``}</button> <button type="button" class="social-button turnip-button svelte-urhqdc" role="link"${add_attribute("title", `mailto:${email}`, 0)}><img${add_attribute("src", MailIcon, 0)} alt="mail icon" class="svelte-urhqdc"> ${!isSmallVersion ? `<span class="svelte-urhqdc">${escape(email)}</span>` : ``}</button> ${``} </div>`;
218
+ });
219
+ const css$3 = {
220
+ code: ":root{--dialog-left-pad:clamp(0em, 5vw, 2em);--dialog-box-width:min(calc(50em + 4em), calc(100vw - var(--dialog-left-pad) - var(--theme-border-base)));--dialog-box-height:clamp(15em, 50vw, 18em)}.default-page-container.svelte-12byvuz{max-width:2100px;margin:4em auto;flex-direction:column;z-index:0}.lead-slot-placeholder.svelte-12byvuz{height:3em;margin-inline-end:0.5em}",
221
+ map: null
222
+ };
223
+ const SeaweedBaseLayout = create_ssr_component(($$result, $$props, $$bindings, slots) => {
224
+ let $$slots = compute_slots(slots);
225
+ let { shouldDisplayLeadingIcons = false } = $$props;
226
+ let enableBackgroundValue = true;
227
+ enableBackground.subscribe((value) => {
228
+ enableBackgroundValue = value;
229
+ });
230
+ enableDialogueOverlay.set(false);
231
+ let shouldDisplaySocialIcons = writable(false);
232
+ if ($$props.shouldDisplayLeadingIcons === void 0 && $$bindings.shouldDisplayLeadingIcons && shouldDisplayLeadingIcons !== void 0)
233
+ $$bindings.shouldDisplayLeadingIcons(shouldDisplayLeadingIcons);
234
+ $$result.css.add(css$3);
235
+ return ` ${$$result.head += `<!-- HEAD_svelte-19or0ga_START --><!-- HTML_TAG_START -->${`<script>${autoModeWatcher.toString()} autoModeWatcher();<\/script>`}<!-- HTML_TAG_END --><!-- HEAD_svelte-19or0ga_END -->`, ""} ${validate_component(AppShell, "AppShell").$$render($$result, {}, {}, {
236
+ header: () => {
237
+ return ` ${validate_component(AppBar, "AppBar").$$render(
238
+ $$result,
239
+ {
240
+ slotDefault: "place-content-start",
241
+ background: "app-shell-token"
242
+ },
243
+ {},
244
+ {
245
+ trail: () => {
246
+ return `${validate_component(LightSwitch, "LightSwitch").$$render($$result, { bgLight: "bg-surface-400" }, {}, {})} `;
247
+ },
248
+ lead: () => {
249
+ return `<span class="lead-slot-placeholder svelte-12byvuz"></span> ${$$slots.extraLeadingIcons && shouldDisplayLeadingIcons ? `<div>${slots.extraLeadingIcons ? slots.extraLeadingIcons({}) : ``}</div>` : `${$$slots.extraLeadingIcons ? `<div hidden>${slots.extraLeadingIcons ? slots.extraLeadingIcons({}) : ``}</div>` : ``}`}`;
250
+ }
251
+ }
252
+ )} `;
253
+ },
254
+ default: () => {
255
+ return `${validate_component(RandomizedBackground, "RandomizedBackground").$$render($$result, { enable: enableBackgroundValue }, {}, {})} <div class="default-page-container svelte-12byvuz">${slots.default ? slots.default({ shouldDisplaySocialIcons }) : ``} <div class="footer-space"></div></div> `;
256
+ }
257
+ })}`;
258
+ });
259
+ const css$2 = {
260
+ code: ".card.svelte-ysivzm{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-100) / var(--tw-bg-opacity))}.svelte-ysivzm:is(.dark .card){--tw-bg-opacity:1;background-color:rgb(var(--color-surface-900) / var(--tw-bg-opacity))}.card.svelte-ysivzm{margin:var(--turnip-card-margin);margin-bottom:var(--turnip-card-margin-bottom)}",
261
+ map: null
262
+ };
263
+ const Card = create_ssr_component(($$result, $$props, $$bindings, slots) => {
264
+ let { margin = "0" } = $$props;
265
+ let { marginBottom = "3em" } = $$props;
266
+ let { overrideStyle = "" } = $$props;
267
+ const style = `
268
+ --turnip-card-margin: ${margin};
269
+ --turnip-card-margin-bottom: ${marginBottom};
270
+ ${overrideStyle};
271
+ `;
272
+ if ($$props.margin === void 0 && $$bindings.margin && margin !== void 0)
273
+ $$bindings.margin(margin);
274
+ if ($$props.marginBottom === void 0 && $$bindings.marginBottom && marginBottom !== void 0)
275
+ $$bindings.marginBottom(marginBottom);
276
+ if ($$props.overrideStyle === void 0 && $$bindings.overrideStyle && overrideStyle !== void 0)
277
+ $$bindings.overrideStyle(overrideStyle);
278
+ $$result.css.add(css$2);
279
+ return `<div class="card svelte-ysivzm"${add_attribute("style", style, 0)}>${slots.content ? slots.content({ class: "card svelte-ysivzm" }) : ``} </div>`;
280
+ });
281
+ const css$1 = {
282
+ code: ".chip.svelte-1usmrsu{border-radius:1em;margin:0.25em;font-weight:bold;pointer-events:none}",
283
+ map: null
284
+ };
285
+ const Chip = create_ssr_component(($$result, $$props, $$bindings, slots) => {
286
+ $$result.css.add(css$1);
287
+ return `<span class="chip variant-filled-tertiary svelte-1usmrsu">${slots.default ? slots.default({}) : ``} </span>`;
288
+ });
289
+ const HeaderPengi = "/_app/immutable/assets/header-pengi.DWAOeO4q.mp4";
290
+ const HeaderSoulwork = "/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4";
291
+ const HeaderHepCat = "/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4";
292
+ const HeaderChefWings = "/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif";
293
+ const ElementVisbilityDetector = create_ssr_component(($$result, $$props, $$bindings, slots) => {
294
+ let { isVisible = true } = $$props;
295
+ let stickyElem;
296
+ if ($$props.isVisible === void 0 && $$bindings.isVisible && isVisible !== void 0)
297
+ $$bindings.isVisible(isVisible);
298
+ return `<span${add_attribute("this", stickyElem, 0)}>${slots.default ? slots.default({}) : ``}</span>`;
299
+ });
300
+ const BitbucketIcon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGhlaWdodD0iNTEycHgiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB3aWR0aD0iNTEycHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnIGlkPSJfeDM0XzQtYml0YnVja2V0Ij48Zz48cGF0aCBkPSJNNDAuOTI5LDQ5LjE3OGMtOC4xMDgtMC4wOTItMTQuODM1LDYuMzU4LTE0LjkyOCwxNC41NTljMCwwLjgyOSwwLjA5MywxLjc1LDAuMTg2LDIuNTggICAgbDYyLjU2NiwzNzkuNzM1YzEuNTY2LDkuNTgyLDkuODYsMTYuNjgsMTkuNjI3LDE2Ljc3aDMwMC4xMThjNy4yODEsMC4wOTMsMTMuNTQ2LTUuMTU5LDE0Ljc0NS0xMi4zNDdMNDg1LjgxLDY2LjQwOSAgICBjMS4yOS04LjAxNi00LjE0Ni0xNS41NzItMTIuMTYzLTE2Ljg2MmMtMC44MjktMC4wOTEtMS42NTgtMC4xODQtMi41NzgtMC4xODRMNDAuOTI5LDQ5LjE3OEw0MC45MjksNDkuMTc4eiBNMzA0LjM3NSwzMjMuNTkgICAgaC05NS44MzFsLTI1Ljg5NS0xMzUuNDU2aDE0NC45NDVMMzA0LjM3NSwzMjMuNTlMMzA0LjM3NSwzMjMuNTl6IiBzdHlsZT0iZmlsbDojMjY4NEZGOyIvPjwvZz48L2c+PGcgaWQ9IkxheWVyXzEiLz48L3N2Zz4=";
301
+ const LinkIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3e%3cpath%20d='M440-280H280q-83%200-141.5-58.5T80-480q0-83%2058.5-141.5T280-680h160v80H280q-50%200-85%2035t-35%2085q0%2050%2035%2085t85%2035h160v80ZM320-440v-80h320v80H320Zm200%20160v-80h160q50%200%2085-35t35-85q0-50-35-85t-85-35H520v-80h160q83%200%20141.5%2058.5T880-480q0%2083-58.5%20141.5T680-280H520Z'/%3e%3c/svg%3e";
302
+ const WeaverFootage = "/_app/immutable/assets/weaver-footage.sjDEbkrX.gif";
303
+ const WindowSetGraph = "/_app/immutable/assets/window-set.IpgsYUna.png";
304
+ const ThisWebsiteFootage = "/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4";
305
+ const css = {
306
+ code: "main.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;overflow:visible;display:flex;flex-direction:column;justify-content:center;align-items:center}h1.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:2em}h2.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1.5em}.section-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:3em;max-width:800px}.game-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100vw;max-width:36em;margin-bottom:3em}.game-card.svelte-1olxn2g>video.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em;max-height:24em;width:100%;-o-object-fit:cover;object-fit:cover}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.game-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;-o-object-fit:cover;object-fit:cover}.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled{cursor:not-allowed;opacity:0.5}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;border-radius:var(--theme-rounded-base)}.game-button.svelte-1olxn2g>.svelte-1olxn2g:not([hidden])~.svelte-1olxn2g:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.two-column-separated.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;justify-content:space-between}.more-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.greater-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:column;max-width:36em}.experience-and-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;gap:2em;flex-wrap:wrap;justify-content:center;align-items:flex-start}.game-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.game-card-body.svelte-1olxn2g>blockquote.svelte-1olxn2g.svelte-1olxn2g{margin-bottom:0.7lh}.game-card-body.svelte-1olxn2g>h1.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g>h2.svelte-1olxn2g.svelte-1olxn2g{text-align:center}.game-link-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:row;justify-content:center;gap:1em;margin-top:1em}.games-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-wrap:wrap;gap:2em;justify-content:center}.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{align-items:flex-start}.long-btn-image.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.itch-promo.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:4em}#hepcat-video.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{-o-object-position:0 0;object-position:0 0}.title-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:clamp(360px, 80vw, 800px)}[class*='qt-'].svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-weight:var(--qt-font-weight)}",
307
+ map: null
308
+ };
309
+ let additionalFontWeight = "";
310
+ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slots) => {
311
+ let isSocialsGone;
312
+ let $$unsubscribe_page;
313
+ $$unsubscribe_page = subscribe(page, (value) => value);
314
+ let { letChaos = true } = $$props;
315
+ let { name = "Turnip" } = $$props;
316
+ let { email = "turnipxenon@gmail.com" } = $$props;
317
+ let { linkedinSlug = "turnip-xenon" } = $$props;
318
+ getModalStore();
319
+ let isVisible = true;
320
+ let qtfontWeight = "normal";
321
+ let chaosDone = false;
322
+ let mainVisibility = "visible";
323
+ if ($$props.letChaos === void 0 && $$bindings.letChaos && letChaos !== void 0)
324
+ $$bindings.letChaos(letChaos);
325
+ if ($$props.name === void 0 && $$bindings.name && name !== void 0)
326
+ $$bindings.name(name);
327
+ if ($$props.email === void 0 && $$bindings.email && email !== void 0)
328
+ $$bindings.email(email);
329
+ if ($$props.linkedinSlug === void 0 && $$bindings.linkedinSlug && linkedinSlug !== void 0)
330
+ $$bindings.linkedinSlug(linkedinSlug);
331
+ $$result.css.add(css);
332
+ let $$settled;
333
+ let $$rendered;
334
+ let previous_head = $$result.head;
335
+ do {
336
+ $$settled = true;
337
+ $$result.head = previous_head;
338
+ isSocialsGone = !isVisible;
339
+ mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
340
+ $$rendered = `${validate_component(SeaweedBaseLayout, "SeaweedBaseLayout").$$render(
341
+ $$result,
342
+ { shouldDisplayLeadingIcons: isSocialsGone },
343
+ {
344
+ shouldDisplayLeadingIcons: ($$value) => {
345
+ isSocialsGone = $$value;
346
+ $$settled = false;
347
+ }
348
+ },
349
+ {
350
+ extraLeadingIcons: () => {
351
+ return `${validate_component(SocialSection, "SocialSection").$$render(
352
+ $$result,
353
+ {
354
+ slot: "extraLeadingIcons",
355
+ isSlot: true,
356
+ email,
357
+ linkedinSlug,
358
+ isSmallVersion: true
359
+ },
360
+ {},
361
+ {}
362
+ )}`;
363
+ },
364
+ default: () => {
365
+ return ` <main${add_attribute(
366
+ "style",
367
+ `
368
+ --qt-font-weight: ${qtfontWeight};${additionalFontWeight};
369
+ visibility: ${mainVisibility};
370
+ `,
371
+ 0
372
+ )} class="svelte-1olxn2g"><div class="experience-and-about-div svelte-1olxn2g"><div class="greater-about-div svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
373
+ content: () => {
374
+ return `<section class="section-card svelte-1olxn2g" slot="content"> <h1 class="svelte-1olxn2g" data-svelte-h="svelte-soqi9t">About</h1> <p class="svelte-1olxn2g">Hi! My name is ${escape(name)}! I work as a software developer. Outside of that, I like making games, and
375
+ trying to do everything in between required to make one. I have some showcased below, our visit
376
+ my itch.io page for more of them.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1htq5b8">I also graduated with BS Computing Science, Specializing in Software Practice, and a
377
+ certificate in Computer Game Development at University of Alberta.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1tjf6ho">I&#39;m inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
378
+ Bravely Default: Flying Fairy, Boku no Natsuyasumi 2, and A Short Hike.</p> </section>`;
379
+ }
380
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
381
+ content: () => {
382
+ return `<section class="section-card svelte-1olxn2g" slot="content">${validate_component(SocialSection, "SocialSection").$$render($$result, { email, linkedinSlug }, {}, {})} ${validate_component(ElementVisbilityDetector, "ElementVisbilityDetector").$$render(
383
+ $$result,
384
+ { isVisible },
385
+ {
386
+ isVisible: ($$value) => {
387
+ isVisible = $$value;
388
+ $$settled = false;
389
+ }
390
+ },
391
+ {}
392
+ )}</section>`;
393
+ }
394
+ })}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
395
+ content: () => {
396
+ return `<section class="section-card svelte-1olxn2g" slot="content"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-1r6ig88">Experience</h1> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-a3jo9c">Software Engineer</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-psdxr0"><div class="svelte-1olxn2g">July 2023 – January 2024</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch, Remote</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1k94u2s"><li class="svelte-1olxn2g">Contributed to <span class="qt-go svelte-1olxn2g">Golang</span> and <span class="qt-ts svelte-1olxn2g">Typescript</span> codebases,
397
+ across several teams, to accommodate adjustments for public-facing user safety related features, to better
398
+ comply with EU’s <a target="_blank" href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act/europe-fit-digital-age-new-online-rules-platforms_en" class="svelte-1olxn2g">Digital Services Act</a>, also including feature flags, alarms, unit tests, end-to-end testing, and
399
+ documentation</li> <li class="svelte-1olxn2g">Improved observability for upcoming features by setting up new <span class="qt-aws qt-infra svelte-1olxn2g">AWS</span>
400
+ resources to integrate internal data platform tools with existing alarms in our team’s microservice,
401
+ utilizing <span class="qt-aws qt-infra svelte-1olxn2g">Cloudwatch</span> and <span class="qt-aws qt-infra svelte-1olxn2g">Kinesis Data Stream</span>,
402
+ while adhering to best practices for <span class="qt-aws qt-infra svelte-1olxn2g">AWS CDK</span> (infrastructure as code)</li></ul> <br class="svelte-1olxn2g"> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-cx1fi3"><div class="svelte-1olxn2g">May 2022 – Aug 2022</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch, San Francisco</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1coh9hk"><li class="svelte-1olxn2g">Built a <span class="qt-infra svelte-1olxn2g">load testing service</span> that can be configured to generate different
403
+ message types at different volumes that can be easily extended to target different chat services</li> <li class="svelte-1olxn2g">Used Twitch’s set of custom tools, including Twitch’s custom RPC protocol, to create a backend
404
+ service with business logic written in <span class="qt-go svelte-1olxn2g">Go</span> and cloud infrastructure utilizing
405
+ <span class="qt-infra qt-aws svelte-1olxn2g">ECS on Fargate, Cloudwatch, and DynamoDB</span>
406
+ , defined in <span class="qt-ts svelte-1olxn2g">Typescript</span>-flavored CDK</li> <li class="svelte-1olxn2g">Wrote a technical specification document for the service’s MVP and possible future features, and
407
+ additional documentation on how to use the service and how to extend the load testing service to include
408
+ new services to test</li></ul> <br class="svelte-1olxn2g"> ${validate_component(Accordion, "Accordion").$$render($$result, { hover: "hover:bg-surface-hover-token" }, {}, {
409
+ default: () => {
410
+ return `${validate_component(AccordionItem, "AccordionItem").$$render(
411
+ $$result,
412
+ {
413
+ class: "variant-filled-primary rounded-md"
414
+ },
415
+ {},
416
+ {
417
+ content: () => {
418
+ return `<section class="more-section svelte-1olxn2g">${!letChaos ? `<h2 class="svelte-1olxn2g" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-b9eewq"><div class="svelte-1olxn2g">May 2021 – Dec 2021</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch / Amazon Web Services Canada, Remote</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-oswc7z"><li class="svelte-1olxn2g">Implemented and wrote tests for a feature in Twitch’s backend authentication
419
+ systems and frontend web application that will help suggest security improvements to
420
+ over hundreds of thousands of users daily</li> <li class="svelte-1olxn2g">Learned <span class="qt-go svelte-1olxn2g">Go</span>, <span class="qt-ts svelte-1olxn2g">Typescript</span>, <span class="qt-react svelte-1olxn2g">React</span>, and other new technologies on the go to contribute to
421
+ the codebase</li></ul>` : `niko baikal seal from toba aquarium`} <br class="svelte-1olxn2g"></section> `;
422
+ },
423
+ summary: () => {
424
+ return `<div slot="summary" class="svelte-1olxn2g" data-svelte-h="svelte-wjbz6x"><h2 class="mt-2 svelte-1olxn2g">More experience</h2></div>`;
425
+ }
426
+ }
427
+ )}`;
428
+ }
429
+ })}</section>`;
430
+ }
431
+ })}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
432
+ content: () => {
433
+ return `<div class="section-card title-card svelte-1olxn2g" slot="content" data-svelte-h="svelte-o20xib"><h1 class="text-center svelte-1olxn2g">Games</h1></div>`;
434
+ }
435
+ })} <section class="games-section svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
436
+ content: () => {
437
+ return `<section class="game-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-18m3p75">video unavailable. original video contains pengi gameplay showing the dynamic dialog
438
+ layout and character animation.
439
+ <source${add_attribute("src", HeaderPengi, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-kn1e7n">Pengi</h1> <blockquote class="svelte-1olxn2g" data-svelte-h="svelte-l5674o">Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
440
+ money...</blockquote> <p class="svelte-1olxn2g" data-svelte-h="svelte-1wwm72v">Pengi is a text-based adventure made in <span class="qt-unity svelte-1olxn2g">Unity</span>. I acted as the sole
441
+ programmer for the team. Most of the work revolves around UI and creating <a href="https://yarnspinner.dev/" target="_blank" class="svelte-1olxn2g">YarnSpinner</a> commands for writers
442
+ to use to create expressive stage directions in the script.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/GreenTea-M/ProjectPengi" data-svelte-h="svelte-y5jd5x"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://turnipxenon.itch.io/pengi" data-svelte-h="svelte-18q5lws"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
443
+ }
444
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
445
+ content: () => {
446
+ return `<section class="game-card svelte-1olxn2g" slot="content"> <video playsinline autoplay muted loop preload="none" id="hepcat-video" class="svelte-1olxn2g" data-svelte-h="svelte-11xid74"><source${add_attribute("src", HeaderHepCat, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-1iabfbj">Hepcat</h1> <blockquote class="svelte-1olxn2g" data-svelte-h="svelte-1sm2zx2">&quot;Cats, Jazz, and a little bit of Death. What more could anyone ask for?&quot;</blockquote> <p class="svelte-1olxn2g" data-svelte-h="svelte-hwmnnf">This is a course project made by a team of six for <a href="https://sites.google.com/ualberta.ca/cmput250/" class="svelte-1olxn2g">CMPUT 250</a>, and it won <a href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/" class="svelte-1olxn2g">Game of the year.</a></p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1k65o8o">Hep Cat is a rhythm game made in <a href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker svelte-1olxn2g">RPG Maker MV</a> with the help of additional custom-made <span class="qt-js svelte-1olxn2g">Javascript</span> plugins. I
447
+ wrote the rhythm game plugin&#39;s framework. For this plugin to work, I
448
+ had to write a <span class="qt-python svelte-1olxn2g">Python</span> script that parses osu! files into readable JSON
449
+ files.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://bitbucket.org/egginchicken/hep-cat/src/master/" data-svelte-h="svelte-kqolxp"><img alt="bitbucket icon"${add_attribute("src", BitbucketIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://just-a-phantom.itch.io/hep-cat" data-svelte-h="svelte-85ytls"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
450
+ }
451
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
452
+ content: () => {
453
+ return `<section class="game-card svelte-1olxn2g" slot="content"><img${add_attribute("src", HeaderChefWings, 0)} alt="todo" loading="lazy" class="svelte-1olxn2g"> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-u3x25k">Chef Wings</h1> <p class="svelte-1olxn2g" data-svelte-h="svelte-1gm838l">A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
454
+ them to cook for customers and then critics!</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1vp4je5">I built and documented several of the game’s systems including the game state management
455
+ system that extends <span class="qt-unity svelte-1olxn2g">Unity’s</span> existing Monobehavior lifecycle with new events,
456
+ and the dialogue, event, and level systems that coordinate the game flow using the interactive
457
+ dialogue tool YarnSpinner</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-1sy1yh1"><img alt="itch.io icon"${add_attribute("src", LinkIcon, 0)} class="svelte-1olxn2g"> <span class="svelte-1olxn2g">selk.io/birb-project/trunk/</span></button></section></section></section>`;
458
+ }
459
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
460
+ content: () => {
461
+ return `<section class="game-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-1k9edyw"><source${add_attribute("src", HeaderSoulwork, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-2ce69i">Soulwork</h1> <p class="svelte-1olxn2g" data-svelte-h="svelte-v85h17">Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
462
+ This project is a Time to Game Jam entry, restricting game development to be under 48
463
+ hours.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1ulwzoi">I helped make the level designing tools used by the designers to drag-and-drop objects
464
+ on the stage. I also helped program the unique physics-based gameplay mechanic. This was
465
+ was made in <span class="qt-unity svelte-1olxn2g">Unity</span> written using <span class="qt-cs svelte-1olxn2g">C#</span>.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/Zeyu-Li/Clockwork" data-svelte-h="svelte-pzpykb"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331" data-svelte-h="svelte-bvl96c"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
466
+ }
467
+ })} ${validate_component(Card, "Card").$$render($$result, { overrideStyle: "align-self: flex-start;" }, {}, {
468
+ content: () => {
469
+ return `<section class="game-card itch-promo svelte-1olxn2g" slot="content"><h1 class="mb-12 text-center svelte-1olxn2g" data-svelte-h="svelte-10vk3r5">Check out my itch.io page for more games</h1> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" role="link" title="https://turnipxenon.itch.io/" data-svelte-h="svelte-mamccr"><img${add_attribute("src", ItchLogoHotLink, 0)} class="long-btn-image svelte-1olxn2g" alt="itch icon"> <span class="svelte-1olxn2g">TurnipXenon</span></button></section></section>`;
470
+ }
471
+ })}</section> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
472
+ content: () => {
473
+ return `<section class="section-card title-card svelte-1olxn2g" slot="content" data-svelte-h="svelte-49ylrm"><h1 class="text-center svelte-1olxn2g">Projects</h1></section>`;
474
+ }
475
+ })} <section class="projects-section svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
476
+ content: () => {
477
+ return `<section class="project-card svelte-1olxn2g" slot="content"><iframe id="migrante-alberta" width="560" height="315" src="https://www.youtube.com/embed/ZemWwf8jh8E?si=RZwSfYHI-0Ael-RE" title="YouTube video player" style="border: none" allowfullscreen class="svelte-1olxn2g"></iframe> <div class="project-card-body svelte-1olxn2g"> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-1eni4fk">Migrante Alberta</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1smwex7">We developed a mobile-first cross-platform application to be used by the Canadian-based
478
+ Filipino non-profit advocacy group, Migrante Alberta, to help new immigrants navigate
479
+ through local services and events</p> <p class="svelte-1olxn2g">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
480
+ default: () => {
481
+ return `Flutter`;
482
+ }
483
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
484
+ default: () => {
485
+ return `Dart`;
486
+ }
487
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
488
+ default: () => {
489
+ return `Python`;
490
+ }
491
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
492
+ default: () => {
493
+ return `Django`;
494
+ }
495
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
496
+ default: () => {
497
+ return `Heroku`;
498
+ }
499
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
500
+ default: () => {
501
+ return `Android`;
502
+ }
503
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
504
+ default: () => {
505
+ return `Postgresql`;
506
+ }
507
+ })}</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-121dvtq"><img${add_attribute("src", LinkIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="itch icon"> <span class="svelte-1olxn2g">cmput401.ca</span></button></section></div></section>`;
508
+ }
509
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
510
+ content: () => {
511
+ return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1ir48d3">Decentralized social media</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-bywg41">We made a full stack decentralized social media app made with <span class="qt-react svelte-1olxn2g">React</span> +
512
+ <span class="qt-js svelte-1olxn2g">Javascript</span> for the client code, <span class="qt-django svelte-1olxn2g">Django</span> + <span class="qt-python svelte-1olxn2g">Python</span> for the backend code, and <span class="qt-heroku svelte-1olxn2g">Heroku</span> for
513
+ deployment. This project was made
514
+ for
515
+ our Web Applications and Architecture class.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1mg86zd">The application can connect with three other decentralized social media app in the same class:</p> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1ltib2n"><li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-14" target="_blank" class="svelte-1olxn2g">Also
516
+ a social media with the same Django + Python backend server where they act on behalf of
517
+ our users interacting with theirs</a></li> <li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-7" target="_blank" class="svelte-1olxn2g">A
518
+ social media that uses Fast API + Python for their backend server</a></li> <li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-12" target="_blank" class="svelte-1olxn2g">Another
519
+ social media that has Django + Python for their backend but we have to act on behalf of
520
+ our
521
+ users interacting with their users</a></li></ul> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/hgshah/cmput404-project" data-svelte-h="svelte-cv2gah"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-1olxn2g"></button></section></div></section>`;
522
+ }
523
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
524
+ content: () => {
525
+ return `<section class="project-card svelte-1olxn2g" slot="content"><img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"${add_attribute("src", WeaverFootage, 0)} class="svelte-1olxn2g"> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1tprdy5">Customized Yarnspinner interpreter and dialog runner</h2>
526
+
527
+ A custom dialog interpreter, written in <span class="qt-ts svelte-1olxn2g" data-svelte-h="svelte-o30c37">Typescript</span>, that tokenizes then
528
+ transpiles custom Yarnspinner dialog into a <span class="qt-ts svelte-1olxn2g" data-svelte-h="svelte-o30c37">Typescript</span> file. The said files can
529
+ be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
530
+ custom-flavor of YarnSpinner dialogs on <span class="qt-svelte svelte-1olxn2g" data-svelte-h="svelte-19momqd">Svelte</span>.
531
+
532
+ <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md" data-svelte-h="svelte-7o1iz5"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-1olxn2g"></button></section></div></section>`;
533
+ }
534
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
535
+ content: () => {
536
+ return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1g6x1gh">Full-stack <span class="qt-c svelte-1olxn2g">C</span> app</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1m2910f">A terminal-based app consisting of a server observing several terminal apps all concurrently
537
+ sending updates to the server, which then broadcasts these information concurrently to all the
538
+ other terminal apps connected.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-2glnqi">The project involves <span class="qt-foundation svelte-1olxn2g">multiprocessing</span> programming featuring pthreads and
539
+ mutexes, and <span class="qt-foundation svelte-1olxn2g">networking</span> via sockets.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md" data-svelte-h="svelte-ytnfwd"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
540
+ }
541
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
542
+ content: () => {
543
+ return `<section class="project-card svelte-1olxn2g" slot="content"><img alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
544
+ time goes by. The trend appears to look like a damping harmonic motion that does not go below the zero line. More
545
+ details include the data size being 200000 entries, each data point skips 1060174 data points, with a
546
+ page size of 4096 bytes, and window size of 100000 bytes."${add_attribute("src", WindowSetGraph, 0)} class="svelte-1olxn2g"> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1owlizc">Working set simulation</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-h0uhw2">A <span class="qt-c svelte-1olxn2g">C</span> program that simulates the working set model based on the output of memory
547
+ addresses
548
+ <span class="qt-valgrind svelte-1olxn2g">valgrind</span> detects as being accessed by a program being ran. It&#39;s
549
+ implemented using a nested hashmap <span class="qt-foundation svelte-1olxn2g">data structure</span> implemented from
550
+ scratch. The working set is the collection of memory pages referenced by a program within a certain time
551
+ frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span class="qt-foundation svelte-1olxn2g">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
552
+ size, page size, and their input size.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf" data-svelte-h="svelte-5rpf8h"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"> <span class="svelte-1olxn2g">Benchmark report</span></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md" data-svelte-h="svelte-1vbe2nk"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"> <span class="svelte-1olxn2g">Design</span></button></section></div></section>`;
553
+ }
554
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
555
+ content: () => {
556
+ return `<section class="project-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-m5p9b7"><source${add_attribute("src", ThisWebsiteFootage, 0)} type="video/mp4" class="svelte-1olxn2g">
557
+ video unavailable. original video contains clips of this website being resized and light-dark mode being
558
+ toggled.</video> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-5puumm">This webpage!</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1te9sdx">The webpage is made of two parts. The webpage that has the content for everything here, I&#39;ve
559
+ lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I
560
+ want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.</p> <p class="svelte-1olxn2g">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
561
+ default: () => {
562
+ return `Svelte`;
563
+ }
564
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
565
+ default: () => {
566
+ return `Skeleton (Svelte UI library)`;
567
+ }
568
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
569
+ default: () => {
570
+ return `Typescript`;
571
+ }
572
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
573
+ default: () => {
574
+ return `Vercel`;
575
+ }
576
+ })} ${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
577
+ default: () => {
578
+ return `YarnSpinner`;
579
+ }
580
+ })}</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/pineapple" data-svelte-h="svelte-4dm4xx"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
581
+ }
582
+ })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
583
+ content: () => {
584
+ return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1vw6xk1">Mock Uber App</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1n8bpk7">A course project app meant to emulate how Uber works by playing with <span class="qt-google svelte-1olxn2g">Google Maps API</span>.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1ob0wfp">I implemented all interfaces related to the NoSQL cloud database <span class="qt-firebase qt-google qt-infra svelte-1olxn2g">Firebase</span>, making writing code easier for other programmers (<span class="qt-android svelte-1olxn2g">Android</span> / <span class="qt-java svelte-1olxn2g">Java</span>). I also wrote documentation to said
585
+ code and added instrumented tests that are tested by the continuous integration tool <span class="qt-infra svelte-1olxn2g">Travis CI</span>, ensuring that our code is tested</p> <section class="game-link-section svelte-1olxn2g"> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/CMPUT301W20T10/UberApp" data-svelte-h="svelte-9lexjr"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
586
+ }
587
+ })}</section></main>`;
588
+ }
589
+ }
590
+ )}`;
591
+ } while (!$$settled);
592
+ $$unsubscribe_page();
593
+ return $$rendered;
594
+ });
595
+ export {
596
+ SeaweedTemplate as S
597
+ };