From e29e4c4b2bf2f2cf87036119b61a5b1009e45f7c Mon Sep 17 00:00:00 2001 From: Aytackydln Date: Tue, 1 Oct 2024 18:32:02 +0000 Subject: [PATCH] deploy: 0eeddece26c8dabd4fa5a18c16e6ccf34c6493f5 --- advanced-topics/animation-editor/index.html | 2 +- advanced-topics/overrides-system/index.html | 2 +- advanced-topics/state-variables/index.html | 2 +- advanced-topics/visualizer-output/index.html | 14 ++-- basic-topics/getting-started/index.html | 4 +- basic-topics/index.xml | 2 +- basic-topics/installation/index.html | 2 +- basic-topics/user-data/index.html | 2 +- devices/corsair/index.html | 2 +- devices/index.xml | 10 +-- devices/logitech/index.html | 6 +- devices/steelseries/index.html | 2 +- img/chroma_diagram.png | Bin 0 -> 74729 bytes img/lightsync_diagram.png | Bin 0 -> 70795 bytes index.xml | 64 +++++++++++------- integrations/chroma/index.html | 2 +- integrations/index.xml | 16 ++++- integrations/lightsync/index.html | 2 +- reference-expressions/maths/index.html | 2 +- reference-layers/ambilight/index.html | 2 +- reference-layers/animation/index.html | 2 +- reference-layers/audio-visualizer/index.html | 2 +- reference-layers/blinking/index.html | 2 +- reference-layers/breathing/index.html | 2 +- reference-layers/glitch-effect/index.html | 2 +- reference-layers/gradient-fill/index.html | 2 +- reference-layers/gradient/index.html | 2 +- reference-layers/image/index.html | 2 +- reference-layers/index.xml | 36 +++++----- reference-layers/interactive/index.html | 2 +- reference-layers/lock-color/index.html | 2 +- reference-layers/particle/index.html | 4 +- reference-layers/percent-effect/index.html | 2 +- .../percent-gradient-effect/index.html | 2 +- reference-layers/radial/index.html | 2 +- .../shortcut-assistant/index.html | 2 +- reference-layers/solid-color/index.html | 2 +- reference-layers/solid-fill-color/index.html | 2 +- reference-layers/timer-key/index.html | 2 +- reference-layers/toolbar/index.html | 2 +- 40 files changed, 119 insertions(+), 95 deletions(-) create mode 100644 img/chroma_diagram.png create mode 100644 img/lightsync_diagram.png diff --git a/advanced-topics/animation-editor/index.html b/advanced-topics/animation-editor/index.html index 188b2d1..861b848 100644 --- a/advanced-topics/animation-editor/index.html +++ b/advanced-topics/animation-editor/index.html @@ -1,4 +1,4 @@ Animation Editor • advanced-topics • Aurora Docs

Animation Editor


Last updated 10.01.2024

The Animation Layer allows you to add your own custom animated effects to your peripheral lights. To edit this animation, the Animation Editor used. This is a powerful tool, and fairly easy to use once you understand how it works. As with all unfamiliar things however, it may be daunting at first.

Concepts and Definitions

Before getting into the guide itself, let me define some of the concepts and features that are required to fully understand how the animations work.

  • Each frame, the animation is drawn onto a Canvas which is then sent to your connected peripherals. The canvas is a rectangle with a height and a width, this size of which depend on the position and size of the peripherals. Anything drawn to the canvas will be drawn at a specific point on the canvas, with x=0, y=0 being the coordinate of the top left.
  • An animation is built up of one or more Animation Tracks. Each of these tracks can represent a single shape (e.g. rectangle, filled circle, etc.)
  • Each shape has a number of Properties, depending on what sort of shape they are. For example, a circle has radius, center x, center y, color and width properties. These properties determine how the shape will be rendered to the canvas.
  • Each animation track will have one or more Keyframes which are points on the timeline where you can set the properties of a shape. The keyframes do not have to line up on each track. For example one track may only have one keyframe while another may have ten.
  • Between keyframes, the properties of a shape on a track will interpolate, forming a smooth transition.

The Editor

With that out of the way, lets move on to the creation of an animation. To open the animation editor, first add an animation layer to your profile. On the layer settings, click on the “Edit Animation” button. When you first open the animation editor you will be presented with a screen that looks like this:

The main screen of the Animation Editor labelled showing the main controls

There are 3 main areas to the editor:

  • The timeline which shows the tracks that currently make up the animation as well as also containing a seek line (the vertical red line) which dictates which how far through the animation the preview is.
  • The preview area which shows a skeleton of your peripheral setup and the various shapes that make up the animation at the given time.
  • The property editor which, when a keypoint is selected, allows for editing the properties of that shape for that keypoint.

Creating an Animation

First we need to add a track by clicking on the “Add Track” button just above and to the left of the timeline, then choosing the type of shape we wish to add. The manual color track allows you to set individual colors of the keyboard (see Closing Notes), rather than using shapes; the other tracks should be self-explanatory. For the purpose of the tutorial, I will add an (unfilled) circle track.

Adding a circle track to the timeline

You should now see a new row has appeared in the timeline. This is the new shape we’ve just created. The left-most grey box shows the name of the track, a delete button and an icon to indicate the type of the track. If you so desire you can double click on the name of the track to change it to something more helpful, though this has no effect on the actual animation itself.

The newly created circle track on the timeline

Next to the grey box you will see a pair of colored rectangles. These represent a keyframe on the track, the color being indicative of the color of the shape at that keyframe. Clicking this keyframe, we can edit the properties of the circle using the properties in the top right. I’m going to set them to the values in the image below.

Properties for the first keyframe

Next, we’ll need another keyframe to animate to, otherwise we will just have a static image! Double click on the timeline inline with the track to insert a new keyframe at that time. Unfortunately the properties are all reset so we have to enter them again from scratch. Like before though, single left click on the keyframe and set the properties in the properties panel. This time, I will use these settings:

Properties for the first keyframe

You can add as many other keyframes as you like and even add new tracks with their own keyframes using the steps from above, but I won’t bother.

Once done, you can close the animation editor window. Finally, to ensure the animation plays smoothly, we need to set the Animation Duration property of the Animation Layer to be the length of the animation you just created. If you set a value too small, your animation will appear to be cut off, but too long and you animation will not replay quickly.

Congratulations, you’ve made your first animation! :tada:


Page authored by
\ No newline at end of file +Aurora User Docs

Animation Editor


Last updated 10.01.2024

The Animation Layer allows you to add your own custom animated effects to your peripheral lights. To edit this animation, the Animation Editor used. This is a powerful tool, and fairly easy to use once you understand how it works. As with all unfamiliar things however, it may be daunting at first.

Concepts and Definitions

Before getting into the guide itself, let me define some of the concepts and features that are required to fully understand how the animations work.

  • Each frame, the animation is drawn onto a Canvas which is then sent to your connected peripherals. The canvas is a rectangle with a height and a width, this size of which depend on the position and size of the peripherals. Anything drawn to the canvas will be drawn at a specific point on the canvas, with x=0, y=0 being the coordinate of the top left.
  • An animation is built up of one or more Animation Tracks. Each of these tracks can represent a single shape (e.g. rectangle, filled circle, etc.)
  • Each shape has a number of Properties, depending on what sort of shape they are. For example, a circle has radius, center x, center y, color and width properties. These properties determine how the shape will be rendered to the canvas.
  • Each animation track will have one or more Keyframes which are points on the timeline where you can set the properties of a shape. The keyframes do not have to line up on each track. For example one track may only have one keyframe while another may have ten.
  • Between keyframes, the properties of a shape on a track will interpolate, forming a smooth transition.

The Editor

With that out of the way, lets move on to the creation of an animation. To open the animation editor, first add an animation layer to your profile. On the layer settings, click on the “Edit Animation” button. When you first open the animation editor you will be presented with a screen that looks like this:

The main screen of the Animation Editor labelled showing the main controls

There are 3 main areas to the editor:

  • The timeline which shows the tracks that currently make up the animation as well as also containing a seek line (the vertical red line) which dictates which how far through the animation the preview is.
  • The preview area which shows a skeleton of your peripheral setup and the various shapes that make up the animation at the given time.
  • The property editor which, when a keypoint is selected, allows for editing the properties of that shape for that keypoint.

Creating an Animation

First we need to add a track by clicking on the “Add Track” button just above and to the left of the timeline, then choosing the type of shape we wish to add. The manual color track allows you to set individual colors of the keyboard (see Closing Notes), rather than using shapes; the other tracks should be self-explanatory. For the purpose of the tutorial, I will add an (unfilled) circle track.

Adding a circle track to the timeline

You should now see a new row has appeared in the timeline. This is the new shape we’ve just created. The left-most grey box shows the name of the track, a delete button and an icon to indicate the type of the track. If you so desire you can double click on the name of the track to change it to something more helpful, though this has no effect on the actual animation itself.

The newly created circle track on the timeline

Next to the grey box you will see a pair of colored rectangles. These represent a keyframe on the track, the color being indicative of the color of the shape at that keyframe. Clicking this keyframe, we can edit the properties of the circle using the properties in the top right. I’m going to set them to the values in the image below.

Properties for the first keyframe

Next, we’ll need another keyframe to animate to, otherwise we will just have a static image! Double click on the timeline inline with the track to insert a new keyframe at that time. Unfortunately the properties are all reset so we have to enter them again from scratch. Like before though, single left click on the keyframe and set the properties in the properties panel. This time, I will use these settings:

Properties for the first keyframe

You can add as many other keyframes as you like and even add new tracks with their own keyframes using the steps from above, but I won’t bother.

Once done, you can close the animation editor window. Finally, to ensure the animation plays smoothly, we need to set the Animation Duration property of the Animation Layer to be the length of the animation you just created. If you set a value too small, your animation will appear to be cut off, but too long and you animation will not replay quickly.

Congratulations, you’ve made your first animation! :tada:


Page authored by
\ No newline at end of file diff --git a/advanced-topics/overrides-system/index.html b/advanced-topics/overrides-system/index.html index b796ece..fdd304f 100644 --- a/advanced-topics/overrides-system/index.html +++ b/advanced-topics/overrides-system/index.html @@ -1,4 +1,4 @@ Overrides System • advanced-topics • Aurora Docs

Overrides System


Last updated 10.01.2024

The overrides system is an an advanced system that allows you to override the properties of layers with other values that are evaluated each frame. This allows for a huge amount of control and customizability with your lighting that layers on their own cannot provide. You can still get fairly customization layers without this system, so do not worry if you don’t understand it. This is a feature mainly for advanced users.

The overrides system works by providing you, the user, the ability to use one of several techniques to override individual properties with custom values. If no override is provided, the value you’ve set on the normal properties editor panel will be used instead. Overrides are done on a per-property basis, so you can use one technique for one property, a different one for another property or no technique for a third for example.

The Editor

To open the overrides editor panel, first select the layer whose properties you want to override then click on the left-most button in the top right of the properties panel.

The button to open the overrides editor

The editor is split into two columns. The left column contains a list of all overridable properties on the selected layer, showing their name and type. Note that not all properties are overridable. The right hand (larger) column is where the main logic editor is. This area is how you choose and edit the override technique. Initially, only a drop down box will be shown with an empty area.

To actually setup an override for a property, select it from the property list, then choose an override mode from the drop down list.

Setting up an override on the Primary Color property of the breathing layer

Override Modes

Dynamic Value

The dynamic value override method allows you to dynamically create a value based on values of other variables.

A simple example for this could be assigning to opacity of a layer to be the health of a player, so it appears to fade in as the health lowers, showing a red warning when your character is close to death. A more complex example could be constructing a color based on the current time, with seconds being red, minutes green and hours blue. Whether you’d actually want this who knows, but it’s possible with this override technique.

Basic example of a dynamic value being used with opacity to make the layer flash in and then fade out

Depending on the type of property being edited, you will be asked to provide one or more expressions of different types. Descriptions of these expressions are available in the “Reference: Expression Types” section of the guide. For example, the “Enabled” property will require a boolean expression and “Opacity” will require a numeric expression.

Lookup Table

The lookup table is a list of condition-value pairs. When using this override technique, Aurora will evaluate the boolean condition expression of each item in the list until it finds one that is true. When it does so, it will override the requested property with the value of the pair.

Example lookup table that sets the color to red every once every three seconds

If you are familiar with the concept of programming, you can think of a lookup table as being like a switch statement or a collection of if else if blocks.

Demos

This profile contains a single solid fill layer that fades in and out every second, each second alternating between red, green and blue.

The demo layer running

You can download the demo profile here.


Page authored by
\ No newline at end of file +Aurora User Docs

Overrides System


Last updated 10.01.2024

The overrides system is an an advanced system that allows you to override the properties of layers with other values that are evaluated each frame. This allows for a huge amount of control and customizability with your lighting that layers on their own cannot provide. You can still get fairly customization layers without this system, so do not worry if you don’t understand it. This is a feature mainly for advanced users.

The overrides system works by providing you, the user, the ability to use one of several techniques to override individual properties with custom values. If no override is provided, the value you’ve set on the normal properties editor panel will be used instead. Overrides are done on a per-property basis, so you can use one technique for one property, a different one for another property or no technique for a third for example.

The Editor

To open the overrides editor panel, first select the layer whose properties you want to override then click on the left-most button in the top right of the properties panel.

The button to open the overrides editor

The editor is split into two columns. The left column contains a list of all overridable properties on the selected layer, showing their name and type. Note that not all properties are overridable. The right hand (larger) column is where the main logic editor is. This area is how you choose and edit the override technique. Initially, only a drop down box will be shown with an empty area.

To actually setup an override for a property, select it from the property list, then choose an override mode from the drop down list.

Setting up an override on the Primary Color property of the breathing layer

Override Modes

Dynamic Value

The dynamic value override method allows you to dynamically create a value based on values of other variables.

A simple example for this could be assigning to opacity of a layer to be the health of a player, so it appears to fade in as the health lowers, showing a red warning when your character is close to death. A more complex example could be constructing a color based on the current time, with seconds being red, minutes green and hours blue. Whether you’d actually want this who knows, but it’s possible with this override technique.

Basic example of a dynamic value being used with opacity to make the layer flash in and then fade out

Depending on the type of property being edited, you will be asked to provide one or more expressions of different types. Descriptions of these expressions are available in the “Reference: Expression Types” section of the guide. For example, the “Enabled” property will require a boolean expression and “Opacity” will require a numeric expression.

Lookup Table

The lookup table is a list of condition-value pairs. When using this override technique, Aurora will evaluate the boolean condition expression of each item in the list until it finds one that is true. When it does so, it will override the requested property with the value of the pair.

Example lookup table that sets the color to red every once every three seconds

If you are familiar with the concept of programming, you can think of a lookup table as being like a switch statement or a collection of if else if blocks.

Demos

This profile contains a single solid fill layer that fades in and out every second, each second alternating between red, green and blue.

The demo layer running

You can download the demo profile here.


Page authored by
\ No newline at end of file diff --git a/advanced-topics/state-variables/index.html b/advanced-topics/state-variables/index.html index 6be6b96..c64c449 100644 --- a/advanced-topics/state-variables/index.html +++ b/advanced-topics/state-variables/index.html @@ -1,4 +1,4 @@ State Variables • advanced-topics • Aurora Docs

State Variables


Last updated 10.01.2024

What are State Variables?

State Variables are numeric, boolean (true/false) or string (sequence of letters) values that can be obtained and dynamically updated by Aurora as it is running. Layers such as the Percent Effect Layer or the Animation Layer can make use of these values to conditionally set the lights on the keyboard. The values depend on which profile is currently in use, for example the CSGO profile contains State Variables for health, current ammo, max ammo, etc. but these specific ones do not work for other profiles such as Minecraft.

Not all game profiles that come with Aurora have State Integration, and currently custom added profiles also do not support State Variables.

There are some State Variables that are operating system-wide (such as RAM/CPU usage and time values) and these are always available to use, regardless of the application a profile is on.

How do you use State Variables?

Any layers that support the use of State Variables will present you with a drop down box allowing you to select a State Variable from the current application profile.

An example of a drop down containing a list of State Variables for Minecraft

Note that in most circumstances, the drop down list is editable you are able to type a number into the field to use that instead of referencing a State Variable.

Another use for State Variables is in the Overrides System. This system allows you to override property values of the layers when certain conditions are met. These conditions can be based on State Variables, such as showing a layer when your health is less than 25%.


Page authored by
\ No newline at end of file +Aurora User Docs

State Variables


Last updated 10.01.2024

What are State Variables?

State Variables are numeric, boolean (true/false) or string (sequence of letters) values that can be obtained and dynamically updated by Aurora as it is running. Layers such as the Percent Effect Layer or the Animation Layer can make use of these values to conditionally set the lights on the keyboard. The values depend on which profile is currently in use, for example the CSGO profile contains State Variables for health, current ammo, max ammo, etc. but these specific ones do not work for other profiles such as Minecraft.

Not all game profiles that come with Aurora have State Integration, and currently custom added profiles also do not support State Variables.

There are some State Variables that are operating system-wide (such as RAM/CPU usage and time values) and these are always available to use, regardless of the application a profile is on.

How do you use State Variables?

Any layers that support the use of State Variables will present you with a drop down box allowing you to select a State Variable from the current application profile.

An example of a drop down containing a list of State Variables for Minecraft

Note that in most circumstances, the drop down list is editable you are able to type a number into the field to use that instead of referencing a State Variable.

Another use for State Variables is in the Overrides System. This system allows you to override property values of the layers when certain conditions are met. These conditions can be based on State Variables, such as showing a layer when your health is less than 25%.


Page authored by
\ No newline at end of file diff --git a/advanced-topics/visualizer-output/index.html b/advanced-topics/visualizer-output/index.html index dace261..08eabbb 100644 --- a/advanced-topics/visualizer-output/index.html +++ b/advanced-topics/visualizer-output/index.html @@ -2,10 +2,10 @@

Audio Visualizer Tweaks


Last updated 10.01.2024

The Audio Visualizer layer allows you to display a representation of whatever you’re listening to on your RGB devices.

Isolating applications

Why

One of the things that annoys me about the layer is that every single sound your computer emits will be shown on the keyboard, which isn’t very useful or appealing if you’re talking to someone on Discord for example. So I found a way to isolate a single application (in my case, Spotify) in the same audio output as Aurora.

This makes it so only sound emitted by Spotify is processed and displayed on the keyboard, and does make the visualization change if you change the volume of the music.

Prerequisites

  • Windows 19 build 1809 or above

    • Aurora doesn’t let you pick the audio output device yet. Windows now has a menu where you can force an application to use an output and input device of your choosing.
  • Virtual Audio Cable

    • We need this so we can listen to 2 output devices at once: The default output every application should emit to, and the virtual audio cable we need for Aurora’s visualizer.

How

  1. Open the Windows Settings app (Win + i). -Windows settings app
  2. Click the System button, then select the Sound tab. -Windows Sound tab
  3. Scroll down to the bottom and click “App volume and device preferences”. -App volume and device preferences
  4. Set both Aurora’s and whatever other application you want to be visible’s Output to “CABLE Input”. Then Input option does not need to be changed for this. -App Volumes
  5. Open the legacy Sound settings window. The easiest way is through Control Panel -> Icons view. -Control Panel
  6. Choose the Recording Tab and double-click “CABLE Output”. Select the Listen Tab.
  7. Tick “Listen to this device” and choose your headphones/speakers. You should now be able to listen to music! -Cable Output Properties

(Optional) Install Ear Trumpet from the Windows Store to more easily change the volume of Spotify. This method works best if you leave Spotify’s volume at 100% and adjust using the windows mixer instead. This way, Aurora sees every song at the same volume at all times, producing a more consistent effect. -Ear Trumpet


