From 8527e9daf69a404d0de572cb7936ec6f7f35ca99 Mon Sep 17 00:00:00 2001 From: Pauljd Date: Thu, 5 Nov 2026 23:08:52 +0000 Subject: [PATCH] Profiles, Who's watching, and the starry sky (from 0.108.34); VectorCraft picture sources Co-Authored-By: Claude Opus 5.5 (1M context) --- .../java/tv/orbit/classic/AfterDarkLock.kt | 3 +- .../tv/orbit/classic/EmbyConnectionScreen.kt | 11 +- .../java/tv/orbit/classic/MainActivity.kt | 41 ++- .../main/java/tv/orbit/classic/Profiles.kt | 262 ++++++++++++++++++ .../main/java/tv/orbit/classic/Settings.kt | 4 +- .../drawable-nodpi/orbit_picture_crown.webp | Bin 0 -> 1750 bytes .../orbit_picture_football.webp | Bin 0 -> 3546 bytes .../res/drawable-nodpi/orbit_picture_paw.webp | Bin 0 -> 2068 bytes .../drawable-nodpi/orbit_picture_rainbow.webp | Bin 0 -> 4170 bytes .../drawable-nodpi/orbit_picture_rocket.webp | Bin 0 -> 1908 bytes .../drawable-nodpi/orbit_picture_wand.webp | Bin 0 -> 2244 bytes .../java/tv/orbit/classic/ProfilesTest.kt | 34 +++ design/profiles/pictures/check.png | Bin 0 -> 46394 bytes design/profiles/pictures/crown.png | Bin 0 -> 5040 bytes design/profiles/pictures/crown.svg | 1 + design/profiles/pictures/football.png | Bin 0 -> 9772 bytes design/profiles/pictures/football.svg | 1 + design/profiles/pictures/paw.png | Bin 0 -> 6048 bytes design/profiles/pictures/paw.svg | 1 + design/profiles/pictures/rainbow.png | Bin 0 -> 11803 bytes design/profiles/pictures/rainbow.svg | 1 + design/profiles/pictures/rocket.png | Bin 0 -> 5447 bytes design/profiles/pictures/rocket.svg | 1 + design/profiles/pictures/wand.png | Bin 0 -> 6694 bytes design/profiles/pictures/wand.svg | 1 + 25 files changed, 343 insertions(+), 18 deletions(-) create mode 100644 android/app/src/main/java/tv/orbit/classic/Profiles.kt create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_crown.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_football.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_paw.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_rainbow.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_rocket.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_picture_wand.webp create mode 100644 android/app/src/test/java/tv/orbit/classic/ProfilesTest.kt create mode 100644 design/profiles/pictures/check.png create mode 100644 design/profiles/pictures/crown.png create mode 100644 design/profiles/pictures/crown.svg create mode 100644 design/profiles/pictures/football.png create mode 100644 design/profiles/pictures/football.svg create mode 100644 design/profiles/pictures/paw.png create mode 100644 design/profiles/pictures/paw.svg create mode 100644 design/profiles/pictures/rainbow.png create mode 100644 design/profiles/pictures/rainbow.svg create mode 100644 design/profiles/pictures/rocket.png create mode 100644 design/profiles/pictures/rocket.svg create mode 100644 design/profiles/pictures/wand.png create mode 100644 design/profiles/pictures/wand.svg diff --git a/android/app/src/main/java/tv/orbit/classic/AfterDarkLock.kt b/android/app/src/main/java/tv/orbit/classic/AfterDarkLock.kt index 7a0c7cd..aae2e2f 100644 --- a/android/app/src/main/java/tv/orbit/classic/AfterDarkLock.kt +++ b/android/app/src/main/java/tv/orbit/classic/AfterDarkLock.kt @@ -38,7 +38,8 @@ internal object AfterDarkLock { /** Unlocked with the PIN, until Orbit closes. */ var unlocked by mutableStateOf(false) private set - val locked get() = pinSet && !unlocked + /** Hidden: a PIN is set and it hasn't been entered, or Kids is watching. */ + val locked get() = (pinSet && !unlocked) || Profiles.kids fun load(context: Context) { pinSet = prefs(context).getString("after_dark_pin", null) != null } private fun prefs(context: Context) = context.getSharedPreferences("orbit_lock", Context.MODE_PRIVATE) diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt index 06a4663..098c871 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt @@ -333,6 +333,8 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea fun answered() { saveReminders(reminders.map { if (it.channel == due.channel && it.startMs == due.startMs) it.copy(stage = due.stage) else it }); programmeReminder = null } ProgrammeReminderCard(due, System.currentTimeMillis(), onDismiss = ::answered, onWatch = { answered() + // Not for a channel this profile can't see. + if (lockedOut(due.channel) || profileHides(due.channel)) return@ProgrammeReminderCard if (selectedNumber != due.channel) { lastNumber = selectedNumber; selectedNumber = due.channel } channelClockOffset = 0; watchingChannel = true if (!mainGuide && !mainHome && !mainWhatsOn && !mainCatchUp) onGuide() @@ -354,10 +356,10 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea } // The After Dark lock hides its channels from everything that lists or steps through channels, Catch Up included. val availableChannels = availableSampleChannels(channel?.let(::onAir), afterDarkChannel?.let(::onAir), toonamiChannel?.let(::onAir), *extraChannels.map(::onAir).toTypedArray()) - .filterNot { lockedOut(it.number) } + .filterNot { lockedOut(it.number) || profileHides(it.number) } // Locked while on After Dark: back to the first channel, and out of full screen. - LaunchedEffect(AfterDarkLock.locked) { - if (AfterDarkLock.locked && lockedOut(selectedNumber)) { watchingChannel = false; channelClockOffset = 0; selectedNumber = availableChannels.firstOrNull()?.number ?: 101 } + LaunchedEffect(AfterDarkLock.locked, Profiles.current) { + if (lockedOut(selectedNumber) || profileHides(selectedNumber)) { watchingChannel = false; channelClockOffset = 0; selectedNumber = availableChannels.firstOrNull()?.number ?: 101 } } val liveChannel = availableChannels.firstOrNull { it.number == selectedNumber } if (mainDriveIn && liveSession != null) { @@ -409,7 +411,8 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea when { mainHome -> HomeScreen(availableChannels, modifier, onCategory = { guideCategory = it; onGuide() }) mainCatchUp -> CatchUpScreen(availableChannels, modifier, onOpen = { catchUpOpen = it }) - mainWhatsOn -> WhatsOnScreen(liveSession, scheduledChannels.filterKeys { !lockedOut(it) }.mapValues { it.value.plan }, driveInPlan, modifier, reminders, + mainWhatsOn -> WhatsOnScreen(liveSession, scheduledChannels.filterKeys { !lockedOut(it) && !profileHides(it) }.mapValues { it.value.plan }, + driveInPlan.takeIf { Profiles.current?.let { it.kind != ProfileKind.Kids || it.driveIn } ?: true }, modifier, reminders, onWatch = { tune(it, 0) }, onDriveIn = onDriveIn, onBack = onHome, onRemind = { item -> saveReminders(liveReminders(reminders, System.currentTimeMillis()) + ProgrammeReminder(item.channel, item.startMs, item.title)) }) else -> GuideGrid(channelsIn(guideCategory, availableChannels).ifEmpty { availableChannels }, selectedNumber, modifier, guideCategory, homeCategories(availableChannels.map { it.number }), picture, diff --git a/android/app/src/main/java/tv/orbit/classic/MainActivity.kt b/android/app/src/main/java/tv/orbit/classic/MainActivity.kt index 34adad8..2903b08 100644 --- a/android/app/src/main/java/tv/orbit/classic/MainActivity.kt +++ b/android/app/src/main/java/tv/orbit/classic/MainActivity.kt @@ -60,6 +60,7 @@ class MainActivity : ComponentActivity() { } // Before anything is drawn, so a locked After Dark never shows for a moment. AfterDarkLock.load(this) + Profiles.load(this) // One typeface everywhere, matching the channel logos. setContent { MaterialTheme { CompositionLocalProvider(androidx.tv.material3.LocalTextStyle provides androidx.compose.ui.text.TextStyle(fontFamily = Barlow)) { OrbitApp() } } } } @@ -109,7 +110,8 @@ private fun OrbitApp() { // Opening the app always lands on the main menu, wherever it was left. if (event == Lifecycle.Event.ON_STOP && realChannelAvailable && section != "Connect Emby") section = "Home" // The sleep timer is for this evening's viewing only. - if (event == Lifecycle.Event.ON_STOP) { SleepTimer.clear(); AfterDarkLock.lock() } + // Orbit asks who's watching again each time it opens. + if (event == Lifecycle.Event.ON_STOP) { SleepTimer.clear(); AfterDarkLock.lock(); Profiles.current = null } } lifecycle.addObserver(observer) onDispose { lifecycle.removeObserver(observer) } @@ -118,6 +120,16 @@ private fun OrbitApp() { BackHandler(realChannelAvailable && section != "TV Guide" && section != "Home" && section != "What's On") { section = "Home" } val navFocus = remember { FocusRequester() } val driveInFocus = remember { FocusRequester() } + // Who's watching? comes first, once there's something to watch. + val profile = Profiles.current + val chosen = profile != null + val picking = realChannelAvailable && restoreChecked && !chosen + val kidsDriveIn = profile?.kind != ProfileKind.Kids || profile.driveIn + val kidsArcade = profile?.kind != ProfileKind.Kids || profile.arcade + // Kids never reaches Settings, and only the parts of Orbit chosen for it. + LaunchedEffect(profile, section) { + if (Profiles.kids && realChannelAvailable && (section == "Connect Emby" || (section == "Drive-In" && !kidsDriveIn) || (section == "Arcade" && !kidsArcade))) section = "Home" + } // The sleep timer switches Orbit off wherever you are in it; the TV then sleeps as it normally would. val activity = androidx.activity.compose.LocalActivity.current LaunchedEffect(Unit) { while (true) { delay(1000); if (SleepTimer.tick(System.currentTimeMillis())) { SleepTimer.clear(); activity?.finish() } } } @@ -127,23 +139,26 @@ private fun OrbitApp() { if (event.nativeKeyEvent.action == android.view.KeyEvent.ACTION_UP) SleepTimer.keepWatching(System.currentTimeMillis()) true }) { + // The soft stars behind everything (Paul: "that slight starry background works across the app and identity"). + StarrySky() CompositionLocalProvider(LocalNavFocus provides navFocus, LocalDriveInFocus provides driveInFocus) { // The Drive-In and a game in play take the whole screen; the bar sits over the Drive-In's sky. val fullBleed = section == "Drive-In" || playingGame Column(if (fullBleed) Modifier.fillMaxSize() else Modifier.fillMaxSize().padding(start = 36.dp, end = 36.dp, top = 56.dp, bottom = 16.dp)) { if (!restoreChecked) Text("Tuning in…", color = Muted, fontSize = 15.sp) - if (section == "Arcade" && realChannelAvailable) OrbitArcade(Modifier.weight(1f), onPlaying = { playingGame = it }) + if (section == "Arcade" && realChannelAvailable && chosen) OrbitArcade(Modifier.weight(1f), onPlaying = { playingGame = it }) EmbyConnectionScreen(if (section == "Arcade") Modifier else Modifier.weight(1f), visible = section == "Connect Emby", - mainGuide = section == "TV Guide" && realChannelAvailable, - mainHome = section == "Home" && realChannelAvailable, - mainDriveIn = section == "Drive-In" && realChannelAvailable, - mainWhatsOn = section == "What's On" && realChannelAvailable, - mainCatchUp = section == "Catch Up" && realChannelAvailable, + mainGuide = section == "TV Guide" && realChannelAvailable && chosen, + mainHome = section == "Home" && realChannelAvailable && chosen, + mainDriveIn = section == "Drive-In" && realChannelAvailable && chosen, + mainWhatsOn = section == "What's On" && realChannelAvailable && chosen, + mainCatchUp = section == "Catch Up" && realChannelAvailable && chosen, onChannelAvailable = { realChannelAvailable = it }, onRestoreChecked = { restoreChecked = true }, onGuide = { section = "TV Guide" }, onHome = { section = "Home" }, onDriveIn = { section = "Drive-In" }) } // The sections sit centred on the screen, over the centred page below; the logo keeps the left, the clock the right. - if (!playingGame) Box(Modifier.fillMaxWidth().padding(start = 36.dp, end = 36.dp, top = 12.dp)) { + if (picking) WhosWatching(onClose = { activity?.finish() }) + if (!playingGame && !picking) Box(Modifier.fillMaxWidth().padding(start = 36.dp, end = 36.dp, top = 12.dp)) { if (realChannelAvailable) Row(Modifier.align(Alignment.Center), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { // The whole-screen Drive-In has nothing for down to find by itself, so it's told. val below = if (section == "Drive-In") driveInFocus else null @@ -151,8 +166,8 @@ private fun OrbitApp() { NavItem("What's On", section == "What's On", null, below) { section = "What's On" } NavItem("TV Guide", section == "TV Guide", null, below) { section = "TV Guide" } NavItem("Catch Up", section == "Catch Up", null, below) { section = "Catch Up" } - NavItem("Drive-In", section == "Drive-In", null, below) { section = "Drive-In" } - NavItem("Arcade", section == "Arcade", null, below) { section = "Arcade" } + if (kidsDriveIn) NavItem("Drive-In", section == "Drive-In", null, below) { section = "Drive-In" } + if (kidsArcade) NavItem("Arcade", section == "Arcade", null, below) { section = "Arcade" } } Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) { Image(painterResource(R.drawable.orbit_logo), "Orbit", Modifier.width(144.dp).height(36.dp)) @@ -161,7 +176,11 @@ private fun OrbitApp() { Text(SimpleDateFormat("HH:mm", Locale.UK).format(Date(now)), color = Color.White, fontFamily = BarlowCondensed, fontSize = 20.sp) Text(SimpleDateFormat("EEEE d MMMM", Locale.UK).format(Date(now)), color = Muted, fontSize = 10.sp) } - if (realChannelAvailable) HomeCard(Modifier.size(38.dp, 32.dp).focusProperties { if (section == "Drive-In") down = driveInFocus }, onClick = { section = "Connect Emby" }) { focused -> + // Who's watching, as a little picture: OK goes back to Who's watching? to switch. + if (realChannelAvailable && profile != null) HomeCard(Modifier.size(38.dp, 32.dp).focusProperties { if (section == "Drive-In") down = driveInFocus }, onClick = { section = "Home"; Profiles.current = null }) { focused -> + Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { ProfileAvatar(profile.picture, 28.dp, ringed = false) } + } + if (realChannelAvailable && !Profiles.kids) HomeCard(Modifier.size(38.dp, 32.dp).focusProperties { if (section == "Drive-In") down = driveInFocus }, onClick = { section = "Connect Emby" }) { focused -> Image(painterResource(R.drawable.orbit_icon_gear), "Settings", Modifier.fillMaxSize().padding(5.dp), colorFilter = if (focused) ColorFilter.tint(Navy) else null) } } diff --git a/android/app/src/main/java/tv/orbit/classic/Profiles.kt b/android/app/src/main/java/tv/orbit/classic/Profiles.kt new file mode 100644 index 0000000..2e1db41 --- /dev/null +++ b/android/app/src/main/java/tv/orbit/classic/Profiles.kt @@ -0,0 +1,262 @@ +package tv.orbit.classic + +import android.content.Context +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.drawscope.DrawScope +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.tv.material3.Text +import org.json.JSONArray +import org.json.JSONObject + +/** + * Profiles (Paul, 5 November 2026, from the approved design). "Who's watching?" when Orbit opens: Grown-ups, behind the PIN + * from the After Dark lock, sees everything; Kids sees only the channels ticked for it, never After Dark or The Late Show, has + * no Settings, and leaving it for Grown-ups needs the PIN. Each has a picture: one of the cast, a favourite thing (drawn in + * VectorCraft, design/profiles/pictures) or a silhouette in a colour. Kept on this box only. Orbit asks again each time it opens. + */ +internal enum class ProfileKind { Grown, Kids } + +internal data class Profile(val id: String, val name: String, val picture: String, val kind: ProfileKind, + /** Kids only: the channels it sees. */ + val channels: Set = emptySet(), val arcade: Boolean = true, val driveIn: Boolean = false) + +/** Kids' channels to start with, from the approved design: Tots, Junior, Wonder, PixelZ, ToonZ, Heroes, Rewind, Vortex, Terra, Wild. */ +internal val KidsStartChannels = setOf(TOTS_NUMBER, 611, 612, 613, 605, 602, 604, VORTEX_NUMBER, 201, 203) + +internal val DefaultProfiles = listOf(Profile("grown", "Grown-ups", "sil-blue", ProfileKind.Grown), Profile("kids", "Kids", "ollie", ProfileKind.Kids, KidsStartChannels)) + +/** Every picture there is to choose: the cast, favourite things, and silhouettes in Orbit's colours. */ +internal val ProfilePictures = listOf("ollie", "blaze", "zip", "drift", "luna", "bumble", "football", "wand", "rocket", "crown", "rainbow", "paw", + "sil-blue", "sil-pink", "sil-green", "sil-yellow", "sil-purple", "sil-orange") +internal fun pictureName(id: String) = when (id) { + "wand" -> "Fairy wand"; "paw" -> "Paw print" + else -> id.removePrefix("sil-").replaceFirstChar { it.uppercase() } +} + +internal object Profiles { + var all by mutableStateOf(DefaultProfiles) + private set + /** Who's watching, or null before anyone's chosen. */ + var current by mutableStateOf(null) + val kids get() = current?.kind == ProfileKind.Kids + + private fun prefs(context: Context) = context.getSharedPreferences("orbit_profiles", Context.MODE_PRIVATE) + fun load(context: Context) { all = runCatching { decode(prefs(context).getString("profiles", null)!!) }.getOrDefault(DefaultProfiles) } + fun update(context: Context, changed: Profile) { + all = all.map { if (it.id == changed.id) changed else it } + if (current?.id == changed.id) current = changed + prefs(context).edit().putString("profiles", encode(all)).apply() + } + fun encode(list: List) = JSONArray(list.map { p -> + JSONObject().put("id", p.id).put("name", p.name).put("picture", p.picture).put("kind", p.kind.name) + .put("channels", JSONArray(p.channels.sorted())).put("arcade", p.arcade).put("driveIn", p.driveIn) + }).toString() + fun decode(text: String): List { + val a = JSONArray(text) + return (0 until a.length()).map { i -> + val o = a.getJSONObject(i); val ch = o.optJSONArray("channels") + Profile(o.getString("id"), o.getString("name"), o.getString("picture"), ProfileKind.valueOf(o.getString("kind")), + ch?.let { c -> (0 until c.length()).map { c.getInt(it) }.toSet() }.orEmpty(), o.optBoolean("arcade", true), o.optBoolean("driveIn", false)) + }.takeIf { list -> list.any { it.kind == ProfileKind.Grown } } ?: DefaultProfiles + } +} + +/** Hidden from the profile watching: for Kids, every channel not ticked for it. */ +internal fun profileHides(number: Int, profile: Profile? = Profiles.current) = profile?.kind == ProfileKind.Kids && number !in profile.channels + +private val SilColours = mapOf("sil-blue" to Color(0xFF45B8F5), "sil-pink" to Color(0xFFFF4FA3), "sil-green" to Color(0xFF6EDCAA), + "sil-yellow" to Color(0xFFFFD84A), "sil-purple" to Color(0xFFA77BFF), "sil-orange" to Color(0xFFFF8A3D)) +private val PictureBacks = mapOf("ollie" to Color(0xFF285AA0), "blaze" to Color(0xFF3C285A), "zip" to Color(0xFF322864), "drift" to Color(0xFF1E4678), + "luna" to Color(0xFF281E5A), "bumble" to Color(0xFF285A50), "football" to Color(0xFF2E8C50), "wand" to Color(0xFF783CA0), "rocket" to Color(0xFF1E326E), + "crown" to Color(0xFF782850), "rainbow" to Color(0xFF3C8CDC), "paw" to Color(0xFFC8783C)) +private val PictureImages = mapOf("football" to R.drawable.orbit_picture_football, "wand" to R.drawable.orbit_picture_wand, "rocket" to R.drawable.orbit_picture_rocket, + "crown" to R.drawable.orbit_picture_crown, "rainbow" to R.drawable.orbit_picture_rainbow, "paw" to R.drawable.orbit_picture_paw) + +private fun DrawScope.silhouette(colour: Color) { + val r = size.minDimension / 2; val c = center + drawCircle(colour, r * .34f, c + Offset(0f, -r * .22f)) + drawArc(colour, 180f, 180f, true, c + Offset(-r * .62f, r * .12f), Size(r * 1.24f, r * 1.08f)) +} + +/** A profile's picture in its circle, ringed gold when [ringed]. */ +@Composable +internal fun ProfileAvatar(picture: String, diameter: Dp, modifier: Modifier = Modifier, ringed: Boolean = false) { + val sil = SilColours[picture] + Box(modifier.size(diameter).then(if (ringed) Modifier.border(4.dp, Yellow, CircleShape) else Modifier).padding(if (ringed) 6.dp else 0.dp) + .clip(CircleShape).background(sil?.copy(alpha = .35f)?.compositeOverNavy() ?: PictureBacks[picture] ?: Panel), contentAlignment = Alignment.Center) { + val image = PictureImages[picture] + if (image != null) Image(painterResource(image), pictureName(picture), Modifier.fillMaxSize()) + else Canvas(Modifier.fillMaxSize()) { + val r = size.minDimension / 2 + when (picture) { + "ollie" -> drawOrbMascot(center, r * .5f) + "blaze" -> drawOrbChaser(center + Offset(r * .12f, 0f), r * .55f, OrbCharacter.Blaze, OrbDir.Right, false, false, false, 0f) + "zip" -> drawOrbChaser(center, r * .55f, OrbCharacter.Zip, OrbDir.Down, false, false, false, 0f) + "drift" -> drawOrbChaser(center, r * .58f, OrbCharacter.Drift, OrbDir.Down, false, false, false, 0f) + "luna" -> drawOrbChaser(center, r * .58f, OrbCharacter.Luna, OrbDir.Down, false, false, false, 0f) + "bumble" -> drawOrbBee(center + Offset(0f, r * .12f), r * .5f) + else -> silhouette(sil ?: Color(0xFF45B8F5)) + } + } + } +} + +private fun Color.compositeOverNavy() = Color(red * alpha + Navy.red * (1 - alpha), green * alpha + Navy.green * (1 - alpha), blue * alpha + Navy.blue * (1 - alpha)) + +/** A soft field of stars, still, for behind the app (Paul: "that slight starry background works across the app and identity"). */ +@Composable +internal fun StarrySky(modifier: Modifier = Modifier) { + Canvas(modifier.fillMaxSize()) { + val stars = java.util.Random(5) + repeat(140) { + drawCircle(Color(0xFF3C5078).copy(alpha = .55f + stars.nextFloat() * .45f), .8f + stars.nextFloat() * 1.6f, Offset(stars.nextFloat() * size.width, stars.nextFloat() * size.height)) + } + } +} + +/** "Who's watching?" Grown-ups asks for the PIN, when one's set; Kids goes straight in. */ +@Composable +internal fun WhosWatching(onClose: () -> Unit) { + val context = LocalContext.current + var asking by remember { mutableStateOf(null) } + var problem by remember { mutableStateOf(null) } + val first = remember { FocusRequester() } + LaunchedEffect(asking) { if (asking == null) runCatching { first.requestFocus() } } + BackHandler(asking == null, onBack = onClose) + fun choose(p: Profile) { + if (p.kind == ProfileKind.Grown && AfterDarkLock.pinSet) { asking = p; problem = null } + else { if (p.kind == ProfileKind.Kids) AfterDarkLock.lock(); Profiles.current = p } + } + Box(Modifier.fillMaxSize()) { + Column(Modifier.align(Alignment.Center), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(28.dp)) { + Image(painterResource(R.drawable.orbit_logo), "Orbit", Modifier.width(150.dp).height(38.dp)) + Text("Who's watching?", color = Color.White, fontFamily = Anton, fontSize = 40.sp) + Row(horizontalArrangement = Arrangement.spacedBy(56.dp)) { + // Kids first, so a child's OK goes straight to their own. + Profiles.all.sortedBy { if (it.kind == ProfileKind.Kids) 0 else 1 }.forEachIndexed { i, p -> + var focused by remember { mutableStateOf(false) } + Column(Modifier.then(if (i == 0) Modifier.focusRequester(first) else Modifier).onFocusChanged { focused = it.isFocused }.clickable { choose(p) }, + horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(10.dp)) { + Box { + ProfileAvatar(p.picture, 132.dp, ringed = focused) + if (p.kind == ProfileKind.Grown && AfterDarkLock.pinSet) Canvas(Modifier.align(Alignment.BottomEnd).size(28.dp)) { + val s = size.minDimension + drawRoundRect(Yellow, Offset(s * .15f, s * .45f), Size(s * .7f, s * .5f), androidx.compose.ui.geometry.CornerRadius(s * .08f)) + drawArc(Yellow, 180f, 180f, false, Offset(s * .27f, s * .12f), Size(s * .46f, s * .62f), style = androidx.compose.ui.graphics.drawscope.Stroke(s * .1f)) + } + } + Text(p.name, color = if (focused) Yellow else Color.White, fontSize = 20.sp, fontWeight = FontWeight.SemiBold) + if (p.kind == ProfileKind.Grown && AfterDarkLock.pinSet) Text("PIN", color = Muted, fontSize = 13.sp) + } + } + } + Text("Kids sees only the channels and games chosen for it." + if (AfterDarkLock.pinSet) " Grown-ups needs the PIN." else " Set a PIN in Settings › Profiles to keep Grown-ups for grown-ups.", + color = Muted, fontSize = 15.sp) + } + asking?.let { p -> + Box(Modifier.fillMaxSize().background(Navy.copy(alpha = .85f)), contentAlignment = Alignment.Center) { + Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(10.dp)) { + ProfileAvatar(p.picture, 90.dp) + Text(p.name, color = Color.White, fontSize = 20.sp, fontWeight = FontWeight.SemiBold) + PinEntry("Enter the PIN", problem, onDone = { pin -> + if (AfterDarkLock.unlock(context, pin)) { asking = null; Profiles.current = p } else problem = "That's not the PIN" + }, onCancel = { asking = null }) + } + } + } + } +} + +/** Settings › Profiles: the PIN, each profile's picture, and what Kids can see and play. */ +@Composable +internal fun ProfilesDetail(firstSwitch: FocusRequester, modifier: Modifier) { + val context = LocalContext.current + var choosingFor by remember { mutableStateOf(null) } + val kids = Profiles.all.firstOrNull { it.kind == ProfileKind.Kids } + val grown = Profiles.all.first { it.kind == ProfileKind.Grown } + choosingFor?.let { p -> + Column(modifier, verticalArrangement = Arrangement.spacedBy(8.dp)) { + BackHandler { choosingFor = null } + Text("Choose a picture for ${p.name}", color = Yellow, fontFamily = Anton, fontSize = 22.sp) + Text("The cast, a few favourite things, or a silhouette in a colour of your own.", color = Muted, fontSize = 12.sp) + val first = remember { FocusRequester() } + LaunchedEffect(Unit) { first.requestFocus() } + LazyVerticalGrid(GridCells.Fixed(6), Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) { + items(ProfilePictures) { pic -> + var focused by remember { mutableStateOf(false) } + Column(Modifier.then(if (pic == p.picture) Modifier.focusRequester(first) else Modifier).onFocusChanged { focused = it.isFocused } + .clickable { Profiles.update(context, p.copy(picture = pic)); choosingFor = null }, horizontalAlignment = Alignment.CenterHorizontally) { + ProfileAvatar(pic, 64.dp, ringed = focused) + Text(pictureName(pic) + if (pic == p.picture) " (now)" else "", color = if (focused) Yellow else Color.White, fontSize = 11.sp, maxLines = 1) + } + } + } + } + return + } + Column(modifier, verticalArrangement = Arrangement.spacedBy(8.dp)) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp)) { + ProfileAvatar(grown.picture, 48.dp) + Text(grown.name, color = Color.White, fontSize = 18.sp, fontWeight = FontWeight.SemiBold, modifier = Modifier.weight(1f)) + OrbitButton("Change picture", Modifier.focusRequester(firstSwitch), onClick = { choosingFor = grown }) + } + // The PIN: what keeps Grown-ups, After Dark and The Late Show for grown-ups. + LockDetail(remember { FocusRequester() }, Modifier.fillMaxWidth()) + if (kids != null) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(12.dp), modifier = Modifier.padding(top = 6.dp)) { + ProfileAvatar(kids.picture, 48.dp) + Text(kids.name, color = Color.White, fontSize = 18.sp, fontWeight = FontWeight.SemiBold, modifier = Modifier.weight(1f)) + OrbitButton("Change picture", onClick = { choosingFor = kids }) + OrbitButton("Arcade: ${if (kids.arcade) "On" else "Off"}", selected = kids.arcade, onClick = { Profiles.update(context, kids.copy(arcade = !kids.arcade)) }) + OrbitButton("Drive-In: ${if (kids.driveIn) "On" else "Off"}", selected = kids.driveIn, onClick = { Profiles.update(context, kids.copy(driveIn = !kids.driveIn)) }) + } + Text("CHANNELS FOR KIDS", color = Muted, fontSize = 12.sp, fontWeight = FontWeight.SemiBold) + val channels = SmartChannels.sortedBy { it.number }.filter { it.number !in LockedChannels } + LazyVerticalGrid(GridCells.Fixed(4), Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(6.dp), horizontalArrangement = Arrangement.spacedBy(6.dp)) { + items(channels, key = { it.number }) { programming -> + val on = programming.number in kids.channels + var focused by remember { mutableStateOf(false) } + val corner = RoundedCornerShape(8.dp) + Row(Modifier.height(44.dp).onFocusChanged { focused = it.isFocused }.background(if (focused) Navy else Panel, corner) + .border(if (focused) 3.dp else 0.dp, if (focused) Yellow else Color.Transparent, corner) + .clickable { Profiles.update(context, kids.copy(channels = if (on) kids.channels - programming.number else kids.channels + programming.number)) } + .padding(horizontal = 8.dp), verticalAlignment = Alignment.CenterVertically) { + val brand = ChannelBrands.forNumber(programming.number) + if (brand != null) Image(painterResource(brand.logo), brand.displayName, Modifier.width(84.dp).height(26.dp)) else Text(programming.name, color = Color.White, fontSize = 13.sp) + Spacer(Modifier.weight(1f)) + Box(Modifier.size(22.dp).background(if (on) Color(0xFF6EDCAA) else Color(0xFF283C64), RoundedCornerShape(5.dp)), contentAlignment = Alignment.Center) { + if (on) Text("✓", color = Navy, fontSize = 14.sp, fontWeight = FontWeight.Bold) + } + } + } + } + Text("Kids never sees After Dark or The Late Show. What's On and Catch Up show only Kids' channels. Leaving Kids needs the PIN.", color = Muted, fontSize = 11.sp) + } + } +} diff --git a/android/app/src/main/java/tv/orbit/classic/Settings.kt b/android/app/src/main/java/tv/orbit/classic/Settings.kt index 8a12b8b..e689391 100644 --- a/android/app/src/main/java/tv/orbit/classic/Settings.kt +++ b/android/app/src/main/java/tv/orbit/classic/Settings.kt @@ -111,7 +111,7 @@ internal enum class SettingsSection(val label: String, val icon: Int) { Viewing("Watching", R.drawable.orbit_icon_entertainment), Arrivals("New arrivals", R.drawable.orbit_icon_movies), Director("Director's Chair", R.drawable.orbit_icon_entertainment), - Lock("After Dark lock", R.drawable.orbit_icon_profile), + Profiles("Profiles", R.drawable.orbit_icon_profile), Account("Emby account", R.drawable.orbit_icon_profile), } @@ -287,7 +287,7 @@ internal fun SettingsScreen(section: SettingsSection, onSection: (SettingsSectio SettingsSection.Viewing -> ViewingDetail(isOn(TOTS_NUMBER), windingDown, onWindDown, firstSwitch, detail) SettingsSection.Arrivals -> arrivals(detail, firstSwitch) SettingsSection.Director -> director(detail, firstSwitch) - SettingsSection.Lock -> LockDetail(firstSwitch, detail) + SettingsSection.Profiles -> ProfilesDetail(firstSwitch, detail) SettingsSection.Account -> AccountDetail(server, titles, onSignOut, firstSwitch, detail) } } diff --git a/android/app/src/main/res/drawable-nodpi/orbit_picture_crown.webp b/android/app/src/main/res/drawable-nodpi/orbit_picture_crown.webp new file mode 100644 index 0000000000000000000000000000000000000000..bd252ef8e5dd9f2a5f5786fb80cdedd8e1183791 GIT binary patch literal 1750 zcma*a`#Tc~1Hf@J5fhV{2{WbRe(NmDC6~$6;YA~|iMckp=2UJuWY(&K73KQwB!}EJ z8s>5s9=X>NGRMrALgQd4#NOV&;C-LZFW)cr5(e{DT0+9d3GLzSan7~-N1KYfQ^Der zmsvX3E36KM3U6*d7m*55k3{`#whU)(P()xxRIxp*N!zB$EFpU?1PCE>G&}8x+K)@X z%HRBmo_X6b9D4OftR#5q9X8IVsq4!!mK>Tzl3qhqtV60L~+Zm z^VB@B$ZlG}C23UV=!*x3?yQ(W@&6)@XIcjFz8Y^HI0QaSGUWksf@i4`bf*p@-o@}fl_1w#-CB4aK6YySd>j*o7A2GxDR5wLMQd<75r# zN=*5L)XF6#TglMLV%eWui*gilFQXu?4-77T1gp(>RRVC~b%1JSLz#31DM8Wg86Jdn ze2v9BdLBWkmfc^ZBE&~sRAvZ7OT8?A&@a){joK&2N{dNt}$ket3{~T?#WEMH}-dG;TO<-#e%s&!AjS%P`X6sKMa@Yc#Jt9llRBm79Rz)NZXiRnOr#w#Mp0Nr7UoRRca9v0W}ddUDfN7 zWqZ}VyK6ND1nG<0jmoz+5WEdugb1Bd48^Ze&FEC`H) z^8JqBpc2!J&Gy4cx+vZVL7vzZvOx~%BKDnN`*WV6P_Kx68fHYlHKKgY_c>b)vJy;_9eU9ZY8Wq0wQEFvGhRxGMRyzX{|qLL$#9cl^f2 zvuw=-3?9<*PuS7>SIM6Z&4JML7fpN7<)N$#l~1iYc=}i9PrT4IVsG@7Z%46%Hei-a zp#eeXV)+=FUFiidd=Yv=+QEh>kPhn^(80k@JhWlC!3tUF_9jxB5{`i(5x!_`4h~Mx zADOg}`t`L1sj9>{RF)Frf@@G=&`Kq7LSo-lw#6S_9*XL?1}GF{Wi;JWS^x@b)Ro#P z7)kq!@Dk_v+AWktF#B*zs>MB+6;zp9%lFl-BAlsGz9q$U_aF}=w%e3SZ(dWOtCjf& zg9Qsk1_UJIt`o?!{UnNh0@FEwVD~#Erg6+RkNBcb@21G;CfS+Sky!Puy!>??A*29;L|_r zRvy4a)+d=BOpA&gx5r;$ZWDhrH9mVUd|5eBiLRaOVRw3)=fQ_v-KvOk3*Il5SibK1$%m4Qmy>A6q?i zt%X{bAIGq|38xhXp3u@whc6?iZpi+fYW9oW*tx{E2ZHtWcy6L6dqAUV0<0la3RGk>3^_ z`22h&O*!&$&9}d)LGB00$&8ApM>WRv^@SN3 z_5ct~sN$43rC#DEq$LnrP`SsG(Knh~MBum0ws)`zQ%PxC{*koq3;UFEHAZT4(^yYr zmC!FE-WpW-d==smAQTc#LDaQk1S>(oRf3(M1$j)*8E(JkRzzXF7rQHe8A``;UmC#tni{xpXkY`qPm{Zl)_JC{}vqk-r?sH#x$gUflJ1Jj^j3_zeuw% zF%&7}f7xGX?Dywy{_SU?eyqMxCN`Bfq`ROqbg*w@t1i-98xFsVZ9b@<34L6Q+BMz% WCv~Yni?hjmmLtynzlar+B>n>wT6*vR literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/orbit_picture_football.webp b/android/app/src/main/res/drawable-nodpi/orbit_picture_football.webp new file mode 100644 index 0000000000000000000000000000000000000000..7b58f2f28ca556192a3d52ba16a67002acc6eb41 GIT binary patch literal 3546 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 UK?QaL1F<=&M) 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/orbit_picture_wand.webp b/android/app/src/main/res/drawable-nodpi/orbit_picture_wand.webp new file mode 100644 index 0000000000000000000000000000000000000000..4227734cbdbd37a6a4131c4b1adc793d7654f96c GIT binary patch literal 2244 zcmV;#2s`&uNk&Gz2mk1d(jx8aPe#PeTGHfxK=%`j^!2AcU|H%5|fNB8t0+B8n)& zPZUu^u~4zIRuoZWJ0XPScR@zDItGMrtPsM}30eq^iES~lwS7#BjcH7y4o6&Z6trz4 zCH!IUzatP46Tp|olcqx+*On2tVIogUu&u3$BsxsaIS)ouK(^rix8+pXr-Yhz<}*g#uRdeeq+`zs9qGy`Y(TnvGFy-?pZq2R z8Xc`v@Jx6d1?}Q~5OU4H-@Ww)No8 zkO{--0IGb7Cy0lEoKTfd^#qC6mT3!E<&(3^K!Kcal~2hm3II8wd+~J8W_u9~d~XV} z?{yHtW2>J1gn^u(l~41q#2j=S$O&8dG`zu3AtyZ7pw9!7Emn*U(`CmZVO~GmNDPPJ z%47Zc`mZ0C*Wq$dU4!1E`*g$$Os=_zd;)QxYBAQ5xt~ltFt|g; zfH`gafbY@5IdS-C@im~{@mOzfHKcP&+^&3&&V;^)x;|%O*F*IboiTN7&P1+T ze&(>|kej^DVzU`)qTYubs$wSUa~`XXnTg6|r%7h=CX+2^h>7|T@~DcJsPDP#HOot0 zX0zWUEm3c?*>aGUsE;9+s#%HpkR;=W<{)3BM16|( z^P`F|*m4pj?woBEal68SlSn(~xsSSAouee`eVoy)LE#Cjnvtl_u@8;VgRFaIBM6rxES&kCbyBL=hqp9bNt#d z*fJ6IGskKA5SOFgq=WOc?&NA(I$jeA=<^&qi6Ae*s zW44*&x~LiT2sr0i+lMwYu zxXrwmBf8-r>c`!q=?~fs_sl_FiME-yb3{7|qTUNm1l`dQtr>{=D%WP-(h=P&Z! z+Ac(~yQ$c=-JW7^qc=8Pf?;Q~wd+352Q}Sa-vtOJjoI3E2ZBMfTKjHAaGZgPQ6Em2 z$sLL#ILatlUq7E9v)h{%2#zsq)~5R~9Aav0yvblV!Z_K!P#j=B#Kavr&M(N8E6M34 z^H_H}43@Ktx?7dkV@WQ%&7(4%TiE@|*QauSpPhHnL3d_xi=W>$$`i|Hjq1f|D1-jG z0{{KD-$d3+RMl7q=~ngA7KRgULw{DjXEJA-gz+4cZ(BH+wz*cwN10wNtrqa%*~W4K z51#!EalL{U&E7`8p25$u4MPPNwphcCWgJ*WO)pFTvbiFSdkR^gdB+F3;tVz%!dI9H zr3*b2o@GR+-|3O~Br`hw&d(#vF=UfFJ&ZBMluPdX;ws7vV=CiLoSbEjkdgm$GG#`c&m#x$UEUko-F*<1NO5#Vn55Xec`yS+0XKLS6F_-ewJrf7l!G2 za$&fBx%1ttvoQU^+ih;2Eri#T2j@I^vXEZSpFUda>GOsDD*jXar}$6tpW;8oe~SMU S|0(`c{HOR&@t^;Ovj6}UzFZRk literal 0 HcmV?d00001 diff --git a/android/app/src/test/java/tv/orbit/classic/ProfilesTest.kt b/android/app/src/test/java/tv/orbit/classic/ProfilesTest.kt new file mode 100644 index 0000000..a6b6520 --- /dev/null +++ b/android/app/src/test/java/tv/orbit/classic/ProfilesTest.kt @@ -0,0 +1,34 @@ +package tv.orbit.classic + +import org.junit.After +import org.junit.Assert.* +import org.junit.Test + +class ProfilesTest { + @After fun reset() { Profiles.current = null } + + @Test fun profilesSurviveBeingSavedAndRead() { + val changed = DefaultProfiles.map { if (it.kind == ProfileKind.Kids) it.copy(picture = "wand", channels = setOf(TOTS_NUMBER, 611), arcade = false, driveIn = true) else it } + assertEquals(changed, Profiles.decode(Profiles.encode(changed))) + // A saved list without Grown-ups is never used: Orbit goes back to the two it starts with. + assertEquals(DefaultProfiles, Profiles.decode(Profiles.encode(changed.filter { it.kind == ProfileKind.Kids }))) + } + + @Test fun kidsSeesOnlyItsChannelsAndNeverAfterDark() { + val kids = DefaultProfiles.first { it.kind == ProfileKind.Kids } + val grown = DefaultProfiles.first { it.kind == ProfileKind.Grown } + assertFalse(profileHides(TOTS_NUMBER, kids)); assertTrue(profileHides(304, kids)); assertTrue(profileHides(AFTER_DARK_NUMBER, kids)) + assertFalse(profileHides(304, grown)); assertFalse(profileHides(304, null)) + assertTrue(AFTER_DARK_NUMBER !in KidsStartChannels) + // Kids watching locks After Dark and The Late Show, PIN or not. + Profiles.current = kids + assertTrue(AfterDarkLock.locked) + Profiles.current = grown + assertEquals(AfterDarkLock.pinSet && !AfterDarkLock.unlocked, AfterDarkLock.locked) + } + + @Test fun everyPictureHasAName() { + assertEquals(18, ProfilePictures.size) + assertEquals("Fairy wand", pictureName("wand")); assertEquals("Pink", pictureName("sil-pink")); assertEquals("Ollie", pictureName("ollie")) + } +} diff --git a/design/profiles/pictures/check.png b/design/profiles/pictures/check.png new file mode 100644 index 0000000000000000000000000000000000000000..1d310a8be1bb2b404c02988cc591d07f082b54c9 GIT binary patch literal 46394 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 z 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

(( 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 literal 0 HcmV?d00001 diff --git a/design/profiles/pictures/crown.png b/design/profiles/pictures/crown.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca651b419ce98550cfdf8aaaf95f9d0f7db829f GIT binary patch literal 5040 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 S1+JK1`o?F@8I literal 0 HcmV?d00001 diff --git a/design/profiles/pictures/crown.svg b/design/profiles/pictures/crown.svg new file mode 100644 index 0000000..4a6ff16 --- /dev/null +++ b/design/profiles/pictures/crown.svg @@ -0,0 +1 @@ + diff --git a/design/profiles/pictures/football.png b/design/profiles/pictures/football.png new file mode 100644 index 0000000000000000000000000000000000000000..28a9a3f49325fcbd0e9ea74d2ae7c5dec22f2a55 GIT binary patch literal 9772 zcmd6Ni9b|t`1UhnXJlU@A<2@pNcK^bBxGx{OO|X?QTiHVMnVx%_H31X7h@^Qv=TzL zELjo;VaPsXX5Qodz3=-syz}|Y=bZDb_jAs3?)$o~`#iC-xX8^Z#t8u6zGP}_4FDWE zg#&h0=&<=O=q_s(6i6o6_u zZkt{Y0^n@T!5*D1BuiJyu1`B=(kw zv8Sn9l4+iqwApF1TK2}ck6%4dBmBqt@|d5w!H%Nc1jL0;|G0VVh{7p5)U^2wpVC;f z>D71giaohW&)z-0G@85gw<%Hm>sK-@e5ZGBW6#vG_oE(TRi8W=)VhP|*_%v;Z2SN4 zhv(<^lLXb}SsU5cDCAFSSzGV%;p`yqm^O(?p1_PmeWSw%8PY5Ur(zPIVmtEQa(k+R)I??`9txTi_%wAl{9{BGz)-W;t?kcht{6v!*PjEAR>u zyP1JnuO6)+k|rcFap#J+Di>$DDxQM_xMluF6`gI<2;T`dOx*CWT6?n_s1NhM2*Ast z%@8(P$+cg#TDob>Ooa%yTxL+cQ?!p!{jU>^t#OHu;|i%|D)MBT9)l_xj0{_C5(gf_ zc75QW@sUy6rH8OaI1KD>5OHmCwD5-!?xGeISgGnWFfh@n-9FPowKh}VeK|lze@8OI zRJlL##&NvTg@e#5>ykC0xmTG%yYkU|EvO)L%asRg2U>l@ zmfJ_wc^_*s^&N)+<)S@Fo0LS3QXT{MP`oe)@Tp*B(EbRtnPAOZeAI?Hvi@1X9i%~C zN`zs~_IGmapiYDwGknkjAPI>5a&sx<5HqlCCtA8Q!)-4Cq$Xlt&_W7n#|#GFmNKN{ zsKq`t(;Jhfri)OC)tjmN2Bp6Y7P6U=%>gp$Zcj)8Qybi1(8Wp~9n7dqGtu=Q(d)o2a?j~L-i|ZcVf88&#~e)r}{-KX*$TzsWYOZ04;Iz&MBbO+M!C? zH#1XcMbI}@RwJ&>B6$0+x=mnCVq0?oth0Fd)Cwe)S9w3KB&)0PG$7fwp$hkp;rY*3mc~Ht4ZkJ z^;!Ak^P}gitkt|~jxPsD|1+n*K6oRFfe6%oU>UlTNG{-aW~~41chvPBHh609EP9!v z{bY z7Mi;q)f6-1Vq^47fgPmZNWnD|+rt>$z7O72{uUL#eLJk?*)`8vAs7(v(l*o>Ue}s3 ztaYVPDqasT-p`2sL1j#E|51Tm*E(|oxD6!Zy0^w(*F7UM)`o23G7|`}^>eRK;!^D1 zQ_NtwYvjjg8(jIex3ssSS;f!b^7uwvH!C}QL<9z?6H}6LwC){MdF!P%DowXU_)d8t zOgLnH@(B6rhyV;=PN|%YmBXQx98vKKTVjb#ua+W&+1|>*!M4M%_8V;}gXz{)>*?Z- zM|@%v{P@8dv|kbvzhF^D0gDXhLYRHX-R6+rrOd!-sIi}+ex)ua(`Hdq5+id|ob29s z3Oi-q65TXN&wR3K$_7tnxXr5fc0$ z`17=DYbqD1E-Vn5D)<8Ed$RuBt&=Le+HD!0<1qBE3F`bH&P^_wz=Pk5C$sL@SAT4w zw(s;Svym?;WBf?w@92MiR$xV)#$Q3MZ zI6itV%i|vTq@N@kX5f5mGgQ-Y(nIpx8*^A)%TGglX9*M))mVSDpYh(D$#yQxY;o9K zRHYm%Wp2ruw{p&qm0`A-EJj{*66eJ})?z1w1-u6n~1PFFkAH zd}-)VLD42dWdPWPJ`jy2{WM@Nlws<7c4w&ac}~h+`ysB`%?CZ)4|;m=_3U6QbEjdZ z?VNt$XN(>x`aY|%>v<+-u=3ah7ue0Y)hJ)t9u)X_749J>1$>Y_qp#ay**>C}`d*&( zHbN2(C14Mw2!Oh)^IF36tFNZ$^z6a1oZc1~Pdt`KsFo}5hDVA@38NFsh^Z<>V@bwZ z8Tbbx#E>@ZS?tQmkSeUazg#TSgeKxsLUj2Hkat6ygfgqJ^=1m+p@#Hp9Szf3_%tY=^L#1jQcZo*&aw zf`4I(Czz~W-BGPfX^hv|nYVaHj=1w;3(xBM1N1HW#h^`~R#pDs;rX*Ny)V=-$q7fb>z355@{9Q& zY^WjDv(IsWCHdVq!-gh9i0X!1{RiQq(J=(uCT755vli3x_yc3@N0A8T{p5seqfGXL zZ9WWjl#Asd=LsN>>e04l*biEpe+N)u(Z(mWU*$ucH^tpvLB2zLe>8uXe#CL@e#0@v ziGtQNB zJSM4Sx+<*QnOnDMl(+uZVJ=*9l zUl`(s0)|`y{S87FSo5T`Nz@^#cg4YNs>Pp&AWwh4Cof30TUT|V2aZd|{XAH6)aP?V zM>}?v4sW4wsP2>>820u<^vPhS zI&T8|*+t2PEG1&>O)xAAXALdnaY{lE&GcwYPRF^b`48i_9*4m;qso$CsE8sQp63}0 zDgr^&S>9voldCjib<56Vpvx$1YY|KMB$mfyC1X~%|8~UoVFuIDHRzj0rvO)%cKbkE z8Xbi7?YWBv4$F5zLs|7`A9IQ{B*s9`!c_PeKn*8F8S>d(*p}uAoxI zMX32r#Jn6+^^qiHeCu1$Q=lt=M*YN}%hHFp9N|A}co^@A8iD8aD#ap*@VhdEVk zy%Ge zrx}bSP1-6Yof*0vATo0Cm+p2!Hxj7jzGh`O^#5fkly>)9ZM#qDPh|%>mz;&t$NXkc zuLyqch#tzNssT@c8*4w~dx7+;mj^|f+-d?aB%4B+Lw_RV#{2kpTrpVRlgvOOzuXrU zW@{wI|E?*OYx#8Sl8vJ@SdgOO=H(162?}c591~7mEZc_*VO~-o-Q{W|<2^1+wZ-AL zz~fuM!OD?>yS91wM~GlyaVvoZj{j<7r+J93S!D4l#jlar`sRO17bh|}t=$ySy)M{_ zNe@+Ly_ByQX|r%GV=mv;Xs%`5*d<5DX-}j81bta3p^C=&YX@+tbQD5K{acc4fe@$) zw4gXnX|IRJYK`r@pEAg5-A;M`)1a=fk>Pdcry9bWv{yuhqRH(?4sM)PT|x4#CA z;Quw~5hT`)Gw9Daf1IP-NxOw#(ZlTD44vQohNX4a$i(#jkcp|^pABzfcx^p_LSi?S z5Bm(}qoHZ%wiM{0oZZzQ+1KJ~_?G;^@N@6y-c0@x^UFW|BS_Y^u8yZ+$TuY=aGMZu zzeT6iPX=?m$CDI3ab(!z>u$hVNJBHox zThE$zSkT&20R_vv)7c|f4+n_Dct|gy1o0Yj$_NKzg;ODE32x%k}UM7 zkB?oEFmGECj*Gq3_)yOf@#&MFr18p4AQpFl3;X0^+^r79?d@KZ@A$HY%W<4xB`9@l z;CE&aA8=Vg%}y&LwKw2J3r&5ueSChHKUboixBVRTr;j_y-aOawv<-+KVxTo?u0CRS z@2tOXA%8#z5?auQ8gSdgoBdpt_YGyI>5j=eaQ{oJd9Q43yA~Pe2A&PAtmMXJ!dBaI zsFMyHpnhl1_VGvS;M#@XN2=-@+BVa+mRtSh69^aeonA&|d#Gd473MGvTTnc==}|QR zYWm1)HAP+%lUgyBxTVzKnT(67;p8YP`VJ>N;1a7F#sopHC}Lo;SRc>m29Z~C-+K{{ zm^?9?rT=XpS7ZP;Dhu93UP)7{Y`Ax;-!}BSk@FD@w~dI64=qz^%jxn`q~CGia~!U} zXt!9zxP6BIhHw4uy(^g1qaxEnu6-=-u!d@6@II1t`2%vhSP=H zQb#OtWZYia30&G8i#vhJ!-&UzHCu@Gxwfu{t8K?9)6j~=Mxy&Y0=83o_GYGcw`3MG zSlQaUzG#1Ksu!HC3s$y&&||Xsfxr(mZm(xA%F{;1wA*rzs@_I3oMxOHGv|Hg9LhJd z;ua$PWWk74&t7!0by!7d!zS+4tq$zpTMT3!u{-2FzdQVm8E~8=zdi!1*dO-|a z9C9GfSE!dU&naIc6VJRqFnnZd)5Toh?VVHY5kt^+(i#n?5uA=K-FqYf%WT8+32iH0W@eNNdQPq0BgR z0F5>Nyt0*n3T)K9$F{fg_x-qhZ}94dEiYEq?|df=|M`46(W#qr@H4GJUX^9+8E`wV zP0CUfeRRVtZgl_&d?ou)DU0aUKtCZxSCM! z_N>oJ9>yygpUA5h8m{S3&Drvd{0h4To$JhlM)B-Q$)XtRWAbbRmK*r2mQ1!g*th5&AQBt$lM6yI~4)66;={kseDH32ulnSsHF zFBaHSL-|#IfAcnrzxUeiR>4YI_oJ0bTt%I88TOwwGYE52p^qe;ckaeo%;l)kzl_E7 zRiuuEKOv~yK{woI)JWI>@eb{a*q=IblGjFRo&HYJTTXFTH{16!uFcTLJD^83w_2l= zj39cA9r@-}eAo(VLGw||c4$r=59`c?rI1&q66Y;%AA*BQ%A>7+ah5JlZ)==)lr*-ilY3>{T`04f9aVwIuq#W@DU{12BgK=&O+OxCty zk-u;LSp#guZQ^<(oqpleWvg{%MdDa2^)^g@?zpP4R2#kgzJ~E}A;XB36FST53HPlJ zBJO4&KI2R2_JjT}v=D6=kFkoKXF0^#{N4=UdbZ*M(W-umPC=2i$ z8La6sn}+6=pxV+t9~Y`E;dpLn znL96)!&5C3&}9MXSqGi*-=FA=HegzJMI5e-t0`mGqnUwJm7*Fps<}6Zh|_N7kzAKBTyaXF4_~g zv9WoDH;;QH!Qg=|)Z__r^k58pYseMo>iVOP2OVIPNzH@!KEOfe))}O3YmG~fK5q@V z47GrS!cg^R~KGQ3zw#<=x!0e#u4jO4hmy^O-Y<$aTNV zr@%n9I6i(;hg*u)o4VN~zzfXJE5^oerE`+kvoewmLg11wXC!~m+(?e8V|r=8Evfs@ z;#&MqkKxEm*TGp>ki0;Lwxp>-i~g537NX{a9wJgq$q`}}5$orI)#2Ub<_|bAIDQe8 z3|BM6t{5|efxRD(7{Y)ucKte&T2j^qw?cuT`4$;=+ay;s`uD^7(HsQP_$yccupoYK zS#-Zh2BfFn0{FcJ54q#e=@$jC@uS_MLk#}}(sU${)IO?3bOO5ZUE zGiHP^0e|BaM#eYLO&)~j!urIpBuIDPz}$-H1wQeuL0)it2KT4x7uK<=VB5=kSvMmI zxE*d6p&Y>rFPs)}rKaBo8DT50=))rx7`QlleHMiP^k1by9}x?9;lX! zRKqaMl%+qo&}@*$i=*x^^s_O4L`rPi6ONc^VgG$4@Vq(E&)}+Ib(8+{FtzqF)@7xq zdArt@Vnc%X5PId)g3JD)nUJe*`>WE>0gs-3@$V3;PXs4k z?Ce8kzy*1}V6(;j=egJYD2!`u;U`lLl)ct%>ENp9DI=$@J6D3PklGENN3ny{ozI-P z*Hav<3kzYxcIPQ=^?sqAl&?`7AXS8KHA={!K}@s2oU#7>u1GGSvar5tG1KMJ=93({ z$O(WNX>9qTcWrKwk!jsmQChNcg~@5)jw2&g4xnPvoHU**R>-nUydE2Ct@p#YQ$7o^ z1A8^Zc_rrH53V1|s)jafuZ`;kU-osvT^%R1-2N>Y_vV@uKqa!Mrad{-GW$?PIsdie zRgahL1ZT&-x4hWjX3XGZ63cG2LvFsG{%YpX*gWCr&Qm>F6$D&WlF)OO_daM4-};&} zeul^Qno2_QEu=)i#ts|bTOND2HSNioLx=PXR4#jC#GubgyX%Xw@ps#Qa-X%LJ>mG2 zZ}7TxW@ilR8)0QVqo3gwmY)Z3FlI1k{Bgpb&EIoPZ|6eu8ehP#aNgR2g}-_<5hSp( z5Y8K4!Yd=_Mz2HyevNCknG6|H>0DAkzI~&mRiQd1*(bpBso#LL_Jn=q9(R@`RfiL* z{ET9I-&KdYY=@;U(Xetu_>LzB@Z4dgr25Lb`x`Y)OKNxXvm&-hpr&q|}SC15QX59L<@Go0zeA2K5>HOJML>Bx1!`_(1aF z@4*QBhVzhbFVqjfO}tT|)Qv$sGy;=u88{F7at>+`>m1A(4dFaa?!R5rbhDtKB|oT! zNNi|TuAVE(h3L{Pn z>l$yi2EDs({gvHP%kE!mS!<5Mc?y8!s&6~Y8uY=SBqjWrj~!-=_!`L>L6{^U@M-N7V!fLh@qwotx(I)ISemKSt=y% zja?l7Y>TukSFVMy#TE~|h?6IP``y`g%ffUOa)l-wYJ!=01t zK+$HS67P~5?TW1!#ZJ~P)_hm&4MlCaO2d#*zRJ9V$k-qm(&Vm*$oSDB{s5tX;WuVv zJ{Fv!EGUL}a$NB(^fSFdOuQ%UO6{B|xxvHp$;z3=R|$zTd09c`rR}SD#i3JEj_XGP zPy3?I_jkN|X7fp{aYS4O_=M;a|7xmmHrw8Wn`M#Xi)fI0&kSsJTK?CH)V<_011T zG$&?NSp@hTYVf;UF8!neyFNRG?8N;P_@rixGx`JRb0t{Jw6!MF@(Q}kNs~!zbR4HW zPSZIC7R>#OkkIXvRT~PcYN4%UzV$-pQ)K3*P%!yO9F$d(@Kt6{e|<1L7CInhFjQ6V zH8QlJ&sPX?zOyEUPcbE~V$6t>^j3d|(^A%S)s|h`IF>v?%3?Cev#DT(QA-ZHp>b2& zHmCDmwb0T|?}nIzz8d>Te9Pd0c-=CL@bO183J~;c0T5g{CpGPRV5he#Wah7NoI<1_ z9E=@;t5iUv7-A|8_f1dIFCX4-GG)cjN8%@XXakJZsrveWxF;s{3)dKbaScwObGjGG zv;_+=BS{E)7%|s}=YD+Ee)Gv~W|4I=&d-6XeBh4AEXJ`5;f3QVX3!$L|Og*+ckw!kH`NvCrL@R zUKRwMf^qu?8IVx|&!c}FV5IgSy~}^;~L3o%&b=>{#9s&*I#f`+&rcSg9JL=5Eb zzj>QWqnURKf){ZKoyovF^Pkr4Y3;)xbwrkT6bv!B(t>1SyOx%8rs^m%Q(OWLE~@N3SyxZ+uNquIE~so{m(R6lcYy9%mvd z-ej6SW=Si*z>2qfYN?}j@~Cn9>)XTMb12v25TLBq2H%7FZOI4a&Yk`5iA77lg;|zk zmDFnGW*iz?68SrTRdUuwL``zFa%A1?CaO~_hklU47nIfMfYMM|*6&Uhvy4*`5;gbj{=I>|oA7m% zI#a3XJ6#9Pwl_evfD{1Q8}{L_eBMGjD$io~ZJ-Yv<53OSfj=@Gdn*ny8S@8d0) zFxRP{Gp#oBySJhM-adreSXz3VE#s!HtKh$y(%fNou<*MgGKsG-XvO2zJGeo6OK}Vo zz820wX$evGk#ik{`5lkxsUPNb(AN-E15A7fV=JKhXTMd$(3ubPVeF?{)lc$9z_7|o zaYeK=y_JEJ(3c%ux@@hp%8#6zQ^*&6HzNV4JYymy>f_&+HWS119ELCBMc97Nup=@s;17XYBVx7((oO3_XxWYj(NGt09ziD>Km<8+nHZ?X zJN4$c`iAYCF6LXFq$Q0A5j3@4U5;ZX*Y?)mD?WOut!psH&}c3Dz%u|*&AT?NX{;=7 znI*&DwFOtF^~YpD40$3?3Leq>)ab*9L&731qHL61iYH>96@!WapwrQ^`la;aD#Nzf zUN*(h%qbe>yDTn24zsas#SR054XskG_nD%cbDNH1ZtqQ9k8KBPLL@YPd v`mEaL9tHo=ITzY=aDB literal 0 HcmV?d00001 diff --git a/design/profiles/pictures/football.svg b/design/profiles/pictures/football.svg new file mode 100644 index 0000000..7d5c47d --- /dev/null +++ b/design/profiles/pictures/football.svg @@ -0,0 +1 @@ + diff --git a/design/profiles/pictures/paw.png b/design/profiles/pictures/paw.png new file mode 100644 index 0000000000000000000000000000000000000000..6290a0a8bb4ae630335d384ba38f5a2dd1a5aba9 GIT binary patch literal 6048 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 literal 0 HcmV?d00001 diff --git a/design/profiles/pictures/paw.svg b/design/profiles/pictures/paw.svg new file mode 100644 index 0000000..d2e161a --- /dev/null +++ b/design/profiles/pictures/paw.svg @@ -0,0 +1 @@ + diff --git a/design/profiles/pictures/rainbow.png b/design/profiles/pictures/rainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..84e6388ded742711c8d62187037fbd22e2f3dc9f GIT binary patch literal 11803 zcmeHthf`Bs(DzNKkAi>*f=E%CB8XBI1cC}!XcjsWr1yYyLP!uRMMMMzg&=~Ul+aNS zf`t+RLk~Tm^Z=nG1X8~|&pY4W@Xj~$W#-PknPhj**}Lbrzdd`N+FDx(?>n*&007~u zS1#WK05JCv3<&abZ|GhxbW0KDSK;!+@%ci$u-mXpENxd_iHM3cdZ=rf0uDmz) zlV9Ak^HI@V@Q&BzICI?3-(QOskDZP6)6G2dviO41v5K~CzadSOj+b*RXh;}$Nh$f* zjqBUb&#}(r#a>lg87U3>AkM>+w;{GqAZeD4h zTupVR8e=ki$IW-Go*)V04)gzi{#QM)(Hn+K48XM-H(k%I38ZpN;plVvOg6Fm!%y93 z6?Be2?g4{6difpl22gw)0FFOL1X9|zFaz^w?daOB;>`Gwy>RH{t}^HBvD5JIy;oP+ zjCD-sX;wG@;{N@9T%e7}m4!!_y`bmCo1F?mEnW5U1O&arQ3|2}FmFZ4Yup`G-HYTC z$Xf*^f@WC%%)Q{zs}V4NTwDy>%58{_zLsr6Aw%Jv^B;ctyFWKV3-DQ;Uyzf3^G6HR zt_T48ULe9F&`%^smC@q3ot9S}od&YvVVz3XktYYvE#x0@X>k;5%M}9v($z)PHJ-eG zIHEAxwB^&!im{OAdL3hVfU67`m~Kn-&>pQ@NwT|S1JyKYJEH&n4sQ1id{V4OP@ zuGD%FxrT9Njo|)KAsjC%1n>gSo5(mD3uSRDa&10TQ~b}Iw7;^ax_Cil7f_J!Fg|7N z(w`TMl?jvpd9g$JIyz&zLu{Ym4OL#C)JBuF>XD50x!{O^zYE8QW`kBx05F^|0S!n` z{tV0f(`lD0ipzhV-y!7$x-9_$)S4nS;ZGV7hq5L7nk`BtAj6_SfmRJHp88xV4OZJA zA`{{|up_<>H@Wa#!dyZWPzWg6y8+G?u>FS@c(Pm6LIL3}6KE$_E=hm*i4z~Nlq<0Y z&K?IKw_opyDS$zjp8`O&?%Hgc{9OUC&f$wnf`I6^BgmcCSM;2Bh{`%+Gkmz*wRtE_ zW|a%JJ2)0l*iR-4I-#4U`Aa2Vb9bE-_H98KXm zkDxRNxPSQ*R7utt4NZwynv&oc>fk6J=FugUE}PiEC&eJ%GywR9YmFtBo})S5NoH*6 z@3lT;_PVO>(OP;PF6##td_(z&QwX}hj#^&LHd@M$iz;8m3WlBp1H29CCb8we1h$vF zFt81SF<(~7x7J=pp%Yl2_(p(l4^t+4$nr|A@fCT{gZlvRj{??h6kA>X=A+B%X54QPj^}xW(56OH9%h};%D|(s4pV?0lwLG!5 zp;6%vE9D;EKe2aUjt3%L!yqFdKaCDC46v2M(W~L>RWWc+ysO@%lNZ|hC`pPei z{^ZB+Y}Rm&m&${In5=(8{WG(|WITdXES@l&O!asVYAXhrex3a6wQfoq8m+G3sFaF; zfn7@)$$-OCZB1XRSlmK8b&515K$1`$IlW>6JnLc0Vd;G)fZMv>Y3&PkG!t2uCg`c1 ziHYA=;1m8TEWxD2j*q0`uzUt?p(8KtNzOA7JW^&{s8$UmSq zPyDz-h)jsL)#^JnueSNG(hC-i27_Slcs=3d_twuke%?0k&16FVvzWSNEpYZC7~CT?fjJ18o9c zG$I3a#ckE0a$n{4qBwg7r6j}HMwc0kVY2vv<({`iwcC4myM2P+KZ$h7Mc5cKV*Yi) zLjW+9WE8vn#tr2E?Jr?O_O=?%I_#~rZm658Dm-cVpa7MOL6j)@>c3(+ygMf<|5fp` zN(^RHlV!HdV7v)-qVJN6TjpKs|-3uonaZ3VU!S za~DlCRtBG>}@D{AWdvnJj>H41brs4+(4=T{ z5AHveujU8idLA)f-_@`E#`#x`4p)s@;Fd^m3p9lh7czOV(b!dDO}UD)Gv=PmcfDf2 zf?%mS7`39ex0gmHPfUktnS9fHy%tXpndeJrs~-r0FenjcCIqNn-yX@GU3JM`E%9`x ziUPMSPs+0E%82>;#Vu>84+_TecF(^QF!L*kRp>J?lKn{ydONOWgdwgrpGG}Pl(-Do z9^;NRC7Ky7N@6wrCT{nW0ts!4x{XZpbE+-(zNgJ$TSIY}=F_b0;ngk`Z-}JH23*Df z8@-Gs_kN$4x_k8%Pc}Q$;0Yb5*uR9BO&0`Lo#q83Zv4tM>NQz>A^v0lmOx`LqazfLZX%|)~-gdNQPWQcx;N*+E z9wcJ#-X$F!QeEI19iIj7Wf9KJ@emM#pXx+8%DYNRJJoTs;-mQf4h?3Bu)k;;r+uc!+mg2p*=>8A~!_iFt5 z^AmRyF5o9x(9Fxk{f9K4J7G`2V!&lJMu&sQ)fdd7)0xPiK$az4SC}7MD!d`bTeLj& zFAe%bmMJ{J3y5vCOksL(&{NDe`XLz|U6BV3R1k*Md^~Ho?STR7`^syFHjeW4DJtCL z1;Xr^fv>Q4?9j~2M7QPsm&h3gJ<^Et#S3#Z65h=&8~T1{EO2X?Qa=;Oztsv7S5?k) zDZeCo=9m#KfwnvP5(9fe-4FL_7truF`S@dwIN5rBNw1aOfYcc~^%obsmmk0TK5?YK zWBMztEs^5=OrVck?t|hrsz?Rx8cu3eHg4{6vAvZNB~J^=;@^mffbtkQ&lz+hlP^ zYtzD<2W8`nneXN?JsI{2LcZR(yCM#`;m+lR;KkZrn3F8~qAQv36iVE6BBs9?`Nz*( zp$<}z+63T(ll%`K1%Xj*d(JdX&n=O#6!eE()v%8)3@#NA zlm$WBzE&{wCu%|oXUUmJa=uKG6WKQnD|fL>tgBg|mEAy7C?GExo0JIN6cOcOM-zte zDzpf8MFXKaRlq#=B}KADH%Of_Pbp3H(yk9Wwz_%Z?g|KO4%jY6at^8>D<}kgPE86c zLLOVW$kE!w7u}HJwG|O9t-4lO9dr`jWzkO@$k%6C zvy*sCE!lAj_~l{l@9#gFDT>-df;^u-V?V)SW7T&W@Z`f1(MtlBm%l@;rpbdQ-E;S zzyN*SY}SiQzRJWH`%<3?wG3p@^-Q#zt$Y?6x_WvVW~SG< zJmxh0FLSja#p(XHZ?|f~X3B*^E@W|{g>;@XL;j}3s+z9J+s@AevWgMqeyt%*r#wDu zFH8mRS%rFg0RhkHG$#soxnacF=`zt~;g*=zS$t0jUe$sXDeG@P)09@?75W$Fw@;Wl zI;+{3o;{%7=Bv_n{f5GIP%)Pd#H^T*pwHWpEY8=uJ&nLE!b^_G3%meysU&c3(YK*{ zjY_&vs3#xM; zn?x=m4`=XXJNPZ{5R@j)kV|m*%K6(EGG!I2+xlDpbZj7ky_X|1Ka?{u$GyCFzEd40 zlN~JLtSIA_)@#25<=?s-*mrOdW5IULi{{z$&uFe0+&gxuHNDr`cX4fkUp2=oDSY5u z{qR;Z<+>Uxow>5d;ku;CKns}Pp%aWaKF<2+F68a{7Fd@Zn~QsKTO-#hmKh@z(w`IN zvfOLI#j6K5M)f}LEj(jB{-{1i&OdUhar2_p4PHmdSLDaKnFr7`t-VD7Mod04vIV-I zbqz*r0^b=Vx3+sAbV73zXdjr5*A=9s6BIGhf=~GiFimT*i3N>KDC>!thYr(Pc-|$c zLPMSxA4%n%-;<(~TMoT4jWKBEwg(oX!dc$d#|6R?j5XIi(}*T53vp{y?LPc*-Z&WjxAn4i zDZWrw_EtpDS)EB~nOQMulv*BT@g$X-VVrU&dPELo`j219m8R6kf zg~{dw_CxU&CO6A)To+bsb!_6b_AIXO=&@EQ+Ul7EOUR=1u^J-~gl*WR+EE<1!)@8q&5F-mVK43HqiPS~YkIaNO#@NpIZ{c!9V5tWF1#y+~v33p5zTQlk2jtBXJFbI*_ES(osCs)kYOKK| z?I-Q1K9q*}F^61sG5PdyH3)^bL>br8SDk-#$~E`=4fS1paEzOxu`CxF9shP+ z<3CY?JQge1t+v?<#$%r2&v9ObqErg0B01-u%9#MQyu_RTb%6~*wW-|Cd#OR-tBq3DJ zD(QW5Q3jUv#_{WR?XSB7b-R%}Ubg-?{h8gzq4l~Zhx}ir!OY85} zRZi31tuIa#ym3+{KWx-QIN zSd99#AWLz!@Sp)sf9}yoB{Ze`1E_P}^f5mVS*YaRy;2RbP`j9@A5aK4$7KQR z1hbGZ&7NX!p4FlDUu9?C>UCFP2KEaJx=oEFdyGNe2>2_^gkOb-h|)DHu(~E@wj#m< zf0HVf4nm0ih83+B>H+gE;IjQ5CNLyB6S+-4rkRN)Cm|xZK#t5|d?Oev6XP4g+Ux03 zOIQo!WI|yMLFDU~V%dl@1&OoYzki7T7sdOGAYJqmv&_B%(&M7YIA`_17peQe&4%DE z@F8{fjSto^PRC=G-wKq-u4ra0XS8ZI<^8$dMPeEB6WLKV-YTs6C4L^wsn0Jt20GqD zeDPX_`SQv^pYj%*fU;uX?~nUkV5ukCjgEvyj;yMcA$!k{%IKccQ$c3Lf9Hs3(r{>Y zfCBPTW%nHN?9%!E9?n{vFva;nQEE^I|4(|*>y?IWy+Y5-XE)53_PZAtzqg))adJHd z>p8E>*wFBa?T8ZmdpPyM=jX|LA;{*Ol0A~nEassPI3jkYSjNRvLS*{$S}evwh;*}U zx+mx$wdNEg5R}@$_k!<)lr-wNM!kgwfgLPDudbk@Ba&iQu+K8F)=Wk^tqaZm1l_@o z{g}gog`ZHy=LkzNHVM5K3uw=$ueUB~7vhumzQ{ewG5%2<@L9W~P=ObCc#kN_L*F4z zN12z;WnyPh1!hQ-E5_vDX6T7b&b&DCM5c4sR-mM#!i=`y##XtM0Mo#JOhRoUwK`H_ z%X4b(n^8gL)vd>rSsY+D zID{Awo|`+fl_X_aeDp2#=fqXt40OG<4CyJl^M~|nZ)|N~LVL0J%*I!l=h0KB$&9hQ z?O8fpIWJHDl;F_)`A5B`raweDZ)}V?T^z)0qa^feNEdJ@N?B&Jl_hgnUp5jRsJ%y` zv)>UnI-n8e5X?uni6$>FC8v7&q|q0wPUjB?oTxj658vrQcWZ0kvaR(Lu6BlQzOeRc8j1JU}Z(hkJ>FJxMEro z`0WmWDbiYNB7Ik~JMZt-0FSdf-O2?(kOCKuC6TR5_1)dUJZ5r9{`GSI_t`aEGH=Vt zJWRhrd-YYl0G*g1>D>p%ThuBbvMD)Qy*g!v)<-4!W6mZj6Pf1*64UBHACz+IM0;R9x&o9!oh8|u=W z16CTaUViT#_nd0*l;HUR`-)aLV^M;wY^CGq;=TYcL1ExG&?gZM5w)iB(yf=l7aasbe*h67ITsuk*#+ zb@&N9kL&!3W2Ir)j>r!ki>E;?s?_P!SO?TIVIL=; z)*DC$5t44KIcqf3Zxcf;U3}Gv?0WyFk;9z1p><|Y6c)~4-1oD9SG?`It#Yq?o8+03 zDPkl#?XC6l>D(6|)f!E0gNg5*z9nl9I0V`KT3^mmw~VOMt7L?O`6KFuGcxql<=PLO z0xoG{Dca#4c0-fr>g$&@jozlWANMpv&Kf8HpY2b7u_@ZU)jdA(mm4(tnezJU$!uZL zR%2J!O}6-NT(#xp^wgs^w{qyeqFs$QF@$vX@rhSTu?nGWPbYJ{V^N~{s;-jKmQU0DsS%e_9Olb5D&3T{StcyI+0Myt6sx+Dy!eR z_I?pIAl_7+z#{Jc@NFl^c$~;$$Ij+wsun4G(q1w@VBKPU3QoR1oe6t<)3($JxN~sh zF3o~7T_-n#pD@X6$?27Beuy*+CmZ|R+W%acF?GxH;ZVyE-vofkt{saGuw(i< z?Qx$DU|r7F&iwEaa%L8s|A3FP42P&|gGG zXjSvte!5YPX_5Ax;aPlVSK5nrTR6_lR|h0G*##x>x~Wa<hv{S)#v5#xc{}cs_qtLa-nCJ{nZUbbR8FfIz6qh7uj>LYjrPYe z%DvV+8gHyPmUy~twxjk&neN}9bpu_1YcQSY-dCf>4or3RjrxPmw+lJ%M|Y%YHjhJZ zvFP^k`1c{vS*o1wWvm^imkz^YOs~dkFqT?^qJa@j?=SYyURe8PvwS&3b#Y2l7`GR7i;#O z=REwvtxZ_FSEz2!8rf8Do}Y^H*DuATlUn2^w*Ak3SQ_Q-8Vh+w+KB<>drQzH3djD< z#n(UmNa*=-EY;M+d1*czgDmMIE5KNU)7U8M19aDe8)0b2X_7s@bojN04*xnSb?h^@ zFsyg<%c;|@f09uDxY4X>{ejF`c=KyxWTyWtnp|jNR9Z6FQ}VK~L9IWqlu#4Cn{jv~ z=XeW&n%`J}FEuXH>rQSbXpVXTs~xMKjscE?b^-CHvnfc=TC2qA&$Edp*`&f1BIkEt zJ7*Maw6b$+7J9TLJI)Frw-lr)5h3pET=Oy2o=dBCU1a?LfCBN|(c&YXiKB&LEDS15g zVSD-**QcR;c^b;?(H!k3aTNv}r(n&R1o5W3O~)9-x+%L*r)v33?Aex%)?^;)bU*w= z2b?&Uqq`#HH+0DF@B|2x3d|%slp@-S{&{4!jplZ8KD_)hHxyFah@2Xk51ul~{Bek} zmkA}!Cq3+0Hu9C< zL`M}7`vE4fXtYWrxUqFZ7G1KLxo|-+MXttmU!QMVA?=}Yt)yAALC2EgEuBmQAn89{ zYBg+Fz18CR_Y~~<Y7Ia zKi(eLofQO(Z^NPL3^xt62=4ZF^26=giJlR5{nPFp|Luv~08Z}Ofj;=JPo~d}_tPyM zt70DYM)AB(O>0k|wYvz+z*)rOER3*$(8#=7s2&JqH=8LL=u}Bi3%+ux9vMT?t`3nb zqGj8e77T0O-4Y6H$uPU6kg|pv0>z&IqeQYK&>*Qe{p4S+RC3Xe7o*b>%(ID?$Y;ycQNy)&H`U)90v}0Dd%J&wJ9+y- zt=CMA0S-@#N()Eh=40p03)-HwBOhTt*`3S<2@YjPB%dp8$g>3*Jh8t3|ET@9REqC; z6B+jc{b%0XSN2tnt0YVA$+33tYDwQLHae$Xdgj7cR{E_?`Sjnux^ga(3L?*ilR*{P zAj=iNG8>dE-(7YeaJO6keL@T1cez(Sz`144$kQOQw{_~?~=3%&EW){)bAg@Z<)Y}NSqxE^_vBUbCW zuc`;^c;S>JzOH@uy=T$0EIye9_kt`g`V=`amyy-w92bg6<7$-8@Y{z&NHeL^e2!Ca zdweo(45%IgNu@5^L4cVupwEMW{&wVTyTVy)6|QKT*y}6f!(eNx+B~PHqZ1y{ot)!? zTWAzH^<3jq^q$LNfa4J8b&x=jXs9wTa0)lsYer0P;&>eDZ)|s-?J2jizl)ij;Kbk3 zL8R{M!w;zKcaIctzMw6MZ)lhDI&1IzpWUjOnOA`N2r;6p?;ri+X0=P+`1Gt8_>L3^;A>pDMU^{gDsVQHjS+Xrn&!tEk zhMXv0@9F!gDny0V;h zgAZoEbTLeFmf}O?U0yR2&lFjZB(2EUP;yE;C1GUyVw?Fv=0Q~ZsGK2pZK^TnO3RV& zxKvJ(%lMa(Q>U!wk-^V|5{_qkqa5j=Lq;kRMm|xYYBSz~Kx)oWK*uqDJFPKQ3+ON6 zxD=9pl=8gCkN=sji+QA;ADMC%=OYcgIu1MuZGJ*JnNV>4Si8u+?UZ(G%j6mFd)?0l zsTgAeG&M$u_Mu(dYqQ)X^=jnN34|hW#;1SiJ9UQ_d%9FLS7M6oAmUzqrS_T%{t(AZ zOeYENO71Nb`7q#Hx-Vr?*LNWbdK<#UgN2DB-N9e z<1+dF>=4ND?KS7cv(tycfTxNJAnXiuRz-b5j2F;}II(2TiiJryYt{3!g+{(|N_Lys zd;T^#P#XjGW#;{lp9Q3Bvuk}yJnmH;xy4(9-?1kO-8aYHaO3~Nbrs=6p^gs*&o+(4 z0I5^)vSl}zG96C(j=Kcc6ES^SE*zT_P5w(tLdNhE15_bexy-k9sru;=0L}|!$V&TH zPx;(TmKRD60qWY_x1x`Cma;M26IfKa6LgX!0^_VRSQE3L@qZ0`C06#?fa+``4Ej8J z?|F3;(M(_*sq|Sl4SG(EBe=@_%p=K!k?TEzfRJ}@)GSnc%yBhaA?1ESVWY;$6bf>| zk%KWzfw%qnPv8WzUh0i{hwazLK*54~18`a+_yjZ1O&@0KI;?KYO8M+K$sx8^bWWJ8uJdKep5i-2A8R}T)-gCFC_76mKI45usBTD2@6MRRMuS?`(+kku z!)7nl*B=&=#|qIOU+)9m zsPNwbQmlEL>on>&vdHJ60EJInrM}%>|FpTM-j@XfhtzbJoTGl+u1-o8pJv~M+Z;mR zosC>d^})c9wND>gBJ6KIM3#Fl53s$&3+Osf+}u-+pbGbYQa^w)olI_3RZj*|5*j>~ zKwuYMAp1zgj7;#MJAz)-)=re{Pd&JZcTmy(Q}q0*(I#g~tv9#Nuq$P^A(c#11eSh{ zGm=}+TQ*by5Ubaz@Ay3t<$^%dTba|;OaK`5EXO|iUp>qD|Be5@?g7;8c8 diff --git a/design/profiles/pictures/rocket.png b/design/profiles/pictures/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1b80d4a98b29a60931e8dab11d87cc2b59de9e GIT binary patch literal 5447 zcmd5=2Uk;B*WL-CMhrGk5CZmZ6k+H+5paMR1cvdIq9Z647*J4AP)Y(QScamGSU_Mb zpd->GVxdG)U<3t(30P_DdCqh8IrrXu?B%0az5z{7DgS)YAYKHn})%*c_QT)Zu<|_wHkg-G?4qso3h? zbxl&9)Ba)Ez%s+`EiGS+KKZ!6E?DNm)qA`y{_pSZ9G|ypN6D3}2kIpmZ{Aqxt<}?` zu8e!4etb^QsZ9y-HGgTj{fka)@$&k|wm*7!x}s4o{?(pWw=2sUhb0};Jo7nd=D+jD zv?j)S^4e-y;w8Y;qraaLbc|;6+DN4bp3rpuy<{~pWVlV6XeKi^W$-j0KQvQZn?y_w zXY6<|K2%S$?P(y&oDmbu(8sBD!{4XDO4Wp|tyv53YJzjfkSthi0%_i7Wbi%0&39&Dy$qHk>+xw89+$yP zWL^K5g*Rj{8d>MkS@=u_w;}7;ItzPc&<0tiU=}9I;8GJ%+m=2Hb7gQ6S?~L^uto;k zk=@Ljg?%#k09g;=ETqYj`F#-RUfM3p+RoR&G_>6`llf=YNo?k^jF}XlbdrNOfyGRw z)NotG4;-FZ4_$Rtpfr!klD1S6lyW9y!WK9N^Mnj8#^vz7Fbi+Wpb%LP&MbT`gZGhj z{%00`l))p&GROZ9vImK^EaeW7@MBWei2d=yLEyhTmneKqW@>4I_vJw%qZEqlR3X1k zz_QVYe0MomYb5E)RtMfq68pj>se7(Gd#2aQTtcyh%splTMdTJ@Fp%Vr8{a!_kPx5% z?(B690+yLCcqb`<`W_L(S|8S-7S%|SovIG$xS8cIOB>y(Q2!dZ_O8U^W-_+~wbWXO zFDS4S1-JqR4SQkcsD_e8Ck$-@Zi6c^_L|H!G66&57D8MKh746`s1sDp(T4^cz}QG) zfT3fk>gr0=V`w>sE@&aXVkjL$xq_;>7>cUKhLXaWP*hEEB|c#&ZknRyErbXSSgXQk zuAnPX9gd(^?Mu>kXmGy?gt_Gs_wl@zDrBA?tg_XI%xndC^+Z5VP={A&pxOh5l zTzm9Vi`Vv8GjNw&mhw^HO%Qa?aV5SFB6WX8Ernd-K`DfpX@bSd7FLKaSj@qw?sQlm%PxcsiSb1n)KzhK|?3HcG+U-y>8@~Yi?D^km;c{Q=ZOQ&;=myS+ip3XxvEw~+Ru@C)}&HnM>;Bc zZX3jeq~Xo6GHvYFIn+7}NvbJvr!1W{Lf4?gMjkfksFlP1FQ!R#W|CCD0jwd zmQRz?;cXTn6r-2}9#n9mfHR){h3Jy>OGC0phkp}q=VlZ8v&@)yQmg|n>PshxzM+I3 z11bNWA&qE`)aRQfx24B*;rWA(N4!1K2Z_9@P8yLG^X0{fp69FiES(&AP=)8aFH4PW z#7=zEls3()>R~EBYYU%~IswmC0F%i#|3nC@?6gX>hV@?8kVoW6Kt48JkrzReIo*B!&&<;kbDEX#E_Wi7VEy_$Dlw1(u*MnKHFlka=Bi%hdr$s=jn3&?oz+Dj zY#mInJX(n92)MX@f8uZ7bs9S^$408(UlWG;k&SA}SarxNLsR?BGY*!EhL>EM2RX%e zltA#Bm0W2XwQF~P&tb!;2Nj$j;`JE$m?W- z^}P7#Roi2`)GbwS#M;h8R(|O z68GbdR}xoayUy8mY3=IOR*w7KFD>fJkF3!8(X8kx+Rnk@P)+AAw8AfkIr9uV>m%Kn z>oAFjfdZ@y1dgU^wYjy{nOpT zgc>{~70Tnqkds?6R9|g4sl=|I*iQ9G0jA|U#^cz1i|@B>^;7&gq>x^*Do35fK6ZbV zUHK{|yYFxQ9U*0nwm_)v$$5gIM7n)3i zS(#%OFyxCegx9~NTNkT4_ftT$dnmQTn|dRd48N8LYi$fx1jh+}f*g0A^imRs`Di6H zX$P|!#HUNtoiAc|z!0tQe;muUfIq#`F=RP3sRpywz3|n&Iu8btIE?h&`e_A9 z5RRTcl{e+fzowDcb{MYBBM&A5^B7O+J+)}Be%g8^=-rEYmKMe&c5A+*dEf%F0t&n? z5jy?CBfGePu0b%X6y;he;EALXlCGe;I+*p$Uq7uBBa4Mj>v-h9T|k!}%yQ(Ly4aK9 zw)gb%Rl#w+%ONe1!?3@n?rcPcqez+s$K6;4Y4IF}XOX(|GBQ{qsfeT=sAX{&2Qejc z$uR0uyiBXmXTBOJy?jfz^r5b>Be9F}C12nUIv>_|BnJJM5%GVjE&7Q|z=H)G$|~J^E=L6tFK6 zIw|wW%8sC`5X@>tB|{2axhHhe=aElsfE?Sko}2lm?)aj)$!GdHPOfw{H2uzD{D_ka zAj6RN^mUw^39i<04g=@5l??m5rxVU{m{;b3_f-yK@`d#WQF9cTw-W2cwI1EJ8xE1- zPKi*lw$ivjyTaVx7MsOF#nnaXbuTEu!*zDssh{>QWypW}mY&&{Y*ZdTxjk-?669B7 zJCVcOvK)#mf>~j?5x-+Y4~lGpS>3h{7GyYsvi-;Uy{WqnU;{<1QS>PV(oyut4*j%^ z%CHVa8%BR9QLj6Q{Ei`7A5QtX5;VL*UX+6TG79wJ<|xloatHq{JgGmX=W^FZ#^yc0 zPES`QTs$OpG&fIrDNNq+cwdZOY3UNb2N_*-dXWo{OdK8KYeo3_sl=$kni65ea2#XX zgNIXpCud|6jf|0swxs#)?(hlUPZg!xs-@R z3AO8;SWt79r(uupNLD`6W8A%cUadcel`mPR<{BJlU?L*&mTSV1Ba<3@VfXl9)*m{P zrT>_yg{-$Je6!O_6VByJ#z(nbl~bR`cRW@W*`BH~d$%>CKlX5d^R*y{FhSN&({{QF zs_?i_vd@f>LDaU_$`S2gIEN}Oe>7sB3nRK`6yt}4Ctfnj-@a@-Gp-Du9|_H4M?(`& z-EUNs9=IQBH@*M;zEgW@28mOD22d&STdPBVoy_7eU)4K-iSP8CF)oof)Yo6VCpmS~ zIf<)P8P`dHM}9M8I@n)p70fz8pY*#IBYFFAM<~%@vG)ASjwQm0tacmLJ%Pak%e}g| zau0*RJ8-B`j;Lf@?hoyJQ#ty6tuH(3eumdy3~@xDQoj5_Xga{_bRtO*YrK~o4RRctr)+f zT`XzL&X%|*6<|S7Cmav<8jjJ(DY)J!mH2KAFcSGdx>SrdtqVHL99BSEyJoKV=wV>&uw-8OlfVD z!WDb~#}7403ZLp9EmXT?%2c{mr?;VlE|T*J#9BZl`;6BECue+PjtlQ3Uy|ynse-(?VyG`0-J4R^D#lwCDFW(VdxcV7W_V zW81>9_rcftWiC{IQPK*0x!#z_4>#VnJPa$fbsy-9KG*p<Q`^}%4LO&KJo-b2Xj`SMbz*2ILerm^Ignfp(&IQeS8|F&ldeM^KnZ}+NA??SVZv|H$T|<*Yxo$ROC6%#YNbqIRf3 z&Vsc|XQnc662R8ytM_(v=S6{mx_Fs?D=alb(=D>v&Q>*PlfcS&`sXJz(zv~DTBZ)7 zB>|>m?#pk|c*_+0mcl zg>~a-1?u4gwdwIaSt8dk0Y3&!$}c_adC z%={n=*2Ca~uZt^D&XWRbdMjlUc!AY$CO>5Yoo>dtj9-tR5mN?_=8LIQNJ6XCih<4z s8<-n3w))}ofFFw`(SOs=f1s9-(>)}0dwgMi diff --git a/design/profiles/pictures/wand.png b/design/profiles/pictures/wand.png new file mode 100644 index 0000000000000000000000000000000000000000..67a53f4ca9502432474487d40f14ea0835f31e88 GIT binary patch literal 6694 zcmds6i9gia`#&?bA)2u(G2~`RWl+dEC}jz8mFi}R!d2v|>}JYRA?c=QVU(>Kr7j}N z%v|oEizrvJ4l@;!Wg5&FGxPbKe&65g_xm4y^Lou|KF@iU&vTyhJn!e6GuOR64=BiO zmIDANxE|c+0{|L6q5(!4{w&A;D}X{Qiz^0e3`y79ce>gwh_uEOoRFkFpSIMI(xBt4c zy??;?UC(GL`kMhg6}_YDZ$h|Ga?;?%CY=7GPnL9%8 z^2Tf=w|RrQG9cUbp20e~#Z{x}3`wBlWlCM~#euhqfc&kjNMxg%-fQj%tegS(ZTZwY zrUwc6+={A^a&ZOV&)+Yt4mrDp6^MpDOlpbd7>?Bp3iN z&=5}}JwO>11K=?dK|y*MsfNQcM2;i~8o4{ijV9t4P@zQ{*TcvS}{;r z=;&7`+P|N=y>ecdouu2rOvf#xUvTtV)!68Cty#C1iisSI8jFu7bTNFsexYTf{~q}8 zTt@$=jVUOPKx<*Bc~6^6rDm0y)@y-n8UJwd%2d>Wf&&#_QbfK2Q5HTH$4os}RqlSp zRT22lUngDSrscJ*?-Xud$gF>HZa=w$MzUGAai<{;+$#0x&iQ9{amDXHO3;1YAH_4} zIxTslMq;j4i*oM3;(#T-MyzgqI(*TP0v&e+LBZUuCmBqWmt&-&6&%Y`z-8KTC>eKT zklm-vbuyHIf7cu3#If1sSLI8o09O3w?vw`OGySV1$@1bXb|T?ZZnDIcuKR#q&gv*F z#kKzx9`$YpEn754;xfCp$o_N!4Ti2Ymp1M<-O?i=%b2;aXEq_+bn(J*=$WMKhvSYQ=*=DS;zFiI@vG$Z;;Z$GuWZ)}BKrTc=q{{&b$VTSjXhQM z=~q{bv5;|+=5uiBaPsHz>1P33ZbR6iq~}jyL)6*xjjf+oRBne!k?;KLHOIMgHLiWf z`170Jc78M|*~RCvnJvxbeDg=tb$03@l)^Do$pgR38jI<9ADnY&vbxW&=H)uMk*wA% zpPmd`-)qUQd}{xo>*U_7Xxb~&<^A-h5HHS0gdw$xc*Mq}_Z8cw20OM@^9WlN5Hfp7 z14iQdU*~%tnV^nr1EBqWZ-t*Q5=IS$0vaDaLU1`v#3@5GN^`YYk8^?6jU=uVT0!Rf z{G0!7!u?$)3+Os7_Wa6p;5-Fir4a&)4kngIApr7v1yq5wr0HRpjy=N&F6wm5T&%2_ z$^if}^L*d6+_|*M#h9z?2S8w1^q0dn>CJMw0En>Sdx9^tfPd)v zrRF5F2PrYDfvz%-j@!hqO|w=%3{%onWkH^ANKwIt@89Ch)8k*|9UasRBN2*_y&WbU z>PIzyl?k?3AGqh>8evlXtW{%6wc8T6CNBxqZawZO=K69uoWyIKvyRW7A}I^k#|A9s ztuUs=Ct@(Q!+`;O=7C2~15%4(a19Ls;=TI&0QprG|Bcd`V2{`6bioH*rr-5a!UNIN z6~F5zYj$VGh0JUqdu%E4yqdID#1B%JY;6vY4a*7hI{5S8Kx6AlOJ@~JDHr9m;fwnt z(+LGr`&j2GrHEHr4Gr3_9oUnqpl(Nspp)mE<2B}QRqJ$V=w(-oA}FakW9e7VKDedl zru_#7)3oCj9P7Su*=SIgu4wa*3cI$kwcc*|^m)@HP@>2E{PuPV%EI<=alW>Zn0-bH zBy^H`4|M9PJHsbj? zizZLFE0S=dq^{}woj?PH_tOS?Q%$h4r?yH0jZSF0PeJKQ3|90OjJ0s>@EArt9{^4)( zI5TMPhQ^onY*KWiW}bR`dLtP!^Z+qaUYRA8xprO`1qRo@cu&x56a zTu`C+VR`N&MPuL%9n19st~&~Mjl7-2;UBE?}z)8+C5(e9H{tH z$*fm7S;6*oo&dZx^$7nNvXx9(i4=yZg|Bt<68bnAGn0-$c@5gwGe)^BPI==Ji- zU+)ClFSp5o^E=zq6GIBItuN7FcSXwi&QmR#4Gou?#hafTLxKD5v$>;#kA{0h<(6pB z-*O@dv*K`}{OQE`*x76VcAML*UKpv*U+C%F6vP!zT9C!t3I)qV0G@{(YYM!R z0+yE|zvxRGg)o+jtQ?wrECVN|)s2WoZO7wfi{MVNDq*u$=8b|29sumRICAIh?HOF1 zRK;ANX`Du5{__j%FTXo=O2Tg0^j;xiT-u`v?%oRAXNyP8b=JWQOy6I+_)NtYSn@7X z>)6Rjr>1ubeeproP-=RMcEt)lV6BSTv_~&UPhShZESBNWv9vZqN?znMH9lT*Jpe5y zbC7Oc0}G+NHV>J!()l4~&Y(pJW7%`j<99d&?LtospxC0Td~vpnGz@=992aGGt7}dD*j7b?TW5Q za9nBJ)v%dA6qUM$pDI9v(*z@f?zPcF8<6tuS-+LCsCvzcpE_3~tg-Sd`4zqTAY938QtPtAKRl%JT=I1HcZvHvRja*bR#a)H5p?a=8c@>DLPEF{ znxGR=b{Xp6m3yX!5ZW%a9pKClS!7Z%74CrSludeOzaGc~8izEQ#@1^$97l$0)}_AX zoKc>5v;ECXo6-PmODe~Ok){6P=>Cql9WFzjAML>r9YB1hz|24`&v?hx_eVDSWk{qUc`ut6D=ykIfc))B!UB*}BhosSDHwM9m* zqFxYSlInAv-4$M8~S;(~Ti>>1c;S znpqa<*&Pqp+p??9?a6TpPn(3x^o3SA^M!4-CFS z%AZ>%%pVPsN4a9TL&Gxkt+cQOwNHVvm7(%qVb0ok(y0N)s4ljqSX_PN#|^W zYf#|=o6nw(6AWa8LmT0LfjJT%w0TJmn3;&{H4!moI&LYF{UF*Vn0+~d2*^FzB)8!8 zj-z1{2pmrOzhOkcO>3o0s7JC-xco?{a44LUjdZvqtDUJ$8sV!AdB$@uP{1$$7=fx<|gQC!dhuc7&9RojUiy~JWi2=L->4KW)_oB!a9Qe)_Abl`NdZ?EN;&S^cm=>)5Y5q`|@Ra z067X;&4O0#R)?zF1DkV6F*Ur!9oGOo9E$mHC&bRliyLYs!;1jj5RROQC=5w(uC|8P z3_<6!9CF6Iy;!EQKuZZ|89{3A!KlmybHe2F1~?h9u$NQ3imI<-06EpWHi54zP? z7<}r?lvjIl%%A9fT@*P0uE2f?yX%!p3?1eP42nDf-*TwZZf%{knWjkLiHoEZ!Au4V ztE}E$TTDA|8D(ob!?Wq$3i|gl@MhkOn~5T-iZ)M>BBcaopbrU!4mT?Q^*x;1?1GB( z0wv~I4xwK_s9dG0t-MWB`{>t}~*Ut#EmCLd0vA1J8Vgx`CXd zi}M-Bnnn*{4vuo}#LWvAuLEM03dzt=^6&l+yF}I=V>fGBhPbY2f69V77tYl-C*sQZ zJg$8})gi*NnlV}|TvwOjdzzK;onOBnqKwJ<#T%C`m#ld)#syC(=n<*@V~~w=E!|!&vGE9!uy3XNVQM~1i$qGQ zAQ7qvUKT}{+a8DY65G9X3(Tg}`v|A;8c`YSzz-Ce7X(zv`7F}SGnNikwe2+3*|%?8 zoXCuLDQ^OUws?pXLA#B;Ii(}+Z9Y+yY>~Iq7-aYelPosiFRTt5ojooE)V2YYgB*OD zQm05wiTQ1ndwC4=188K9i=##3$X+cOc^ykM(NP7tEbLF~#fgLW_Lys3 z(E#BGfgzcNrFTn`dyK?-d8bV5*4Z@^qjT&evMmN|@)aInxme9iosgGCt8E3LZXEp0 zM$S@6)Q17i(6>v%HR2gbvWK5vypoefZ^euJw$&eaouz8CtA93bJk>r=6Q$#P_3CVU zep|Sp-B`>;ypqO-6`r3!(Y^=#H6`bt3G(i>x7Te7xq2>4y^K#uP*|!feK2;i5&XFg zgjPINLEb&3CXI;$$c=Ne_#fiK9kl$mRsy3+hRy;TnGaYr|zE^=z9%{Ew7;En^|-yi5(Gd2<{IMa`}v@X9PCz@PlVXF8azJ^>KhJ#N~8gxM75LKc>A2{t7_TF71epChxE(G}9@ZFaaxY6#MXtq#ZzlGLVanFZ?=yYVbr74vWfY o4KEcH9-{ug{N(@u+50gfol+-hl^5mO_hVYF`#twPcM7`lU)Va)Q~&?~ literal 0 HcmV?d00001 diff --git a/design/profiles/pictures/wand.svg b/design/profiles/pictures/wand.svg new file mode 100644 index 0000000..2c5bdad --- /dev/null +++ b/design/profiles/pictures/wand.svg @@ -0,0 +1 @@ +