Page authored by
\ No newline at end of file +Windows settings app
  • Click the System button, then select the Sound tab. +Windows Sound tab
  • Scroll down to the bottom and click “App volume and device preferences”. +App volume and device preferences
  • Set both Aurora’s and whatever other application you want to be visible’s Output to “CABLE Input”. Then Input option does not need to be changed for this. +App Volumes
  • Open the legacy Sound settings window. The easiest way is through Control Panel -> Icons view. +Control Panel
  • Choose the Recording Tab and double-click “CABLE Output”. Select the Listen Tab.
  • Tick “Listen to this device” and choose your headphones/speakers. You should now be able to listen to music! +Cable Output Properties
  • (Optional) Install Ear Trumpet from the Windows Store to more easily change the volume of Spotify. This method works best if you leave Spotify’s volume at 100% and adjust using the windows mixer instead. This way, Aurora sees every song at the same volume at all times, producing a more consistent effect. +Ear Trumpet


    Page authored by \ No newline at end of file diff --git a/basic-topics/getting-started/index.html b/basic-topics/getting-started/index.html index 1b6198c..c50f122 100644 --- a/basic-topics/getting-started/index.html +++ b/basic-topics/getting-started/index.html @@ -2,5 +2,5 @@

    Getting Started


    Last updated 10.01.2024

    When you first open Aurora, you will be presented with a window that looks like the following. -Annotated picture of the main Aurora UI

    Applications

    On the far left is the application list, with each application shown as an icon. All the applications and games you will see here by default have some sort of integration or preset profile. You are not limited to just these ones however; by scrolling to the bottom of the list and clicking the plus icon you will be able to specify new applications either by selecting from the running process list or by browsing to the exe. You can disable applications if you don’t want your lighting changing when you open that app by going onto the overview and un-checking the “Enable Aurora to provide lighting effects…” box. You can also right-click on the application icons to hide them if you do not have that game and don’t want it cluttering up the list.

    Aurora works by detecting the application that is currently focused and checking if it has an application entry for that application. If it does, it will render the active profile (we’ll see what a profile is in the next section) to your peripherals. If it does not, it will render the “Desktop” application’s selected profile. -Each application can have one or more profiles, and each profile can have as many layers as you wish

    Profiles

    Profiles are a collection of layers that will be drawn to the keyboard whenever that application is currently open (and in the foreground). An application can have one or more profiles, but only one profile can be active at once. You can assign keys to each profile allowing you to switch between them when a specific button is pressed.

    To view the profiles for the currently selected application, click on the “Profiles” button in the list view buttons near the top left of the window. The list below this button will then show you all the profiles of the application. From here you can:

    • Add a new profile by clicking the “Add” button.
    • Delete profiles by clicking the red “X” button.
    • Import a profile from .cueprofile or .json file.
    • Export your profile as a .json file.
    • Copy/paste profiles to duplicate them or add them to another application.
    • Reset the profile to the default state.
    • Rename a profile by clicking on it, then typing a name in the “Profile name” box in the properties panel
    • Assign a key to select a profile by clicking on it, then clicking “Assign” next to “Keybind to active profile” in the properties panel then pressing the keys on your keyboard you want.

    Layers

    A Layer is an instruction for Aurora to set the color of some specific keys on your keyboard. Each layer has different functionality which is detailed in a later section of this guide. The layers are drawn from bottom-to-top, therefore anything higher up the list will take priority over the colors of anything lower down.

    Annoted picture of the Layer controls

    To show the layers list, click the “Layers” list view button that will be at the top left or bottom left of the window (depending on whether the profile list is open or not). A list will appear below this button showing you all your layers. From here you can:

    • Add new layers by clicking on the “Add” button above the layer list.
    • Select a layer and press the copy and paste buttons (or press Ctrl + C, Ctrl + V) to duplicate it or copy it to another profile.
    • Change the layer properties by clicking on a layer and using the properties panel.
    • Delete the layer by selecting it and clicking the red “X” button.
    • Re-order layers by clicking and dragging the triple horizontal line (burger) button next to the layer.

    Overlay Layers

    Overlay layers are different from regular layers in that they appear whenever a particular process is running (or in the case of desktop overlay layers, always). For example, if you create a profile for Spotify and add a audio visualizer as an overlay, the visualizer will always appear whenever Spotify is open, regardless of whether you have it in the foreground or not.

    Note that the layers and overlay layers for a profile can be enabled/disabled independently. With the Spotify example, if you disable the regular layers for the profile but keep the overlay layers, your desktop profile will stay active when Spotify is in the foreground instead of going blank with only the overlay layers.

    Layer Properties

    Each layer will have a set of properties that you can change such as color or the keys it affects. This can be changed in the bottom right panel, the Properties Panel. The properties available to each layer are listed in the reference section of this guide that can be accessed in the navigation list.


    Page authored by
    \ No newline at end of file +Annotated picture of the main Aurora UI

    Applications

    On the far left is the application list, with each application shown as an icon. All the applications and games you will see here by default have some sort of integration or preset profile. You are not limited to just these ones however; by scrolling to the bottom of the list and clicking the plus icon you will be able to specify new applications either by selecting from the running process list or by browsing to the exe. You can disable applications if you don’t want your lighting changing when you open that app by going onto the overview and un-checking the “Enable Aurora to provide lighting effects…” box. You can also right-click on the application icons to hide them if you do not have that game and don’t want it cluttering up the list.

    Aurora works by detecting the application that is currently focused and checking if it has an application entry for that application. If it does, it will render the active profile (we’ll see what a profile is in the next section) to your peripherals. If it does not, it will render the “Desktop” application’s selected profile. +Each application can have one or more profiles, and each profile can have as many layers as you wish

    Profiles

    Profiles are a collection of layers that will be drawn to the keyboard whenever that application is currently open (and in the foreground). An application can have one or more profiles, but only one profile can be active at once. You can assign keys to each profile allowing you to switch between them when a specific button is pressed.

    To view the profiles for the currently selected application, click on the “Profiles” button in the list view buttons near the top left of the window. The list below this button will then show you all the profiles of the application. From here you can:

    Layers

    A Layer is an instruction for Aurora to set the color of some specific keys on your keyboard. Each layer has different functionality which is detailed in a later section of this guide. The layers are drawn from bottom-to-top, therefore anything higher up the list will take priority over the colors of anything lower down.

    Annoted picture of the Layer controls

    To show the layers list, click the “Layers” list view button that will be at the top left or bottom left of the window (depending on whether the profile list is open or not). A list will appear below this button showing you all your layers. From here you can:

    Overlay Layers

    Overlay layers are different from regular layers in that they appear whenever a particular process is running (or in the case of desktop overlay layers, always). For example, if you create a profile for Spotify and add a audio visualizer as an overlay, the visualizer will always appear whenever Spotify is open, regardless of whether you have it in the foreground or not.

    Note that the layers and overlay layers for a profile can be enabled/disabled independently. With the Spotify example, if you disable the regular layers for the profile but keep the overlay layers, your desktop profile will stay active when Spotify is in the foreground instead of going blank with only the overlay layers.

    Layer Properties

    Each layer will have a set of properties that you can change such as color or the keys it affects. This can be changed in the bottom right panel, the Properties Panel. The properties available to each layer are listed in the reference section of this guide that can be accessed in the navigation list.


    Page authored by \ No newline at end of file diff --git a/basic-topics/index.xml b/basic-topics/index.xml index bf24634..a2eff93 100644 --- a/basic-topics/index.xml +++ b/basic-topics/index.xml @@ -21,7 +21,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/overview.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Annotated picture of the main Aurora UI" loading="lazy" height="714" width="1000" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/overview.png?v=1bbe94f77e78d95af98555f206db5668" alt="Annotated picture of the main Aurora UI" loading="lazy" height="714" width="1000" /> </picture> </p> <h1 id="applications">Applications</h1> diff --git a/basic-topics/installation/index.html b/basic-topics/installation/index.html index 08beb13..5c79054 100644 --- a/basic-topics/installation/index.html +++ b/basic-topics/installation/index.html @@ -1,4 +1,4 @@ Installation • basic-topics • Aurora Docs

    Installation


    Last updated 16.01.2024

    To install Aurora, the easiest way is to download the installer from our GitHub page and simply run it.

    After this, you will find Aurora in your start menu. Opening the Aurora program will show you some simple steps you will need to take with detected existing RGB to allow Aurora to take priority when it needs to. It’s important you follows these steps otherwise Aurora may not work correctly.

    Dev Version

    The Aurora software is constantly evolving thanks to submissions from various contributors. Before these changes hit the main release, they are added to a special “dev” version of Aurora (after being bug-tested).

    If you would like to, it is possible to download the dev version to access some new additional features and bug fixes.

    Other Versions

    Since there are several contributors contributing to Aurora, there are several different branches of Aurora. A developer will often ask their branch to be tested by users, either through Discord or on a Pull Request on GitHub.

    Because of all the separate versions with different functionality, it is advisable NOT to install these versions using the exe, but instead to download the zip file and extract them to a place other than your main Aurora installation. Like with the dev version, it’s highly recommended to backup profiles and settings.

    Downloading a GitHub Pull Request

    A pull request is where a developer has made changes to Aurora and would like to merge these into the main Aurora release. These pull requests will contain a description of exactly what changes have been made and will automatically create a build of that version. This version will likely be based on a recent dev version of Aurora (as opposed to the main version).

    Once you have found a Pull Request you wish to download and test, you should be presented with a screen such as this.

    PR GitHub page

    Scroll down until you find a section with green ticks (a maybe red crosses). There should be an item that says “All checks have passed”. Next to this item, click on “Show all checks” button to reveal a small panel below this item. Click on the “Details” link. If you do not have an “All checks have passed” option, the automatic build process has failed and you will not be able to download a pre-built version.

    The panel that will take you to the build artefacts

    You should be taken to the website “AppVeyor” and should see a large blue block of text. Just above this text, click the “Artifacts” tab, and you will be presented with the built installer and ZIP file for that PR.

    The download link for the artefacts


    Page authored by
    \ No newline at end of file +Aurora User Docs

    Installation


    Last updated 16.01.2024

    To install Aurora, the easiest way is to download the installer from our GitHub page and simply run it.

    After this, you will find Aurora in your start menu. Opening the Aurora program will show you some simple steps you will need to take with detected existing RGB to allow Aurora to take priority when it needs to. It’s important you follows these steps otherwise Aurora may not work correctly.

    Dev Version

    The Aurora software is constantly evolving thanks to submissions from various contributors. Before these changes hit the main release, they are added to a special “dev” version of Aurora (after being bug-tested).

    If you would like to, it is possible to download the dev version to access some new additional features and bug fixes.

    Other Versions

    Since there are several contributors contributing to Aurora, there are several different branches of Aurora. A developer will often ask their branch to be tested by users, either through Discord or on a Pull Request on GitHub.

    Because of all the separate versions with different functionality, it is advisable NOT to install these versions using the exe, but instead to download the zip file and extract them to a place other than your main Aurora installation. Like with the dev version, it’s highly recommended to backup profiles and settings.

    Downloading a GitHub Pull Request

    A pull request is where a developer has made changes to Aurora and would like to merge these into the main Aurora release. These pull requests will contain a description of exactly what changes have been made and will automatically create a build of that version. This version will likely be based on a recent dev version of Aurora (as opposed to the main version).

    Once you have found a Pull Request you wish to download and test, you should be presented with a screen such as this.

    PR GitHub page

    Scroll down until you find a section with green ticks (a maybe red crosses). There should be an item that says “All checks have passed”. Next to this item, click on “Show all checks” button to reveal a small panel below this item. Click on the “Details” link. If you do not have an “All checks have passed” option, the automatic build process has failed and you will not be able to download a pre-built version.

    The panel that will take you to the build artefacts

    You should be taken to the website “AppVeyor” and should see a large blue block of text. Just above this text, click the “Artifacts” tab, and you will be presented with the built installer and ZIP file for that PR.

    The download link for the artefacts


    Page authored by
    \ No newline at end of file diff --git a/basic-topics/user-data/index.html b/basic-topics/user-data/index.html index bc56487..97d51dd 100644 --- a/basic-topics/user-data/index.html +++ b/basic-topics/user-data/index.html @@ -1,4 +1,4 @@ User Data • basic-topics • Aurora Docs

    User Data


    Last updated 10.01.2024

    Aurora stores all user data in a directory in the roaming application data folder. This user data includes all your settings (such as preferred devices, bitmap accuracy, etc) as well as all your lighting profiles and recent logs that Aurora has created. You can see the Aurora folder by navigating to %APPDATA%\Aurora in Windows file explorer.

    Importing Profiles

    Profiles that others have made can be imported easily into Aurora using the import button on the “Profiles” section. Pressing this button will open a dialog asking you to choose a file to import. JSON files that have been exported from Aurora (see exporting profiles) are fully supported through import. In addition, Aurora has partial support for implementing iCUE profiles, however due to the nature of it being a different program with different layers and formats, imported profiles may not look identical.

    When importing a profile, a new profile will appear in the profile list - you do not need to worry about it overwriting the profile you currently have selected. If you wish to merge the imported profile with an existing one you have, you can select the layers from one profile and copy and paste them using the relevant buttons or by pressing the Ctrl + C and Ctrl + V keys on the keyboard.

    Exporting Profiles

    If you have created a profile that you wish to share with other people, you can easily export it by clicking the export button on the “Profiles” section. Clicking this button will open a window where you will be asked to save the profile as a JSON file. This JSON file can then be sent to other people who can import it into Aurora using the method described above. There is no way to export Aurora profiles into other applications such as LGS or iCUE.

    Taking a Backup

    There may be times when it would be wise to take a backup of your entire Aurora data folder (for example when you are installing a test build of Aurora). Doing this is a very simple matter of duplicating a folder.

    1. First, open up Windows file explorer.
    2. In the address bar, type %APPDATA% and press enter. This will take you to the folder where various installed programs can store data for your user account.
    3. There will be a folder called “Aurora” in here. Simply copy that folder to a different location (for example your Documents).

    Finding the Aurora user data directory

    1. Should you need to restore data that’s been backed up in future, you can simply replace the sane Aurora direction with the backup folder.

    Clearing User Data

    Clearing your user data may be required if you start using test versions of Aurora or need to downgrade your Aurora installation for whatever reason. To do this, you can simply delete (or rename/move if you intend to reuse to this data some time) the Aurora folder.

    1. First, ensure that you have closed Aurora. Deleting data while Aurora is running may cause it to crash. Additionally, Aurora will write some data to it’s user data folder when it closes.
    2. Next, open up Windows file explorer and in the address bar, type %APPDATA% and press enter. This will take you to the roaming application data folder.
    3. There will be a folder called “Aurora” in here. Simply delete, move or rename that folder.
    4. When you next re-open Aurora, it will recreate all the necessary data with the default configuration: default settings, default profiles, etc.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    User Data


    Last updated 10.01.2024

    Aurora stores all user data in a directory in the roaming application data folder. This user data includes all your settings (such as preferred devices, bitmap accuracy, etc) as well as all your lighting profiles and recent logs that Aurora has created. You can see the Aurora folder by navigating to %APPDATA%\Aurora in Windows file explorer.

    Importing Profiles

    Profiles that others have made can be imported easily into Aurora using the import button on the “Profiles” section. Pressing this button will open a dialog asking you to choose a file to import. JSON files that have been exported from Aurora (see exporting profiles) are fully supported through import. In addition, Aurora has partial support for implementing iCUE profiles, however due to the nature of it being a different program with different layers and formats, imported profiles may not look identical.

    When importing a profile, a new profile will appear in the profile list - you do not need to worry about it overwriting the profile you currently have selected. If you wish to merge the imported profile with an existing one you have, you can select the layers from one profile and copy and paste them using the relevant buttons or by pressing the Ctrl + C and Ctrl + V keys on the keyboard.

    Exporting Profiles

    If you have created a profile that you wish to share with other people, you can easily export it by clicking the export button on the “Profiles” section. Clicking this button will open a window where you will be asked to save the profile as a JSON file. This JSON file can then be sent to other people who can import it into Aurora using the method described above. There is no way to export Aurora profiles into other applications such as LGS or iCUE.

    Taking a Backup

    There may be times when it would be wise to take a backup of your entire Aurora data folder (for example when you are installing a test build of Aurora). Doing this is a very simple matter of duplicating a folder.

    1. First, open up Windows file explorer.
    2. In the address bar, type %APPDATA% and press enter. This will take you to the folder where various installed programs can store data for your user account.
    3. There will be a folder called “Aurora” in here. Simply copy that folder to a different location (for example your Documents).

    Finding the Aurora user data directory

    1. Should you need to restore data that’s been backed up in future, you can simply replace the sane Aurora direction with the backup folder.

    Clearing User Data

    Clearing your user data may be required if you start using test versions of Aurora or need to downgrade your Aurora installation for whatever reason. To do this, you can simply delete (or rename/move if you intend to reuse to this data some time) the Aurora folder.

    1. First, ensure that you have closed Aurora. Deleting data while Aurora is running may cause it to crash. Additionally, Aurora will write some data to it’s user data folder when it closes.
    2. Next, open up Windows file explorer and in the address bar, type %APPDATA% and press enter. This will take you to the roaming application data folder.
    3. There will be a folder called “Aurora” in here. Simply delete, move or rename that folder.
    4. When you next re-open Aurora, it will recreate all the necessary data with the default configuration: default settings, default profiles, etc.

    Page authored by
    \ No newline at end of file diff --git a/devices/corsair/index.html b/devices/corsair/index.html index 8a6fa1e..21b0458 100644 --- a/devices/corsair/index.html +++ b/devices/corsair/index.html @@ -1,4 +1,4 @@ Corsair • devices • Aurora Docs

    Corsair


    Last updated 27.01.2024

    You can use Aurora profiles and brand specific integrations (like Chroma and Lightsync) with Corsair devices using Aurora.

    Required Software

    • Corsair iCUE

    Needed configuration

    The SDK should come enabled by default when you install iCUE, but in case it doesn’t connect, make sure it is enabled.

    Turning on the SDK in Corsair iCUE

    Supported Devices

    All devices that a version of iCUE is supported.


    Page authored by
    \ No newline at end of file +Aurora User Docs

    Corsair


    Last updated 27.01.2024

    You can use Aurora profiles and brand specific integrations (like Chroma and Lightsync) with Corsair devices using Aurora.

    Required Software

    • Corsair iCUE

    Needed configuration

    The SDK should come enabled by default when you install iCUE, but in case it doesn’t connect, make sure it is enabled.

    Turning on the SDK in Corsair iCUE

    Supported Devices

    All devices that a version of iCUE is supported.


    Page authored by
    \ No newline at end of file diff --git a/devices/index.xml b/devices/index.xml index ce6e809..ab2b6ba 100644 --- a/devices/index.xml +++ b/devices/index.xml @@ -61,7 +61,7 @@ To change this behaviour, you must open the Aurora settings, get to the &ldq <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/icue-enable-sdk.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Turning on the SDK in Corsair iCUE" loading="lazy" height="811" width="1280" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/icue-enable-sdk.png?v=1bbe94f77e78d95af98555f206db5668" alt="Turning on the SDK in Corsair iCUE" loading="lazy" height="811" width="1280" /> </picture> </p> <h1 id="supported-devices">Supported Devices</h1> @@ -106,7 +106,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/ghub-enable-sdk.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Turning on the SDK in Logitech G HUB" loading="lazy" height="792" width="1138" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/ghub-enable-sdk.png?v=1bbe94f77e78d95af98555f206db5668" alt="Turning on the SDK in Logitech G HUB" loading="lazy" height="792" width="1138" /> </picture> </p> <h2 id="for-lgs">For LGS:</h2> @@ -135,7 +135,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/lgs-enable-sdk-1.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Opening Settings in Logitech Gaming Software" loading="lazy" height="750" width="1006" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/lgs-enable-sdk-1.png?v=1bbe94f77e78d95af98555f206db5668" alt="Opening Settings in Logitech Gaming Software" loading="lazy" height="750" width="1006" /> </picture> </p>OpenRGBhttps://www.project-aurora.com/Docs/devices/openrgb/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/devices/openrgb/<h1 id="required-software">Required Software</h1> <p><a href="https://openrgb.org/">OpenRGB</a></p> @@ -184,7 +184,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/enable-sse-app.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Enabling custom app in SSE3" loading="lazy" height="1040" width="1920" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/enable-sse-app.png?v=1bbe94f77e78d95af98555f206db5668" alt="Enabling custom app in SSE3" loading="lazy" height="1040" width="1920" /> </picture> </p> <p>If you still cannot control your keyboard or mouse illumination, check if Color Special Event is enabled in Aurora applet in SSE.</p> @@ -210,7 +210,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/sse-special-event.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Color Special Event in Aurora applet" loading="lazy" height="1040" width="1920" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/sse-special-event.png?v=1bbe94f77e78d95af98555f206db5668" alt="Color Special Event in Aurora applet" loading="lazy" height="1040" width="1920" /> </picture> </p> <h1 id="known-issues">Known Issues</h1> diff --git a/devices/logitech/index.html b/devices/logitech/index.html index fc14de8..60c1149 100644 --- a/devices/logitech/index.html +++ b/devices/logitech/index.html @@ -1,6 +1,6 @@ Logitech • devices • Aurora Docs

    Logitech


    Last updated 27.01.2024

    You can use Aurora profiles and brand specific integrations (like Chroma) with Logitech devices using Aurora.

    Required Software

    One of:

    • Logitech Gaming Software 9.02.65+
    • Logitech G Hub

    Needed configuration

    The SDK should come enabled by default when you install LGS or GHUB, but in case it doesn’t connect, make sure it is enabled.

    For GHUB:

    Turning on the SDK in Logitech G HUB

    For LGS:

    1. Open Logitech Gaming Software and go into Settings

    Opening Settings in Logitech Gaming Software

    1. Enable Game Integration Settings

    Enabling Game Integration Settings in Logitech Gaming Software

    1. Open the Game Integration Configuration menu

    Opening the Game Integration Menu in Logitech Gaming Software

    1. Disable Conflicting Settings and Applets

    Disabling CS:GO in Logitech Gaming Software -Disabling DotA2 in Logitech Gaming Software

    Known issues

    Logitech device integration does not work when Lightsync Wrapper is enabled

    • Lightsync wrapper will be automatically disabled if Logitech software autorun is detected. -If you want to use Logitech devices with other brands and have Lightsync integration on all devices, you have to replace Logitech software with OpenRGB

    • G HUB can take a very long time to fully open and start receiving SDK requests. Because of this, on some systems Aurora tries to connect to G HUB before it has the chance to completely start. This causes any following connections to fail until both G HUB and Aurora are restarted. This can be fixed on boot by adding a delay to the task Aurora uses to startup. This can be done in the General Settings:

    Adding a delay to Aurora’s startup task

    • Sometimes G HUB will only display Aurora’s lighting when the window is open on the foreground. To fix this, setting the desktop profile to permanent may be needed.

    Setting the desktop profile as the persistent one in GHUB

    Supported Devices

    Keyboards

    All per-key RGB keyboards are supposed to work. These are confirmed keyboards:

    • G910
    • G410
    • G810
    • GPRO
    • G815
    • G513

    Mice

    All mice are supposed to work, these are confirmed mice:

    • G900
    • G502

    Mousepads

    Most other Logitech LIGHTSYNC devices should work fine, even if they don't have a layout available in Aurora. Simply choose a keyboard with the same layout!


    Page authored by
    \ No newline at end of file +Aurora User Docs

    Logitech


    Last updated 27.01.2024

    You can use Aurora profiles and brand specific integrations (like Chroma) with Logitech devices using Aurora.

    Required Software

    One of:

    • Logitech Gaming Software 9.02.65+
    • Logitech G Hub

    Needed configuration

    The SDK should come enabled by default when you install LGS or GHUB, but in case it doesn’t connect, make sure it is enabled.

    For GHUB:

    Turning on the SDK in Logitech G HUB

    For LGS:

    1. Open Logitech Gaming Software and go into Settings

    Opening Settings in Logitech Gaming Software

    1. Enable Game Integration Settings

    Enabling Game Integration Settings in Logitech Gaming Software

    1. Open the Game Integration Configuration menu

    Opening the Game Integration Menu in Logitech Gaming Software

    1. Disable Conflicting Settings and Applets

    Disabling CS:GO in Logitech Gaming Software +Disabling DotA2 in Logitech Gaming Software

    Known issues

    Logitech device integration does not work when Lightsync Wrapper is enabled

    • Lightsync wrapper will be automatically disabled if Logitech software autorun is detected. +If you want to use Logitech devices with other brands and have Lightsync integration on all devices, you have to replace Logitech software with OpenRGB

    • G HUB can take a very long time to fully open and start receiving SDK requests. Because of this, on some systems Aurora tries to connect to G HUB before it has the chance to completely start. This causes any following connections to fail until both G HUB and Aurora are restarted. This can be fixed on boot by adding a delay to the task Aurora uses to startup. This can be done in the General Settings:

    Adding a delay to Aurora’s startup task

    • Sometimes G HUB will only display Aurora’s lighting when the window is open on the foreground. To fix this, setting the desktop profile to permanent may be needed.

    Setting the desktop profile as the persistent one in GHUB

    Supported Devices

    Keyboards

    All per-key RGB keyboards are supposed to work. These are confirmed keyboards:

    • G910
    • G410
    • G810
    • GPRO
    • G815
    • G513

    Mice

    All mice are supposed to work, these are confirmed mice:

    • G900
    • G502

    Mousepads

    Most other Logitech LIGHTSYNC devices should work fine, even if they don't have a layout available in Aurora. Simply choose a keyboard with the same layout!


    Page authored by
    \ No newline at end of file diff --git a/devices/steelseries/index.html b/devices/steelseries/index.html index f01bbc5..b78e1ba 100644 --- a/devices/steelseries/index.html +++ b/devices/steelseries/index.html @@ -1,4 +1,4 @@ SteelSeries • devices • Aurora Docs

    SteelSeries


    Last updated 10.01.2024

    Required Software

    One of:

    • SteelSeries Engine 3
    • OpenRGB

    Needed configuration

    The SDK should be enabled by default, but in case it’s not, make sure the ‘Project Aurora’ custom application is enabled.

    Enabling custom app in SSE3

    If you still cannot control your keyboard or mouse illumination, check if Color Special Event is enabled in Aurora applet in SSE.

    Color Special Event in Aurora applet

    Known Issues

    Devices with number of zones other than 1, 2 or 12 are not fully supported (ex. Rival 600) - they may still work but not all zones can be controlled.

    Supported Devices

    Most devices supported by SteelSeries Engine. Notable exceptions are zone based keyboards like Apex M350 or Apex 3.


    Page authored by
    \ No newline at end of file +Aurora User Docs

    SteelSeries


    Last updated 10.01.2024

    Required Software

    One of:

    • SteelSeries Engine 3
    • OpenRGB

    Needed configuration

    The SDK should be enabled by default, but in case it’s not, make sure the ‘Project Aurora’ custom application is enabled.

    Enabling custom app in SSE3

    If you still cannot control your keyboard or mouse illumination, check if Color Special Event is enabled in Aurora applet in SSE.

    Color Special Event in Aurora applet

    Known Issues

    Devices with number of zones other than 1, 2 or 12 are not fully supported (ex. Rival 600) - they may still work but not all zones can be controlled.

    Supported Devices

    Most devices supported by SteelSeries Engine. Notable exceptions are zone based keyboards like Apex M350 or Apex 3.


    Page authored by
    \ No newline at end of file diff --git a/img/chroma_diagram.png b/img/chroma_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1b22ee0eb4709630a43c64439778afb6160d263f GIT binary patch literal 74729 zcmeEu2Ut^C(?1b}upwec#Jbo)KtTi* z8(MUD_GXHmUZ`kE`*hJ%iG^?zvut)0J(SW=`-`2IdkS_K0P|z#o5c*%F4Rxvqx5?8OvkjRx{D<34G^U4PS zlWBB%A0*KSf#9d628rZ+sg|$O1*ye)KmyPCQnA`nfTl6al}f%3f{YG=fk$IFa#%AbVr{|zJ#xpcWVL~qd~0I$u;WEX&_KR!9nog z&e7|He5JUP4)3H0G+L2Z+ereGK=>d@J}?|;1o}l1EDHc`)O^r+$HLIT8U$LZ%SD|u zB;OQ;RESffVo8+nNKH&QJDB-(Yh7)sGQzd|R2fYp5-UN&q72J`;8=9$m_(*d3I=T% zwp82IkEL6Pz?7T2rqVHR1WcMP7m0P2);gQgYcxu|JoVQ^p+>D13oTr(4h{}&fScGL35S=2HOJ!X>!!aS9qZIIk3aM6; zuD0~2)~EraAy%sRUCmhLsFU%5jCHpB8-8`JaMwC(H5$-UH+FV^+*L@GK@ck;Hgv79 zr5_+t|9IVB)=B$|lKd;pF~xW^97a_sgmKtZO)OSO)zbqJ79r8;O{ z4>c8p28Ey}L`a08mOE}B>Fu~t>$N7RlBFPY+fffH2;F?C)^XQWuaoo8q(EJ8^E<0* zA?Y;fTA`)X?=F_5oSv_h0s!l1?RU!|kWi<8E-POoCR_}F2#g;{jaIDW>*a=DkCboG zBk3>Y{=T-q^g!3h0m>p^7HGhrEn);M5f~}5>%Oa}&Iwv-L3;DI#kZ?7P!a%A*GT_- z36KDnLFo>S`CBD_qgcPY@D>Ic_{wz48g_EOn{)$>PlcYzRUPny@A$;&Qace05;T6- zjYOUS2{|4Z0KFXGQWRexR?;;(xxUjJ2sC=VM%AqVPAQi{c0v!SL1)Y0PNvsGhzYC! z8T=ZJ#-LQKCI$2t$WPa5wEQ3;XaqqfYJ|Ynk>x5W_z(IJ2P%Q)1*NK`psmhnKm!q5 znD|Fx{O1eV#injN`b8{IsE{C3XGa#nfWs_;V*G-?Ar_LX8}xS3y5y(3r2aj^^Y0e~ zAhaE(`!6gAe4S3L*CB$me6v_<1}4fP2OR@QOD*A@xvZ=m2WYv@Ec$bACPAyfh>kqZF;h}9x8aE}2EvaTKW?sshA zFVFt-wy?v*Az**g7Ixs&KLJYr9aD(HS_Il6;D}&YP%xs~Pp8my0oy-q7`t#6FqRJ) z`mP33A>(Kwf`UF^ z@DMPoUkWfF3)Hb6=1&28`oIqNKG3MqDs)reoel`u03i8mEd2Oi=aPVc1mu!*b4CBM_NQy3)n#eo0rR`PG;Ub{RUkQ-TC|4=@Ah?0V8)aa}z)a|c!_AOvXL zHrycWCXxfMfuK=pw1Ar(A(8*mw&K?o7LNQ~9fqSU#kxC@z#4bXxyxMs&u=W?7B%k1 zo8Pbnian)vQh#U1W(k+^1zqtL%N$erU&1`UySeR4HLe^s352KZ>Yx~GV5j%C4&%*3WWF(WGLnW5jvg= zHK`^o6k!h3$)$2-V22d_BN3V3)#HC!WGsq|4uWG~-F|)@v%v&`1C4G!UE14C-oSwe z#s*ldf0FAMN4>WYd^1qB9 z!I!b9B%@rSGMH%abVLL$gUx43NJI+Xz`;ew$CA|=5&@@(#l?Q91R9fR#S-9Le4+h1 z^rk>3A>GYny&~REg9~|aDvY_Lub%8puRxbJS`0HMDseAw-zr*PcMszx5 zkhoafv)^fmgzyOo_Q8TUai`z_AnI)N*V6&y&Kdoh{D=L2IS}hE>~b{-WP|y2sK(c_ z(p_!-?%`WT{U2WK-&v&JTa79H?#T29i}VKqCeVH@@}M99w_l4PpaE#^qJ6bx zfn*6tT(_->1*?g_NL<%(OV??NN-h#XzA|1b1`2HPo1udmOYjT;4jS)+CISj{(r8g~ z$m`STwHk%^t33}0izvS${qyc$hrRqKyuU7=9PyP;j(}Ts1KrGZR}8+pt?r`zg?w_0 zNAW8|{T1{7r`Wg9_@(bLiT~VNgLxi<{I8 zYY7kJ8vzHe^Q0J@+=>MN*9a_yGMu4|h{WOWTm~yLmaW90I5-Us{KP{4qKut?v8;?( zW~7h^NO%oJAkfQ|kz744GBt%}GHH2wL~yr1c)V1=iVqLb2vH$eK@>#>V~}7tDn@GN z5mI9{TtTEUE-ePB(nkt|***xo6ehv58ITuG78|svkaT4hQ{R0n^Aq z!R2BuT^Xfhf`@2vT#6wh1Ba#SS-5DKLJ=;FC#WR?M6g(r0u4zUFJh+3qgfF~JnPISQ6RPlanpAp%n@9~~Y^Lo=1qco~%x6HKKsV+2x8YC1y)35X1?N{dX> z2uGus5+zj@ucw*t z5*n8p%{FF4Qoue<4?-OH)EJmVNq`YZ1bK*9f&}7)k4Kq^X&gKdXs#9+O_OR=X0w=? z0s7E#v>{Qr7(EY1NK2&(BJ>Osg@abaV^~B^2AZbeFf1&9IP2nuMpND}#e|S`|vfCZvJPOR|Q>kJTYlc*1lx6)glqkOCPYhY)dO zUTh43z`_H}RN!?ubu1~3hQk?gL{us%f=!6vlV~EI4hISnfMBWPsAe<_9fih9r0kHi zbQl|pBbv=IA{@p@gyHB>^biFlB+bA~NjFBJfdb>B)haVmLnljgB6T?EQkM~u20kK@ zSiV?f;CCe1NYETCiNZ|D5YaVUPzS<5nm`pDEH{Iz2=J#2#$<4%us8}GV*s}j2?j_O z9tEu>59$Oe2kC9PL4^VzG(#{nJqSRskg{MXFoGllsv?k}0R-ZKnI@-06~HzU$_7da zVRCiQ1z!tja21WmBniyXprqKqfn~rM6rL=YVg&bcni#``QAEmcJcCbwqZlzX6BDT- zNL2(Q1edYmbVFnYSOb~}co=wj6rR9l%jIm9m@eaiuE`lFvd%zZ;UJ;w>>NYX(@{d1 z-Xu`M4Kz*~9hpXu#G@mj$6O{)gQIc7#T0(DE}Y23;mj0@5EZPJhDSme79D~{gbNMu zSQA{WAW~z39ou(`#9btKCrQDC+3V7>9uIOtv@gDJ2YS{g^KkNJg_cBaLBBQPQG?al{a;gcPfdKp4>qHZIB#PG>36+7M8K5)YV4h9mJA zIx&)`VS}gynNA5#Q7d3+Y7I>Vhh$0(lST3P=^6^13W=8*o}O+p@fh$_xPdO^$xZPz z7Q|YGIMM*Ih8(VpRmO_NreK{ZN{UNYgrtUmBx#vRlR`sbfqfS7F%g<5RirpBT+1iG*nlJOScMc5Czhp4)ftgAxe=1S=v1>YJX*oQWC#!36QPXS3>1nU6RnF##n2E6nJShlr83PV zuw>ARo3RoxQ7(=rYtgdf)8_?5P&Y9EKz6_!7;)N1P(!=D5)}>$b=Tq z!M+tA5$T9iH_ z!W1FZK&S_3v0N2e7zr+v93_k+NELZ+Tf#Vo- zY@rq*FvJD32^OdPW*B7_H7wqUv3AYwzPr$wjJd3ty}iYgPQ zMQ9}u9)n+)I)j>qOT)*(l)U&zP6if6#p;0Ti3^dyq*S^br-F-tXzDZ6C~7cE!jPCa zN(E90GngXbVgn`v!vJkdRFP&y3;}|ca6Kip*mcmkB;R)(+2ICQD_XAiBO~%wAA#F5C$nDM#~97 z#q)z9yoiAtlu9a012-~)VLYXXqz|FeBXo2mj0j7OR4X9`f=kUQLX$p%Nin13Oe8v9 zhc+Q4CN0fOk;liSYf_`)7_l_5Nka{f2@wI9CbNk!ok$O3h&d)c0U5{UvM>mg6lEl_ z!xd|ve9x`?^e7H$~GpW*J(s(dT6h%O# zvN_=>163S?Ohb_5X-tGv9zjY&;&CiqFpWkg@#E-9i6NDZ;n0)@RaCG9rl8T0SgaP8 zO2gBI!6_jaez4M{&|=NFl$clq4oP9k@B$=L%|z4UP*{2}Po0`#(DAsCHANE5;SyM! z49V9M!ig%fnt?USNYS_mIf=tykRfR%n@};(1`Nb~{^#O3$gko#NN8)`?W_g{APWkL zbl;}~!GTD>+N4`(f1MpV05)ilf3`sfM`>T>Eyl^@ARQVn;_GA`Ck#+bu3O{}qSN_$ za6AJgO#=ahL5W43K|78m;}|5yef7G*ALTwm5y6gUe~_N?>kP`y>HIx!1^mq<6tFIT zU-};OUR1Xvlx{N670&A}16{QLQX*uCMKZfmt-emZ=zKZipLi$WO9IYU>57=HSf`~+ zaEjB(l`g6Or?V|B89BeK^`8f5|NZ$po$r7AN?ULpZv_#>2D$KGO60Mq;eYf+fUg+? z55@+eP@O$@6IwXL*{_icj{Oph?Be79eAZ6aOFw@GUtb5OyN)6L@U0Ie^g0Osmv_y& z&J;vq2|vB#*te^Nu7ixu*Ft{tddY9!K#P< zJWi}Uf+9-gQ5YIJGr|;2!J{JNcm$urM#ic_P=IEPAi&VkDL83NT)Z)Ys6fyN5mJ6Q zJC%o!!G5Weg2D>J$uK?vub?v{qiLXQR9u9SMj`2GW}1{nfWf2XC^(>*qf*$c7$Qzj zOOYByau|$8#Akr#W||3SqM4vFECf`hvkf7F7A{3ZLuESJ!F99~LF{Tr3i^ph(J1kj zc5t8_SVub%#Ljj=U!7wiNi(8T@O(iWP9H9|oPo$YZ zyHME(nmGbIml`<=&^8!*G!c5HKU;HfPck5`={TmvmCe~ z!OJSYHgrh%@1+!@u)iFsbhpXf$bTVl>u^ARWo03HDcwGY~j=qSS`#-c!99f}QG4nD2c%ng{VBDmPXaWizL5xSUi4jmg2ms6g&>(=p z!JzTP5FsGPWkeH6>CsFWJO-3!69Lcw@CE<`zz2+lBsD=`1N8ysE`{nu$4NnXOFech ztONYPb1)__ZW;mtDri0(0LldO0{{x1!N4b&>t6~yP_Q7ZMb|7YD;9ihK=&W8hk+cT zZcb9S{JB#$cH`ng3xkw;#`Fl(Hf4O$Q z`Kl5mWL^I}mh&ap^h@yPm+vd9gS?V2h6nM#Hw&|aL;t)CeEmi#yz33qZZ2CFsXNQNzW3lS#PSYp_|>lO z7nc7~nDPHxwxhtlKe$s1ES@{6D|p$B@$jyI^k1CwmHTCi3ZYgsMd|+UEluj-)4Bnk;5N+p;*`9#g{L2>kfAvPrJTGuJeJV0`$6nr*(9= z8GhT!YM2!WFT`aewI6g`D;BSMcF=HZG`rodb+dZZtYx#ZH)hwt?0h!ePd~00=>5&3 zBTi?FjmKf;w}YgEZIkA@*~gLVGIK;uv|TtSXBSk-lbh}_H$Tj1Go9NJw0dj5*2{^k z7Y~ia+xr=~Q@?#Wv%G5kBe;3$RODllf06rnXPNzO8=iG}COga@=Hw1THAOd6Z8gSQ zo+a(EiLW`^==t;K_wIw{!r$G0|6F&>6LKUfmf2%Tc;)dJk@1S=<91OpD^qCpNEC6J6kh}-Pzs3{wM2K)SVuLsLS^I zIW1zDU98v0T!QFia%NEb_|XO9ii~S+3kw|rF81B~K*00J7&`Opi;J0|3xi z`(LVJTH3giw`C1;YR*mAb@md4&pTay#{0&)$&(IFbgC&fZ{_)LO1;mD|C*@(i zEA{+mO~ff12DBbiW9QC7QSHc1Yii_2P=Ui5kJ40g?as}erb0@>3dKR}4^<~eI%sD~ zV_}K~``d2V#Xq=ky})HbzH(rXO|A=z=iGfarXiqz@tM}^Po{5u)2y(s`4%kOo^NZ+ zXDmFg@OCfiH|PXB&+c*Ho8+V)cDz(g*|js)Yj~u+d7 zmn>c2z#iRG;aMP(+vkVE{0kLU)0&JEGHM(b!xZ}~Xtjs7ey8|wm^f^FzaNY$p_TPU zc=6>`*PmtJ9IE0Eq*G&y4qsaQ96umejSH!mn}ww< zffq^$G<*d8awk{qp7D!|Br>z#*7dn5p zG?<81bPSgOL)di9>DqN^Cz25#YOZpf~_rK=VE{TO9} zSoL-z==8u0un31{xV-hUC|+`?f7lZ7=3(>u_7529v&Zh7_QA-R*~(+3MR)q&xi(38 zq<`Tk?ykEYBdwNc+$);mnlfR7T71-XHWgT(_lSrvBbpEZw|8gV5nkBrKkKObUYB!h zH{0;F$qycDhoAJ7kGTDM1|GFxMVr$-t0U!ZW!ra>m80%mK*W>|0D5@mtzQxU-PTq}4_|pB)?4o0)OYTaeUU$A z!g?Mb(!Z&u0rM2+J+j>G(nVk8ygBl*8;hU;CAR^X*q>hegd^{SraHSZb;z%0JJ=O5{c?R>g&o{!kDloclZ=(PR*wp%7W!PBn>I`#K3=ej z(;)RvIsJNXpMb$ahn0bcxD8J6x2f?3`SQ+RTocU)?Tptz3h1d4_f6`n>Ned2;-f z^ewjMQ5!$kk(s;dqHf-fJ{&*eK~H9}NAk2GE2piQ9sf{%|9jXVN8z)E9uLO39G-nw zMznpl`4I2z*%uTbL(eI1-_}%jf_L&PXIIe?7;)u|Ift~juj=y3kds>I_KA8)X_9;E z9Cg!}b79SXB>|-yKAwI>UK#f`dkeF%Ntt8bk7G$*q)vAyr(L&j71OBZV$c%Nqg z*qj5Q3m)~kZwJ5^xnG^(oENeyX+Z6dV+S`T1~WXiVs|U6NwNTw*!tRf!O+?tgYrK+ zPfH+KJvJk_$%rZb!4gR*Y|te;8S7G!&yKP>nHP2OHTKmdC%hP=TH5>1C+!-7A9EwK zB*1zn6tTj9NIM3nidgZX9wvZvY>e$IrkA)N8-?Qb8ukBw`o_qWa zqF#!Y!r;MG(XXGS6h3a9svAY`|`@KCG{`TH!K_bUy z!C9qae_c+X$z4BSYI8z6!MGv3`Vm6aJmN)4nB$7DsCoI{XOZdQ{(^AZhJa8{QA%#$ zuvORDSNjiGu{iihEwSI`_NZjGyCH3z9rxI-sQbGXWaZ*qYo^QHx4x>LmbWi{M+^?G ztDb#tM6Gk;n7uw})8?%?viIR#|H_(b-gSd~o`Estg89*C3P9CjrYHVgl z^d`J)vXR6|4A)aiuvyqro89dFMs~qYIz;y`4`;c(;8FmSj!Z<>$@& zo*KHYSC1`vo>OsNpO>FTEwq!&5j!2Y(61(NU%Y8Owkpq|c*MBp%ppE^CZ+Ku?6=&^ zuwvn^`?%QpvS%kh?n~M+E;l4+`0}?E)m+lnmGHJUr@C?88E%|O?`NLRQPlP+pK(!U zk0C(DefY8&xt7r?zp)=xx_VTY&6^dH2Hms=GqmTkwjj10CBB{L9n)uhqHC&86JpW% z#CAgU#pb%|>GKDSIT7bBZQkG$mfPmF=jbZ&f&jA1Rm6g_H3RY@Vy;%qfu$^1e)`et zbi}KcQN?3V6dp^QeeFQt$~+lt@3$#owy!I8++RRwlx0QrUtnt&OMSPnEqUklY!1FT zkcwL)O0DYk!-VOfGd>)xhN&LBc?vmd87iRhPfLICM~ZDOP%(MU9QH73*r>-P2A&=7 za!95p^VXwK(g*H()!rVJ?h;AQi3}@te!bJ7X?M=ejn@-iFa8<1xvwAnptw!ublxF{ z;f`FgzGAE2d9R~OZLSktSjp>GoDH~<-RvznVfTD_wglb4E{L9%`Khiw2wAD0?5P=s zLLPD@WldPTr19XJCwIml5-Bf#?3K6MA?@P*Z;lscqPf`OJlhIx!1E|a;f=uK-aR(l z9G9jI{eBKg{II3(9iRUFqQwVxY_dY1LhN4E?BXS}cd=GJsi^yYuU-797PC;T4NW<{ zxnk(VRKJ!Qb|kJ48aEJ*k6sqPIBOln`qa|n@WC06OPhGXGd#A|d0Q9UIZerW)PGb` zSlx<}Da(-MCxt$TZ9KAAKW-=X6Xli5b8ke3vnZGC1n+h%ykV0+JI?QwbAru56Mtpi zR@!9>&r{y$lzeUcyp?rr*Ypc}+7ymODu#`GY{+fcJ4uq_314#3j*p>@s-bHZpBBLz z5PKqmTb>ObkoXw2pdP<>n7lD;-sqJRbEkg$0i9f;b}}~ufJiFOG)UgEAmc4?ExX+wgeBQ5T=1xe1DWFK=e|H#@!jn3Aumq%TdUOlrxr z8a2{3Zvbq`plz$B-8?sfj>#f6Isk`~Ae$F>d3`A};304OC!3xp9>2WM>ax){ z<(U`x`VsE?OJ}$jFFmU@oFr`z9`6Tj4g8{)-vS;n&`MZ!|C9R%^e;n5;vN={3EMU< zp!DZ>S61Mg$e&r`E1JGVBt-66-g|4*?Gg0xNuzbA*YB8i({?;5K82_nadvELynATQ z(WO50hpK@9`ALr24qYewV>J7N*$cu4~ZF zKOUQ0a)0a(ExWd~W%9RMJM{i^wl8Ah6c?{MS9uLv^vIm=LPdUk4M@s}Rj`)ct1qnf z&%N<#@6+%#CwdKxq1cO-V+%eD>pc>=H4g;e5BPNQI%COkZgy5w*|n(TtNGErl(!$0 zG?eGT8o30Q>XtE2%e^*Y^9%Th%T2NLrt;L=gj25ssT3LvqoPJoI&F<`)%n?|r(!iGJ}z$x+ea*99pt$zP%E8}=97`kys3;oUy-1XtWa`>ReRSo%PzrCwGNvW z4oBS>*;i9ErO8R$9ycsmdH$QZyX_Y+ddJ`SDPHD~-fQ8Gx{K#NJIu-689FHHs(WcL z$`ew5&$G*Jg?FkyssECD+lL)*KW%flK6B{B1=WIxdD%M{<7)js7w6ZWzj1kS_LQs_ z12+4Ik$+%}=T~x_d-SMkACi2n;>l@q?|>T~kGC)*1HPO0^IZAGO)He8-${;GJ%fdv zmo#PC_Uo~6a^Mu{FdE}%?5JUlpT(s?p5ib{werDU?V7bwzE)9jl5Mt6miep8`p-0x zR@oi5sbZHdTKdt|A)F)JJSj(_iyO>Uue1u9s0eL!K^!3tcI@$FEOX~5T%Fs2XAVic zj|sEuQ_`dzyFHndJ;k;wzEbZDo0sBa-}J0C#(b3A*D+^)=F1;##%>w%hW+XMMRdQ! z%QN~r`(TGGsC~@4AVzN|$B%Ng}_Z&lM>FOQ95@coa&5XY@DN2#gS1J@kfztv-LiYd#REo z1@eypR1Tfh+m3_R)r&;|D0yNRLpFwx^m3 za^3YT^Z8b^ZDQi*R|h!(^@hoHY;{1tiVLeUvD94At(NLh44JUx;8_FX@hxYLE?hW^PChG1%N}*={FD7#lG(3zZEauvR1%g~ zz2)%&du7crx9U6>5$x)YtWT%iYM*(eydB=FPoL!7m=QsWzDVc#A$!`-Ci`J)+AHgw z^lGPD@CD6RclhTuD|-u%y*AckcwlxbZVmp(OE4m)5Rx{2IoP&X2e>H|Gfb?eHZTxIFBL%&j>$ zXrp4SM)~$yuu0+Byv4s!fc7vouM@`()Ho}Bw)lIyMsepBAunKYp|TB_@wwMey3P%s z*PL?62idq0Wsr~QU%P_PT4}yN`&f!!-|@R+^Ty0~o9&h@>8DsZ4u63@C%MC4&|4QC za_9;`WcN=VV0$!3Vi-Eio}m{yW$QVKJ2M3(dCzZoK7RTny!!e=2B**3Y{whp8g;KS za1FQ~-n)JHGf}?&vzPT&9G4}8~&h>_hff+U4dK_b~-1_ zwFtvF^7y4Id9LGmHD<|XVp6|?ZChtIuk&e&44ym6?GeUzZ@-H8-5x%&YC_(Qk0W`d zLuQvwJsW*~MQLzVm4DH?YwJGudh+>VhY@3jWgS?MC4IMPTkU9N@34yL1J^D&w#Z?} zyvXXFt)G$2trr(Fss}xI9>iVW^J4W3*l52q<;dG! zS9>QUmRQ@}Yl`F-Z0^088P>FSmWa+gI-FnN-77PHk;>og1V)K*t6t%so6kISvccgd zV?gc0v&4N2>n6MMdWVL)4!d9@nnzGCZ-zaY=U;v#%5O~1gyB!C9p*Y-DZ(7Jsqnop zYSyv4Jr@NAm69CeZ;A-j_Km~ttXpNjyRFo|;>a+v>WpsS^ygPzCRWb?R$=RYo8#Y~ z82YVu#+|H-iH_5MTvJllFJ^-Et&Tmf%)W+b-Jo=}EB1J_DXwt1C-a8i*rIgj)QLkM zJRkDr%{jdB=YV|k>6eWxYu3dYH)`E5LPJs++ku-mWE5<0zZsY3a$tAaE_*!|?9N#? z>hvOiDznCR_m6kJoutf{^bnsOfZUxoK$LT&SDHWRJmtK4RL<(a*|;@%&Z6G!V1w~) z{etB`_zT1rPcR$j!Cu`2v!OlscYIg6E-}lD$f>m2)?c?_Yqgs7aK}MOkOF2Q9qo zE<5hU zcgff6xk>hOQU;8jc<}M+%kvnTK9Q}7WArS($(I)U1Qk|=7O%7#zcZ+6*N<0k6HhhL zcf0J}YJVG%e9`S$SlPgJyDC!izWMHDq!GhfYU_8Dv4^cpMxmNhL_JcR8VtF!pDE+t zTxK@hJY*ADll5pG0aeg@gc`NN*8f>GmK5;pXs;f-#@<>YcF30G7)BCQ$$?&kQa9A~ zW#`1{tM4bIP8*t3(yOuBXGdL-a|Gqe-Z^_)$ycL~UQ=K8%2|!h+wp$ly_GNKw$+-w z3TG^)O@$)MpQy==b|82N{CX)AP>-~Jx6*$5<7eOW@NMNTcvdsPI{wNF@`lp9l%IRW zN#1O{lt8N7)-#FYR&#Ez)zo8NFz?GN>O?^;!SvL=`QCL^nc3n7;nB?ds?beIEBdS% z_v8F;`th!W>}m^R7H(ei;2Bk>n{FY!q`F$c}R zFxErLKIS#h^Ujq~bF9+#A3xAG7DWzsLlgX7B2@iqq({c>t(Z9FRaJY)8cOp3?^cg& zkJtO1uAlMc9T_RROl}@Bt@jzJhL|-y{jDtFGiJ?0C=&T_KwZI*LvybMvZB730(e_w z)BfyfhOQa;I=N1}bd^Uy_`Y4ym4mk2nh_^$!tL9cBha|bSwHr`*aiCw{hnn83~xD0 z*Y?d{n;&8OzWqbWzC)KDEuoD9|5dI9 z*3U+f0(aY`Bvj5Z$cD{-5@f6NZoG=~eVc?B5#=z_RS?)vY85cjWtTWjS~aTQyx`*M z^MlJbOuSAUm};N-U?u;W)6H!AE92_@+~dA!mDt9*ZfMPG9#TGBDV1GGknKoZXqaw? zo9>e`^FZ%ID;|%4efC)M4w~(|m30M9MSMf!n+xY!0G8+5{Frlq-a6pH`VaS-ylO_z znNkxjTbIR{GA{D7PyW>X^yfQ^&NH*F0M-p@iAY}KH^HBDY@xj%gfQGFU`4m|Ev|mB z>GRE{EJ_5Ob-(YW&#~KI?a}k+ulq46E9k~dHyLyOAQ*vK_dzgDA4l#qdCo^qoE1X3kMVa5*JUFc#zV|}bnV*^T(&U1EN4YOa#jJA) zkFLI&(V!}n$WHiPpTE%Ko98hB=W`Y^?5kt*hi}<;I%!J#R?-je-CfIX#*eQqOQ3G- z6}x1(Qq&io(?Ea6@SV92Gx&BvR-c09q5JfL8?xRDH-^x|XTd_R;}x?0&#t>RvI?7CeTyf39CJ4G#e{&Q1Ke+4s*0dv#9~bqpyxolG`XdH_fLouNk;~&)|XU|cXMulz1XxZ^un&#DgA`{2V+u79nKFNOs4mA zMPeAu_?(}q6Ndkp>jIK2MEH=nMZJFWZa!?!fHuE-Di2>I>a`{&>VJhLx0!8g)aIt6Ri!EF}a5Z z!e5r|ZwNexm$Sz?ujqell4Iij)P{mttz!e*8M${>u^lC>mD%ah${~JqSmgOpd!3sk z4)+4c%Sv!P^^qU216XfJ;RQiu=CXc~u1lIWIjucV-8;`EP3W|$>FlfF)fb?>3ib2b`lk3tN}???2Q&2X8&)=Z{y?9<1OvCoeLp zK7IP+vpy{I^N)|d8MoL?Kya|0-jxgBw14ne+@0xn=M1pp^_lpFZVJM^E!nny*@?Y} zc20k$*fk?)+AW`zlSeFRnm%aYz^kU6*@0J)E>#J`3TA8vp3eEK#zn~eH|AGRk;(hT zg>%%{B=_ijIj{1P@}-6i;D?T$|{6RsX;kvQXd*#O@m&x?+t?e5R%nLjHWb%P; zV;ygd%755Kzmf36O#6Lyytm`4d-qPDbEzk5zN>^)R_waVe|gOHNTUNi0X_R+s_k%G zO$&KHW(0iJ-85LJ^z7h?>tYYzCR)Ebxk|d;Z&u{iMueDe_}s31Uia$gB4dp11R5xF zgm<44;|{*LKpwv0&i=L?`|n-+_9xV#H(SPKJ%66D$1pZA3LKkUxOVBpM)$&j_M5Hp z&bF@~edN{tW2>q^2VrOId9y6=T=Ce#b&0rh>PZjJRcwHzp?16BsvDD-8V)o_Sl2G^42J&}?=Of>2e^l~) z)rX_-9g5bU@=l1VlWfYZsbQf%o4hAiP0gO)e7=4)E;&`+^T@b9MU^#kTPW1=!*{0y z$}g{|SW~~iI8t$-Sm@AC=NYrQye#RU*N^w-cFsH*Gw;gVZ(4>9{pO^1%e5*gb?&>D zNBRtHys8drTIAUB{eV+vf^P@(4hTQEXk6Hu6nZJ&Q2S%b`4c7XR}IcR0JMyqy1v)W z+EOpR;#2DB&tu-j#XcFg@lsn+t->DpF5sRE(zYpZ%NTCZ;N@q_PM3@gXN!eS#U^Ut zgSxRRSA1`?=+HuYr6>B1aBQD7NBml2W?Z^0>RH}92eI??DSi!ZTY92sxaQ3*T9FTrYF@FSqQ^OkM$ufUzWcJ{lu4i46OJ6bf{aq^_Tqe`NNB(RY1-Ke@d7h?0u2ICaP!>tCj zjI>+m%AYl>e*yo_mfLldx%%K)^AD~yek_+4wmykzK5m4KJAJzK+S@E`^G1@8Bxu{e zJHe)E=ZaOI-|aa(vEW~8yh%$s%}H`{ls z-Zl=&o#>Nw?P+`8k3T$aDEko9`>A5nQ|!w?&Z}Lf1DU-`KW0qXw}bCx7<_#Kdr6V! zpyKcY@iGkKsLSPZtijy*b&`{P2|OW*KjPxPfE$?)3M(e}+$wF@&DxyV?_j`{{>6b; zSJee&6@)cCw`bg3;dh05aD-9CnwC{pKKT|$D%JH$x^kcW>=XS?a_X@9x&?u~0=<{1 z9m<jFTjC}_R6#HjL3KDx__N=LYuhLvw+P?N2sG?gx;2?*WwJtFW*6Z%O zgKn4O9ZL@=Hw;prB9>es?Atke$13+X&ywobPVe935jZ6o^CG!ua8rK9nCO6>2Q~)a zL!Eqr>INl8WS11Hj3-5(ErRNfG0hr^|8o1mJu;@aNgtf!0W#?1CQ zUbntRp>UWxr8n%Qz~x9|I0%_tBCHzbff;FsHlSpi(6xOVSGGExXt}R6zEjNH_(RN* zcB21|J;6_);OLX+Rk!%%byYezXYPAJog=N+*dsj_{>%iOzS*r?5zzO&ER;YQ-8?w&vU zxngy0W6F(1dv~urw8CyMwJ~k?Y@BV4qS$Zp;K_Hc!=?{f-_{WLQqmB#`sMqK=4}7v zwU5vCO|j_0VPhXSZ1CGa=^A&O--7+bbkEn zn10fhaX-|JD;%T$RD5>KM&p$c51XV-ML82cy7VuzQ6BNwhIG8fzR*DN$4{pXT9{>Z zCd+D}TkWn&q9bF`wuLTf@*4{au&eJ}U`+llFA%Ax7J7I97EvISC?aw zVbhYvdxEW8(u*xL@AA3VXnvcAerws>WqO49SFoI48pHRu9?#qNBCKSBqq@>+&*P0( z6N$I;5ax$h3#*Opx_3dsvx6Po_oHgOk2^nI7>f!QTx!`JJH@+b(oOu-iiPiFIeWcl zweHFrNLe;e9=c)-uFl|)wsp0n5@~(nif>8w5yR{X?~&qUv_n+wuJulh2!4V-WnzZC zt@>0J=S^(c`&S2VZ>nnvDohRSU7oPpCr05O`0gF!(>g4yuj4a=cLaXf7D8zaDdP;o zF{1xQ?_(zg&&T1=cvaDykE?xG6Rh!)nVV{eJ{Mr*tL*Qc7FADw^cMB!_&z z=M9wZZlp^<8bmrJ1f)c|Tj}mjr9+nPmUc;(ZltAi3F+>o@0-u}{?5Jsa5$X9*;mZ# znP+C6ndQ$BP!7iXHRi$4%{QFe5034trPANAEZq|Mx``@gZ+iWB64=pBS&xue+)1o$ z0FP5R5&d7{b^a4FY=B#WGgn)P%zta;pZVRVA-VAp44-?yANL$??!Ko66uN&7Z6ori z7|P1awGY96YV0)n;+GfLK*|tPb@7V z^EIktE`BN_j$p;YQCa)VhbbqQW@*b4;t(R!DWV=%*WCY8=VO-6^$gP>FDt$^+7iBA zEE;C2Xi%4%nmktHB|_Hg@mvtM2sd|v^D7XLg3c`Lgsfh19=6@AW?p=Lr2MavdHM!< z-mwvy6Y1|8pYT<`G4(s2{*j0JF0cB=0IU%`bV0ju;gu#0gz)(Dq!vQ*u~iX0Qc0qs zY{!9~lN|-RnKSQbXGA(Yyu?7$r)D?1VgjtBzT(hK)ts$H9XgOFFy9W&%1MGUOb%^W zUCc%-pi(t*X2`_%U5?k8_rt)IM54JH6)H{p8WyGRZt#afEakWy%he`ghV>`1pHuLt zr+=N9nh7k@FR(YsoTZ&KAu8p?JvEejMs>p$%^S{jk6zyi`|PA|6v? z>?sCfHx~DJ6E9{FXmI{?^WnbAgHKi`dIE>c{X^dwkjs2bu13);?ykl%_Gwuo7NC#7mF}2#k}PF_n}9v zLw7pa0K%rdpU$%trBv|P!+ayJ`Dy7^a?kXJ`PPM zy-Pc?#y=1OH74QVuf|9^OFyuxzfus8n$YOBM}!+C;z#QbBk<~*GJeufBYC$zV}gqC z`?s47F`oWw?rFOXMB@jX9OL#o&C>IjCaU1^hg%^uJs!O)G*dhV6=Lp8kg|uIS&2Cf zJXl}KS~4x>FlD*2o^<#hY;ToUrOT_Yd*Jz7uBaQX==fB)@zkSoed6XEcLf*De@ZC+ zmxcs8Yvg~07u;Q$_qaVFPb+I)lKEeHJndmIWKMdi`52{W@mkD2lARXA>=cLSwiwd{ z0nv@9Jv<3|&Zt`07D$Gv4wX#fbiI0U=#gr}S4(a_#BhX0=#{-X2<%iQ)%y70KU2I7 zoloG)&mE^L2TpzCCyOSp>vnx%01P7ej_$ty`*{*Bt~#ZXGg#2PjXWA69R6h)%W$3X zJ!4zXr=hNo9@$;Y=eLP6ot?Ch8;*bisFP-Xm2Rr}LV5Q=HMqReKg2 z?dJiJZ*BOd6u&fBM3Jt~xX`U(41`I+HDWvKqE{UpV>Nn0o~heBxl35+4vC}EUvbW$b&6L?n{6rt;H3CLIYDr#O@O-vAo5^Nq> zx`a?$kx|E%3^BU=pb-OU!EmLl>Tq(1Xka&;=;|uoN=hpexVZX%pIWq{ck8d6VhK3hYvV&}0e>qC`99l?(`aCy55CEh*COE(bkS-R%%^E_9n=AB4IkI0} zu;vql>1?ndGV8iK;vyIvq8os#EtHA${@R;(VA`E{P?+2#bEBJAb@)U%iL0Vl=YT2B zirFdinZ3wnt=!tE*Vu0(aC3{e;%r?)1TpZj?qcotNJ%x~Y9!4g!`O4@4!54I-6f?^ zT&&~c0khNokmCWI^XjZt@EI8+-+S6>?(9XPh#1V_pfY3`x?kL~uU^B>#*e#6x$cn- zs7pO8fdIzb7S~PqNu)~O)&6LPSJ_yA3d%Tj`T3w{7Q@aH+2Wft(fUJSe7`JnEBRId zY9_4>cs{zi5;>Zq%wW|TK8B*UiA3Lt=Ri@;asXajZr8$=V~=KdS8}IaScaX>mcAWr1$Ciq=8nlip=1Dv5#Chm=WpR;bfT$hJ&`cnfDN$D<-J7v&pcbJ zKrZno39jB}zh@!XIE_K%xZjyX|6P~EKCQ0P^`ql6SJvfq;Xna~P<<5NaC294IG~|@ zh37(uR~BR{5v2E zGvwVd>Xv6CSoiaV#KeqY$}XI1^=r%$!8OS{Yy9o=EZYH%6tti>Ykw|kWb~11v%QV7 zcVc3zsdm24?qmBM4?{au1D+0IRg{FcvIjQ5ONfUS4{O;?*0pU`$*=#d2}GGu^fnkV zHNZ)A{vO9L42KZO#Lb>r{2lHn`-Z*S__;>_Kddh2xIt(du*y=7k@G^vTmPYm z1-r_XTl4JOdqKX0T1`b}m_!?tq(<~^5B7R;=cNoe-;Qy5!*c=Nc^X(y!I&k%&t%r#4%Vz7I)uQGcsw#8gMh83>##6 z4(ZCzh$FR21@pOU2|KQeW(7Xo!uGX0-k|b7LHCq6Tae}qT(Lo%hQjVRUWoF%RVK62 z7*GZEYYn&5PnSRJ+=!`&{ND|3=k~G|2ugve@+Vbz7T@tKzvWr1pNRSxroimTU(EGA zmL@A=;j7>IRX)&5RfrHn;Z+@~8u$?EHE=fYvztx&=U2~m=E|R$VU{VS3%5Vvv}feD zI)wu`#e4@ma&qCTv@lbRoQd0SbG7XT7<{gN3JC^t9v$lP)$JU+B0Jr>KT$(WuPXyS z|6$q-77^C#k?`Nr_gY&YDE1AGBmKDhHN%ZUzt#l)xc%N?;iSfIiw$;YEfF1fR~pz2 zeO!SK`7>uZA>?>(rz?0G=>O``ptiad@aY0VqwhSPav_G+R`d2v>1iEnl81FW@Vm!3 zp&`a$mfnBgFsZx`>q3)@0GW(NNvyS48+T%I;g~J_A>yj3t23LI6RYiQ$&QPTSlIKL zz2dP&ek~WwsKD(jNAq;+`1A_(s3SM1Tp?|9nk&E$R9In3kM+LNP$aB)*qFq6rZhA9 zOxN5k!*BPEoC1e zFpE}+5)$JfIV9LfK>R6qc`9J`)NY;cc|3Xg6VhF4kd{T+Gs{9Q&)lD__-PCYH{mti z1huRnOcW&U$wwUk+tIm%z>8jmgcsXV#Wa@EOxvWb{PD~PcI?86F{>LG{{5O2NzXkR$!hDKQHBIn5)z@w zwfr5*`GC6&cH*G+9qSqn#nDS-s)8@=DKPaA&a(86(F>+34T|}#OmGM`fgck;Qmyql z(i3g7KnGRn#HFTk^h^wX6BQ>W4XHf2Pa=Qq2UMwRnJ^}@#el>+6R3NB%)V*m9f!dJ zD>^tQ+iaX1f7K%`TtihD-6-G^SsE>^_D7)D#4Ok$;x?0p+ZK=PFfpe ziIjc9hftLvfL7Q}qLlkU?$B~&v+NTXRGR8r)=)CQMGaK3&MRakv|j+_74mrqx3n!} z1r(T8dRHLj@iTY*DA3Q%8of3}5qWATB|C|GNkheHUti3?ugjMw@EM%&8#!2$^>r{d3*v(ZY0#ct+TJI{%`cf)Ab~3?8HD*eRS! z!$p8P%KfwSU;P(>t1o0Bi_#%EpTd%%>RrCjd(#o<&gb4Rb=ClPlg#RWHFm?qW&BJw zwbjlIZ{_LgOX@;&&&+1hq@?Y$!v5m*f6z$#8Zt8ujkT@0C8_SP#MX)xL@OvacK>PW z!R)=WzcPXG5fRxX4?9FMO0Q%CIFUCwGgO`*?WWv!vOPC?2~~TQxZ3JBJuE_+M43#q z`f*>qUJaZS65OwCX+E0MUJvpo$O@RXRy&4L)WvKz_9>@i?sfj*EgGe(k1&>m)VNslJBO!x?cZz7R_|fJykK7z*|7gd9^|I>?w~EMxKbc(%EM6%v zCOG)+heIJ?U?I?aA6LELuhnpY9YBw2-d3!HYD(WPb|MVqa?!cC!)uX>(rk}cabnl= zM@{f;+f+Y0{clzTZZSKjxr7lJxMQa#1VXtJcaK( zgb+&f3DWH2TVo&&_v{X>X9`)cYfPs<3m?{L_t~{GJ*qn>Y3!H9y355xxPL@u7*?tT<#q|IGRSXoL|E^X)4A;QJe_zyzP>=pUa4bi zT5p+8mHv$oQK7UwNV&k;)wv?C2ddJ3}3WtGU zM<3L&meaP{2cx&4Sn65p`!q(;G)7k%y&7*ficLKtTeYv`UYY{q8WeQr@}jz5+s3`) zy8Lrd=R@0l-BEvg0-E){KWHs%l+-pcq!tL> z@m9BO`+EKB%H;7RMQuPijkFH3w6&XFA}OfnQ?O##*PxAqaNLG1qTP?Ea@&H!Q;q)A z4&=yhK1kg2eYQS~nv_E#duKP$^CzXk`PNc2uxk|R@a9TL`?n^yFvT|^% zJEPBo5AO|8yw3B(349^X;3P5C7-@ke$^eHTxCIHJ3FMW+P` zBlH!sP0QA4WA?F4er0t#2Xh{vio9t%X-jKb;^eL(l7)uvyka5wh*fDA_1t>s+x%pG zlSk#yIxM-`lYoziA8y||op6H9xqKabKR$r^v|&aW@Xz#1Bz(7^^sCYj$wa1j>lrl0 zk-5)@uPqj4yDnsmu`(fI9-5_i|EC22detg^{3l@K#s>(Nz@}B0-l_*Er~W}84B3d+ zXs&U~7rTzoS+>=O0%(bkIVNnFQNRQ*pP7{hMRSScmS(x|CNZWMll2uuewvgbnL7pc z9?TYSipiJ`Ru@Ar;q#e+2@I>O-@n$Xs%D5WqOiI(Xg{9l!Rbd8_rkx;iMV?g4LHOJ`T;m6NUGu$HTj;d``FK6dUyw-v4O;JM$e6!O7E!Q!9=e8k+ zTak(D_`hrKoQQ>^!h^A2v%u0GnB1q;<<~ZDa^iu~cEJpW8arr0lcV61v-4D}z}nvv zqwoB-6qyf7&1)@!Powe$t6xmF{*XFNz(Y2NO10O@OH&=s8@__pRL2B~Nsat)MCW8E zWd}b6!~!h{&W~3eoudLP3*_k#aMtx)6Ahr|&JDPmc?l1$HG{_NsHIFwKu(Z01~eoc zgo;f;b58caS(U?UvAImhH5D@0-`{^wex&_&)Um%i9CN@UJ(nHod(yV{XggQk$3JHf zS`%%qD?-=+HV87?%5wW9cmZp4GYMm7fhPuAC zTMDsUC<7^#eWqg9J!jrpMS2qGmESr9F4_=ER6eY^L<*n=*HwSi5I(0IQz9s%BjCU5*Mk9 zvuNU|$$6No&rUKxX|kI7-l6@`5AtwVuIi5gcuMNK`}=_`Q-rfSoKr8gvGw$WCqRtE zwq)0!N8vvzV}zef06g}qOdK(ylYsG-Gy%uzPIgth@X4_`_mfZ4x(u40GDKM?I-$W`=gM+jVus$wlXt(SJwQ4v3j-Lgi@5q4KkbW?w-aw!~N9jA%nX|Zx zh`Ay6$3wKVQ3e#GK9S?*P2x3}k142TTEvx~Bkl zZuztaBUI_k&2fIMSp4f>vL94Ff6a8V!1rvE#xS&)t7`e*fN0o;d7L-_&BGe%gx!qO zf+e))XG+CcV#kAP>s7D0^ImZ(0BkF8h!l}(_>=FP_tQ%^FQ-%y{~{@n(ZvzUNKrJc z`mi~490`2bDCY@L2Ws7IVpksj*O8#lQp;fC(Rz{5Lr=#Y|EiVR+Cy|C;Mg^nu<5O* zgKOj!*Yi0S5A`Qf4!z4LgJal{tH01Cr%@}6IH~63_qf>9X{!n9CoX=58X= zXnocp`l6xuAngZtrUki*_!d!?%b#+D$`Z@+i8f2%J{`Nc0{#GQf&p%LI!R}w{J z)w|Jtb$Vn|+~q(T2gugD=>rW00f1I2L9Om?|F5Hjfp{LD8$yRhd1BzemiE{$&>l?T z*m|aUZsd2?XU@sCevv3o-6bz^r|$d}y>hc@98HE=f(#ezofQm3lP$N~nSH^dhD#51 zXZT^?MWM+!RxLd_C!6&WVu&vR;Hy}aT~C(+#f<*uz5d+Iv89u+U}e&PqsNF_uM=Oc z?k-fC7+GA27~ASwbgdfdPT%K4e^|1F82bAjHs`)A?e)2iR`cX=6E|F2%9&LU%y^* z%w>mE-ncSgd;}(5XrUq;o8hF_pjr)BTXkGypRCccXDZl zA=M`%+u6jkTrB!De*_pWVAa^SXUhMOg;-4+b;{SKr&I^<<*8XOS{CYp)I+tv!I=Tx zh{wiWG>6LnG?E$n$*r^E_{N3b8$n=urDw^x2GLt=vujzHT)hgVS>HZQ_SOVAGXyx@ z&V1qTi49?K1^c#}(qwsT@6DUv7*5#KCo+ND-oknaHd_zSoqkSP-FEF$snddD zo$Je~;^rT>hIT(Wz1m*A;a92@eSd8<2>5c}60))CVg|KM)Af!7aAG18xwG z84SlfJMLF%_FvZuaYO3F!JEM;OS&DFbFiaro{+0`SA91=osP%(lCj}NAHTodhv+AM zq&O1iA84aZU$L?ekg&8}^&79ZLyqyA+}~qLc|1Sf^xTr>#NT3)eE1k#rI};YN;YSF zqfx2X_Np}NiCJ)CmjS;Y-fvu%0I=%Rj{X(T)$q9tbh)%_en-#Nts}>QkhW_XN;z)c zPRR)CT>n>?C+!p!T9rUQKvlIt8#Uk+0mni`l*a~WSH~5pP)GybR;(->(Ox3exX=Tk z3$C&wPD0Kk&_Y389>B}KY`Vm;Hcz-3*Ap*}QIgnMr|gAH!}@92r3YIFmI)CcMWMRXA2A5!DKD%j-4E-W#PowEJ*a~JLL4B-o+~~S zA2(BwO^_CPa72hmjogB<49KXdBPP?=Hs;^u_&cCiL#}fp@dwkNfK~rH82b2@%(u0Y_w?jI4wo1zc@zJ_H_LOO)-9E!3JqHqp3$ zEQS3x9oF9WVv7`sY;ViFxMe~s=|M+8CsOQ^LmQQpNbeIWbxdKrkP59p z?$+p&F)OdkSFAbD(_ZtAf%llC^sxkqEo$s*6Fs;CMwr)fY~S$vcxb^L8V~Dd1E+@@ zr6wxy30rkQ*b?Ij`frE@cR7)X?*QcZH>T&Rcj?;@YxDa^ngB9DIgHnS8qW2t&KXb= ztNb+oD*{mg6jmDdHh>pYf*l@b2MbUIFnTQ6=eWJ)wkHjD(Z%RK?zrK6IBx1l@#-{< zq=^EclyFOtG-DL5x*~!N?~AMFwSeanisy0w>IMs_qj&G&7z~9Myh}4*6Rdt9;8R9a z$e@ogpU;U_)JBhgI>r}uJMsU}gNC_UD=BxV7Z<6OMysT0)TmyAKEkPgm-NrIv>Qkq zyvdUF$9kdYcNlnI7P^9lJ06!h&_`TanMpI~7#JAz>J@&z%*yiFc<0*047317%y`s6 zgHg>p9&b`{5KHztIbbX)m^u&Bo6S1{o*N18ak{^jW@F4cP=b3Vt|qj#mNYD4>1_ z4unMpCajLhQ@In3iQO#M<$9L%Z26sbJl}WFEEQ|0iV@?A!}1zSRNgFJ+;et3xGX#MV4IIGrN?QX3}368_@}Li>rdKdv%IuC{rD?l zB?7QjR^m-WUrsMX9N}F&q6Y-5Xk-&=QE0HG^{D}&VG02j*|!3$#!UtV-XdMBIsW3Q z&Tilw#5|!Q+k@4C7=i^JtH+Sd*vNKtb}W;A5I~VIz9e$o@SH zLN;@=$_)%a2Z^?&c^;bhia$m=t55fTSJu)Y|(SwD&VG9tN!fV36E+z*Kz?D%F!tL9slzi z%g=9^dY!|#v5I#pEf)ybYVEf%36?#f(#wI+#}CPFg|fO~+fV6W=LtH;AMxoS+(>nA z`92%-aXx&Bstd`Z>e?V%`EmFPXpP=nuqHL1iL%V3j1<9V_SLt4-*edb$z{iI+{>w$ zaF_{I0)dmX+pbD0xlz`0*%?(3;_Kw37L<7LdtCT{-4E77LqbM<@@@NO>tJ(m0@rU1 zQSh`AaqAXx(hd=<*qm!=R}x)S9@QL~yXi#4je!@Wp}?&@=wYX!0cfR=rx=fI}509_~I=rLsT5AvYI-Hd6DySaa7Ti?2sq>=<)JR?}B`iLb!S5I_nE6u$koo(=+=N@i~jp1&~4 z@uo+-j*);9t}6b7e1Gf-=dt3RLu4zIgP06wtNYd#Sqr`1%}(g}x(k)MlP1^8z@;%0 z@z?G3{7l~8nb=$3lgQ(o0B1|Scl(O;dtN|^a08Cw^)EqL@G4N}5RDA(($x5qQcQi9 z+CBYL%uRi4G@QsdLU8RO0K!v{PvP9Y>m1BA2Bkkfiu`|(r8p;I_XH$on)P}x?hbDHfz=rC3fwD zc;|y&AGSdDwSR+K4kv8_ITS^w-Hsd>I1nOgt(51@Yv2Ivz(P<-zau{LU?gsQq#742 z6z1^7@YdBet@vKyOUdS)9(Sfl*R8tPSuY{%LgM)XyZaEvU>tZ)5wbuTfWFb%hz?$E zf<7L5)(isPs^BgqSsgIF*P7cj9&?fqS{VX9sbL&+j2v>VvRItWElaNa$uiY+ z9F$Ei%10$ro99n!llClp!}sW+H_NW^XaKRy?65K)J1jA|24aaoS&yrRtcB;{RrgML zb^jGGN2bNpdsW&?BVrkRWF-7LOf-+5A#Fihj)-6Frk&CwYGL`JUeUMnS?e8Q-%SG$7{MnmocmdYGJy}{XVMhGBX{~nk30Bw z?-0Xd?yWvdv|n#weGg&;FaE~)*IvxwZ!^YQ@$nlc+|UsAM7}HObcJyT%Ty5aQqXxu zt}g1v#)b)4ug-M<$8Plj_isFP@US=U0Q-{9gXzkKr=3A%?Q*@{%qP6L9@Mx3S|~>7 z>h4(zhl?d1YbWJ9O2JyvJ#ygNbuGS^8W7dDv9N$IZp5xeIoEQn8`%XAi)%D2`B>sd z{^n|-ADRUM_lPU(dCVRHR=n7|8fQ8GhTx+@?%whhBi_O=c#1>rk|@E5UwBv zY2g?2G1kdS-@qqn{YK(;!V)eW^hwA}j&5xgoj-gh6_qYOyXDrMhZw`2)*0Z&9$gVS zYSXj&cpujHcXKh%ke-bLyl8~??~oCJ03H`1X~gD0F~LGh|880|eGBRKPU0^?D9C=X zz_dq>x(U8X=^q6iG44Z@^O1>iN~)mN?bs*+CYIn-i_`(!|J`AOMBS^q!>Pa=UMVxSV)q(sW`>#(A1k#u-%e~t;N>yHc^lKp@ z-6hY6tZd+3@Md3jz;UGn{P2&UO4mfI_)ufXO)E|ZKQ!bn#Y;j(#SzkR=rN#hP;pw} zj%lou^qD{x#j_4Y%vIZpS_CC?g_FH*UCt~eTAmYQ(TM1Ohref)_y0SU+0i`qhQ#S8 zc2pm+k?jxa2--g&{PN$VF)zd2Te4~w>^24*ntE&+qM#VT*xCeafTfTk3WSRUwt6Yrn_G&H=V8KP`$5W~Qk!>(dO#`MG15-sC0M+he*3BAtn4e)X7U$P`=f)@)@y@Ud5PQJ&wjA3`x&o@H3-P!o!3bB z6B<7UhG`8udJteBYIH9jiDyUWn~-r`mETj{Jw1?%rOQtGa4L4(wo{$(Dwh#VSB&G1 zC8r!6B8-<(_~T`>*e{z^W=Nrk2mVXsxRqj)d3huI^x@Xn>`A*}r(&^0nL-rS5!tr6 zP#Yj7hee|&6#n^aGHFDMCvSZsJA)+LX(BSK@MQs4XsxH+nDfof3_vzU|0;W!+LjWY z|49EbrFguOzGfsRT$j&!TF~kbI>hrN_(mKy==&5)@y-OM`QFA}v^ZNQX(8cLq%cZh ziL4aWw?FDHH<}*-KzV*i;-6S~<$En%i|ZsMuAYSao>ocrhco$+`&~pp+ahV;`-r_d z9%%R*>7-Q*bth*DwQwNrBB0%+&!zS5k6qT}#m8lr1N+tSxhlix)RK-MPD9AXvF~di ziD%CXD^b29)(^b;Ew-xER0U{dU)9mn(Y9&kSW2#+~B)x5K`>grk z*td-@7x125*XgCsD^~(*fw*EDj}KF-;{E>ysJn=@ak`RKl`jIGR+^w|?Fu&=AyTAf zcS>Bo62`w^q{}|TUQz+ZzMEBM|2(G$DHzkS&-Ic=HA8|jNRU$`-$b$kU=>CNSZPF> z^cx{c-~f|GP-^VC+4m zr!}}n`=!@U9J2IkD*$Ndub|D@J=-ic0iX1=2$4Zo^Gv;CimVj{zfIV5zj7;~sM{&+_0dxF-PHj@)mOfg z9r<|5uHzMmTB(ZRTgS=n``fx0x5MQYLWQBBFAKj?ZZ0+l`0D(Z-Z3&V=DBA!u8xCM zvpPW>&x!(w_A3}J?=TQ-^oWXPr4fUFyB}=i_#VT5KWu^qL{o`)m_Xb82S-P%rr|h9 zFkcBc#E@|4t-U1mi&9xraA?F0$^*8#2mrfpaK{E-S<(VlNXK=N<^TU&^pJua5DVqw zNwh*wI-ZSmjHjliD%@p;hK2+mFQ<6CPE9B!0w^8ZZ%f>i%CveLmRbP9@wY1Dnj?Lb z7G|rOw6Mm5dCxFi&l1-5%LX1!&(sl+=Nzs;v~^6I99Hx&3*qz{?N}=tMl<+(Y-`$H zS2Z*gAYbKtPSU;FudYw50G1^V?lSfTu0CFOo+iIUmhLb`GZe13zu#=SOucsLD2>lr zWiUZL>7dSh03%TUb*F^$h75KAy=t)*00f#9+ln+zzroobhk8bqBm=Jlm3!H=D@%AIkeoz+#6QYKv%Vm_Ch&CZ*r z`xP~2<2ho%vAT^IBEWggfc^j$J7k9foOuQvxE^CPQvjFLz)7m=c9-?E$#xDWnuMc! zBL97z|NZq^1Hp#;3r;w*Xo|H;g`#{%mDdwVr$6{nfS6#1^4Bc5M1i`ZLL7mc=n)Np z!cfL08m(#!ZZ~?ck}HwFZe@rjl;@RPHu~&L2SSHGrkxS|ynQJp4wzc>VuWua{|1PP zH5#b@tyQ1`Mp}V7x45sVd=DD2!h6sxK<8CDAJmrm*i5b1J(mv1_+q!wssKz-`%PWX zOY)m|*?T8jr`=D8gk8sJ|0_A%v;g8tGQ8!t2oHKhW;6DT!D zb{mk%TmdtkFcEZUpRVPk}56{CmU>~Z?%?!>T?31MN{u`wfsHcHt(g?RrMoVAv zZKPk)Iz~E790Ok%HsVtucK=T7Y17nRX! zCOL)51{;ig>>NK7Hkm?Sa}qakML5P7Q>j5UBM7Q)GbQ6kc4tU3`8(AY^iPxd1N*Z_ zOYDYY=`ft9l(H>X;71TbtcC+FMd{`CGAJ*{`9#l$#3-w*CzzBTAITfa=eA`zC+{^*5mAS@-v` zE_8s}7i)5IlHNs+?Zy7t(&lDGVL<|}+aH}JVE4&B1Jgv38dRNrbs>W!iMru~Z^Xgm zDr>n0wBx#0Q|m$$4R8+L=&>0&bd|p_5{orKGN2-@lL;x~FS1Wf@eH2p$;EM@H*EeZ zFSJ{yYW62h#i2U!OK^d~k1YD(e-<4iRc7*D!HNydfICu?INknl5l|X6!v0OJhJr)+ z4G@s9rse-w)Jj@Ve9t0M#)P!Xd3AO6z~C=zNDvuz9T$rXe16mxo&TUNfnY-qHt$~z^JP{!4;hPjbAK~uwCeLay}@>% zZRI%hL0ovB65bn0dZ8$FTEZt}Yw7s0m!p2iTbxV99L7q`=7|=ZZFi@OEb^NCAd- zwrE?EB8;#?Nz2MaK43+8k)TBvGUF3KgK}C^vGG)^$?q77J~=lUwsq*tEqKW-{3XS` zbJs=cq&6DreIVY~KHd-Vk^8Ov@83U@y}!kp{PYX)z{nR1Ev6_8r!?R+v;Gd``o)a_ z1X>W1VGGL443$De{U&*Rc&6A24b+DNls~76WmQ7y5ToFK2NFRF zG{~Vn$4tLaN)b^~DaboI!a_SljrLE!r2F4)rLr~POwYD%d9%d<MIUg3+=;s*vSp#wi+QjoUiM-_XfQGSr4v+*K?cKnc1@6#po(?|KGd(hV04x zCtiRX5omoV(e&NTkCX{oFE6qj2ARxaJcTVz*_`hBhLCu#&?oC3=#ohE1X0{s+ggV#kTf93ak9R(mfa1N-?@MHy-^pMou+~>IKOXG~R{d$?j zW*U6*6n3;qu6(9)Lx~&df5p%G8xugO<8u*{xhXR1dhkm&?=Scj5URgbYXhU(@(%yo z1^6_GMMGg|bd=bVEj>r6+(ky|=x_ln>y*~Bj;2Qe5NGUk+QcV|*;MXx$eeMYVZurZ zo3@W?!jB(}pYqNkEoM4s#PhhNAE#6$I6Mq=EkKXAIr6tR0Dod0y9Lxa(I2cE*R7*0 zb;xraMU2g;Md|rHk#?lbPPl%vB>psJAk$q&!06t}*1U%a*bb*7Hyh3;7n_f#&kpajEQ3ph<}mz{jB zE3;qtJ@DzV5<^DzvsL18tES+s$M7rDMBq5(6>LR^t+X|rK^aqJq8hUJ2^Nh7gW=oG zKww#7^wZ|EsghN?joIz_*6u`pXlIhvfKCIj3w_MC1T$xsyRp9z|B zfH85+oU?-sf4kw!%*++%)q{UnrE?5Z<-Hwdzqg?Ay*|Vz@grCVYFB6i$i{43ORSH7 zJAPMsJk74HC6=!;px{!+Tpi4rZ}!JBsr-PUO&oP!gxLmjB{o0~VfT%iPWFOV^F9G9 z2tLWwoE4bYgeqs?&2WYxUOUp=lJrA2AC^`$4vK7OlUgTYwm1f6n1h z$vvVGaGUUo-WGS`BZ{YGe8B%rlOU6#3tx^!tn|WHj5BH~Y9!cKq{(Va zVc;a4U(%Wbaa4UnAO3u)@9gd!aqj6h1j!*n#f05YlP3t8l)CG2Oo}x51ulB8{JUHUk z)=ARUGkSiwP~{?V<02DsVQhzOV4her%6*)h`KifvV*OGBv>MGI{>+`m2=0PPwv%Y~ z@k`cy`z4UH@RuF@ z@kpT)_%Z>vljVvNaLaUA;Qby=OBqWxNmsdSQUo1{`isYFnZb-KmzYHzmGlx%Fb268 zz-E|Lyd=!&kO?LME;fI^01bTRs0^^wdjDoiFVW&1jH2xA4V<2lE^R1@cA&A=7S>jx zZX?52WhEsx5`z-IV+xc0aldge5FHXcfujPexze|wPXUeX0j*uYC_dcCqovxIHZETEQa{N-mIx_<`C$s3VhAlW7mi zB@lo0fkE$ak>IT^=YP9bcpWeRqy+F50aQ6QD5low#eMF;!LQmOW9@Ie9{bezB<<46 z>+=2k_thGQmMxOjyZs7yV`2aku~M2$y~V*FQ#65k%In)3cRrI+#Z%3%T1Hz%Tb6v^ z;^H{vKKYLazTwqh6bzLw@`7*g@#dmRQJqx>&g^8)!qBU9@EuDFL+N8s*O47rJ$e2DHaEjvrn*NAY{W)Az=llgR zJbi6av+~H?5K5f}1gB=xw*PKK};s z*D(VDrEkvPIWf*^bk3vaH!%*9I|bph=wd-_ky<9}8P*1|Zvh zOIBVU&Iq>ot95FQO#wtS!k4jE*t?(B3ToIx+sM}bAFjSBu+F9nw{c_J){YxCw$;Wq z8{2Hs7|o8YMvc+fw(YdB&GY8_&$&5Qy~xdU-q~x`dNh58tO%5QsV4!I1}~u}e;#T( zF2xg;F3}P;7HA-&2{=VXL?GNwSG8>Mio`cd4St8pSYUv)5P~~mv}3o6YyJ54;vUZ3 zUv3r+D7XeuQmgxh{JumjX|)#+Tv%AQR~Et01XG zuf;8Bl)dGn?;^HQwvxcjPqNB%u5TDtclR{rgK^{lHVXV%Y^cO^(6f@9yj1YouCZ$J zvT?+!XVt*|`Sx`Rypz`YiE36@PlNx zhITaEqe4?jN;W`+$ZdGwdJj9|YYc+QeoSo-dxr&n@`(fRuV}IWkZ@1So(g)R#9Fz>vdnGvl>|#zZA*Ru8GyUnU1S%HInG)`>)eB93up53KsH? z{nn{*B-c#v{Q7j3Hxcm_7GzI!`Lz5F#xF03sKo&PmWp#+KOzv0ltT*mn&KPw=E1LS z?$hdIP1f`VA(W%_KPRvNzcgWS@Qdt-t>^ymnGGU@V1}M!A9mhhX63#@=b&1?5u0Y~ zYt6HtbH6M|;B2?-rKZ0kZfStjpXllC4EOb)?4(}LcVr1`fIEv1nDz|-Yr&fP-L1Jd z?Iy^zt}&>q`4ty*s}7c*{n4tA3ehF6r5dm6olf(fQQ-bzO#7u+5&O>A(@A0hZj!1b zk*roi9^cJ^T>r&{UsvK32S8`ny~;FEgJkA3)*trna^Fj1ZhmAb-Vdr;wLs(jTXZ+m zh9WicAzKAX<_TOnNSAygG*fl;3)AWw?+*)OZ5q2tYN}4v6WIpYfeIWWXL{tduS}_x ziS|7EVTuWIk@R}V(tHQaJ)b-xV)LB@vp=n(U27TJWSP0^;qxPM>s-<}UY*drCBr%3)I&Wg9h&8>v@H~c?n zH(D{S`%%*_h`1?ovB#Pj-kq-9KNL&!1)0_7SOJw$3#f?d9Gx{!2$aGUyzZx~7z1}% zkk)cDVD$ zZ|HLF{_1&%3Ht!_#XtGm>@zk%A(lt{#O_q?2^?*(UL&|$cG&Ws8W4CoI^5y9~W+xJ=f;38qh z-tS`W8yqOH`?eYx_NvHsx7GXog#jek_U?r|AH5;*7h*maw5g>!Q1u6>l^GYM4FP|k zFLj1}V=2*YI{(>0}Zeg9a^*J|sQ^|Iy%qUZA&?vq8|RxZituDt&~ z1H=oPX2)-jz!U^`O++~Bw9)Can36zg;XgyjL_Erxp%@q#;;>MmqY3*p%8*b!Krc$o z5TuaKRguDn!>miEuXX7S>(_cU{&}05yH>x=D-Z@h%d=?L96$`1bmuOA?okNK(N$yv zkCD<(-Nr;W<{Oz(Rz^Y)mcKa@2ofF)b?Iic0=QAr?XpcD6gla+hy4Xfex3aWNjkSZ z4h*Kx%x=8H<+^E7-SkJU*uAz{fHaH3-`Sbb{*=<@eYXwZQ8;$UNT;n&r!9TlvaTHJ zrY66agiRfGjP~`58|l)7xuFu4_@z*?)~+po^c>vDIgN!G(l3ktSI)mgnl=DxjQibM zmJr8IgZc6YLPBoa&S*+0&yL5vf7!j-J{Q!<;L=sLeEZ%@p|`Jv+nfsK57zPNg#KRw zN2RNb`w-$Q6J+KHKUtFbanz$QHLc#?FDJ!Mj9LuI!)5zi{-~m<_Br`U|3#eeZ?EYj z9A&xt@gn&k8~5q7^$I}K4?l^z2LI*c@qKhr(ND%%xC}w{N~Bd{PQp`M5k&q@k*z|_ zv|vxV5q3txT&eNRXQNnAD8s-%ZeUFKezaMlD?F_6Cv*UPclc-LE!ioY|0+wiHdQTE zO(vf!bI~t@Wah4`38Bc$&u%#jOBOp7ytF$Me_L;0^*vsBsTN9tRq`cGu2Z(>u$-Np zS#1ZC7HcgU4}Vr#vCB;lYovi(Q`6EID2kJ!{Q$VDo1t&tTHDS_OKtG@Jx*7e`O7Km z$Iy~LDWuN8JQ~zQBIu*3nJ(?K;d7;MVXqyvU%JVXFj{(=rF;_ba2v4TtMxTg6kB4fFq%;&T#eE|-}?(kqa_uJ|?*g4cm1J4`! z4LpTxT#=}T2m*HJjrMLgBHCE9cnpK-U)KY-uXkCh3Zr+Qv(g9XwuJ=uuErfR*;=R0 zF%o@^pD^hhyg;K7lQ)4lcE-#SI{$SkzShyB>&|E5QN-@fY}9S+-Z@b=njp4yzkO?mn{cDjFYQG`pqUHSYThf2Y1G*Gf$M+y&|>B<^}``&E=-%S z{ThWXyoM50)8YwQb8DET#H^%EKvM%3-;#uCOyy@5uZ=@txc8a*t&IJkSs`!$JjxK* z#h7p3^Ow3$s3?|qL-AgHU?&|x5Q`m`W5c@YxR!zlbtB;%B0f~g$9cF0c?cAn8wqK4 zvRqGbljQ&AB148w9jG=~a`tDjv62yTA~i9QQudhPPUy)(n;rb;Ho5NCrzkl_yK2Mq zf9`^@An%J$<}RGu+D`kEZ>eWSjzO)#1l6nwO|Hy75`+vKspvsd;Su(;k{QL% z3Qf1?Cm%zTdhU4*{?&>zzZe;K9TXayf(2`lfOxq2@SQK>x z=lP3NOet5V>rBC6$*f-s`a2zhNvICR@k<*(AGC^) zxQK0T_eW>okS3VfwXfQ~NR*j^vB3o)B#>096*`TQ;^HCh4%hI-q2NH3h`3RGmnjMA z-%F2g_P;V(@8>Wu(>;5jZC_7z2V~=@zI>@Bs;I0QwaqaFzy9;-EMSd`@H9TPIiz{;0bSD|xB&Zgurp`(|Y4Us>7pm&*5 zb+p>Qj7)LGSVvu0?MN6zOt8K&M~^C|u!@w^gYI(%H@kwnvJHDT+9={o>i^q2RF_%a z9U6~sKksy`df?mydD!q$%q9zgtpggv-d=H#&Z`ES84>}{2LQRJ2exhqgsNM0PFqmO zd2{QyK->uU0z*qxnt|V(%^waJT*_aK_8ZKqR%}arjObJBa)=l&`VY$qKGqf1=i7`7LIF|ClmH+`m zJKmI;IaC6I0XLKZds*uRnaDfC3gA)7sSm>F7)sis`}&<96viX3a=b%DwLLdbi21&* zPVnOj6}!ezeWyw;NP!LwX|20xjI;_nQmw=+o)!5=T{q(6^q+}TW`>0~mp8BfafZn>FpvRj4 z|IO~s|Mm@@)&QR^65`9N!51y6_F4OwRG z(454<=}UP;f+5gG>*Tbo@o1Rb;{+hpUPVaVTlpywi36{znG#49YHuyw^w4?4*p}$E zv;CMgp$QRPkkvuDe5uSP$J9~W7lT^EUy1cD^>RU-#G9| zr+o?O8N2xBYynKTI)%1{G?gqSpz6A)Sy)fGZ_cpCyq}avPPtT-nDQFo#wu(>@!!d& zHTt0x{CkjnXv5#1n`A zKM%vadZ9n{e&iB@2dQ&bYvn_uv9DP??0BqS9q?^BklgZPPl3os#?u#|*ZOfI;;5uN zE<)k0m@r@<@5o_@6HLES^s~vK>G!$XC(@sV((ekd$N=@hW58DS9WV#B^5(5NJ~07f zL^gwhxmK_FUMc6gpPTJQj2sL6xLzq&eWlhr+4Dg~Av~QU@L2QzX#t3QkEM;R_O_1H zV9O?fCP20ksy)wC1;*|t(kfY3VPsH3+K7P&)sTE&9|*qga1yfjmz|8c&6O(nU(rgW zY6cnFr+sck_CuChaE!QYq{w9Ac=Ou!T@0uF=IMz41y`nkcSF@-3<0Ms^p_+_bEqNn zoPtIZVO(D<{9ls(I(=cPe+-s{;9FF)z;|?r*m0xN+~7O1Ax^d&dysEfDvdm#Daq1z z9^>qr_NV`iz~8U&Td9qN*yJsEPejG7dqjc--GXtfKm2r3S^*{jq_=3#i06L2U4dVZ*+8c2=De#1XCQ$ zW7>XLj3XBl-^5)D+{fr#xT9*gcKruMd1lfK!PZB@!CIA;jPXH|eI-u<(LN_-`*Bmw z9GC^^b@6?CNo72&lFY{S3_4a@(l?mc2`1|UM7e`AJwIP8XD!GY_SFa5VXM9?@g^mO z8BN_Dqf(nTgGA;~xYj`4w>%Zg6JOM5C#h2R7$srj9K;IxzE|R;wj|Kk-S>QDq^gaw zeFaRlwE8v--O&!y1u{*i%}3CIW`!&WzQzakBMJcA)IMIw=>~|fD7-TKYOmj}0P3~u zP&Mi0D<|Z22|&46HndNSrtQ>v}_7Yuo7m<~Q{d75wMVAN>)~j0>9{?wOjlJ$CL26bC;N zphWws_+|G;gHmVt9rTonwDp2T<$x5NAVVOw9!`pdb_AfRL|cBJ`ZD|g@g7R0Y-5o> z*~^?ye$5}xDPz${bZ&K6@TAw}>=z|?f8GQg*kIsb``1P!Q>=cq(#oqO<<{uieVvjb zg%=$SK!3z%&qVuz!IlVt*~8fG@rnryxYG<^;;)#HJ|n_%zwDEkvkqGk11$`mZmCjT z#elGZ{jU3Zk1V@*nE=#~R(nnHK)cU%Zqq@-3omsI4BY`7kM9GPAtWiJrx4qRsP3mo z9Cg8f%dqaSVJTAIulGe)JnQbm9!Uu^W`zpdZDWm0*RlV!h2_{eQ0YYdb%lXbVG^j)7D z45bQiQs<>EN7I8KZhGxZ^>R&e5Rbg&xJJ~qb0I0{ZR|M-0In$<`MI?Wa)n4{Tpti# zr1rh#AcaXkw|ARv90#kDx7(SSLjz=ch3b+BGI^(W5Liv}{t1DR@b_w+Fq)=b`~>Jt z|IahMu6uo$skK^4LYa-O2AjYJQ7x*yC!TsTEoU}`i+|3IX7xuK>_msmg`HR-=I8DQ zRtZu^`a?`v2aiioEDG_}gUL(Gwp}F^ z62qNLEKp?s#uZBZ;5?O4#}5DmUR0G-O-NN+fA^t)M?KuU?DNkn|=wPcfGg%=~v^zn-dDo764?CL6eu*RG1ct=j`|bxLnOF ztc9`ueFU#9pMn^NY+-&fpq8*f@3RQLbL(nVSw09&kB6ZY=@1h1*{m*$WaYOWFqVpV z*PPXTy%<-Ilvk)ep8F#h*&I4hFLwXCDPjSLZ0|@Kz?j)e8*t3x0eSnB(zwQc`oQJ; z^&`CS{BR|q{E-85vKWj$TfU_z#P`@c9Tp45eN>>2pQReUPQ1Ye&w?r(f&dz#$ZN?F zo2;`O8Yyb~OH<`18(7f8p45btLgN;~K~)<_LA^2u3px7S^%Q7z{JfX`&@=gG#&XM?jHhA*zIY~r zi#V)v>({Df>cbB3^b&^OzWn^ywKmdl>t+z5_!cy*7n>f=7b{NNMP;;Q0QmUfGfBij z%H@d!)#_o8aI7vVt!;384}EQj1C_sdMpf&Lcx(LVKO^TdwpoiR^sHP!l}Pa}P!rAFhRYl&?T^rTvLksfuz#i8} z)u*K{763&t*dplW=D#kvcIPe~#oMiZ_Y&N^dkG#EW&igTg0RCab8|<8=@4G*Ju%x} zZimtaa(TuL`wNmJ$WwT2{xEU4ur9_!#I<*evX1!qlDH-;PlFi4K~P=yz?)5B#uh`n z#1K8ZO6FQu|!1%F(&b5hH;86&v ztiqU5eHAGMKSU(ehojqP0;$uq3o1d~uRjPn*}(75Aerc!zTc^ibfA_DAkU_Sj_`V9H?nw?V#H>z=s-!&o0{Q}KjG3@)O(^0-b(~P)e}pI}c=ytzjzu|F z*pV>z-?lJ+CC{oi5$>-t$GXn%^>T1j4vZ%DT?GaGFa`S^f+V{m^np$FPOUr#{3@E} zRuyJR?2ko7g@y3!BOpi@4#Ps0*C!x&qVoL3-);?zH&@P*!HgP6ox3;Ts6$S&_6%G8 zd)qeiH>wMKy2_5g(_k(RB}{1ybV8gb}$AolfnA3 zVSWrQP1y?&2e;SNMF7y-cVt3wFaFTc8m5(aO?Kr(PhmI|BD~p$r6!fHpd!~lO@jnw znq~sbu$6C(Xl1eXj8n9}*Qw+3kHfIYjfW_ku1obc8jjy;yfWUadXlfrcEJ;?*CUk?}DIHaYfixozJL zWjPBM5BXz(Z+F-$9qlUwL?3otjXxw|v`Gp8kajcUs8QWFxq^QpH;;}B3!nao~ z%V;tg8ho*RooI#oZUMpU-}rjqXHyC_7N-T--}+O&u`fDWP!Y+xM8*h#Tsv|9XkejO zE$OX><{#SNpSl`4X!ZpMYq2BH8nP^6k*y}_{nb%w_++{q+A>s_dfvqTL|i&4k2XM> zQS{;X>eIiz{ngYAoiJn#AEmUFx`To>h<{d1u>da^S7GEX>@3ZASsOh3$UXg>gCVl_Eyqk;8{5_^IT8v)2qVNRkrax?acEsq9 z5|GiiXn)4g_bqhNvSASTMaDOY1u);V@|AsQSM4|%WUM6)U+kI)x$U4|Ok+uf^tb#( zUxX__2)QxN-=boF!^$NyGu7jD=CpUNC`||+SPLJO&!F(wE;f5ZjHg#YqA1~1#)0Ye zn)4KN^A?1_^iBMM29l%84UmknCyZ=|JU;>?(I=cVx=Op#OrEoqRlJT;=9_1~LfOREh6_Zg2>--$N;&Y79m?T8U(^gdGt z3j2;L=5hYA-J5UvzCg}#vxHHiL?g(6>B^vsE z^bNKT8fp=MkVfqgA-c;NFcBb&i`iqD48-)+n2q!*S%tU_Xt;M8M`7b=O~i`DX=S#d zJ$OnvEUc1VEL~2fXsk(d@X<~SsiTHPN?5xFP4?qO<1OVCRt@WS9BVA<{l_;`8t-*I+~d@nA)tWv{(dOiriP^inc} zb!FQvK}t+ym$_;;VxWe;CrnQm>Oe)~I)hW{e;3JW<9C!6gfFE2H6g~si0gcnZyy|q ze9e5#wz^3j?=l<9Q~?KCsp_}-&z4Ng2=$ScmRXryAMVz@Spc~USQQSB6zch6`a?l) z{k5i9q#tw%Q_VEV$a-k8|7!5UYxxpyLpW!?ujr>ySaZ4$M9jn)cBt`t_S)u%nat&a zZslJWAY;J5OO%pj()}T6nHBsxu4E2V61YEvw*lBw5zPD>1yKJhRh;U)zSbg?tCwMa zcC#I5_kD6Od=uPCm~3*y1WZk$rm+{eMcd6s<11Y|vvk0MRcz|{%`1QfBiTr2wFA2P zckL97e2Vhnecov2v(&buWTG5&sv4-)g#plSU1KI z`EQa&NDQr5vsH~_-Q(db2&70J&aTN zcsxd3GG}D)n~>M`5ONfjcw3&YS85;q+b3Z-VuVbRX=`UlE~8L0(yUvAA2*ujGA@C7 zyz0-spvu`Om|;^Ak4*^Mr5c!ym)rEOZ2)|b!v@{$xM3`F&gXgq z1Qbl2$Tna@ri-kdkt;ku+$RhT+lQ_v9F|5R0Ulw<6k(b*_QP?joJHNQT`F zCA=WmD{jAZj|j6o4%#hNi6C3YnY=qsgTw(dwg_ZV&0kpQH?`pAHBc;twOnQkLob*&aTmO*+MdU!_o zQc+zw%36}VBP;J|f+OzsGCI*0R-RA!I(nT#gV70N7U~2LZF!EW?OXY`u6z6qaRLm9$Zcm#~ z=U5w&$TfFBxvBL5#Oh5uF`pr8%=;xjkm^BSmm*T_-#FBIq{yL`B?^(Smuc!^*Bp`; zlZ=#$x-ESdpTDy26Pmwr|GgIN>#69|!i^frUqxg!Q-r+kd#8s)!r#~aX@O`(Y#Co#s~eaf?{YQ!i)qf;MLo=ResO2sB7nlG-MaE z#$4W9H<_^LBsM1!i=Fz1?h|iU+D)LeKt8%&9upuSMs8vAKvX6B_p5@-N#z&QuGm{E z63S=5hREi1Z5iKP)_{oWax{g7}ATHYBOXk=H=lb z=sBTtS&vx-gJWW=_i~ho$Z09Zq$K}C$owkv)Kqv7Nk``3_i?;MM+g^U3kWicCs7_oRDV8fzN>X75&FJSv~M4Sqz>0{gFf&Xn?`}V;`EOSn4DW zcsdd2d=oJyCk?UY)wMOON~qzO93X`XEILn&t3;gJ%OxoUBS+NM^8W%){dM7t)fVjh`!mJAhcDnUu zUT2f@Yf?g79GPmU>;9yOX0S%NX5d`JIRrjm!$ozy)qPiX>dS|E2;Ppg}6IP_R_gok#*PI5-h!R;gokychN&e()4W zM;t&Zn6G832A4|ZK+PzB(Vs$I{~9B@Z2h*50IaF5AcV> z-&hDkxPYt|gl{ij-CTen(Wh{!QpupVx4(1KC9ir7wk&#&gP0&tj6Y+fcj#aS_)D%daL%V(RGHAz~+!0$C+@E@Cx< z2w04!kK&K{BS(E7{unIHYIbgJx=1^-B&{z4K-DdZn}79`mef*8y|%~I5-H>og5zN0MNoxs6fC&1`P#^)ESOWc@B6y)CTBHvpK_o%5IHztj&`| z1K`H(us4TWSuJOh3o}Z%C3TmVS1OvyWL)B5fS&xPNSmi9RDe!&Fpjk+USeLR~Bdz}}?^uO-;&H;3_zw0LvzJ!#7?-QsvJmU#^n4sXi-Xz~=gm42@ezSmzXmF(G z`!OWZ3>>((jh{Mn`OZn@BWLvB#e07S9M;YfG~lo{RH7=xX-P;>)ji`+

    ^LpT#~h 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 - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-ambilight.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other" loading="lazy" height="241" width="725" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-ambilight.png?v=1bbe94f77e78d95af98555f206db5668" alt="Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other" loading="lazy" height="241" width="725" /> </picture> </p>Animation Editorhttps://www.project-aurora.com/Docs/advanced-topics/animation-editor/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/advanced-topics/animation-editor/<p>The <a href="https://www.project-aurora.com/Docs/reference-layers/animation/">Animation Layer</a> allows you to add your own custom animated effects to your peripheral lights. To edit this animation, the Animation Editor used. This is a powerful tool, and fairly easy to use once you understand how it works. As with all unfamiliar things however, it may be daunting at first.</p> <h1 id="concepts-and-definitions">Concepts and Definitions</h1> @@ -88,7 +88,7 @@ To change this behaviour, you must open the Aurora settings, get to the &ldq <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-equalizer.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="An equalizer layer in gradient mode while playing a music track" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-equalizer.gif?v=1bbe94f77e78d95af98555f206db5668" alt="An equalizer layer in gradient mode while playing a music track" loading="lazy" height="288" width="866" /> </picture> </p>Audio Visualizer Tweakshttps://www.project-aurora.com/Docs/advanced-topics/visualizer-output/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/advanced-topics/visualizer-output/<p>The Audio Visualizer layer allows you to display a representation of whatever you&rsquo;re listening to on your RGB devices.</p> <h1 id="isolating-applications">Isolating applications</h1> @@ -116,7 +116,7 @@ To change this behaviour, you must open the Aurora settings, get to the &ldq <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-blinking.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A blinking layer with cyan and a random secondary color" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-blinking.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A blinking layer with cyan and a random secondary color" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -178,7 +178,7 @@ See their pages to see how they are configured.</p> <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-breathing.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A breathing layer with two random colors" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-breathing.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A breathing layer with two random colors" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -246,7 +246,7 @@ See their pages to see how they are configured.</p> <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/icue-enable-sdk.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Turning on the SDK in Corsair iCUE" loading="lazy" height="811" width="1280" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/icue-enable-sdk.png?v=1bbe94f77e78d95af98555f206db5668" alt="Turning on the SDK in Corsair iCUE" loading="lazy" height="811" width="1280" /> </picture> </p> <h1 id="supported-devices">Supported Devices</h1> @@ -282,7 +282,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/overview.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Annotated picture of the main Aurora UI" loading="lazy" height="714" width="1000" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/overview.png?v=1bbe94f77e78d95af98555f206db5668" alt="Annotated picture of the main Aurora UI" loading="lazy" height="714" width="1000" /> </picture> </p> <h1 id="applications">Applications</h1> @@ -309,7 +309,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-glitch.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-glitch.gif?v=1bbe94f77e78d95af98555f206db5668" alt="" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -353,7 +353,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient-fill.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient-fill.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard" loading="lazy" height="288" width="866" /> </picture> </p>Gradient Layerhttps://www.project-aurora.com/Docs/reference-layers/gradient/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/gradient/<p>The Gradient Layer shows a gradient effect on the specified keys. The gradient can also be animated to move across the keyboard to give a wave effect. If it helps to understand how it works, you can imagine the gradient to be displayed on a (possibly moving) rectangle, and each key acts as a “window” onto that rectangle.</p> <p> @@ -378,7 +378,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow Gradient Layer on the alphabetical keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow Gradient Layer on the alphabetical keys" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -444,7 +444,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-image.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="An image layer displaying a picture of a landscape" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-image.png?v=1bbe94f77e78d95af98555f206db5668" alt="An image layer displaying a picture of a landscape" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -495,7 +495,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-interactive.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="Pressing keys on an interactive layer with key wave mode" loading="lazy" height="290" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-interactive.gif?v=1bbe94f77e78d95af98555f206db5668" alt="Pressing keys on an interactive layer with key wave mode" loading="lazy" height="290" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -587,7 +587,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/ghub-enable-sdk.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Turning on the SDK in Logitech G HUB" loading="lazy" height="792" width="1138" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/ghub-enable-sdk.png?v=1bbe94f77e78d95af98555f206db5668" alt="Turning on the SDK in Logitech G HUB" loading="lazy" height="792" width="1138" /> </picture> </p> <h2 id="for-lgs">For LGS:</h2> @@ -616,7 +616,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/lgs-enable-sdk-1.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Opening Settings in Logitech Gaming Software" loading="lazy" height="750" width="1006" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/lgs-enable-sdk-1.png?v=1bbe94f77e78d95af98555f206db5668" alt="Opening Settings in Logitech Gaming Software" loading="lazy" height="750" width="1006" /> </picture> </p>Logitech Lightsynchttps://www.project-aurora.com/Docs/integrations/lightsync/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/integrations/lightsync/<p> @@ -636,7 +636,13 @@ Color updating is recommended to be disabled with supported games by setting a s - </p> + + + + <picture> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/lightsync_diagram.png?v=1bbe94f77e78d95af98555f206db5668" alt="Diagram showing Aurora &amp; Lightsync integration" loading="lazy" height="280" width="721" /> +</picture> +</p> <p>You can use Lightsync integration with <a href="https://www.project-aurora.com/Docs/devices/alldevices/">all supported devices</a></p> <blockquote> <p>Note that this is reverse engineered and may not work as the original.</p> @@ -698,7 +704,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-fire.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A particle layer with the fire preset" loading="lazy" height="240" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-fire.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A particle layer with the fire preset" loading="lazy" height="240" width="724" /> </picture> @@ -723,7 +729,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-matrix.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A particle layer with the matrix preset" loading="lazy" height="239" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-matrix.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A particle layer with the matrix preset" loading="lazy" height="239" width="724" /> </picture> </p>Percent (Gradient) Effect Layerhttps://www.project-aurora.com/Docs/reference-layers/percent-gradient-effect/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/percent-gradient-effect/<p>This layer is very similar to the Percent Effect Layer, but makes use of a gradient instead of a progress/background color. This layer does not have a background.</p> <p> @@ -748,7 +754,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-gradient-effect.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-gradient-effect.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -819,7 +825,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-effect.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A percent layer with current value set to the current time&rsquo;s milliseconds" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-effect.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A percent layer with current value set to the current time&rsquo;s milliseconds" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -895,7 +901,7 @@ Color updating is recommended to be disabled with supported games by setting a s <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-radial.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow radial layer" loading="lazy" height="240" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-radial.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow radial layer" loading="lazy" height="240" width="724" /> </picture> </p> <p>Note that this gradient is generated using discrete pie-shaped segments of colour. This color is determined by the median color at a particular point on the gradient. For example, if there were 4 segments, each would have a 90 degree arc. The first would use the color at 45 degrees (90 / 2) the second at 135 degrees, etc. If you do not get the colors you expect when using small numbers of segments, this is likely the reason.</p>Razerhttps://www.project-aurora.com/Docs/devices/razer/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/devices/razer/<p>You can have brand specific integrations (like LightFX and Lightsync) with Razer devices using Aurora.</p> @@ -929,7 +935,13 @@ Color updating is recommended to be disabled with supported games by setting a s - </p> + + + + <picture> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/chroma_diagram.png?v=1bbe94f77e78d95af98555f206db5668" alt="Diagram showing Aurora Chroma integration" loading="lazy" height="350" width="691" /> +</picture> +</p> <p>You can use Chroma integration with <a href="https://www.project-aurora.com/Docs/devices/alldevices/">all supported devices</a></p> <blockquote> <p>Note that this is reverse engineered and may not work as the original.</p> @@ -981,7 +993,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-shortcut.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-shortcut.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer" loading="lazy" height="288" width="866" /> </picture> </p>Solid Color Layerhttps://www.project-aurora.com/Docs/reference-layers/solid-color/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/solid-color/<p>The Solid Color Layer is for setting static colors for specific keys. The keys will constantly be lit in the given color (providing they aren’t overridden by a higher-up layer). This is one of the most simple layers in Aurora, but can be useful for things such as highlighting controls such as WASD in video games.</p> <p> @@ -1006,7 +1018,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-color.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="A Solid Color Layer lighting common video game control keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-color.png?v=1bbe94f77e78d95af98555f206db5668" alt="A Solid Color Layer lighting common video game control keys" loading="lazy" height="288" width="866" /> </picture> </p> <p>If you want to set the color of the entire (or most) of the keyboard, consider using the <a href="https://www.project-aurora.com/Docs/reference-layers/solid-fill-color/">Solid Fill Color</a> Layer instead.</p>Solid Fill Color Layerhttps://www.project-aurora.com/Docs/reference-layers/solid-fill-color/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/solid-fill-color/<p>Similar to the Solid Color layer, however it does not have fine control over which keys are lit and so fills the entire canvas (keyboard, mouse and any other peripherals) with the given color. This layer is useful for setting static backgrounds, saving you from having to manually add each key.</p> @@ -1032,7 +1044,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-fill-color.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="A Solid Fill Layer setting the entire keyboard to cyan" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-fill-color.png?v=1bbe94f77e78d95af98555f206db5668" alt="A Solid Fill Layer setting the entire keyboard to cyan" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -1085,7 +1097,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/enable-sse-app.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Enabling custom app in SSE3" loading="lazy" height="1040" width="1920" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/enable-sse-app.png?v=1bbe94f77e78d95af98555f206db5668" alt="Enabling custom app in SSE3" loading="lazy" height="1040" width="1920" /> </picture> </p> <p>If you still cannot control your keyboard or mouse illumination, check if Color Special Event is enabled in Aurora applet in SSE.</p> @@ -1111,7 +1123,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/sse-special-event.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Color Special Event in Aurora applet" loading="lazy" height="1040" width="1920" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/sse-special-event.png?v=1bbe94f77e78d95af98555f206db5668" alt="Color Special Event in Aurora applet" loading="lazy" height="1040" width="1920" /> </picture> </p> <h1 id="known-issues">Known Issues</h1> @@ -1142,7 +1154,7 @@ and rename the <strong>Repository</strong> folder to something else like R <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-timer.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A timer layer on the alphabetical keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-timer.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A timer layer on the alphabetical keys" loading="lazy" height="288" width="866" /> </picture> </p>Toggle Key Layerhttps://www.project-aurora.com/Docs/reference-layers/toggle-key/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/toggle-key/<p>The toggle key layer allows for the turning on or off some lights based on the key press of another specific key. This layer can be useful for things such as indicators for whether something is toggled on/off in a game.</p> <p><span class="alert info">If you are using caps lock, num lock or scroll lock as a trigger key it is probably better to use the Lock Layer to ensure the key light state stays synced with the lock state properly.</span></p>Toolbar Layerhttps://www.project-aurora.com/Docs/reference-layers/toolbar/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/toolbar/<p>The toolbar layer is a layer that shows one key as “active” and all others assigned to it as “inactive”. When a different key is pressed, the pressed key becomes the active one instead. This works similarly to how toolbars/item bars work in video games such as Factorio or Minecraft.</p> diff --git a/integrations/chroma/index.html b/integrations/chroma/index.html index a044406..e96427a 100644 --- a/integrations/chroma/index.html +++ b/integrations/chroma/index.html @@ -1,5 +1,5 @@ How to Use Razer Chroma on Non-Razer Devices • Aurora Docs

    Razer Chroma


    Last updated 01.10.2024

    You can use Chroma integration with all supported devices

    Note that this is reverse engineered and may not work as the original.

    You can have Synapse installed and Aurora will automatically apply game effects to your devices. +Aurora User Docs

    Razer Chroma


    Last updated 01.10.2024

    Diagram showing Aurora Chroma integration

    You can use Chroma integration with all supported devices

    Note that this is reverse engineered and may not work as the original.

    You can have Synapse installed and Aurora will automatically apply game effects to your devices. Then, “Razer Chroma SDK Service” needs to be running for the integration to work.

    Chrome Enabled Games List on www.razer.com

    • RAZER is the trademark or registered trademark of Razer Inc.

    Page authored by
    \ No newline at end of file diff --git a/integrations/index.xml b/integrations/index.xml index 9d520ad..82bff93 100644 --- a/integrations/index.xml +++ b/integrations/index.xml @@ -22,7 +22,13 @@ See their pages to see how they are configured.</p> - </p> + + + + <picture> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/lightsync_diagram.png?v=1bbe94f77e78d95af98555f206db5668" alt="Diagram showing Aurora &amp; Lightsync integration" loading="lazy" height="280" width="721" /> +</picture> +</p> <p>You can use Lightsync integration with <a href="https://www.project-aurora.com/Docs/devices/alldevices/">all supported devices</a></p> <blockquote> <p>Note that this is reverse engineered and may not work as the original.</p> @@ -46,7 +52,13 @@ See their pages to see how they are configured.</p> - </p> + + + + <picture> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/chroma_diagram.png?v=1bbe94f77e78d95af98555f206db5668" alt="Diagram showing Aurora Chroma integration" loading="lazy" height="350" width="691" /> +</picture> +</p> <p>You can use Chroma integration with <a href="https://www.project-aurora.com/Docs/devices/alldevices/">all supported devices</a></p> <blockquote> <p>Note that this is reverse engineered and may not work as the original.</p> diff --git a/integrations/lightsync/index.html b/integrations/lightsync/index.html index 5bc4525..d6dbbd2 100644 --- a/integrations/lightsync/index.html +++ b/integrations/lightsync/index.html @@ -1,4 +1,4 @@ How to Use Lightsync integration on Non-Logitech Devices • Aurora Docs

    Logitech Lightsync


    Last updated 01.10.2024

    You can use Lightsync integration with all supported devices

    Note that this is reverse engineered and may not work as the original.

    You can have LGS installed and Aurora will automatically apply game effects to your devices.

    LGS must be fully closed before Aurora is launched.


    Page authored by
    \ No newline at end of file +Aurora User Docs

    Logitech Lightsync


    Last updated 01.10.2024

    Diagram showing Aurora & Lightsync integration

    You can use Lightsync integration with all supported devices

    Note that this is reverse engineered and may not work as the original.

    You can have LGS installed and Aurora will automatically apply game effects to your devices.

    LGS must be fully closed before Aurora is launched.


    Page authored by
    \ No newline at end of file diff --git a/reference-expressions/maths/index.html b/reference-expressions/maths/index.html index 007a1d5..f0b9bfa 100644 --- a/reference-expressions/maths/index.html +++ b/reference-expressions/maths/index.html @@ -1,4 +1,4 @@ Maths • reference-expressions • Aurora Docs

    Maths


    Last updated 10.01.2024

    This page lists all the standard evaluatables that are under the ‘Maths’ category.

    Absolute number

    Takes a number and outputs the absolute (positive) value. E.G. 5 outputs 5 (no change), but -10 would output 10.

    Arithmetic Comparison boolean

    Compares two numbers together and outputs a boolean indicating the result of the comparison. Can choose a comparison from: equal, not equal, less than, less than or equal, greater than, greater than or equal.

    Arithmetic Operation number

    Performs a binary operation on two numbers, such as: adding them together, subtracting one from the other, multiplying them together, dividing one by the other or finding the modulus (remainder of one when divided by the other).

    Lerp number

    Maps a value from one range onto it’s interpolated value in another range.

    For example, mapping the value 0.7 from a range of 0 to 1 onto the range of 50 to 100 would output 85. This is because 0.7 is 70% of the way between 0 and 1, and the number that is 70% of the way between 50 and 100 is 85.

    Number Change Detector boolean

    Outputs a true value on a frame whenever the value of the input number changes. If you require the boolean to be true for longer than a single frame, use this in conjunction with the true extender.

    Can also be set up to only output true when the value increases or decreases (instead of any change) and can also provide a minimum threshold that the change must be. For example, if you tick “Trigger on increase”, untick “Trigger on decrease” and set the threshold to 5, the only time a true will be output is when the current value of the number is 5 or higher more than the value it was last frame.

    Number Constant number

    Constantly outputs the specified number.

    Wave Function number

    Creates a wave output based on the given input.

    Note that all waves are normalized to accept a value in the range 0 - 1 and also output a value in the range 0 - 1.

    Sine

    Triangle


    Page authored by
    \ No newline at end of file +Aurora User Docs

    Maths


    Last updated 10.01.2024

    This page lists all the standard evaluatables that are under the ‘Maths’ category.

    Absolute number

    Takes a number and outputs the absolute (positive) value. E.G. 5 outputs 5 (no change), but -10 would output 10.

    Arithmetic Comparison boolean

    Compares two numbers together and outputs a boolean indicating the result of the comparison. Can choose a comparison from: equal, not equal, less than, less than or equal, greater than, greater than or equal.

    Arithmetic Operation number

    Performs a binary operation on two numbers, such as: adding them together, subtracting one from the other, multiplying them together, dividing one by the other or finding the modulus (remainder of one when divided by the other).

    Lerp number

    Maps a value from one range onto it’s interpolated value in another range.

    For example, mapping the value 0.7 from a range of 0 to 1 onto the range of 50 to 100 would output 85. This is because 0.7 is 70% of the way between 0 and 1, and the number that is 70% of the way between 50 and 100 is 85.

    Number Change Detector boolean

    Outputs a true value on a frame whenever the value of the input number changes. If you require the boolean to be true for longer than a single frame, use this in conjunction with the true extender.

    Can also be set up to only output true when the value increases or decreases (instead of any change) and can also provide a minimum threshold that the change must be. For example, if you tick “Trigger on increase”, untick “Trigger on decrease” and set the threshold to 5, the only time a true will be output is when the current value of the number is 5 or higher more than the value it was last frame.

    Number Constant number

    Constantly outputs the specified number.

    Wave Function number

    Creates a wave output based on the given input.

    Note that all waves are normalized to accept a value in the range 0 - 1 and also output a value in the range 0 - 1.

    Sine

    Triangle


    Page authored by
    \ No newline at end of file diff --git a/reference-layers/ambilight/index.html b/reference-layers/ambilight/index.html index 12075a7..734d9a5 100644 --- a/reference-layers/ambilight/index.html +++ b/reference-layers/ambilight/index.html @@ -1,4 +1,4 @@ Ambilight Layer • reference-layers • Aurora Docs

    Ambilight Layer


    Last updated 10.01.2024

    The ambilight layer takes the average color of the monitor (or specific areas of the monitor) and displays them on the keys.

    This can be a very intensive operation and so may not perform well on all machines. You may find that Aurora is lagging or using too much CPU when you use one of these layers.

    Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other

    Properties

    NameDescription
    Ambilight Effect Type
    • Default - Takes the image from the target and sets the keys to the color at points on that image (see above for an example).
    • Average Color - Takes the entire image and gets the average color of the image and sets all keys to be that color.
    Ambilight Capture Type
    • Everything - Takes entire screen output (including multiple monitors if you have them).
    • Main Monitor Only - Takes screen output only from the monitor designated as number 1.
    • Foreground Application - Takes output from whichever application currently has focus.
    • Specific Process - Takes output only from the process with the specified name.
    Specific Process NameUsed with Capture Type "Specific Process" to restrict the ambilight layer to only use output from a specific application.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Ambilight Layer


    Last updated 10.01.2024

    The ambilight layer takes the average color of the monitor (or specific areas of the monitor) and displays them on the keys.

    This can be a very intensive operation and so may not perform well on all machines. You may find that Aurora is lagging or using too much CPU when you use one of these layers.

    Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other

    Properties

    NameDescription
    Ambilight Effect Type
    • Default - Takes the image from the target and sets the keys to the color at points on that image (see above for an example).
    • Average Color - Takes the entire image and gets the average color of the image and sets all keys to be that color.
    Ambilight Capture Type
    • Everything - Takes entire screen output (including multiple monitors if you have them).
    • Main Monitor Only - Takes screen output only from the monitor designated as number 1.
    • Foreground Application - Takes output from whichever application currently has focus.
    • Specific Process - Takes output only from the process with the specified name.
    Specific Process NameUsed with Capture Type "Specific Process" to restrict the ambilight layer to only use output from a specific application.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/animation/index.html b/reference-layers/animation/index.html index b523e24..0639d2c 100644 --- a/reference-layers/animation/index.html +++ b/reference-layers/animation/index.html @@ -1,4 +1,4 @@ Animation Layer • reference-layers • Aurora Docs

    Animation Layer


    Last updated 10.01.2024

    The animation layer is another very powerful but very complex and hard-to-use layer. It allows for you to create custom animations using shapes and by creating key-frames in the animation editor. There is a basic guide on how to create animations here.

    This layer can also be triggered when certain events happen. You can select it for when a game-state value changes or when you press/release a key. When in a key-mode, the animation can optionally be translated to the location of the pressed key. This basically provides a means of creating a custom interactive layer if you don’t like that layer’s default effects.

    An very basic example animation that has a rectangle that grows in width, then in height

    Properties

    NameDescription
    Display Only on Key Sequence KeysIf this is selected, the animation will only be displayed on the keys in the Affect Keys list.
    Scale to Key Sequence boundsIf this is checked, the animation bitmap will be scaled and translated so that it covers the keys in the Affected Keys list.
    Affected KeysIf Display Only on Key Sequence Keys is checked, the animation will only be displayed on these keys.
    Animation DurationThe length of time an animation takes to play. If you do not set this value high enough, the animation will appear to be cut off as it ends too early.
    Repeat TimesThe amount of times the animation will repeat. If set to 0, it will repeat indefinitely. When the trigger is not “Always on”, this should not be set to 0 as once triggered the animation will carry on forever.
    TriggerThis option is how you set when the animations should be played. The sub-properties for each of these trigger modes are detailed in the tabs below. “Always On” does not have any additional properties.

    Value Change Trigger Properties

    NameDescription
    Trigger pathA path to a number State Variable that should be watched for the value to change.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.

    Boolean Change Trigger Properties

    NameDescription
    Trigger pathA path to a boolean State Variable that should be watched for it to either become true, become false or run while true.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.

    Key Trigger Properties

    NameDescription
    Trigger for any keyIf this is checked, any key press will trigger an animation. If unchecked, only the keys in Trigger Keys will cause an animation to play.
    Translate to pressed keyIf this is checked, the animation's origin point (0, 0) (top left) will be translated to the center point of the pressed key.
    Trigger keysThe keys that should trigger an animation. Not needed if Trigger for any Key is checked.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.
    Stop as soon as key releasedIf this is checked, the animation will immediately stop when the key is released. I.E. it will not wait for the animation to finish playing.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Animation Layer


    Last updated 10.01.2024

    The animation layer is another very powerful but very complex and hard-to-use layer. It allows for you to create custom animations using shapes and by creating key-frames in the animation editor. There is a basic guide on how to create animations here.

    This layer can also be triggered when certain events happen. You can select it for when a game-state value changes or when you press/release a key. When in a key-mode, the animation can optionally be translated to the location of the pressed key. This basically provides a means of creating a custom interactive layer if you don’t like that layer’s default effects.

    An very basic example animation that has a rectangle that grows in width, then in height

    Properties

    NameDescription
    Display Only on Key Sequence KeysIf this is selected, the animation will only be displayed on the keys in the Affect Keys list.
    Scale to Key Sequence boundsIf this is checked, the animation bitmap will be scaled and translated so that it covers the keys in the Affected Keys list.
    Affected KeysIf Display Only on Key Sequence Keys is checked, the animation will only be displayed on these keys.
    Animation DurationThe length of time an animation takes to play. If you do not set this value high enough, the animation will appear to be cut off as it ends too early.
    Repeat TimesThe amount of times the animation will repeat. If set to 0, it will repeat indefinitely. When the trigger is not “Always on”, this should not be set to 0 as once triggered the animation will carry on forever.
    TriggerThis option is how you set when the animations should be played. The sub-properties for each of these trigger modes are detailed in the tabs below. “Always On” does not have any additional properties.

    Value Change Trigger Properties

    NameDescription
    Trigger pathA path to a number State Variable that should be watched for the value to change.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.

    Boolean Change Trigger Properties

    NameDescription
    Trigger pathA path to a boolean State Variable that should be watched for it to either become true, become false or run while true.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.

    Key Trigger Properties

    NameDescription
    Trigger for any keyIf this is checked, any key press will trigger an animation. If unchecked, only the keys in Trigger Keys will cause an animation to play.
    Translate to pressed keyIf this is checked, the animation's origin point (0, 0) (top left) will be translated to the center point of the pressed key.
    Trigger keysThe keys that should trigger an animation. Not needed if Trigger for any Key is checked.
    Stack modeWhat should happen if the state variable changes again while an animation is already playing.
    • Ignore - The currently playing animation will keep playing as if nothing happened.
    • Restart - Restart the currently playing animation.
    • Play Multiple - Play another instance of the animation in addition to the currently running one.
    Stop as soon as key releasedIf this is checked, the animation will immediately stop when the key is released. I.E. it will not wait for the animation to finish playing.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/audio-visualizer/index.html b/reference-layers/audio-visualizer/index.html index 0d30361..fd2afdc 100644 --- a/reference-layers/audio-visualizer/index.html +++ b/reference-layers/audio-visualizer/index.html @@ -1,4 +1,4 @@ Audio Visualizer Layer • reference-layers • Aurora Docs

    Audio Visualizer Layer


    Last updated 10.01.2024

    This layer takes in audio data from your computer and visualizes the volume at various frequencies. There are many different customization options for this layer including which frequencies should be detected. Which frequencies are best depends on the type of audio you expect to be playing (rock will be different from classical) but the default frequencies provide a good starting point.

    An equalizer layer in gradient mode while playing a music track

    Properties

    NameDescription
    Equalizer Effect Type
    • Power Bars
    • Waveform
    • Waveform (From bottom)
    View Type
    • Solid Color - The waveform/bars are displayed in a single color (Primary Color)
    • Alternating Colors - Each bar alternates between Primary and Secondary color.
    • Gradient Notched Color - Each bar is a single color based on the Gradient provided.
    • Gradient Color Shift - The whole waveform is a single color as given by the gradient. The color gradually changes over time.
    • Gradient (Horizontal) - The waveform is colored as the Gradient provided.
    • Gradient (Vertical) - The waveform is colored as the Gradient provided vertically.
    Primary ColorThe color used when View Type is "Solid Color" or used for every other bar when View Type is "Alternating Colors".
    Secondary ColorThe color used for every other bar when View Type is "Alternating Colors".
    GradientThe gradient used when View Type isn't "Solid Color" or "Alternating Colors".
    Max AmplitudeThe value that will be used as the maximum value of the waveform. If the bars frequently clip off the top/bottom of the bitmap, try decreasing this value.
    Scale with System VolumeWhether or not the max amplitude should automatically scale with the system volume.
    Dim Background on SoundIf this is selected, when a sound is played the Dim Color will be used to dim the background.
    Dim ColorThe color used to dim the background by when Dim Background on Sound is selected.
    FrequenciesA list of all frequencies that will be represented by bars when the Effect Type is set to "Power Bars". You may need to tweak or add/remove this values to get the best experience depending on the type of audio you expect to be played.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Audio Visualizer Layer


    Last updated 10.01.2024

    This layer takes in audio data from your computer and visualizes the volume at various frequencies. There are many different customization options for this layer including which frequencies should be detected. Which frequencies are best depends on the type of audio you expect to be playing (rock will be different from classical) but the default frequencies provide a good starting point.

    An equalizer layer in gradient mode while playing a music track

    Properties

    NameDescription
    Equalizer Effect Type
    • Power Bars
    • Waveform
    • Waveform (From bottom)
    View Type
    • Solid Color - The waveform/bars are displayed in a single color (Primary Color)
    • Alternating Colors - Each bar alternates between Primary and Secondary color.
    • Gradient Notched Color - Each bar is a single color based on the Gradient provided.
    • Gradient Color Shift - The whole waveform is a single color as given by the gradient. The color gradually changes over time.
    • Gradient (Horizontal) - The waveform is colored as the Gradient provided.
    • Gradient (Vertical) - The waveform is colored as the Gradient provided vertically.
    Primary ColorThe color used when View Type is "Solid Color" or used for every other bar when View Type is "Alternating Colors".
    Secondary ColorThe color used for every other bar when View Type is "Alternating Colors".
    GradientThe gradient used when View Type isn't "Solid Color" or "Alternating Colors".
    Max AmplitudeThe value that will be used as the maximum value of the waveform. If the bars frequently clip off the top/bottom of the bitmap, try decreasing this value.
    Scale with System VolumeWhether or not the max amplitude should automatically scale with the system volume.
    Dim Background on SoundIf this is selected, when a sound is played the Dim Color will be used to dim the background.
    Dim ColorThe color used to dim the background by when Dim Background on Sound is selected.
    FrequenciesA list of all frequencies that will be represented by bars when the Effect Type is set to "Power Bars". You may need to tweak or add/remove this values to get the best experience depending on the type of audio you expect to be played.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/blinking/index.html b/reference-layers/blinking/index.html index 9f65562..f41130d 100644 --- a/reference-layers/blinking/index.html +++ b/reference-layers/blinking/index.html @@ -1,4 +1,4 @@ Blinking Layer • reference-layers • Aurora Docs

    Blinking Layer


    Last updated 10.01.2024

    The blinking layer sets the colors of the specified keys to flash between two alternatives, with no fading between the colors. Like to the breathing layer, it allows either or both of these colors to be randomized if you wish.

    A blinking layer with cyan and a random secondary color

    Properties

    NameDescription
    Primary ColorThe solid color to set all the affected keys to during the first phase.
    Use Random PrimaryTick this to use a random color during first phase instead of Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second phase.
    Use Random SecondaryTick this to use a random color during second phase instead of Secondary Color.
    Effect SpeedHow fast the keys swap between primary and secondary colors.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Blinking Layer


    Last updated 10.01.2024

    The blinking layer sets the colors of the specified keys to flash between two alternatives, with no fading between the colors. Like to the breathing layer, it allows either or both of these colors to be randomized if you wish.

    A blinking layer with cyan and a random secondary color

    Properties

    NameDescription
    Primary ColorThe solid color to set all the affected keys to during the first phase.
    Use Random PrimaryTick this to use a random color during first phase instead of Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second phase.
    Use Random SecondaryTick this to use a random color during second phase instead of Secondary Color.
    Effect SpeedHow fast the keys swap between primary and secondary colors.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/breathing/index.html b/reference-layers/breathing/index.html index 1628301..4747cf0 100644 --- a/reference-layers/breathing/index.html +++ b/reference-layers/breathing/index.html @@ -1,4 +1,4 @@ Breathing Layer • reference-layers • Aurora Docs

    Breathing Layer


    Last updated 10.01.2024

    The breathing layer fades the colors of the specified keys between two colors. In that regard it is similar to the Gradient Fill Layer, however this layer also allows the colors to be randomized, so that the keyboard fades between unpredictable colors.

    A breathing layer with two random colors

    Properties

    NameDescription
    Primary ColorThe solid color to set all the affected keys to during the first phase.
    Use Random PrimaryTick this to use a random color during first phase instead of Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second phase.
    Use Random SecondaryTick this to use a random color during second phase instead of Secondary Color.
    Effect SpeedHow fast the keys swap between primary and secondary colors.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Breathing Layer


    Last updated 10.01.2024

    The breathing layer fades the colors of the specified keys between two colors. In that regard it is similar to the Gradient Fill Layer, however this layer also allows the colors to be randomized, so that the keyboard fades between unpredictable colors.

    A breathing layer with two random colors

    Properties

    NameDescription
    Primary ColorThe solid color to set all the affected keys to during the first phase.
    Use Random PrimaryTick this to use a random color during first phase instead of Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second phase.
    Use Random SecondaryTick this to use a random color during second phase instead of Secondary Color.
    Effect SpeedHow fast the keys swap between primary and secondary colors.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/glitch-effect/index.html b/reference-layers/glitch-effect/index.html index 33a9ef2..8450631 100644 --- a/reference-layers/glitch-effect/index.html +++ b/reference-layers/glitch-effect/index.html @@ -1,4 +1,4 @@ Glitch Effect Layer • reference-layers • Aurora Docs

    Glitch Effect Layer


    Last updated 10.01.2024

    The glitch layer simply randomizes each key’s color every time it updates. The frequency of the update is configurable.

    Properties

    NameDescription
    Update IntervalThe time in seconds between the key’s randomization.
    Allow TransparencyIf true, the random color may be transparent.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Glitch Effect Layer


    Last updated 10.01.2024

    The glitch layer simply randomizes each key’s color every time it updates. The frequency of the update is configurable.

    Properties

    NameDescription
    Update IntervalThe time in seconds between the key’s randomization.
    Allow TransparencyIf true, the random color may be transparent.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/gradient-fill/index.html b/reference-layers/gradient-fill/index.html index 119bc33..1db55a0 100644 --- a/reference-layers/gradient-fill/index.html +++ b/reference-layers/gradient-fill/index.html @@ -1,4 +1,4 @@ Gradient Fill Layer • reference-layers • Aurora Docs

    Gradient Fill Layer


    Last updated 10.01.2024

    This layer sets all the specified keys to the same color, determined by the gradient. Unlike the regular gradient layer, all keys are the same color. You can think of the gradient as being a “timeline”, and the colors of all the keys are set based on how far through the timeline we are. This can be used to create a fade effect between multiple different colors.

    A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard

    Properties

    NameDescription
    GradientThe gradient that will be used to set the keys’ color to.
    Effect SpeedThe speed that the colors of the keys change. Higher = faster.
    Fill keyboard canvasTick this to fill the whole keyboard with the gradient instead of the affected keys.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Gradient Fill Layer


    Last updated 10.01.2024

    This layer sets all the specified keys to the same color, determined by the gradient. Unlike the regular gradient layer, all keys are the same color. You can think of the gradient as being a “timeline”, and the colors of all the keys are set based on how far through the timeline we are. This can be used to create a fade effect between multiple different colors.

    A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard

    Properties

    NameDescription
    GradientThe gradient that will be used to set the keys’ color to.
    Effect SpeedThe speed that the colors of the keys change. Higher = faster.
    Fill keyboard canvasTick this to fill the whole keyboard with the gradient instead of the affected keys.
    Affected KeysA collection of keys that will be set to the target color.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/gradient/index.html b/reference-layers/gradient/index.html index fab0fb2..8bbd4c7 100644 --- a/reference-layers/gradient/index.html +++ b/reference-layers/gradient/index.html @@ -1,4 +1,4 @@ Gradient Layer • reference-layers • Aurora Docs

    Gradient Layer


    Last updated 10.01.2024

    The Gradient Layer shows a gradient effect on the specified keys. The gradient can also be animated to move across the keyboard to give a wave effect. If it helps to understand how it works, you can imagine the gradient to be displayed on a (possibly moving) rectangle, and each key acts as a “window” onto that rectangle.

    A rainbow Gradient Layer on the alphabetical keys

    Properties

    NameDescription
    GradientThe solid color to set all the affected keys to.
    Effect SpeedThe speed at which the animation (as given by Animation Type) moves.
    Effect AngleThe angle of the gradient.
    Animation Type
    • None - No animation, static gradient.
    • Translate X and Y - Moves the gradient X and Y (depending on angle).
    • (Radial only) Zoom In
    • (Radial only) Zoom Out
    Reverse DirectionWhether or not to reverse the direction the gradient animation plays.
    Affected KeysA collection of keys that will be set to the above solid color.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Gradient Layer


    Last updated 10.01.2024

    The Gradient Layer shows a gradient effect on the specified keys. The gradient can also be animated to move across the keyboard to give a wave effect. If it helps to understand how it works, you can imagine the gradient to be displayed on a (possibly moving) rectangle, and each key acts as a “window” onto that rectangle.

    A rainbow Gradient Layer on the alphabetical keys

    Properties

    NameDescription
    GradientThe solid color to set all the affected keys to.
    Effect SpeedThe speed at which the animation (as given by Animation Type) moves.
    Effect AngleThe angle of the gradient.
    Animation Type
    • None - No animation, static gradient.
    • Translate X and Y - Moves the gradient X and Y (depending on angle).
    • (Radial only) Zoom In
    • (Radial only) Zoom Out
    Reverse DirectionWhether or not to reverse the direction the gradient animation plays.
    Affected KeysA collection of keys that will be set to the above solid color.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/image/index.html b/reference-layers/image/index.html index 81d78b5..e4cb8e2 100644 --- a/reference-layers/image/index.html +++ b/reference-layers/image/index.html @@ -1,4 +1,4 @@ Image Layer • reference-layers • Aurora Docs

    Image Layer


    Last updated 10.01.2024

    The image layer takes an image saved on your computer and attempts to replicate it on the keyboard by averaging the nearby color at different points. Obviously one should not expect to get the same fidelity you would get with a high-res image, but some images can provide nice effects. In addition, Aurora supports the use of animated GIF images.

    An image layer displaying a picture of a landscape

    Properties

    NameDescription
    Selected ImageThe file path to the image you wish to display.
    Affected KeysThe collection of keys that will be set to colors that imitate the given image.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Image Layer


    Last updated 10.01.2024

    The image layer takes an image saved on your computer and attempts to replicate it on the keyboard by averaging the nearby color at different points. Obviously one should not expect to get the same fidelity you would get with a high-res image, but some images can provide nice effects. In addition, Aurora supports the use of animated GIF images.

    An image layer displaying a picture of a landscape

    Properties

    NameDescription
    Selected ImageThe file path to the image you wish to display.
    Affected KeysThe collection of keys that will be set to colors that imitate the given image.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/index.xml b/reference-layers/index.xml index f436e5f..781c36b 100644 --- a/reference-layers/index.xml +++ b/reference-layers/index.xml @@ -22,7 +22,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-ambilight.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other" loading="lazy" height="241" width="725" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-ambilight.png?v=1bbe94f77e78d95af98555f206db5668" alt="Ambilight Layer in use on a dual-monitor setup with a white background on one and blue on the other" loading="lazy" height="241" width="725" /> </picture> </p>Animation Layerhttps://www.project-aurora.com/Docs/reference-layers/animation/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/animation/<p>The animation layer is another very powerful but very complex and hard-to-use layer. It allows for you to create custom animations using shapes and by creating key-frames in the animation editor. There is a basic guide on how to create animations <a href="https://www.project-aurora.com/Docs/advanced-topics/animation-editor/">here</a>.</p> <p>This layer can also be triggered when certain events happen. You can select it for when a game-state value changes or when you press/release a key. When in a key-mode, the animation can optionally be translated to the location of the pressed key. This basically provides a means of creating a custom interactive layer if you don’t like that layer’s default effects.</p>Audio Visualizer Layerhttps://www.project-aurora.com/Docs/reference-layers/audio-visualizer/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/audio-visualizer/<p>This layer takes in audio data from your computer and visualizes the volume at various frequencies. There are many different customization options for this layer including which frequencies should be detected. Which frequencies are best depends on the type of audio you expect to be playing (rock will be different from classical) but the default frequencies provide a good starting point.</p> @@ -48,7 +48,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-equalizer.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="An equalizer layer in gradient mode while playing a music track" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-equalizer.gif?v=1bbe94f77e78d95af98555f206db5668" alt="An equalizer layer in gradient mode while playing a music track" loading="lazy" height="288" width="866" /> </picture> </p>Blinking Layerhttps://www.project-aurora.com/Docs/reference-layers/blinking/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/blinking/<p>The blinking layer sets the colors of the specified keys to flash between two alternatives, with no fading between the colors. Like to the breathing layer, it allows either or both of these colors to be randomized if you wish.</p> <p> @@ -73,7 +73,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-blinking.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A blinking layer with cyan and a random secondary color" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-blinking.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A blinking layer with cyan and a random secondary color" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -133,7 +133,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-breathing.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A breathing layer with two random colors" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-breathing.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A breathing layer with two random colors" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -195,7 +195,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-glitch.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-glitch.gif?v=1bbe94f77e78d95af98555f206db5668" alt="" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -239,7 +239,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient-fill.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient-fill.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow Gradient Fill Layer on the alphabetical keys of the keyboard" loading="lazy" height="288" width="866" /> </picture> </p>Gradient Layerhttps://www.project-aurora.com/Docs/reference-layers/gradient/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/gradient/<p>The Gradient Layer shows a gradient effect on the specified keys. The gradient can also be animated to move across the keyboard to give a wave effect. If it helps to understand how it works, you can imagine the gradient to be displayed on a (possibly moving) rectangle, and each key acts as a “window” onto that rectangle.</p> <p> @@ -264,7 +264,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow Gradient Layer on the alphabetical keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-gradient.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow Gradient Layer on the alphabetical keys" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -330,7 +330,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-image.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="An image layer displaying a picture of a landscape" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-image.png?v=1bbe94f77e78d95af98555f206db5668" alt="An image layer displaying a picture of a landscape" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -374,7 +374,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-interactive.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="Pressing keys on an interactive layer with key wave mode" loading="lazy" height="290" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-interactive.gif?v=1bbe94f77e78d95af98555f206db5668" alt="Pressing keys on an interactive layer with key wave mode" loading="lazy" height="290" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -456,7 +456,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-fire.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A particle layer with the fire preset" loading="lazy" height="240" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-fire.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A particle layer with the fire preset" loading="lazy" height="240" width="724" /> </picture> @@ -481,7 +481,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-matrix.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A particle layer with the matrix preset" loading="lazy" height="239" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-particle-matrix.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A particle layer with the matrix preset" loading="lazy" height="239" width="724" /> </picture> </p>Percent (Gradient) Effect Layerhttps://www.project-aurora.com/Docs/reference-layers/percent-gradient-effect/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/percent-gradient-effect/<p>This layer is very similar to the Percent Effect Layer, but makes use of a gradient instead of a progress/background color. This layer does not have a background.</p> <p> @@ -506,7 +506,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-gradient-effect.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-gradient-effect.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -577,7 +577,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-effect.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A percent layer with current value set to the current time&rsquo;s milliseconds" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-percent-effect.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A percent layer with current value set to the current time&rsquo;s milliseconds" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -653,7 +653,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-radial.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A rainbow radial layer" loading="lazy" height="240" width="724" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-radial.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A rainbow radial layer" loading="lazy" height="240" width="724" /> </picture> </p> <p>Note that this gradient is generated using discrete pie-shaped segments of colour. This color is determined by the median color at a particular point on the gradient. For example, if there were 4 segments, each would have a 90 degree arc. The first would use the color at 45 degrees (90 / 2) the second at 135 degrees, etc. If you do not get the colors you expect when using small numbers of segments, this is likely the reason.</p>Script Layerhttps://www.project-aurora.com/Docs/reference-layers/script/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/script/<p>The script layer on its own will do nothing, however it is one of the most powerful, advanced layers. It provides an interface for users to create custom effects using the Aurora API in either C# or Python. More details can be found on the project&rsquo;s <a href="https://github.com/antonpup/Aurora/wiki/Profile-Scripting">Old-Wiki</a> and example scripts can be found in the <a href="https://github.com/antonpup/Aurora/tree/master/Script%20Examples">Script Examples</a> folder on GitHub. The limits of what this layer can do really are up to you.</p>Shortcut Assistant Layerhttps://www.project-aurora.com/Docs/reference-layers/shortcut-assistant/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/shortcut-assistant/<p>The Shortcut Assistant layer shows possible key presses when a modifier key is pressed. The defined shortcuts will set the keyboard lights when they are partially pressed. For example, if you had a shortcut defined for Ctrl + C and Ctrl + V, whenever you press control, the other layers below are dimmed and the C and V letter light up in whichever color is specified.</p> @@ -679,7 +679,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-shortcut.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-shortcut.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer" loading="lazy" height="288" width="866" /> </picture> </p>Solid Color Layerhttps://www.project-aurora.com/Docs/reference-layers/solid-color/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/solid-color/<p>The Solid Color Layer is for setting static colors for specific keys. The keys will constantly be lit in the given color (providing they aren’t overridden by a higher-up layer). This is one of the most simple layers in Aurora, but can be useful for things such as highlighting controls such as WASD in video games.</p> <p> @@ -704,7 +704,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-color.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="A Solid Color Layer lighting common video game control keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-color.png?v=1bbe94f77e78d95af98555f206db5668" alt="A Solid Color Layer lighting common video game control keys" loading="lazy" height="288" width="866" /> </picture> </p> <p>If you want to set the color of the entire (or most) of the keyboard, consider using the <a href="https://www.project-aurora.com/Docs/reference-layers/solid-fill-color/">Solid Fill Color</a> Layer instead.</p>Solid Fill Color Layerhttps://www.project-aurora.com/Docs/reference-layers/solid-fill-color/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/solid-fill-color/<p>Similar to the Solid Color layer, however it does not have fine control over which keys are lit and so fills the entire canvas (keyboard, mouse and any other peripherals) with the given color. This layer is useful for setting static backgrounds, saving you from having to manually add each key.</p> @@ -730,7 +730,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-fill-color.png?v=4dd26f32f257980f65dac53e0bd8245a" alt="A Solid Fill Layer setting the entire keyboard to cyan" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-solid-fill-color.png?v=1bbe94f77e78d95af98555f206db5668" alt="A Solid Fill Layer setting the entire keyboard to cyan" loading="lazy" height="288" width="866" /> </picture> </p> <h2 id="properties">Properties</h2> @@ -770,7 +770,7 @@ <picture> - <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-timer.gif?v=4dd26f32f257980f65dac53e0bd8245a" alt="A timer layer on the alphabetical keys" loading="lazy" height="288" width="866" /> + <img class="img-fluid" src="https://www.project-aurora.com/Docs/img/docs/layer-timer.gif?v=1bbe94f77e78d95af98555f206db5668" alt="A timer layer on the alphabetical keys" loading="lazy" height="288" width="866" /> </picture> </p>Toggle Key Layerhttps://www.project-aurora.com/Docs/reference-layers/toggle-key/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/toggle-key/<p>The toggle key layer allows for the turning on or off some lights based on the key press of another specific key. This layer can be useful for things such as indicators for whether something is toggled on/off in a game.</p> <p><span class="alert info">If you are using caps lock, num lock or scroll lock as a trigger key it is probably better to use the Lock Layer to ensure the key light state stays synced with the lock state properly.</span></p>Toolbar Layerhttps://www.project-aurora.com/Docs/reference-layers/toolbar/Mon, 01 Jan 0001 00:00:00 +0000https://www.project-aurora.com/Docs/reference-layers/toolbar/<p>The toolbar layer is a layer that shows one key as “active” and all others assigned to it as “inactive”. When a different key is pressed, the pressed key becomes the active one instead. This works similarly to how toolbars/item bars work in video games such as Factorio or Minecraft.</p> diff --git a/reference-layers/interactive/index.html b/reference-layers/interactive/index.html index 391d5c1..0f125f3 100644 --- a/reference-layers/interactive/index.html +++ b/reference-layers/interactive/index.html @@ -1,4 +1,4 @@ Interactive Layer • reference-layers • Aurora Docs

    Interactive Layer


    Last updated 10.01.2024

    The interactive layer listens for key presses on the keyboard and plays an animation from that key. This can be used to make ripple effects (as shown in the GIF below) or have the key light up and slowly fade out when it’s been pressed.

    Pressing keys on an interactive layer with key wave mode

    Properties

    NameDescription
    Interactive Effect Type
    • Key Wave - A circle emerges from the pressed key and slowly expands. It is initially Primary Color, then fades to Secondary Color.
    • Key Fade - The pressed key turns the into the Primary Color then fades to Secondary Color then fades out.
    • Key Wave (Filled) - The same as "Key Wave" but is a filled circle rather than only a border.
    • Arrow Flow - A rectangle with a constant height is created at the location of the pressed key and it slowly increases in width.
    • Key Wave (Rainbow) - Same as "Key Wave" but the circle takes on a gradient color, with blue in the inner side and red on the outer side.
    Primary ColorThe solid color to set all the affected keys to during the first half of the animation.
    Use Random PrimaryTick this to use a random color during first part of the animation instead of using Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second half of the animation.
    Use Random SecondaryTick this to use a random color during second half of the animation instead of using Secondary Color.
    Effect SpeedHow quick the animation plays. Higher = faster.
    Effect WidthHow thick the circle lines are for the "Key Wave"s, or how tall the rectangle is for "Arrow Flow".
    Start when key releasedWhether to star the animation when the key is released, instead of when it is first pressed.
    Excluded KeysA collection of keys that will not trigger the animations (but will still show the animation if it passes over).

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Interactive Layer


    Last updated 10.01.2024

    The interactive layer listens for key presses on the keyboard and plays an animation from that key. This can be used to make ripple effects (as shown in the GIF below) or have the key light up and slowly fade out when it’s been pressed.

    Pressing keys on an interactive layer with key wave mode

    Properties

    NameDescription
    Interactive Effect Type
    • Key Wave - A circle emerges from the pressed key and slowly expands. It is initially Primary Color, then fades to Secondary Color.
    • Key Fade - The pressed key turns the into the Primary Color then fades to Secondary Color then fades out.
    • Key Wave (Filled) - The same as "Key Wave" but is a filled circle rather than only a border.
    • Arrow Flow - A rectangle with a constant height is created at the location of the pressed key and it slowly increases in width.
    • Key Wave (Rainbow) - Same as "Key Wave" but the circle takes on a gradient color, with blue in the inner side and red on the outer side.
    Primary ColorThe solid color to set all the affected keys to during the first half of the animation.
    Use Random PrimaryTick this to use a random color during first part of the animation instead of using Primary Color.
    Secondary ColorThe solid color to set all the affected keys to during the second half of the animation.
    Use Random SecondaryTick this to use a random color during second half of the animation instead of using Secondary Color.
    Effect SpeedHow quick the animation plays. Higher = faster.
    Effect WidthHow thick the circle lines are for the "Key Wave"s, or how tall the rectangle is for "Arrow Flow".
    Start when key releasedWhether to star the animation when the key is released, instead of when it is first pressed.
    Excluded KeysA collection of keys that will not trigger the animations (but will still show the animation if it passes over).

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/lock-color/index.html b/reference-layers/lock-color/index.html index a662570..7c7a824 100644 --- a/reference-layers/lock-color/index.html +++ b/reference-layers/lock-color/index.html @@ -1,4 +1,4 @@ Lock Color Layer • reference-layers • Aurora Docs

    Lock Color Layer


    Last updated 10.01.2024

    The lock layer allows you to have keys light up (or pulse) in a color when one of the “lock” keys is active (caps lock, num lock or scroll lock). You can use this to make a warning for when caps lock is on for example, or perhaps turn off the lights on the numpad when the numpad is off.

    This layer functionality can be incorporated using the Overrides System. That said, it is simpler to use this layer for the pulse feature than to use the Override System alternative.

    Lock layer flashing alphabetical key when the caps lock is on

    Lock layer turning off the numpad lights when the numlock is off

    Properties

    NameDescription
    Lock KeyThe type of key to check whether it is locked or not. Valid options are: Capital, Scroll and NumLock.
    Off ColorThe solid color to use when the lock key is disabled/off.
    On ColorThe solid color to use when the lock key is enabled/on.
    PulseIf checked, the On Color will fade in and out when the lock key is active (as shown in the first screencap above).

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Lock Color Layer


    Last updated 10.01.2024

    The lock layer allows you to have keys light up (or pulse) in a color when one of the “lock” keys is active (caps lock, num lock or scroll lock). You can use this to make a warning for when caps lock is on for example, or perhaps turn off the lights on the numpad when the numpad is off.

    This layer functionality can be incorporated using the Overrides System. That said, it is simpler to use this layer for the pulse feature than to use the Override System alternative.

    Lock layer flashing alphabetical key when the caps lock is on

    Lock layer turning off the numpad lights when the numlock is off

    Properties

    NameDescription
    Lock KeyThe type of key to check whether it is locked or not. Valid options are: Capital, Scroll and NumLock.
    Off ColorThe solid color to use when the lock key is disabled/off.
    On ColorThe solid color to use when the lock key is enabled/on.
    PulseIf checked, the On Color will fade in and out when the lock key is active (as shown in the first screencap above).

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/particle/index.html b/reference-layers/particle/index.html index cf4354f..6a87bfe 100644 --- a/reference-layers/particle/index.html +++ b/reference-layers/particle/index.html @@ -1,5 +1,5 @@ Particle Layer • reference-layers • Aurora Docs

    Particle Layer


    Last updated 10.01.2024

    The particle layer spawns a number of particles which can independently move (based on the layer’s settings) and have a color. After a specified amount of time, the particles are removed from the canvas.

    Some examples of what can be done with this layer are shown below (both are available as presets), but this is by no means all that can be achieved. Experiment with it!

    A particle layer with the fire preset -A particle layer with the matrix preset

    There is no limit on the number of particles that can be spawned at once. If it is setup to spawn far too many at a time, you may see issues with CPU or memory usage or the program may crash. Be sensible with it.

    Properties

    Many of the properties listed here have a “min” and “max” value. For every particle, a random value between the two given values will be chosen when it is spawned.

    NameDescription
    Spawn locationThe location in which to spawn the particle. Either on an edge, randomly on the entire canvas or randomly within a specified region.
    Color (over time)A gradient that defines the color a particle should be at any given point in it’s lifespan. When the particle is newly spawned, it’s color will be at the far left of the gradient. At the end of it’s life, the particle’s color will be the value at the far right of the gradient.
    Spawn timeThe amount of time in seconds between a single particle (or a group of particles if spawn amount > 1) spawning.
    Spawn amountThe number of particles to spawn at a time.
    LifetimeNumber of seconds the particle will stay active before being removed.
    Initial horizontal velocityThe initial horizontal velocity of the particle in units per second. Can be negative to make the particle move left.
    Initial vertical velocityThe initial vertical velocity of the particle in units per second. Can be negative to make the particle move up.
    Horizontal accelerationThe acceleration of the particle in the horizontal direction. Applies the given value to the particle’s velocity per second. For example, if this was 1.5 and the particle’s velocity was 5, after 2 seconds the velocity will be 8. If positive, the particle will accelerate to the right; if negative it will accelerate to the left.
    Vertical accelerationThe acceleration of the particle in the vertical direction. Applies the given value to the particle’s velocity per second. For example, if this was 1.5 and the particle’s velocity was 5, after 2 seconds the velocity will be 8. If positive, the particle will accelerate downwards; if negative it will accelerate upwards.
    Horizontal dragA value between 0-1 which the horizontal velocity of the particle will be multiplied by. This allows for making the particle appear to naturally slow down.
    Vertical dragA value between 0-1 which the vertical velocity of the particle will be multiplied by. This allows for making the particle appear to naturally slow down.
    Initial particle sizeThe initial size of the particle.
    Size changeThe rate of change in the size of the particle measured in units per second.
    PresetsYou can choose a preset and press ‘Apply’ to set all the values of the particle layer from some predefined values.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Particle Layer


    Last updated 10.01.2024

    The particle layer spawns a number of particles which can independently move (based on the layer’s settings) and have a color. After a specified amount of time, the particles are removed from the canvas.

    Some examples of what can be done with this layer are shown below (both are available as presets), but this is by no means all that can be achieved. Experiment with it!

    A particle layer with the fire preset +A particle layer with the matrix preset

    There is no limit on the number of particles that can be spawned at once. If it is setup to spawn far too many at a time, you may see issues with CPU or memory usage or the program may crash. Be sensible with it.

    Properties

    Many of the properties listed here have a “min” and “max” value. For every particle, a random value between the two given values will be chosen when it is spawned.

    NameDescription
    Spawn locationThe location in which to spawn the particle. Either on an edge, randomly on the entire canvas or randomly within a specified region.
    Color (over time)A gradient that defines the color a particle should be at any given point in it’s lifespan. When the particle is newly spawned, it’s color will be at the far left of the gradient. At the end of it’s life, the particle’s color will be the value at the far right of the gradient.
    Spawn timeThe amount of time in seconds between a single particle (or a group of particles if spawn amount > 1) spawning.
    Spawn amountThe number of particles to spawn at a time.
    LifetimeNumber of seconds the particle will stay active before being removed.
    Initial horizontal velocityThe initial horizontal velocity of the particle in units per second. Can be negative to make the particle move left.
    Initial vertical velocityThe initial vertical velocity of the particle in units per second. Can be negative to make the particle move up.
    Horizontal accelerationThe acceleration of the particle in the horizontal direction. Applies the given value to the particle’s velocity per second. For example, if this was 1.5 and the particle’s velocity was 5, after 2 seconds the velocity will be 8. If positive, the particle will accelerate to the right; if negative it will accelerate to the left.
    Vertical accelerationThe acceleration of the particle in the vertical direction. Applies the given value to the particle’s velocity per second. For example, if this was 1.5 and the particle’s velocity was 5, after 2 seconds the velocity will be 8. If positive, the particle will accelerate downwards; if negative it will accelerate upwards.
    Horizontal dragA value between 0-1 which the horizontal velocity of the particle will be multiplied by. This allows for making the particle appear to naturally slow down.
    Vertical dragA value between 0-1 which the vertical velocity of the particle will be multiplied by. This allows for making the particle appear to naturally slow down.
    Initial particle sizeThe initial size of the particle.
    Size changeThe rate of change in the size of the particle measured in units per second.
    PresetsYou can choose a preset and press ‘Apply’ to set all the values of the particle layer from some predefined values.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/percent-effect/index.html b/reference-layers/percent-effect/index.html index fb3b3b3..b44a31d 100644 --- a/reference-layers/percent-effect/index.html +++ b/reference-layers/percent-effect/index.html @@ -1,4 +1,4 @@ Percent Effect Layer • reference-layers • Aurora Docs

    Percent Effect Layer


    Last updated 10.01.2024

    The percent effect layer allows you to have the color of some set keys dependent on a numeric variable that can be provided by the computer (such as how much RAM or CPU is in use) or by the game if it is supported (e.g. health in CS:GO or speed in Euro Truck Sim).

    A percent layer with current value set to the current time’s milliseconds

    Properties

    NameDescription
    Current ValueThe path of a State Variable or a number. This value represents the current value of whichever variable you are watching, e.g. health, ammo, etc.
    Maximum ValueThe path of a State Variable or a number. This value represents the value that is the maximum value of the percent layer. This will be your max health, or max ammo etc.
    Progress ColorIn the case of progressive effect types: the color that the active keys will take. For example, if current was 50 and max was 100, then the first half of the keys will be lit this color. For "all at once": the color that will be mixed with the background color depending on the current/max ratio.
    Background ColorFor progressive effect types: the color that will appear if the key is not being shown in progress color. For "all at once": the color that will be mixed with the progress color depending on the current/max ratio.
    Effect Type
    • All at once - All keys in the affected keys sequence share the same color. This color will be given by a blend of progress and background depending on the current/max ratio. For example: if progress is green, background is blue, current is 30 and max is 100: all the keys will be set to a blend of 30% green, 70% blue.
    • Progressive - The keys will light up in progress color when they are active. For example: if there are 10 keys in the affected key list, progress is green, background is blue, current is 30 and max is 100: the first 3 keys will be green, the others blue.
    • Progressive (Gradual) - Same as progressive, but any keys that are partially active will have their color interpolated.
    Blink ThresholdIf the current/max percentage is less than this value, the "active" keys will fade in and out.
    Reverse Blink ThresholdIf this is true, the current/max percentage must be greater than the threshold for the active keys to flash.
    Blink BackgroundIf this is selected, the background will fade in and out instead of the active keys.
    Affected KeysA collection of keys that will display the progress bar or color. Note that for progressive effect types, the order of the keys in the list matters.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Percent Effect Layer


    Last updated 10.01.2024

    The percent effect layer allows you to have the color of some set keys dependent on a numeric variable that can be provided by the computer (such as how much RAM or CPU is in use) or by the game if it is supported (e.g. health in CS:GO or speed in Euro Truck Sim).

    A percent layer with current value set to the current time’s milliseconds

    Properties

    NameDescription
    Current ValueThe path of a State Variable or a number. This value represents the current value of whichever variable you are watching, e.g. health, ammo, etc.
    Maximum ValueThe path of a State Variable or a number. This value represents the value that is the maximum value of the percent layer. This will be your max health, or max ammo etc.
    Progress ColorIn the case of progressive effect types: the color that the active keys will take. For example, if current was 50 and max was 100, then the first half of the keys will be lit this color. For "all at once": the color that will be mixed with the background color depending on the current/max ratio.
    Background ColorFor progressive effect types: the color that will appear if the key is not being shown in progress color. For "all at once": the color that will be mixed with the progress color depending on the current/max ratio.
    Effect Type
    • All at once - All keys in the affected keys sequence share the same color. This color will be given by a blend of progress and background depending on the current/max ratio. For example: if progress is green, background is blue, current is 30 and max is 100: all the keys will be set to a blend of 30% green, 70% blue.
    • Progressive - The keys will light up in progress color when they are active. For example: if there are 10 keys in the affected key list, progress is green, background is blue, current is 30 and max is 100: the first 3 keys will be green, the others blue.
    • Progressive (Gradual) - Same as progressive, but any keys that are partially active will have their color interpolated.
    Blink ThresholdIf the current/max percentage is less than this value, the "active" keys will fade in and out.
    Reverse Blink ThresholdIf this is true, the current/max percentage must be greater than the threshold for the active keys to flash.
    Blink BackgroundIf this is selected, the background will fade in and out instead of the active keys.
    Affected KeysA collection of keys that will display the progress bar or color. Note that for progressive effect types, the order of the keys in the list matters.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/percent-gradient-effect/index.html b/reference-layers/percent-gradient-effect/index.html index b9dffca..4900d9e 100644 --- a/reference-layers/percent-gradient-effect/index.html +++ b/reference-layers/percent-gradient-effect/index.html @@ -1,4 +1,4 @@ Percent (Gradient) Effect Layer • reference-layers • Aurora Docs

    Percent (Gradient) Effect Layer


    Last updated 10.01.2024

    This layer is very similar to the Percent Effect Layer, but makes use of a gradient instead of a progress/background color. This layer does not have a background.

    A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond

    Properties

    NameDescription
    Current ValueThe path of a State Variable or a number. This value represents the current value of whichever variable you are watching, e.g. health, ammo, etc.
    Maximum ValueThe path of a State Variable or a number. This value represents the value that is the maximum value of the percent layer. This will be your max health, or max ammo etc.
    Percent GradientA gradient brush whose color will define the color the affected keys will take.
    Background ColorFor progressive effect types: the color that will appear if the key is not being shown in progress color. For "all at once": the color that will be mixed with the progress color depending on the current/max ratio.
    Effect Type
    • All at once - All keys in the affected keys sequence share the same color. This color will be given by a blend of progress and background depending on the current/max ratio. For example: if progress is green, background is blue, current is 30 and max is 100: all the keys will be set to a blend of 30% green, 70% blue.
    • Progressive/Progressive (Gradual) - The keys will light up in percent gradient pattern when they are active. For example: if there are 10 keys in the affected key list, current is 30 and max is 100: the first 3 keys will be set to the color of the gradient, the others will not be set.
    Blink ThresholdIf the current/max percentage is less than this value, the "active" keys will fade in and out.
    Reverse Blink ThresholdIf this is true, the current/max percentage must be greater than the threshold for the active keys to flash.
    Affected KeysA collection of keys that will display the progress bar or color. Note that for progressive effect types, the order of the keys in the list matters.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Percent (Gradient) Effect Layer


    Last updated 10.01.2024

    This layer is very similar to the Percent Effect Layer, but makes use of a gradient instead of a progress/background color. This layer does not have a background.

    A gradient layer in progressive mode, with a red-green gradient assigned to the current millisecond

    Properties

    NameDescription
    Current ValueThe path of a State Variable or a number. This value represents the current value of whichever variable you are watching, e.g. health, ammo, etc.
    Maximum ValueThe path of a State Variable or a number. This value represents the value that is the maximum value of the percent layer. This will be your max health, or max ammo etc.
    Percent GradientA gradient brush whose color will define the color the affected keys will take.
    Background ColorFor progressive effect types: the color that will appear if the key is not being shown in progress color. For "all at once": the color that will be mixed with the progress color depending on the current/max ratio.
    Effect Type
    • All at once - All keys in the affected keys sequence share the same color. This color will be given by a blend of progress and background depending on the current/max ratio. For example: if progress is green, background is blue, current is 30 and max is 100: all the keys will be set to a blend of 30% green, 70% blue.
    • Progressive/Progressive (Gradual) - The keys will light up in percent gradient pattern when they are active. For example: if there are 10 keys in the affected key list, current is 30 and max is 100: the first 3 keys will be set to the color of the gradient, the others will not be set.
    Blink ThresholdIf the current/max percentage is less than this value, the "active" keys will fade in and out.
    Reverse Blink ThresholdIf this is true, the current/max percentage must be greater than the threshold for the active keys to flash.
    Affected KeysA collection of keys that will display the progress bar or color. Note that for progressive effect types, the order of the keys in the list matters.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/radial/index.html b/reference-layers/radial/index.html index 6a602b6..cd831f9 100644 --- a/reference-layers/radial/index.html +++ b/reference-layers/radial/index.html @@ -1,4 +1,4 @@ Radial Layer • reference-layers • Aurora Docs

    Radial Layer


    Last updated 10.01.2024

    A layer that provides a gradient that rotates around a single point and optionally spins.

    A rainbow radial layer

    Note that this gradient is generated using discrete pie-shaped segments of colour. This color is determined by the median color at a particular point on the gradient. For example, if there were 4 segments, each would have a 90 degree arc. The first would use the color at 45 degrees (90 / 2) the second at 135 degrees, etc. If you do not get the colors you expect when using small numbers of segments, this is likely the reason.

    Properties

    NameDescription
    GradientThe gradient of the layer.
    Rotation speedThe rotation speed of the layer, in degrees per second. Positive will spin clockwise, negative for counter-clockwise.
    Segment countThe number of segments (see above) that are used to create the gradient. A lower number will result in distinct blocks of colour whereas a higher number will result in a smoother transition.
    Affected keysThe keys or region to apply the gradient to.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Radial Layer


    Last updated 10.01.2024

    A layer that provides a gradient that rotates around a single point and optionally spins.

    A rainbow radial layer

    Note that this gradient is generated using discrete pie-shaped segments of colour. This color is determined by the median color at a particular point on the gradient. For example, if there were 4 segments, each would have a 90 degree arc. The first would use the color at 45 degrees (90 / 2) the second at 135 degrees, etc. If you do not get the colors you expect when using small numbers of segments, this is likely the reason.

    Properties

    NameDescription
    GradientThe gradient of the layer.
    Rotation speedThe rotation speed of the layer, in degrees per second. Positive will spin clockwise, negative for counter-clockwise.
    Segment countThe number of segments (see above) that are used to create the gradient. A lower number will result in distinct blocks of colour whereas a higher number will result in a smoother transition.
    Affected keysThe keys or region to apply the gradient to.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/shortcut-assistant/index.html b/reference-layers/shortcut-assistant/index.html index 65d46a7..ed51c55 100644 --- a/reference-layers/shortcut-assistant/index.html +++ b/reference-layers/shortcut-assistant/index.html @@ -1,4 +1,4 @@ Shortcut Assistant Layer • reference-layers • Aurora Docs

    Shortcut Assistant Layer


    Last updated 10.01.2024

    The Shortcut Assistant layer shows possible key presses when a modifier key is pressed. The defined shortcuts will set the keyboard lights when they are partially pressed. For example, if you had a shortcut defined for Ctrl + C and Ctrl + V, whenever you press control, the other layers below are dimmed and the C and V letter light up in whichever color is specified.

    A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer

    Properties

    NameDescription
    Dim BackgroundIf this is checked, when Aurora detects you a pressing a modifier key (Ctrl, Shift, Alt) then it will display Dimming Color over all keys before rendering the shortcut keys.
    ShortcutsA list of all shortcuts that should be displayed by the layer. To create a shortcut, click on the "New Shortcut" button, then "Assign" next to the new row of the table and press the keys on your keyboard. Once done, click the button again (now "Stop"). Multiple keys can be pressed at the same time and will appear in the shortcut.
    Dimming ColorIf Dim Background, this color is used to dim the background. A semi-transparent dark color is recommended.
    ColorThe color that the keys representing the shortcuts will be displayed.
    Presentation TypeFor shortcuts with longer sequences of keys, this option will dictate which keys become active and when. As an example, we shall consider the sequence Ctrl + Shift + A.
    • Show All Keys - Shows any shortcut that can be pressed that has the currently pressed buttons in its key list. In the example with this mode, when Ctrl is pressed, both Shift and A will light up.
    • Progressive Suggestion - Shows a shortcut only when all it's previous keys in the list are pressed. In the example, when Ctrl is pressed, only Shift will light up. When Ctrl + Shift are pressed, A will also light up.
    Trigger When Same Modifier Keys PressedIf this is checked, both control keys (left and right) and both shift keys (left and right) will trigger a shortcut bound to one of the keys. E.G. if there is a shortcut bound to LControlKey + A, then the right control key would also trigger this shortcut if this option was selected.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Shortcut Assistant Layer


    Last updated 10.01.2024

    The Shortcut Assistant layer shows possible key presses when a modifier key is pressed. The defined shortcuts will set the keyboard lights when they are partially pressed. For example, if you had a shortcut defined for Ctrl + C and Ctrl + V, whenever you press control, the other layers below are dimmed and the C and V letter light up in whichever color is specified.

    A shortcut layer with common Ctrl and Ctrl + Shift shortcuts on top of a gradient layer

    Properties

    NameDescription
    Dim BackgroundIf this is checked, when Aurora detects you a pressing a modifier key (Ctrl, Shift, Alt) then it will display Dimming Color over all keys before rendering the shortcut keys.
    ShortcutsA list of all shortcuts that should be displayed by the layer. To create a shortcut, click on the "New Shortcut" button, then "Assign" next to the new row of the table and press the keys on your keyboard. Once done, click the button again (now "Stop"). Multiple keys can be pressed at the same time and will appear in the shortcut.
    Dimming ColorIf Dim Background, this color is used to dim the background. A semi-transparent dark color is recommended.
    ColorThe color that the keys representing the shortcuts will be displayed.
    Presentation TypeFor shortcuts with longer sequences of keys, this option will dictate which keys become active and when. As an example, we shall consider the sequence Ctrl + Shift + A.
    • Show All Keys - Shows any shortcut that can be pressed that has the currently pressed buttons in its key list. In the example with this mode, when Ctrl is pressed, both Shift and A will light up.
    • Progressive Suggestion - Shows a shortcut only when all it's previous keys in the list are pressed. In the example, when Ctrl is pressed, only Shift will light up. When Ctrl + Shift are pressed, A will also light up.
    Trigger When Same Modifier Keys PressedIf this is checked, both control keys (left and right) and both shift keys (left and right) will trigger a shortcut bound to one of the keys. E.G. if there is a shortcut bound to LControlKey + A, then the right control key would also trigger this shortcut if this option was selected.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/solid-color/index.html b/reference-layers/solid-color/index.html index f38675a..42001ca 100644 --- a/reference-layers/solid-color/index.html +++ b/reference-layers/solid-color/index.html @@ -1,4 +1,4 @@ Solid Color Layer • reference-layers • Aurora Docs

    Solid Color Layer


    Last updated 10.01.2024

    The Solid Color Layer is for setting static colors for specific keys. The keys will constantly be lit in the given color (providing they aren’t overridden by a higher-up layer). This is one of the most simple layers in Aurora, but can be useful for things such as highlighting controls such as WASD in video games.

    A Solid Color Layer lighting common video game control keys

    If you want to set the color of the entire (or most) of the keyboard, consider using the Solid Fill Color Layer instead.

    Properties

    NameDescription
    ColorThe solid color to set all the affected keys to.
    Affected KeysA collection of keys that will be set to the above solid color.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Solid Color Layer


    Last updated 10.01.2024

    The Solid Color Layer is for setting static colors for specific keys. The keys will constantly be lit in the given color (providing they aren’t overridden by a higher-up layer). This is one of the most simple layers in Aurora, but can be useful for things such as highlighting controls such as WASD in video games.

    A Solid Color Layer lighting common video game control keys

    If you want to set the color of the entire (or most) of the keyboard, consider using the Solid Fill Color Layer instead.

    Properties

    NameDescription
    ColorThe solid color to set all the affected keys to.
    Affected KeysA collection of keys that will be set to the above solid color.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/solid-fill-color/index.html b/reference-layers/solid-fill-color/index.html index 771613c..883095e 100644 --- a/reference-layers/solid-fill-color/index.html +++ b/reference-layers/solid-fill-color/index.html @@ -1,4 +1,4 @@ Solid Fill Color Layer • reference-layers • Aurora Docs

    Solid Fill Color Layer


    Last updated 10.01.2024

    Similar to the Solid Color layer, however it does not have fine control over which keys are lit and so fills the entire canvas (keyboard, mouse and any other peripherals) with the given color. This layer is useful for setting static backgrounds, saving you from having to manually add each key.

    A Solid Fill Layer setting the entire keyboard to cyan

    Properties

    NameDescription
    ColorThe solid color to set all the affected keys to.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Solid Fill Color Layer


    Last updated 10.01.2024

    Similar to the Solid Color layer, however it does not have fine control over which keys are lit and so fills the entire canvas (keyboard, mouse and any other peripherals) with the given color. This layer is useful for setting static backgrounds, saving you from having to manually add each key.

    A Solid Fill Layer setting the entire keyboard to cyan

    Properties

    NameDescription
    ColorThe solid color to set all the affected keys to.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/timer-key/index.html b/reference-layers/timer-key/index.html index 960281a..65ec051 100644 --- a/reference-layers/timer-key/index.html +++ b/reference-layers/timer-key/index.html @@ -1,4 +1,4 @@ Timer Key Layer • reference-layers • Aurora Docs

    Timer Key Layer


    Last updated 10.01.2024

    The timer layer waits for one or more keys to be pressed (do not have to be the keys displaying the lights) and sets the color of the keys to be something else for a set duration, after which they return to their original color. This layer can be used for things such as ability timers for games that have no game state integration.

    A timer layer on the alphabetical keys

    Properties

    NameDescription
    Default ColorThe color that the keys are by default and when the timer is not active.
    Active ColorThe color the keys turn when one of the triggers has been pressed.
    DurationThe duration (in milliseconds) that the timer takes.
    Animation Type
    • OnOff - When the trigger is pressed, the Affected Keys turn to active color and stays there for the Duration then immediately goes back to default.
    • Fade - When the trigger is pressed, the Affected Keys turn to active colors and then slowly fades back to the default color.
    Repeat Action
    • Reset - When a trigger is pressed while the timer is running, it will restart the timer anew.
    • Extend - When a trigger is pressed while the timer is running, it will extend the timer by Duration. E.G. if duration is 5000ms, and you press a trigger again 3000ms after pressing it for a first time, it would take 8000ms from the second press to completely reset.
    • Ignore - If a trigger is pressed while the timer is running, nothing will happen. The original timer will keep running as normal.
    Trigger KeysThe list of keybinds that will cause the timer to run. These keys won't light up (unless you add them to the Affected Keys)
    Affected KeysThe list of keys that will light up in default or active color. These keys will not trigger the timer.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Timer Key Layer


    Last updated 10.01.2024

    The timer layer waits for one or more keys to be pressed (do not have to be the keys displaying the lights) and sets the color of the keys to be something else for a set duration, after which they return to their original color. This layer can be used for things such as ability timers for games that have no game state integration.

    A timer layer on the alphabetical keys

    Properties

    NameDescription
    Default ColorThe color that the keys are by default and when the timer is not active.
    Active ColorThe color the keys turn when one of the triggers has been pressed.
    DurationThe duration (in milliseconds) that the timer takes.
    Animation Type
    • OnOff - When the trigger is pressed, the Affected Keys turn to active color and stays there for the Duration then immediately goes back to default.
    • Fade - When the trigger is pressed, the Affected Keys turn to active colors and then slowly fades back to the default color.
    Repeat Action
    • Reset - When a trigger is pressed while the timer is running, it will restart the timer anew.
    • Extend - When a trigger is pressed while the timer is running, it will extend the timer by Duration. E.G. if duration is 5000ms, and you press a trigger again 3000ms after pressing it for a first time, it would take 8000ms from the second press to completely reset.
    • Ignore - If a trigger is pressed while the timer is running, nothing will happen. The original timer will keep running as normal.
    Trigger KeysThe list of keybinds that will cause the timer to run. These keys won't light up (unless you add them to the Affected Keys)
    Affected KeysThe list of keys that will light up in default or active color. These keys will not trigger the timer.

    Page authored by
    \ No newline at end of file diff --git a/reference-layers/toolbar/index.html b/reference-layers/toolbar/index.html index b1dccb4..22cdca1 100644 --- a/reference-layers/toolbar/index.html +++ b/reference-layers/toolbar/index.html @@ -1,4 +1,4 @@ Toolbar Layer • reference-layers • Aurora Docs

    Toolbar Layer


    Last updated 10.01.2024

    The toolbar layer is a layer that shows one key as “active” and all others assigned to it as “inactive”. When a different key is pressed, the pressed key becomes the active one instead. This works similarly to how toolbars/item bars work in video games such as Factorio or Minecraft.

    The layer can also be toggled to listen for the scroll wheel to allow scrolling through the toolbar by turning on the Enable Scroll configuration option. The order the keys are scrolled through is given by their order in the Affected Keys option, so if scrolling through is in the incorrect order, check the order of the keys here.

    The toolbar layer affecting the number keys

    Properties

    NameDescription
    Default ColorThe color of the inactive keys.
    Active ColorThe color of the active key.
    Enable ScrollWhether or not to allow the active key to be moved up and down when you scroll the mouse scroll wheel.
    Scroll LoopWhether or not to allow the scrolling to wrap from one end of the toolbar to the other. Only has an effect when Enable Scroll is true.
    Affected KeysThe keys that make up the toolbar layer. Note that if Enable Scroll is checked, the order of the keys matters.

    Page authored by
    \ No newline at end of file +Aurora User Docs

    Toolbar Layer


    Last updated 10.01.2024

    The toolbar layer is a layer that shows one key as “active” and all others assigned to it as “inactive”. When a different key is pressed, the pressed key becomes the active one instead. This works similarly to how toolbars/item bars work in video games such as Factorio or Minecraft.

    The layer can also be toggled to listen for the scroll wheel to allow scrolling through the toolbar by turning on the Enable Scroll configuration option. The order the keys are scrolled through is given by their order in the Affected Keys option, so if scrolling through is in the incorrect order, check the order of the keys here.

    The toolbar layer affecting the number keys

    Properties

    NameDescription
    Default ColorThe color of the inactive keys.
    Active ColorThe color of the active key.
    Enable ScrollWhether or not to allow the active key to be moved up and down when you scroll the mouse scroll wheel.
    Scroll LoopWhether or not to allow the scrolling to wrap from one end of the toolbar to the other. Only has an effect when Enable Scroll is true.
    Affected KeysThe keys that make up the toolbar layer. Note that if Enable Scroll is checked, the order of the keys matters.

    Page authored by
    \ No newline at end of file