Tweaks & bugfixes.
One pixel segment handling. - added 0D FX metadata (1 pixel effects) - ignore palettes for White only segment - ignore color for non-RGB & non-White segment (on/off) Bugfix - proper auto segment creation - hide palettes for non RGB segments - some tweaks for #2984 - force Solid for some FX (causing crash) on 1 pixel segment UI Optimisations - slider tooltips - tiny bit smaller tooltips - hide segment power if only one segment - gap between sliders
This commit is contained in:
parent
0d3debf9b9
commit
3ca7006e3a
@ -124,7 +124,7 @@ uint16_t blink(uint32_t color1, uint32_t color2, bool strobe, bool do_palette) {
|
|||||||
uint16_t mode_blink(void) {
|
uint16_t mode_blink(void) {
|
||||||
return blink(SEGCOLOR(0), SEGCOLOR(1), false, true);
|
return blink(SEGCOLOR(0), SEGCOLOR(1), false, true);
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_BLINK[] PROGMEM = "Blink@!,Duty cycle;!,!;!";
|
static const char _data_FX_MODE_BLINK[] PROGMEM = "Blink@!,Duty cycle;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -133,7 +133,7 @@ static const char _data_FX_MODE_BLINK[] PROGMEM = "Blink@!,Duty cycle;!,!;!";
|
|||||||
uint16_t mode_blink_rainbow(void) {
|
uint16_t mode_blink_rainbow(void) {
|
||||||
return blink(SEGMENT.color_wheel(SEGENV.call & 0xFF), SEGCOLOR(1), false, false);
|
return blink(SEGMENT.color_wheel(SEGENV.call & 0xFF), SEGCOLOR(1), false, false);
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_BLINK_RAINBOW[] PROGMEM = "Blink Rainbow@Frequency,Blink duration;!,!;!";
|
static const char _data_FX_MODE_BLINK_RAINBOW[] PROGMEM = "Blink Rainbow@Frequency,Blink duration;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -142,7 +142,7 @@ static const char _data_FX_MODE_BLINK_RAINBOW[] PROGMEM = "Blink Rainbow@Frequen
|
|||||||
uint16_t mode_strobe(void) {
|
uint16_t mode_strobe(void) {
|
||||||
return blink(SEGCOLOR(0), SEGCOLOR(1), true, true);
|
return blink(SEGCOLOR(0), SEGCOLOR(1), true, true);
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_STROBE[] PROGMEM = "Strobe@!;!,!;!";
|
static const char _data_FX_MODE_STROBE[] PROGMEM = "Strobe@!;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -151,7 +151,7 @@ static const char _data_FX_MODE_STROBE[] PROGMEM = "Strobe@!;!,!;!";
|
|||||||
uint16_t mode_strobe_rainbow(void) {
|
uint16_t mode_strobe_rainbow(void) {
|
||||||
return blink(SEGMENT.color_wheel(SEGENV.call & 0xFF), SEGCOLOR(1), true, false);
|
return blink(SEGMENT.color_wheel(SEGENV.call & 0xFF), SEGCOLOR(1), true, false);
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_STROBE_RAINBOW[] PROGMEM = "Strobe Rainbow@!;,!;!";
|
static const char _data_FX_MODE_STROBE_RAINBOW[] PROGMEM = "Strobe Rainbow@!;,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -350,7 +350,7 @@ uint16_t mode_breath(void) {
|
|||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_BREATH[] PROGMEM = "Breathe@!;!,!;!";
|
static const char _data_FX_MODE_BREATH[] PROGMEM = "Breathe@!;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -366,7 +366,7 @@ uint16_t mode_fade(void) {
|
|||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_FADE[] PROGMEM = "Fade@!;!,!;!";
|
static const char _data_FX_MODE_FADE[] PROGMEM = "Fade@!;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -754,7 +754,7 @@ uint16_t mode_multi_strobe(void) {
|
|||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_MULTI_STROBE[] PROGMEM = "Strobe Mega@!,!;!,!;!";
|
static const char _data_FX_MODE_MULTI_STROBE[] PROGMEM = "Strobe Mega@!,!;!,!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -976,6 +976,7 @@ static const char _data_FX_MODE_COLORFUL[] PROGMEM = "Colorful@!,Saturation;1,2,
|
|||||||
* Emulates a traffic light.
|
* Emulates a traffic light.
|
||||||
*/
|
*/
|
||||||
uint16_t mode_traffic_light(void) {
|
uint16_t mode_traffic_light(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
for (int i=0; i < SEGLEN; i++)
|
for (int i=0; i < SEGLEN; i++)
|
||||||
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 1));
|
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(i, true, PALETTE_SOLID_WRAP, 1));
|
||||||
uint32_t mdelay = 500;
|
uint32_t mdelay = 500;
|
||||||
@ -1008,6 +1009,7 @@ static const char _data_FX_MODE_TRAFFIC_LIGHT[] PROGMEM = "Traffic Light@!,US st
|
|||||||
*/
|
*/
|
||||||
#define FLASH_COUNT 4
|
#define FLASH_COUNT 4
|
||||||
uint16_t mode_chase_flash(void) {
|
uint16_t mode_chase_flash(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint8_t flash_step = SEGENV.call % ((FLASH_COUNT * 2) + 1);
|
uint8_t flash_step = SEGENV.call % ((FLASH_COUNT * 2) + 1);
|
||||||
|
|
||||||
for (int i = 0; i < SEGLEN; i++) {
|
for (int i = 0; i < SEGLEN; i++) {
|
||||||
@ -1037,6 +1039,7 @@ static const char _data_FX_MODE_CHASE_FLASH[] PROGMEM = "Chase Flash@!;Bg,Fx;!";
|
|||||||
* Prim flashes running, followed by random color.
|
* Prim flashes running, followed by random color.
|
||||||
*/
|
*/
|
||||||
uint16_t mode_chase_flash_random(void) {
|
uint16_t mode_chase_flash_random(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint8_t flash_step = SEGENV.call % ((FLASH_COUNT * 2) + 1);
|
uint8_t flash_step = SEGENV.call % ((FLASH_COUNT * 2) + 1);
|
||||||
|
|
||||||
for (int i = 0; i < SEGENV.aux1; i++) {
|
for (int i = 0; i < SEGENV.aux1; i++) {
|
||||||
@ -1170,6 +1173,7 @@ static const char _data_FX_MODE_DUAL_LARSON_SCANNER[] PROGMEM = "Scanner Dual@!,
|
|||||||
* Firing comets from one end. "Lighthouse"
|
* Firing comets from one end. "Lighthouse"
|
||||||
*/
|
*/
|
||||||
uint16_t mode_comet(void) {
|
uint16_t mode_comet(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t counter = strip.now * ((SEGMENT.speed >>2) +1);
|
uint16_t counter = strip.now * ((SEGMENT.speed >>2) +1);
|
||||||
uint16_t index = (counter * SEGLEN) >> 16;
|
uint16_t index = (counter * SEGLEN) >> 16;
|
||||||
if (SEGENV.call == 0) SEGENV.aux0 = index;
|
if (SEGENV.call == 0) SEGENV.aux0 = index;
|
||||||
@ -1197,7 +1201,8 @@ static const char _data_FX_MODE_COMET[] PROGMEM = "Lighthouse@!,Fade rate;!,!;!"
|
|||||||
* Fireworks function.
|
* Fireworks function.
|
||||||
*/
|
*/
|
||||||
uint16_t mode_fireworks() {
|
uint16_t mode_fireworks() {
|
||||||
const uint16_t width = strip.isMatrix ? SEGMENT.virtualWidth() : SEGMENT.virtualLength();
|
if (SEGLEN == 1) return mode_static();
|
||||||
|
const uint16_t width = SEGMENT.is2D() ? SEGMENT.virtualWidth() : SEGMENT.virtualLength();
|
||||||
const uint16_t height = SEGMENT.virtualHeight();
|
const uint16_t height = SEGMENT.virtualHeight();
|
||||||
|
|
||||||
if (SEGENV.call == 0) {
|
if (SEGENV.call == 0) {
|
||||||
@ -1211,18 +1216,18 @@ uint16_t mode_fireworks() {
|
|||||||
bool valid1 = (SEGENV.aux0 < width*height);
|
bool valid1 = (SEGENV.aux0 < width*height);
|
||||||
bool valid2 = (SEGENV.aux1 < width*height);
|
bool valid2 = (SEGENV.aux1 < width*height);
|
||||||
uint32_t sv1 = 0, sv2 = 0;
|
uint32_t sv1 = 0, sv2 = 0;
|
||||||
if (valid1) sv1 = strip.isMatrix ? SEGMENT.getPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width) : SEGMENT.getPixelColor(SEGENV.aux0); // get spark color
|
if (valid1) sv1 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width) : SEGMENT.getPixelColor(SEGENV.aux0); // get spark color
|
||||||
if (valid2) sv2 = strip.isMatrix ? SEGMENT.getPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width) : SEGMENT.getPixelColor(SEGENV.aux1);
|
if (valid2) sv2 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width) : SEGMENT.getPixelColor(SEGENV.aux1);
|
||||||
if (!SEGENV.step) SEGMENT.blur(16);
|
if (!SEGENV.step) SEGMENT.blur(16);
|
||||||
if (valid1) { if (strip.isMatrix) SEGMENT.setPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width, sv1); else SEGMENT.setPixelColor(SEGENV.aux0, sv1); } // restore spark color after blur
|
if (valid1) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width, sv1); else SEGMENT.setPixelColor(SEGENV.aux0, sv1); } // restore spark color after blur
|
||||||
if (valid2) { if (strip.isMatrix) SEGMENT.setPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width, sv2); else SEGMENT.setPixelColor(SEGENV.aux1, sv2); } // restore old spark color after blur
|
if (valid2) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width, sv2); else SEGMENT.setPixelColor(SEGENV.aux1, sv2); } // restore old spark color after blur
|
||||||
|
|
||||||
for (int i=0; i<MAX(1, width/20); i++) {
|
for (int i=0; i<MAX(1, width/20); i++) {
|
||||||
if (random8(129 - (SEGMENT.intensity >> 1)) == 0) {
|
if (random8(129 - (SEGMENT.intensity >> 1)) == 0) {
|
||||||
uint16_t index = random16(width*height);
|
uint16_t index = random16(width*height);
|
||||||
uint16_t j = index % width, k = index / width;
|
uint16_t j = index % width, k = index / width;
|
||||||
uint32_t col = SEGMENT.color_from_palette(random8(), false, false, 0);
|
uint32_t col = SEGMENT.color_from_palette(random8(), false, false, 0);
|
||||||
if (strip.isMatrix) SEGMENT.setPixelColorXY(j, k, col);
|
if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(j, k, col);
|
||||||
else SEGMENT.setPixelColor(index, col);
|
else SEGMENT.setPixelColor(index, col);
|
||||||
SEGENV.aux1 = SEGENV.aux0; // old spark
|
SEGENV.aux1 = SEGENV.aux0; // old spark
|
||||||
SEGENV.aux0 = index; // remember where spark occured
|
SEGENV.aux0 = index; // remember where spark occured
|
||||||
@ -1234,8 +1239,8 @@ static const char _data_FX_MODE_FIREWORKS[] PROGMEM = "Fireworks@,Frequency;!,!;
|
|||||||
|
|
||||||
|
|
||||||
//Twinkling LEDs running. Inspired by https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Rain.h
|
//Twinkling LEDs running. Inspired by https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Rain.h
|
||||||
uint16_t mode_rain()
|
uint16_t mode_rain() {
|
||||||
{
|
if (SEGLEN == 1) return mode_static();
|
||||||
const uint16_t width = SEGMENT.virtualWidth();
|
const uint16_t width = SEGMENT.virtualWidth();
|
||||||
const uint16_t height = SEGMENT.virtualHeight();
|
const uint16_t height = SEGMENT.virtualHeight();
|
||||||
SEGENV.step += FRAMETIME;
|
SEGENV.step += FRAMETIME;
|
||||||
@ -1294,7 +1299,7 @@ uint16_t mode_fire_flicker(void) {
|
|||||||
SEGENV.step = it;
|
SEGENV.step = it;
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_FIRE_FLICKER[] PROGMEM = "Fire Flicker@!,!;!;!";
|
static const char _data_FX_MODE_FIRE_FLICKER[] PROGMEM = "Fire Flicker@!,!;!;!;01";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1345,8 +1350,8 @@ static const char _data_FX_MODE_LOADING[] PROGMEM = "Loading@!,Fade;!,!;!;;ix=16
|
|||||||
|
|
||||||
|
|
||||||
//American Police Light with all LEDs Red and Blue
|
//American Police Light with all LEDs Red and Blue
|
||||||
uint16_t police_base(uint32_t color1, uint32_t color2)
|
uint16_t police_base(uint32_t color1, uint32_t color2) {
|
||||||
{
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t delay = 1 + (FRAMETIME<<3) / SEGLEN; // longer segments should change faster
|
uint16_t delay = 1 + (FRAMETIME<<3) / SEGLEN; // longer segments should change faster
|
||||||
uint32_t it = strip.now / map(SEGMENT.speed, 0, 255, delay<<4, delay);
|
uint32_t it = strip.now / map(SEGMENT.speed, 0, 255, delay<<4, delay);
|
||||||
uint16_t offset = it % SEGLEN;
|
uint16_t offset = it % SEGLEN;
|
||||||
@ -1794,9 +1799,9 @@ uint16_t mode_oscillate(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i < SEGLEN; i++) {
|
for (int i = 0; i < SEGLEN; i++) {
|
||||||
uint32_t color = BLACK;
|
uint32_t color = BLACK;
|
||||||
for (int j=0; j < numOscillators; j++) {
|
for (int j = 0; j < numOscillators; j++) {
|
||||||
if(i >= oscillators[j].pos - oscillators[j].size && i <= oscillators[j].pos + oscillators[j].size) {
|
if(i >= oscillators[j].pos - oscillators[j].size && i <= oscillators[j].pos + oscillators[j].size) {
|
||||||
color = (color == BLACK) ? SEGCOLOR(j) : color_blend(color, SEGCOLOR(j), 128);
|
color = (color == BLACK) ? SEGCOLOR(j) : color_blend(color, SEGCOLOR(j), 128);
|
||||||
}
|
}
|
||||||
@ -1812,6 +1817,7 @@ static const char _data_FX_MODE_OSCILLATE[] PROGMEM = "Oscillate";
|
|||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
uint16_t mode_lightning(void) {
|
uint16_t mode_lightning(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t ledstart = random16(SEGLEN); // Determine starting location of flash
|
uint16_t ledstart = random16(SEGLEN); // Determine starting location of flash
|
||||||
uint16_t ledlen = 1 + random16(SEGLEN -ledstart); // Determine length of flash (not to go beyond NUM_LEDS-1)
|
uint16_t ledlen = 1 + random16(SEGLEN -ledstart); // Determine length of flash (not to go beyond NUM_LEDS-1)
|
||||||
uint8_t bri = 255/random8(1, 3);
|
uint8_t bri = 255/random8(1, 3);
|
||||||
@ -1898,6 +1904,7 @@ static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;";
|
|||||||
|
|
||||||
//eight colored dots, weaving in and out of sync with each other
|
//eight colored dots, weaving in and out of sync with each other
|
||||||
uint16_t mode_juggle(void) {
|
uint16_t mode_juggle(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (SEGENV.call == 0) {
|
if (SEGENV.call == 0) {
|
||||||
SEGMENT.setUpLeds(); //lossless getPixelColor()
|
SEGMENT.setUpLeds(); //lossless getPixelColor()
|
||||||
SEGMENT.fill(BLACK);
|
SEGMENT.fill(BLACK);
|
||||||
@ -1967,6 +1974,7 @@ static const char _data_FX_MODE_PALETTE[] PROGMEM = "Palette@Cycle speed;;!;;c3=
|
|||||||
// feel of your fire: COOLING (used in step 1 above) (Speed = COOLING), and SPARKING (used
|
// feel of your fire: COOLING (used in step 1 above) (Speed = COOLING), and SPARKING (used
|
||||||
// in step 3 above) (Effect Intensity = Sparking).
|
// in step 3 above) (Effect Intensity = Sparking).
|
||||||
uint16_t mode_fire_2012() {
|
uint16_t mode_fire_2012() {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
const uint16_t strips = SEGMENT.nrOfVStrips();
|
const uint16_t strips = SEGMENT.nrOfVStrips();
|
||||||
if (!SEGENV.allocateData(strips * SEGLEN)) return mode_static(); //allocation failed
|
if (!SEGENV.allocateData(strips * SEGLEN)) return mode_static(); //allocation failed
|
||||||
byte* heat = SEGENV.data;
|
byte* heat = SEGENV.data;
|
||||||
@ -2267,6 +2275,7 @@ static const char _data_FX_MODE_LAKE[] PROGMEM = "Lake@!;Fx;!";
|
|||||||
// send a meteor from begining to to the end of the strip with a trail that randomly decays.
|
// send a meteor from begining to to the end of the strip with a trail that randomly decays.
|
||||||
// adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain
|
// adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain
|
||||||
uint16_t mode_meteor() {
|
uint16_t mode_meteor() {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed
|
if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed
|
||||||
|
|
||||||
byte* trail = SEGENV.data;
|
byte* trail = SEGENV.data;
|
||||||
@ -2304,6 +2313,7 @@ static const char _data_FX_MODE_METEOR[] PROGMEM = "Meteor@!,Trail length;!;!";
|
|||||||
// send a meteor from begining to to the end of the strip with a trail that randomly decays.
|
// send a meteor from begining to to the end of the strip with a trail that randomly decays.
|
||||||
// adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain
|
// adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain
|
||||||
uint16_t mode_meteor_smooth() {
|
uint16_t mode_meteor_smooth() {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed
|
if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed
|
||||||
|
|
||||||
byte* trail = SEGENV.data;
|
byte* trail = SEGENV.data;
|
||||||
@ -2341,6 +2351,7 @@ static const char _data_FX_MODE_METEOR_SMOOTH[] PROGMEM = "Meteor Smooth@!,Trail
|
|||||||
|
|
||||||
//Railway Crossing / Christmas Fairy lights
|
//Railway Crossing / Christmas Fairy lights
|
||||||
uint16_t mode_railway() {
|
uint16_t mode_railway() {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t dur = (256 - SEGMENT.speed) * 40;
|
uint16_t dur = (256 - SEGMENT.speed) * 40;
|
||||||
uint16_t rampdur = (dur * SEGMENT.intensity) >> 8;
|
uint16_t rampdur = (dur * SEGMENT.intensity) >> 8;
|
||||||
if (SEGENV.step > dur)
|
if (SEGENV.step > dur)
|
||||||
@ -2441,6 +2452,7 @@ uint16_t ripple_base()
|
|||||||
|
|
||||||
|
|
||||||
uint16_t mode_ripple(void) {
|
uint16_t mode_ripple(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (!SEGMENT.check2) SEGMENT.fill(SEGCOLOR(1));
|
if (!SEGMENT.check2) SEGMENT.fill(SEGCOLOR(1));
|
||||||
return ripple_base();
|
return ripple_base();
|
||||||
}
|
}
|
||||||
@ -2448,6 +2460,7 @@ static const char _data_FX_MODE_RIPPLE[] PROGMEM = "Ripple@!,Wave #,,,,,Overlay;
|
|||||||
|
|
||||||
|
|
||||||
uint16_t mode_ripple_rainbow(void) {
|
uint16_t mode_ripple_rainbow(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (SEGENV.call ==0) {
|
if (SEGENV.call ==0) {
|
||||||
SEGENV.aux0 = random8();
|
SEGENV.aux0 = random8();
|
||||||
SEGENV.aux1 = random8();
|
SEGENV.aux1 = random8();
|
||||||
@ -2612,6 +2625,7 @@ static const char _data_FX_MODE_TWINKLECAT[] PROGMEM = "Twinklecat@!,Twinkle rat
|
|||||||
//inspired by https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectBlinkingHalloweenEyes
|
//inspired by https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectBlinkingHalloweenEyes
|
||||||
uint16_t mode_halloween_eyes()
|
uint16_t mode_halloween_eyes()
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
const uint16_t maxWidth = strip.isMatrix ? SEGMENT.virtualWidth() : SEGLEN;
|
const uint16_t maxWidth = strip.isMatrix ? SEGMENT.virtualWidth() : SEGLEN;
|
||||||
const uint16_t HALLOWEEN_EYE_SPACE = MAX(2, strip.isMatrix ? SEGMENT.virtualWidth()>>4: SEGLEN>>5);
|
const uint16_t HALLOWEEN_EYE_SPACE = MAX(2, strip.isMatrix ? SEGMENT.virtualWidth()>>4: SEGLEN>>5);
|
||||||
const uint16_t HALLOWEEN_EYE_WIDTH = HALLOWEEN_EYE_SPACE/2;
|
const uint16_t HALLOWEEN_EYE_WIDTH = HALLOWEEN_EYE_SPACE/2;
|
||||||
@ -2721,6 +2735,7 @@ static const char _data_FX_MODE_TRI_STATIC_PATTERN[] PROGMEM = "Solid Pattern Tr
|
|||||||
|
|
||||||
uint16_t spots_base(uint16_t threshold)
|
uint16_t spots_base(uint16_t threshold)
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
if (!SEGMENT.check2) SEGMENT.fill(SEGCOLOR(1));
|
if (!SEGMENT.check2) SEGMENT.fill(SEGCOLOR(1));
|
||||||
|
|
||||||
uint16_t maxZones = SEGLEN >> 2;
|
uint16_t maxZones = SEGLEN >> 2;
|
||||||
@ -2776,6 +2791,7 @@ typedef struct Ball {
|
|||||||
* Bouncing Balls Effect
|
* Bouncing Balls Effect
|
||||||
*/
|
*/
|
||||||
uint16_t mode_bouncing_balls(void) {
|
uint16_t mode_bouncing_balls(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
//allocate segment data
|
//allocate segment data
|
||||||
const uint16_t strips = SEGMENT.nrOfVStrips(); // adapt for 2D
|
const uint16_t strips = SEGMENT.nrOfVStrips(); // adapt for 2D
|
||||||
const size_t maxNumBalls = 16;
|
const size_t maxNumBalls = 16;
|
||||||
@ -2848,6 +2864,7 @@ static const char _data_FX_MODE_BOUNCINGBALLS[] PROGMEM = "Bouncing Balls@Gravit
|
|||||||
* Sinelon stolen from FASTLED examples
|
* Sinelon stolen from FASTLED examples
|
||||||
*/
|
*/
|
||||||
uint16_t sinelon_base(bool dual, bool rainbow=false) {
|
uint16_t sinelon_base(bool dual, bool rainbow=false) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
SEGMENT.fade_out(SEGMENT.intensity);
|
SEGMENT.fade_out(SEGMENT.intensity);
|
||||||
uint16_t pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1);
|
uint16_t pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1);
|
||||||
if (SEGENV.call == 0) SEGENV.aux0 = pos;
|
if (SEGENV.call == 0) SEGENV.aux0 = pos;
|
||||||
@ -2945,6 +2962,7 @@ typedef struct Spark {
|
|||||||
* modified from https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Popcorn.h
|
* modified from https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Popcorn.h
|
||||||
*/
|
*/
|
||||||
uint16_t mode_popcorn(void) {
|
uint16_t mode_popcorn(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
//allocate segment data
|
//allocate segment data
|
||||||
uint16_t strips = SEGMENT.nrOfVStrips();
|
uint16_t strips = SEGMENT.nrOfVStrips();
|
||||||
uint16_t dataSize = sizeof(spark) * maxNumPopcorn;
|
uint16_t dataSize = sizeof(spark) * maxNumPopcorn;
|
||||||
@ -3087,7 +3105,7 @@ uint16_t mode_candle()
|
|||||||
{
|
{
|
||||||
return candle(false);
|
return candle(false);
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_CANDLE[] PROGMEM = "Candle@!,!;!,!;!;1;sx=96,ix=224,pal=0";
|
static const char _data_FX_MODE_CANDLE[] PROGMEM = "Candle@!,!;!,!;!;01;sx=96,ix=224,pal=0";
|
||||||
|
|
||||||
|
|
||||||
uint16_t mode_candle_multi()
|
uint16_t mode_candle_multi()
|
||||||
@ -3118,6 +3136,7 @@ typedef struct particle {
|
|||||||
} star;
|
} star;
|
||||||
|
|
||||||
uint16_t mode_starburst(void) {
|
uint16_t mode_starburst(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t maxData = FAIR_DATA_PER_SEG; //ESP8266: 256 ESP32: 640
|
uint16_t maxData = FAIR_DATA_PER_SEG; //ESP8266: 256 ESP32: 640
|
||||||
uint8_t segs = strip.getActiveSegmentsNum();
|
uint8_t segs = strip.getActiveSegmentsNum();
|
||||||
if (segs <= (strip.getMaxSegments() /2)) maxData *= 2; //ESP8266: 512 if <= 8 segs ESP32: 1280 if <= 16 segs
|
if (segs <= (strip.getMaxSegments() /2)) maxData *= 2; //ESP8266: 512 if <= 8 segs ESP32: 1280 if <= 16 segs
|
||||||
@ -3237,6 +3256,7 @@ static const char _data_FX_MODE_STARBURST[] PROGMEM = "Fireworks Starburst@Chanc
|
|||||||
*/
|
*/
|
||||||
uint16_t mode_exploding_fireworks(void)
|
uint16_t mode_exploding_fireworks(void)
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
const uint16_t cols = strip.isMatrix ? SEGMENT.virtualWidth() : 1;
|
const uint16_t cols = strip.isMatrix ? SEGMENT.virtualWidth() : 1;
|
||||||
const uint16_t rows = strip.isMatrix ? SEGMENT.virtualHeight() : SEGMENT.virtualLength();
|
const uint16_t rows = strip.isMatrix ? SEGMENT.virtualHeight() : SEGMENT.virtualLength();
|
||||||
|
|
||||||
@ -3371,6 +3391,7 @@ static const char _data_FX_MODE_EXPLODING_FIREWORKS[] PROGMEM = "Fireworks 1D@Gr
|
|||||||
*/
|
*/
|
||||||
uint16_t mode_drip(void)
|
uint16_t mode_drip(void)
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
//allocate segment data
|
//allocate segment data
|
||||||
uint16_t strips = SEGMENT.nrOfVStrips();
|
uint16_t strips = SEGMENT.nrOfVStrips();
|
||||||
const int maxNumDrops = 4;
|
const int maxNumDrops = 4;
|
||||||
@ -3466,6 +3487,7 @@ typedef struct Tetris {
|
|||||||
} tetris;
|
} tetris;
|
||||||
|
|
||||||
uint16_t mode_tetrix(void) {
|
uint16_t mode_tetrix(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint16_t strips = SEGMENT.nrOfVStrips(); // allow running on virtual strips (columns in 2D segment)
|
uint16_t strips = SEGMENT.nrOfVStrips(); // allow running on virtual strips (columns in 2D segment)
|
||||||
uint16_t dataSize = sizeof(tetris);
|
uint16_t dataSize = sizeof(tetris);
|
||||||
if (!SEGENV.allocateData(dataSize * strips)) return mode_static(); //allocation failed
|
if (!SEGENV.allocateData(dataSize * strips)) return mode_static(); //allocation failed
|
||||||
@ -3508,7 +3530,7 @@ uint16_t mode_tetrix(void) {
|
|||||||
if (drop->pos > drop->stack) { // fall until top of stack
|
if (drop->pos > drop->stack) { // fall until top of stack
|
||||||
drop->pos -= drop->speed; // may add gravity as: speed += gravity
|
drop->pos -= drop->speed; // may add gravity as: speed += gravity
|
||||||
if (int(drop->pos) < int(drop->stack)) drop->pos = drop->stack;
|
if (int(drop->pos) < int(drop->stack)) drop->pos = drop->stack;
|
||||||
for (int i=int(drop->pos); i<SEGLEN; i++) {
|
for (int i = int(drop->pos); i < SEGLEN; i++) {
|
||||||
uint32_t col = i<int(drop->pos)+drop->brick ? SEGMENT.color_from_palette(drop->col, false, false, 0) : SEGCOLOR(1);
|
uint32_t col = i<int(drop->pos)+drop->brick ? SEGMENT.color_from_palette(drop->col, false, false, 0) : SEGCOLOR(1);
|
||||||
SEGMENT.setPixelColor(indexToVStrip(i, stripNr), col);
|
SEGMENT.setPixelColor(indexToVStrip(i, stripNr), col);
|
||||||
}
|
}
|
||||||
@ -3523,7 +3545,7 @@ uint16_t mode_tetrix(void) {
|
|||||||
drop->brick = 0; // reset brick size (no more growing)
|
drop->brick = 0; // reset brick size (no more growing)
|
||||||
if (drop->step > millis()) {
|
if (drop->step > millis()) {
|
||||||
// allow fading of virtual strip
|
// allow fading of virtual strip
|
||||||
for (int i=0; i<SEGLEN; i++) SEGMENT.blendPixelColor(indexToVStrip(i, stripNr), SEGCOLOR(1), 25); // 10% blend
|
for (int i = 0; i < SEGLEN; i++) SEGMENT.blendPixelColor(indexToVStrip(i, stripNr), SEGCOLOR(1), 25); // 10% blend
|
||||||
} else {
|
} else {
|
||||||
drop->stack = 0; // reset brick stack size
|
drop->stack = 0; // reset brick stack size
|
||||||
drop->step = 0; // proceed with next brick
|
drop->step = 0; // proceed with next brick
|
||||||
@ -3650,7 +3672,7 @@ uint16_t mode_heartbeat(void) {
|
|||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_HEARTBEAT[] PROGMEM = "Heartbeat@!,!;!,!;!;;m12=1";
|
static const char _data_FX_MODE_HEARTBEAT[] PROGMEM = "Heartbeat@!,!;!,!;!;01;m12=1";
|
||||||
|
|
||||||
|
|
||||||
// "Pacifica"
|
// "Pacifica"
|
||||||
@ -3774,6 +3796,7 @@ static const char _data_FX_MODE_PACIFICA[] PROGMEM = "Pacifica@!,Angle;;!;;pal=5
|
|||||||
* Mode simulates a gradual sunrise
|
* Mode simulates a gradual sunrise
|
||||||
*/
|
*/
|
||||||
uint16_t mode_sunrise() {
|
uint16_t mode_sunrise() {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
//speed 0 - static sun
|
//speed 0 - static sun
|
||||||
//speed 1 - 60: sunrise time in minutes
|
//speed 1 - 60: sunrise time in minutes
|
||||||
//speed 60 - 120 : sunset time in minutes - 60;
|
//speed 60 - 120 : sunset time in minutes - 60;
|
||||||
@ -3867,7 +3890,7 @@ static const char _data_FX_MODE_PHASEDNOISE[] PROGMEM = "Phased Noise@!,!;!,!;!"
|
|||||||
uint16_t mode_twinkleup(void) { // A very short twinkle routine with fade-in and dual controls. By Andrew Tuline.
|
uint16_t mode_twinkleup(void) { // A very short twinkle routine with fade-in and dual controls. By Andrew Tuline.
|
||||||
random16_set_seed(535); // The randomizer needs to be re-set each time through the loop in order for the same 'random' numbers to be the same each time through.
|
random16_set_seed(535); // The randomizer needs to be re-set each time through the loop in order for the same 'random' numbers to be the same each time through.
|
||||||
|
|
||||||
for (int i = 0; i<SEGLEN; i++) {
|
for (int i = 0; i < SEGLEN; i++) {
|
||||||
uint8_t ranstart = random8(); // The starting value (aka brightness) for each pixel. Must be consistent each time through the loop for this to work.
|
uint8_t ranstart = random8(); // The starting value (aka brightness) for each pixel. Must be consistent each time through the loop for this to work.
|
||||||
uint8_t pixBri = sin8(ranstart + 16 * strip.now/(256-SEGMENT.speed));
|
uint8_t pixBri = sin8(ranstart + 16 * strip.now/(256-SEGMENT.speed));
|
||||||
if (random8() > SEGMENT.intensity) pixBri = 0;
|
if (random8() > SEGMENT.intensity) pixBri = 0;
|
||||||
@ -3929,7 +3952,7 @@ uint16_t mode_sinewave(void) { // Adjustable sinewave. By Andrew Tul
|
|||||||
SEGENV.step += SEGMENT.speed/16; // Speed of animation.
|
SEGENV.step += SEGMENT.speed/16; // Speed of animation.
|
||||||
uint16_t freq = SEGMENT.intensity/4;//SEGMENT.fft2/8; // Frequency of the signal.
|
uint16_t freq = SEGMENT.intensity/4;//SEGMENT.fft2/8; // Frequency of the signal.
|
||||||
|
|
||||||
for (int i=0; i<SEGLEN; i++) { // For each of the LED's in the strand, set a brightness based on a wave as follows:
|
for (int i = 0; i < SEGLEN; i++) { // For each of the LED's in the strand, set a brightness based on a wave as follows:
|
||||||
int pixBri = cubicwave8((i*freq)+SEGENV.step);//qsuba(cubicwave8((i*freq)+SEGENV.step), (255-SEGMENT.intensity)); // qsub sets a minimum value called thiscutoff. If < thiscutoff, then bright = 0. Otherwise, bright = 128 (as defined in qsub)..
|
int pixBri = cubicwave8((i*freq)+SEGENV.step);//qsuba(cubicwave8((i*freq)+SEGENV.step), (255-SEGMENT.intensity)); // qsub sets a minimum value called thiscutoff. If < thiscutoff, then bright = 0. Otherwise, bright = 128 (as defined in qsub)..
|
||||||
//setPixCol(i, i*colorIndex/255, pixBri);
|
//setPixCol(i, i*colorIndex/255, pixBri);
|
||||||
SEGMENT.setPixelColor(i, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(i*colorIndex/255, false, PALETTE_SOLID_WRAP, 0), pixBri));
|
SEGMENT.setPixelColor(i, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(i*colorIndex/255, false, PALETTE_SOLID_WRAP, 0), pixBri));
|
||||||
@ -3984,6 +4007,7 @@ static const char _data_FX_MODE_FLOW[] PROGMEM = "Flow@!,Zones;;!;;m12=1"; //ver
|
|||||||
*/
|
*/
|
||||||
uint16_t mode_chunchun(void)
|
uint16_t mode_chunchun(void)
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
SEGMENT.fade_out(254); // add a bit of trail
|
SEGMENT.fade_out(254); // add a bit of trail
|
||||||
uint16_t counter = strip.now * (6 + (SEGMENT.speed >> 4));
|
uint16_t counter = strip.now * (6 + (SEGMENT.speed >> 4));
|
||||||
uint16_t numBirds = 2 + (SEGLEN >> 3); // 2 + 1/8 of a segment
|
uint16_t numBirds = 2 + (SEGLEN >> 3); // 2 + 1/8 of a segment
|
||||||
@ -4035,6 +4059,7 @@ typedef struct Spotlight {
|
|||||||
*/
|
*/
|
||||||
uint16_t mode_dancing_shadows(void)
|
uint16_t mode_dancing_shadows(void)
|
||||||
{
|
{
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
uint8_t numSpotlights = map(SEGMENT.intensity, 0, 255, 2, SPOT_MAX_COUNT); // 49 on 32 segment ESP32, 17 on 16 segment ESP8266
|
uint8_t numSpotlights = map(SEGMENT.intensity, 0, 255, 2, SPOT_MAX_COUNT); // 49 on 32 segment ESP32, 17 on 16 segment ESP8266
|
||||||
bool initialize = SEGENV.aux0 != numSpotlights;
|
bool initialize = SEGENV.aux0 != numSpotlights;
|
||||||
SEGENV.aux0 = numSpotlights;
|
SEGENV.aux0 = numSpotlights;
|
||||||
@ -4161,7 +4186,7 @@ uint16_t mode_washing_machine(void) {
|
|||||||
|
|
||||||
SEGENV.step += (speed * 128.0f);
|
SEGENV.step += (speed * 128.0f);
|
||||||
|
|
||||||
for (int i=0; i<SEGLEN; i++) {
|
for (int i = 0; i < SEGLEN; i++) {
|
||||||
uint8_t col = sin8(((SEGMENT.intensity / 25 + 1) * 255 * i / SEGLEN) + (SEGENV.step >> 7));
|
uint8_t col = sin8(((SEGMENT.intensity / 25 + 1) * 255 * i / SEGLEN) + (SEGENV.step >> 7));
|
||||||
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(col, false, PALETTE_SOLID_WRAP, 3));
|
SEGMENT.setPixelColor(i, SEGMENT.color_from_palette(col, false, PALETTE_SOLID_WRAP, 3));
|
||||||
}
|
}
|
||||||
@ -4498,7 +4523,7 @@ static const char _data_FX_MODE_AURORA[] PROGMEM = "Aurora@!,!;1,2,3;!;;sx=24,pa
|
|||||||
// 16 bit perlinmove. Use Perlin Noise instead of sinewaves for movement. By Andrew Tuline.
|
// 16 bit perlinmove. Use Perlin Noise instead of sinewaves for movement. By Andrew Tuline.
|
||||||
// Controls are speed, # of pixels, faderate.
|
// Controls are speed, # of pixels, faderate.
|
||||||
uint16_t mode_perlinmove(void) {
|
uint16_t mode_perlinmove(void) {
|
||||||
|
if (SEGLEN == 1) return mode_static();
|
||||||
SEGMENT.fade_out(255-SEGMENT.custom1);
|
SEGMENT.fade_out(255-SEGMENT.custom1);
|
||||||
for (int i = 0; i < SEGMENT.intensity/16 + 1; i++) {
|
for (int i = 0; i < SEGMENT.intensity/16 + 1; i++) {
|
||||||
uint16_t locn = inoise16(millis()*128/(260-SEGMENT.speed)+i*15000, millis()*128/(260-SEGMENT.speed)); // Get a new pixel location from moving noise.
|
uint16_t locn = inoise16(millis()*128/(260-SEGMENT.speed)+i*15000, millis()*128/(260-SEGMENT.speed)); // Get a new pixel location from moving noise.
|
||||||
@ -6354,7 +6379,7 @@ uint16_t mode_matripix(void) { // Matripix. By Andrew Tuline.
|
|||||||
SEGENV.aux0 = secondHand;
|
SEGENV.aux0 = secondHand;
|
||||||
|
|
||||||
int pixBri = volumeRaw * SEGMENT.intensity / 64;
|
int pixBri = volumeRaw * SEGMENT.intensity / 64;
|
||||||
for (int i=0; i<SEGLEN-1; i++) SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i+1)); // shift left
|
for (int i = 0; i < SEGLEN-1; i++) SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i+1)); // shift left
|
||||||
SEGMENT.setPixelColor(SEGLEN-1, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0), pixBri));
|
SEGMENT.setPixelColor(SEGLEN-1, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0), pixBri));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6525,7 +6550,7 @@ uint16_t mode_plasmoid(void) { // Plasmoid. By Andrew Tuline.
|
|||||||
plasmoip->thisphase += beatsin8(6,-4,4); // You can change direction and speed individually.
|
plasmoip->thisphase += beatsin8(6,-4,4); // You can change direction and speed individually.
|
||||||
plasmoip->thatphase += beatsin8(7,-4,4); // Two phase values to make a complex pattern. By Andrew Tuline.
|
plasmoip->thatphase += beatsin8(7,-4,4); // Two phase values to make a complex pattern. By Andrew Tuline.
|
||||||
|
|
||||||
for (int i=0; i<SEGLEN; i++) { // For each of the LED's in the strand, set a brightness based on a wave as follows.
|
for (int i = 0; i < SEGLEN; i++) { // For each of the LED's in the strand, set a brightness based on a wave as follows.
|
||||||
// updated, similar to "plasma" effect - softhack007
|
// updated, similar to "plasma" effect - softhack007
|
||||||
uint8_t thisbright = cubicwave8(((i*(1 + (3*SEGMENT.speed/32)))+plasmoip->thisphase) & 0xFF)/2;
|
uint8_t thisbright = cubicwave8(((i*(1 + (3*SEGMENT.speed/32)))+plasmoip->thisphase) & 0xFF)/2;
|
||||||
thisbright += cos8(((i*(97 +(5*SEGMENT.speed/32)))+plasmoip->thatphase) & 0xFF)/2; // Let's munge the brightness a bit and animate it all with the phases.
|
thisbright += cos8(((i*(97 +(5*SEGMENT.speed/32)))+plasmoip->thatphase) & 0xFF)/2; // Let's munge the brightness a bit and animate it all with the phases.
|
||||||
@ -7078,7 +7103,7 @@ uint16_t mode_waterfall(void) { // Waterfall. By: Andrew Tulin
|
|||||||
} else {
|
} else {
|
||||||
SEGMENT.setPixelColor(SEGLEN-1, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(pixCol+SEGMENT.intensity, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude));
|
SEGMENT.setPixelColor(SEGLEN-1, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(pixCol+SEGMENT.intensity, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude));
|
||||||
}
|
}
|
||||||
for (int i=0; i<SEGLEN-1; i++) SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i+1)); // shift left
|
for (int i = 0; i < SEGLEN-1; i++) SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i+1)); // shift left
|
||||||
}
|
}
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
|
@ -1415,45 +1415,31 @@ void WS2812FX::resetSegments() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WS2812FX::makeAutoSegments(bool forceReset) {
|
void WS2812FX::makeAutoSegments(bool forceReset) {
|
||||||
if (isMatrix) {
|
if (autoSegments) { //make one segment per bus
|
||||||
#ifndef WLED_DISABLE_2D
|
|
||||||
// only create 1 2D segment
|
|
||||||
if (forceReset || getSegmentsNum() == 0) resetSegments(); // initialises 1 segment
|
|
||||||
else if (getActiveSegmentsNum() == 1) {
|
|
||||||
size_t i = getLastActiveSegmentId();
|
|
||||||
_segments[i].start = 0;
|
|
||||||
_segments[i].stop = Segment::maxWidth;
|
|
||||||
_segments[i].startY = 0;
|
|
||||||
_segments[i].stopY = Segment::maxHeight;
|
|
||||||
_segments[i].grouping = 1;
|
|
||||||
_segments[i].spacing = 0;
|
|
||||||
_mainSegment = i;
|
|
||||||
}
|
|
||||||
// do we have LEDs after the matrix? (ignore buses)
|
|
||||||
if (autoSegments && _length > Segment::maxWidth*Segment::maxHeight /*&& getActiveSegmentsNum() == 2*/) {
|
|
||||||
if (_segments.size() == getLastActiveSegmentId()+1U) {
|
|
||||||
_segments.push_back(Segment(Segment::maxWidth*Segment::maxHeight, _length));
|
|
||||||
} else {
|
|
||||||
size_t i = getLastActiveSegmentId() + 1;
|
|
||||||
_segments[i].start = Segment::maxWidth*Segment::maxHeight;
|
|
||||||
_segments[i].stop = _length;
|
|
||||||
_segments[i].startY = 0;
|
|
||||||
_segments[i].stopY = 1;
|
|
||||||
_segments[i].grouping = 1;
|
|
||||||
_segments[i].spacing = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
} else if (autoSegments) { //make one segment per bus
|
|
||||||
uint16_t segStarts[MAX_NUM_SEGMENTS] = {0};
|
uint16_t segStarts[MAX_NUM_SEGMENTS] = {0};
|
||||||
uint16_t segStops [MAX_NUM_SEGMENTS] = {0};
|
uint16_t segStops [MAX_NUM_SEGMENTS] = {0};
|
||||||
uint8_t s = 0;
|
size_t s = 0;
|
||||||
for (uint8_t i = 0; i < busses.getNumBusses(); i++) {
|
|
||||||
|
#ifndef WLED_DISABLE_2D
|
||||||
|
// 2D segment is the 1st one using entire matrix
|
||||||
|
if (isMatrix) {
|
||||||
|
segStarts[0] = 0;
|
||||||
|
segStops[0] = Segment::maxWidth*Segment::maxHeight;
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (size_t i = s; i < busses.getNumBusses(); i++) {
|
||||||
Bus* b = busses.getBus(i);
|
Bus* b = busses.getBus(i);
|
||||||
|
|
||||||
segStarts[s] = b->getStart();
|
segStarts[s] = b->getStart();
|
||||||
segStops[s] = segStarts[s] + b->getLength();
|
segStops[s] = segStarts[s] + b->getLength();
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_2D
|
||||||
|
if (isMatrix && segStops[s] < Segment::maxWidth*Segment::maxHeight) continue; // ignore buses comprising matrix
|
||||||
|
if (isMatrix && segStarts[s] < Segment::maxWidth*Segment::maxHeight) segStarts[s] = Segment::maxWidth*Segment::maxHeight;
|
||||||
|
#endif
|
||||||
|
|
||||||
//check for overlap with previous segments
|
//check for overlap with previous segments
|
||||||
for (size_t j = 0; j < s; j++) {
|
for (size_t j = 0; j < s; j++) {
|
||||||
if (segStops[j] > segStarts[s] && segStarts[j] < segStops[s]) {
|
if (segStops[j] > segStarts[s] && segStarts[j] < segStops[s]) {
|
||||||
@ -1465,24 +1451,40 @@ void WS2812FX::makeAutoSegments(bool forceReset) {
|
|||||||
}
|
}
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
|
|
||||||
_segments.clear();
|
_segments.clear();
|
||||||
_segments.reserve(s); // prevent reallocations
|
_segments.reserve(s); // prevent reallocations
|
||||||
for (size_t i = 0; i < s; i++) {
|
// there is always at least one segment (but we need to differentiate between 1D and 2D)
|
||||||
Segment seg = Segment(segStarts[i], segStops[i]);
|
#ifndef WLED_DISABLE_2D
|
||||||
seg.selected = true;
|
if (isMatrix)
|
||||||
_segments.push_back(seg);
|
_segments.push_back(Segment(0, Segment::maxWidth, 0, Segment::maxHeight));
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
_segments.push_back(Segment(segStarts[0], segStops[0]));
|
||||||
|
for (size_t i = 1; i < s; i++) {
|
||||||
|
_segments.push_back(Segment(segStarts[i], segStops[i]));
|
||||||
}
|
}
|
||||||
_mainSegment = 0;
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (forceReset || getSegmentsNum() == 0) resetSegments();
|
if (forceReset || getSegmentsNum() == 0) resetSegments();
|
||||||
//expand the main seg to the entire length, but only if there are no other segments, or reset is forced
|
//expand the main seg to the entire length, but only if there are no other segments, or reset is forced
|
||||||
else if (getActiveSegmentsNum() == 1) {
|
else if (getActiveSegmentsNum() == 1) {
|
||||||
size_t i = getLastActiveSegmentId();
|
size_t i = getLastActiveSegmentId();
|
||||||
|
#ifndef WLED_DISABLE_2D
|
||||||
|
_segments[i].start = 0;
|
||||||
|
_segments[i].stop = Segment::maxWidth;
|
||||||
|
_segments[i].startY = 0;
|
||||||
|
_segments[i].stopY = Segment::maxHeight;
|
||||||
|
_segments[i].grouping = 1;
|
||||||
|
_segments[i].spacing = 0;
|
||||||
|
#else
|
||||||
_segments[i].start = 0;
|
_segments[i].start = 0;
|
||||||
_segments[i].stop = _length;
|
_segments[i].stop = _length;
|
||||||
_mainSegment = 0;
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_mainSegment = 0;
|
||||||
|
|
||||||
fixInvalidSegments();
|
fixInvalidSegments();
|
||||||
}
|
}
|
||||||
|
@ -398,6 +398,7 @@ button {
|
|||||||
margin: 0 auto; /* add 5px; if you want some vertical space but looks ugly */
|
margin: 0 auto; /* add 5px; if you want some vertical space but looks ugly */
|
||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
padding-bottom: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter, .option {
|
.filter, .option {
|
||||||
@ -425,14 +426,14 @@ button {
|
|||||||
box-shadow: 4px 4px 10px 4px var(--c-1);
|
box-shadow: 4px 4px 10px 4px var(--c-1);
|
||||||
color: var(--c-f);
|
color: var(--c-f);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 5px 10px;
|
padding: 4px 8px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
|
|
||||||
/* Position the tooltip text */
|
/* Position the tooltip text */
|
||||||
width: 160px;
|
width: 160px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
bottom: 100%;
|
bottom: 80%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
margin-left: -92px;
|
margin-left: -92px;
|
||||||
|
|
||||||
@ -731,7 +732,11 @@ input[type=range]::-moz-range-thumb {
|
|||||||
|
|
||||||
#Colors .sliderwrap {
|
#Colors .sliderwrap {
|
||||||
width: 260px;
|
width: 260px;
|
||||||
margin: 10px 0 0;
|
margin: 4px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Colors {
|
||||||
|
padding-top: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dynamically hide brightness slider label */
|
/* Dynamically hide brightness slider label */
|
||||||
@ -747,10 +752,11 @@ input[type=range]::-moz-range-thumb {
|
|||||||
#picker, #rgbwrap, #kwrap, #wwrap, #wbal, #vwrap, #qcs-w, #hexw, #pall, #ledmap {
|
#picker, #rgbwrap, #kwrap, #wwrap, #wbal, #vwrap, #qcs-w, #hexw, #pall, #ledmap {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 260px;
|
width: 260px;
|
||||||
|
background-color: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
#picker {
|
#picker {
|
||||||
margin-top: 10px;
|
margin-top: -10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* buttons */
|
/* buttons */
|
||||||
@ -1409,6 +1415,9 @@ TD .checkmark, TD .radiomark {
|
|||||||
.expanded {
|
.expanded {
|
||||||
display: inline-block !important;
|
display: inline-block !important;
|
||||||
}
|
}
|
||||||
|
.expanded .segin.hide, .expanded .presin.hide, .expanded .sbs.hide {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.m6 {
|
.m6 {
|
||||||
margin: 6px 0;
|
margin: 6px 0;
|
||||||
|
@ -88,33 +88,33 @@
|
|||||||
<div class ="container">
|
<div class ="container">
|
||||||
<div id="Colors" class="tabcontent">
|
<div id="Colors" class="tabcontent">
|
||||||
<div id="picker" class="noslide"></div>
|
<div id="picker" class="noslide"></div>
|
||||||
<div id="hwrap">
|
<div id="hwrap" class="slider">
|
||||||
<!--p class="labels hd">Hue</p-->
|
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderH" class="noslide" oninput="fromH()" onchange="setColor(0)" max="359" min="0" type="range" value="0" step="any">
|
<input id="sliderH" class="noslide" oninput="fromH()" onchange="setColor(0)" max="359" min="0" type="range" value="0" step="any">
|
||||||
<div class="sliderdisplay" style="background: linear-gradient(90deg, #f00 2%, #ff0 19%, #0f0 35%, #0ff 52%, #00f 68%, #f0f 85%, #f00)"></div>
|
<div class="sliderdisplay" style="background: linear-gradient(90deg, #f00 2%, #ff0 19%, #0f0 35%, #0ff 52%, #00f 68%, #f0f 85%, #f00)"></div>
|
||||||
</div><br>
|
</div>
|
||||||
|
<span class="tooltiptext">Hue</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="swrap">
|
<div id="swrap" class="slider">
|
||||||
<!--p class="labels hd">Saturation</p-->
|
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderS" class="noslide" oninput="fromS()" onchange="setColor(0)" max="100" min="0" type="range" value="100" step="any">
|
<input id="sliderS" class="noslide" oninput="fromS()" onchange="setColor(0)" max="100" min="0" type="range" value="100" step="any">
|
||||||
<div class="sliderdisplay" style="background: linear-gradient(90deg, #aaa 0%, #f00)"></div>
|
<div class="sliderdisplay" style="background: linear-gradient(90deg, #aaa 0%, #f00)"></div>
|
||||||
</div><br>
|
</div>
|
||||||
|
<span class="tooltiptext">Saturation</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="vwrap">
|
<div id="vwrap" class="slider">
|
||||||
<!--p class="labels hd">Value</p-->
|
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderV" class="noslide" oninput="fromV()" onchange="setColor(0)" max="100" min="0" type="range" value="100" step="any" />
|
<input id="sliderV" class="noslide" oninput="fromV()" onchange="setColor(0)" max="100" min="0" type="range" value="100" step="any" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div><br>
|
</div>
|
||||||
|
<span class="tooltiptext">Value/Brightness</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="kwrap">
|
<div id="kwrap" class="slider">
|
||||||
<!--p class="labels hd">Temperature</p-->
|
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderK" class="noslide" oninput="fromK()" onchange="setColor(0)" max="10091" min="1900" type="range" value="6550" />
|
<input id="sliderK" class="noslide" ninput="fromK()" onchange="setColor(0)" max="10091" min="1900" type="range" value="6550" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<span class="tooltiptext">Kelvin/Temperature</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="rgbwrap">
|
<div id="rgbwrap">
|
||||||
<p class="labels hd">RGB color</p>
|
<p class="labels hd">RGB color</p>
|
||||||
@ -137,19 +137,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="wwrap">
|
<div id="wwrap" class="slider">
|
||||||
<p class="labels hd">White channel</p>
|
<!--p class="labels hd">White channel</p-->
|
||||||
<div id="whibri" class="sliderwrap il">
|
<div id="whibri" class="sliderwrap il">
|
||||||
<input id="sliderW" class="noslide" oninput="fromW()" onchange="setColor(0)" max="255" min="0" type="range" value="128" />
|
<input id="sliderW" class="noslide" oninput="fromW()" onchange="setColor(0)" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<span class="tooltiptext">White channel</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="wbal">
|
<div id="wbal" class="slider">
|
||||||
<p class="labels hd">White balance</p>
|
<!--p class="labels hd">White balance</p-->
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderA" class="noslide" onchange="setBalance(this.value)" max="255" min="0" type="range" value="128" />
|
<input id="sliderA" class="noslide" onchange="setBalance(this.value)" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<span class="tooltiptext">White balance</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="qcs-w">
|
<div id="qcs-w">
|
||||||
<div class="qcs" onclick="pC('#ff0000');" title="Red" style="background-color:#ff0000;"></div>
|
<div class="qcs" onclick="pC('#ff0000');" title="Red" style="background-color:#ff0000;"></div>
|
||||||
@ -310,7 +312,7 @@
|
|||||||
<div id="segutil2">
|
<div id="segutil2">
|
||||||
<button class="btn btn-s" id="rsbtn" onclick="rSegs()">Reset segments</button>
|
<button class="btn btn-s" id="rsbtn" onclick="rSegs()">Reset segments</button>
|
||||||
</div>
|
</div>
|
||||||
<p>Transition: <input id="tt" class="noslide" type="number" min="0" max="65.5" step="0.1" value="0.7"> s</p>
|
<p>Transition: <input id="tt" type="number" min="0" max="65.5" step="0.1" value="0.7"> s</p>
|
||||||
<p id="ledmap" class="hide"></p>
|
<p id="ledmap" class="hide"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ var isOn = false, nlA = false, isLv = false, isInfo = false, isNodes = false, sy
|
|||||||
var hasWhite = false, hasRGB = false, hasCCT = false;
|
var hasWhite = false, hasRGB = false, hasCCT = false;
|
||||||
var nlDur = 60, nlTar = 0;
|
var nlDur = 60, nlTar = 0;
|
||||||
var nlMode = false;
|
var nlMode = false;
|
||||||
|
var segLmax = 0; // size (in pixels) of largest selected segment
|
||||||
var selectedFx = 0;
|
var selectedFx = 0;
|
||||||
var selectedPal = 0;
|
var selectedPal = 0;
|
||||||
var csel = 0; // selected color slot (0-2)
|
var csel = 0; // selected color slot (0-2)
|
||||||
@ -746,7 +747,7 @@ function populateSegments(s)
|
|||||||
<i class="icons e-icon flr" id="sege${i}" onclick="expand(${i})"></i>
|
<i class="icons e-icon flr" id="sege${i}" onclick="expand(${i})"></i>
|
||||||
${cfg.comp.segpwr?segp:''}
|
${cfg.comp.segpwr?segp:''}
|
||||||
<div class="segin" id="seg${i}in">
|
<div class="segin" id="seg${i}in">
|
||||||
<input type="text" class="ptxt noslide" id="seg${i}t" autocomplete="off" maxlength=32 value="${inst.n?inst.n:""}" placeholder="Enter name..."/>
|
<input type="text" class="ptxt" id="seg${i}t" autocomplete="off" maxlength=32 value="${inst.n?inst.n:""}" placeholder="Enter name..."/>
|
||||||
<table class="infot segt">
|
<table class="infot segt">
|
||||||
<tr>
|
<tr>
|
||||||
<td>${isM&&staX<mw*mh?'Start X':'Start LED'}</td>
|
<td>${isM&&staX<mw*mh?'Start X':'Start LED'}</td>
|
||||||
@ -754,24 +755,24 @@ function populateSegments(s)
|
|||||||
<td>${isM&&staX<mw*mh?'':'Offset'}</td>
|
<td>${isM&&staX<mw*mh?'':'Offset'}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input class="noslide segn" id="seg${i}s" type="number" min="0" max="${(isM&&staX<mw*mh?mw:ledCount)-1}" value="${staX}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
<td><input class="segn" id="seg${i}s" type="number" min="0" max="${(isM&&staX<mw*mh?mw:ledCount)-1}" value="${staX}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
||||||
<td><input class="noslide segn" id="seg${i}e" type="number" min="0" max="${(isM&&staX<mw*mh?mw:ledCount)}" value="${stoX-(cfg.comp.seglen?staX:0)}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
<td><input class="segn" id="seg${i}e" type="number" min="0" max="${(isM&&staX<mw*mh?mw:ledCount)}" value="${stoX-(cfg.comp.seglen?staX:0)}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
||||||
<td style="text-align:revert;">${isM&&staX<mw*mh?miXck+'<br>'+rvXck:''}<input class="noslide segn ${isM&&staX<mw*mh?'hide':''}" id="seg${i}of" type="number" value="${inst.of}" oninput="updateLen(${i})"></td>
|
<td style="text-align:revert;">${isM&&staX<mw*mh?miXck+'<br>'+rvXck:''}<input class="segn ${isM&&staX<mw*mh?'hide':''}" id="seg${i}of" type="number" value="${inst.of}" oninput="updateLen(${i})"></td>
|
||||||
</tr>
|
</tr>
|
||||||
${isM&&staX<mw*mh ? '<tr><td>Start Y</td><td>'+(cfg.comp.seglen?'Height':'Stop Y')+'</td><td></td></tr>'+
|
${isM&&staX<mw*mh ? '<tr><td>Start Y</td><td>'+(cfg.comp.seglen?'Height':'Stop Y')+'</td><td></td></tr>'+
|
||||||
'<tr>'+
|
'<tr>'+
|
||||||
'<td><input class="noslide segn" id="seg'+i+'sY" type="number" min="0" max="'+(mh-1)+'" value="'+staY+'" oninput="updateLen('+i+')" onkeydown="segEnter('+i+')"></td>'+
|
'<td><input class="segn" id="seg'+i+'sY" type="number" min="0" max="'+(mh-1)+'" value="'+staY+'" oninput="updateLen('+i+')" onkeydown="segEnter('+i+')"></td>'+
|
||||||
'<td><input class="noslide segn" id="seg'+i+'eY" type="number" min="0" max="'+mh+'" value="'+(stoY-(cfg.comp.seglen?staY:0))+'" oninput="updateLen('+i+')" onkeydown="segEnter('+i+')"></td>'+
|
'<td><input class="segn" id="seg'+i+'eY" type="number" min="0" max="'+mh+'" value="'+(stoY-(cfg.comp.seglen?staY:0))+'" oninput="updateLen('+i+')" onkeydown="segEnter('+i+')"></td>'+
|
||||||
'<td style="text-align:revert;">'+miYck+'<br>'+rvYck+'</td>'+
|
'<td style="text-align:revert;">'+miYck+'<br>'+rvYck+'</td>'+
|
||||||
'</tr>':''}
|
'</tr>':''}
|
||||||
<tr>
|
<tr>
|
||||||
<td>Grouping</td>
|
<td>Grouping</td>
|
||||||
<td>Spacing</td>
|
<td>Spacing</td>
|
||||||
<td><!--Apply--></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input class="noslide segn" id="seg${i}grp" type="number" min="1" max="255" value="${inst.grp}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
<td><input class="segn" id="seg${i}grp" type="number" min="1" max="255" value="${inst.grp}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
||||||
<td><input class="noslide segn" id="seg${i}spc" type="number" min="0" max="255" value="${inst.spc}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
<td><input class="segn" id="seg${i}spc" type="number" min="0" max="255" value="${inst.spc}" oninput="updateLen(${i})" onkeydown="segEnter(${i})"></td>
|
||||||
<td style="text-align:revert;"><button class="btn btn-xs" onclick="setSeg(${i})"><i class="icons btn-icon" id="segc${i}"></i></button></td>
|
<td style="text-align:revert;"><button class="btn btn-xs" onclick="setSeg(${i})"><i class="icons btn-icon" id="segc${i}"></i></button></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -801,10 +802,13 @@ function populateSegments(s)
|
|||||||
for (var i = 0; i <= lSeg; i++) {
|
for (var i = 0; i <= lSeg; i++) {
|
||||||
updateLen(i);
|
updateLen(i);
|
||||||
updateTrail(gId(`seg${i}bri`));
|
updateTrail(gId(`seg${i}bri`));
|
||||||
gId(`segr${i}`).style.display = "none";
|
gId(`segr${i}`).classList.add("hide");
|
||||||
if (!gId(`seg${i}sel`).checked && gId('selall')) gId('selall').checked = false; // uncheck if at least one is unselected.
|
if (!gId(`seg${i}sel`).checked && gId('selall')) gId('selall').checked = false; // uncheck if at least one is unselected.
|
||||||
}
|
}
|
||||||
if (segCount < 2) gId(`segd${lSeg}`).style.display = "none";
|
if (segCount < 2) {
|
||||||
|
gId(`segd${lSeg}`).classList.add("hide");
|
||||||
|
gId(`segp0`).classList.add("hide");
|
||||||
|
}
|
||||||
if (!isM && !noNewSegs && (cfg.comp.seglen?parseInt(gId(`seg${lSeg}s`).value):0)+parseInt(gId(`seg${lSeg}e`).value)<ledCount) gId(`segr${lSeg}`).style.display = "inline";
|
if (!isM && !noNewSegs && (cfg.comp.seglen?parseInt(gId(`seg${lSeg}s`).value):0)+parseInt(gId(`seg${lSeg}e`).value)<ledCount) gId(`segr${lSeg}`).style.display = "inline";
|
||||||
gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent
|
gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent
|
||||||
|
|
||||||
@ -852,6 +856,7 @@ function populateEffects()
|
|||||||
let m = (eP.length<4 || eP[3]==='')?'1':eP[3]; // flags
|
let m = (eP.length<4 || eP[3]==='')?'1':eP[3]; // flags
|
||||||
if (id == 0) m = ''; // solid has no flags
|
if (id == 0) m = ''; // solid has no flags
|
||||||
if (m.length>0) {
|
if (m.length>0) {
|
||||||
|
if (m.includes('0')) nm += "•"; // 0D effects (PWM & On/Off)
|
||||||
if (m.includes('1')) nm += "⋮"; // 1D effects
|
if (m.includes('1')) nm += "⋮"; // 1D effects
|
||||||
if (m.includes('2')) nm += "▦"; // 2D effects
|
if (m.includes('2')) nm += "▦"; // 2D effects
|
||||||
if (m.includes('v')) nm += "♪"; // volume effects
|
if (m.includes('v')) nm += "♪"; // volume effects
|
||||||
@ -1165,18 +1170,19 @@ function updateUI()
|
|||||||
}
|
}
|
||||||
if (hasWhite) updateTrail(gId('sliderW'));
|
if (hasWhite) updateTrail(gId('sliderW'));
|
||||||
|
|
||||||
gId('wwrap').style.display = (hasWhite) ? "block":"none"; // white channel
|
|
||||||
gId('wbal').style.display = (hasCCT) ? "block":"none"; // white balance
|
|
||||||
var ccfg = cfg.comp.colors;
|
var ccfg = cfg.comp.colors;
|
||||||
gId('hexw').style.display = ccfg.hex ? "block":"none"; // HEX input
|
gId('wwrap').style.display = (hasWhite) ? "block":"none"; // white channel
|
||||||
gId('picker').style.display = (hasRGB && ccfg.picker) ? "block":"none"; // color picker wheel
|
gId('wbal').style.display = (hasCCT) ? "block":"none"; // white balance
|
||||||
gId('hwrap').style.display = (hasRGB && !ccfg.picker) ? "block":"none"; // color picker wheel
|
gId('hexw').style.display = (ccfg.hex) ? "block":"none"; // HEX input
|
||||||
gId('swrap').style.display = (hasRGB && !ccfg.picker) ? "block":"none"; // color picker wheel
|
gId('picker').style.display = (hasRGB && ccfg.picker) ? "block":"none"; // color picker wheel
|
||||||
gId('vwrap').style.display = (hasRGB /*&& ccfg.picker*/) ? "block":"none"; // brightness (value) slider
|
gId('hwrap').style.display = (hasRGB && !ccfg.picker) ? "block":"none"; // hue slider
|
||||||
gId('kwrap').style.display = (hasRGB && !hasCCT /*&& ccfg.picker*/) ? "block":"none"; // Kelvin slider
|
gId('swrap').style.display = (hasRGB && !ccfg.picker) ? "block":"none"; // saturation slider
|
||||||
gId('rgbwrap').style.display = (hasRGB && ccfg.rgb) ? "block":"none"; // RGB sliders
|
gId('vwrap').style.display = (hasRGB) ? "block":"none"; // brightness (value) slider
|
||||||
gId('qcs-w').style.display = (hasRGB && ccfg.quick) ? "block":"none"; // quick selection
|
gId('kwrap').style.display = (hasRGB && !hasCCT) ? "block":"none"; // Kelvin slider
|
||||||
//gId('palw').style.display = hasRGB ? "block":"none"; // palettes
|
gId('rgbwrap').style.display = (hasRGB && ccfg.rgb) ? "block":"none"; // RGB sliders
|
||||||
|
gId('qcs-w').style.display = (hasRGB && ccfg.quick) ? "block":"none"; // quick selection
|
||||||
|
gId('csl').style.display = (hasRGB || hasWhite) ? "block":"none"; // color selectors (hide for On/Off bus)
|
||||||
|
//gId('palw').style.display = (hasRGB) ? "inline-block":"none"; // palettes are shown/hidden in setEffectParameters()
|
||||||
|
|
||||||
updatePA();
|
updatePA();
|
||||||
updatePSliders();
|
updatePSliders();
|
||||||
@ -1221,7 +1227,13 @@ function updateSelectedFx()
|
|||||||
if (selectedEffect) {
|
if (selectedEffect) {
|
||||||
selectedEffect.classList.add('selected');
|
selectedEffect.classList.add('selected');
|
||||||
setEffectParameters(selectedFx);
|
setEffectParameters(selectedFx);
|
||||||
|
// hide non-0D effects if segment only has 1 pixel (0D)
|
||||||
|
var fxs = parent.querySelectorAll('.lstI');
|
||||||
|
for (const fx of fxs) {
|
||||||
|
let opts = fx.dataset.opt.split(";");
|
||||||
|
if (fx.dataset.id>0 && segLmax<2 && (!opts[3] || opts[3].indexOf("0")<0)) fx.classList.add('hide'); else fx.classList.remove('hide');
|
||||||
|
}
|
||||||
|
// hide 2D mapping and/or sound simulation options
|
||||||
var selectedName = selectedEffect.querySelector(".lstIname").innerText;
|
var selectedName = selectedEffect.querySelector(".lstIname").innerText;
|
||||||
var segs = gId("segcont").querySelectorAll(`div[data-map="map2D"]`);
|
var segs = gId("segcont").querySelectorAll(`div[data-map="map2D"]`);
|
||||||
for (const seg of segs) if (selectedName.indexOf("\u25A6")<0) seg.classList.remove('hide'); else seg.classList.add('hide');
|
for (const seg of segs) if (selectedName.indexOf("\u25A6")<0) seg.classList.remove('hide'); else seg.classList.add('hide');
|
||||||
@ -1308,6 +1320,7 @@ function readState(s,command=false)
|
|||||||
var selc=0;
|
var selc=0;
|
||||||
var sellvl=0; // 0: selc is invalid, 1: selc is mainseg, 2: selc is first selected
|
var sellvl=0; // 0: selc is invalid, 1: selc is mainseg, 2: selc is first selected
|
||||||
hasRGB = hasWhite = hasCCT = false;
|
hasRGB = hasWhite = hasCCT = false;
|
||||||
|
segLmax = 0;
|
||||||
for (let i = 0; i < (s.seg||[]).length; i++)
|
for (let i = 0; i < (s.seg||[]).length; i++)
|
||||||
{
|
{
|
||||||
if (sellvl == 0 && s.seg[i].id == s.mainseg) {
|
if (sellvl == 0 && s.seg[i].id == s.mainseg) {
|
||||||
@ -1321,6 +1334,8 @@ function readState(s,command=false)
|
|||||||
hasRGB |= !!(lc & 0x01);
|
hasRGB |= !!(lc & 0x01);
|
||||||
hasWhite |= !!(lc & 0x02);
|
hasWhite |= !!(lc & 0x02);
|
||||||
hasCCT |= !!(lc & 0x04);
|
hasCCT |= !!(lc & 0x04);
|
||||||
|
let sLen = (s.seg[i].stop - s.seg[i].start)*(s.seg[i].stopY - s.seg[i].startY);
|
||||||
|
segLmax = segLmax < sLen ? sLen : segLmax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var i=s.seg[selc];
|
var i=s.seg[selc];
|
||||||
@ -1493,8 +1508,8 @@ function setEffectParameters(idx)
|
|||||||
var palw = gId("palw"); // wrapper
|
var palw = gId("palw"); // wrapper
|
||||||
var pall = gId("pall"); // label
|
var pall = gId("pall"); // label
|
||||||
// if not controlDefined or palette has a value
|
// if not controlDefined or palette has a value
|
||||||
if ((!controlDefined) || (paOnOff.length>0 && paOnOff[0]!="" && isNaN(paOnOff[0]))) {
|
if (hasRGB && ((!controlDefined) || (paOnOff.length>0 && paOnOff[0]!="" && isNaN(paOnOff[0])))) {
|
||||||
palw.style.display = hasRGB ? "inline-block" : "none";
|
palw.style.display = "inline-block";
|
||||||
if (paOnOff.length>0 && paOnOff[0].indexOf("=")>0) {
|
if (paOnOff.length>0 && paOnOff[0].indexOf("=")>0) {
|
||||||
// embeded default values
|
// embeded default values
|
||||||
var dPos = paOnOff[0].indexOf("=");
|
var dPos = paOnOff[0].indexOf("=");
|
||||||
@ -1704,21 +1719,21 @@ function makeSeg()
|
|||||||
});
|
});
|
||||||
var cn = `<div class="seg lstI expanded">
|
var cn = `<div class="seg lstI expanded">
|
||||||
<div class="segin">
|
<div class="segin">
|
||||||
<input type="text" class="noslide" id="seg${lu}t" autocomplete="off" maxlength=32 value="" placeholder="New segment ${lu}"/>
|
<input type="text" id="seg${lu}t" autocomplete="off" maxlength=32 value="" placeholder="New segment ${lu}"/>
|
||||||
<table class="segt">
|
<table class="segt">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="38%">${isM?'Start X':'Start LED'}</td>
|
<td width="38%">${isM?'Start X':'Start LED'}</td>
|
||||||
<td width="38%">${isM?(cfg.comp.seglen?"Width":"Stop X"):(cfg.comp.seglen?"LED count":"Stop LED")}</td>
|
<td width="38%">${isM?(cfg.comp.seglen?"Width":"Stop X"):(cfg.comp.seglen?"LED count":"Stop LED")}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input class="noslide segn" id="seg${lu}s" type="number" min="0" max="${isM?mw-1:ledCount-1}" value="${ns}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
<td><input class="segn" id="seg${lu}s" type="number" min="0" max="${isM?mw-1:ledCount-1}" value="${ns}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
||||||
<td><input class="noslide segn" id="seg${lu}e" type="number" min="0" max="${ct}" value="${ct}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
<td><input class="segn" id="seg${lu}e" type="number" min="0" max="${ct}" value="${ct}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
||||||
<td><button class="btn btn-xs" onclick="setSeg(${lu});"><i class="icons bth-icon" id="segc${lu}"></i></button></td>
|
<td><button class="btn btn-xs" onclick="setSeg(${lu});"><i class="icons bth-icon" id="segc${lu}"></i></button></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="mkSYH" class="${isM?"":"hide"}"><td>Start Y</td><td>${cfg.comp.seglen?'Height':'Stop Y'}</td></tr>
|
<tr id="mkSYH" class="${isM?"":"hide"}"><td>Start Y</td><td>${cfg.comp.seglen?'Height':'Stop Y'}</td></tr>
|
||||||
<tr id="mkSYD" class="${isM?"":"hide"}">
|
<tr id="mkSYD" class="${isM?"":"hide"}">
|
||||||
<td><input class="noslide segn" id="seg${lu}sY" type="number" min="0" max="${mh-1}" value="0" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
<td><input class="segn" id="seg${lu}sY" type="number" min="0" max="${mh-1}" value="0" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
||||||
<td><input class="noslide segn" id="seg${lu}eY" type="number" min="0" max="${mh}" value="${isM?mh:1}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
<td><input class="segn" id="seg${lu}eY" type="number" min="0" max="${mh}" value="${isM?mh:1}" oninput="updateLen(${lu})" onkeydown="segEnter(${lu})"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div class="h" id="seg${lu}len">${ledCount - ns} LEDs</div>
|
<div class="h" id="seg${lu}len">${ledCount - ns} LEDs</div>
|
||||||
@ -1843,7 +1858,7 @@ function makeP(i,pl)
|
|||||||
<span class="checkmark"></span>
|
<span class="checkmark"></span>
|
||||||
</label>
|
</label>
|
||||||
<div id="pl${i}o1" style="display:${rep>0?"block":"none"}">
|
<div id="pl${i}o1" style="display:${rep>0?"block":"none"}">
|
||||||
<div class="c">Repeat <input class="noslide" type="number" id="pl${i}rp" oninput="plR(${i})" max=127 min=0 value=${rep>0?rep:1}> times</div>
|
<div class="c">Repeat <input type="number" id="pl${i}rp" oninput="plR(${i})" max=127 min=0 value=${rep>0?rep:1}> times</div>
|
||||||
<div class="sel">End preset:<br>
|
<div class="sel">End preset:<br>
|
||||||
<div class="sel-p"><select class="sel-ple" id="pl${i}selEnd" onchange="plR(${i})" data-val=${plJson[i].end?plJson[i].end:0}>
|
<div class="sel-p"><select class="sel-ple" id="pl${i}selEnd" onchange="plR(${i})" data-val=${plJson[i].end?plJson[i].end:0}>
|
||||||
<option value="0">None</option>
|
<option value="0">None</option>
|
||||||
@ -1882,8 +1897,8 @@ ${makePlSel(plJson[i].end?plJson[i].end:0, true)}
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return `<input type="text" class="ptxt noslide ${i==0?'show':''}" id="p${i}txt" autocomplete="off" maxlength=32 value="${(i>0)?pName(i):""}" placeholder="Enter name..."/>
|
return `<input type="text" class="ptxt ${i==0?'show':''}" id="p${i}txt" autocomplete="off" maxlength=32 value="${(i>0)?pName(i):""}" placeholder="Enter name..."/>
|
||||||
<div class="c">Quick load label: <input type="text" class="stxt noslide" maxlength=2 value="${qlName(i)}" id="p${i}ql" autocomplete="off"/></div>
|
<div class="c">Quick load label: <input type="text" class="stxt" maxlength=2 value="${qlName(i)}" id="p${i}ql" autocomplete="off"/></div>
|
||||||
<div class="h">(leave empty for no Quick load button)</div>
|
<div class="h">(leave empty for no Quick load button)</div>
|
||||||
<div ${pl&&i==0?"style='display:none'":""}>
|
<div ${pl&&i==0?"style='display:none'":""}>
|
||||||
<label class="check revchkl">
|
<label class="check revchkl">
|
||||||
@ -1894,9 +1909,9 @@ ${makePlSel(plJson[i].end?plJson[i].end:0, true)}
|
|||||||
<span class="checkmark"></span>
|
<span class="checkmark"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="po2" id="p${i}o2">API command<br><textarea class="apitxt noslide" id="p${i}api"></textarea></div>
|
<div class="po2" id="p${i}o2">API command<br><textarea class="apitxt" id="p${i}api"></textarea></div>
|
||||||
<div class="po1" id="p${i}o1">${content}</div>
|
<div class="po1" id="p${i}o1">${content}</div>
|
||||||
<div class="c m6">Save to ID <input class="noslide" id="p${i}id" type="number" oninput="checkUsed(${i})" max=250 min=1 value=${(i>0)?i:getLowestUnusedP()}></div>
|
<div class="c m6">Save to ID <input id="p${i}id" type="number" oninput="checkUsed(${i})" max=250 min=1 value=${(i>0)?i:getLowestUnusedP()}></div>
|
||||||
<div class="c">
|
<div class="c">
|
||||||
<button class="btn btn-p" onclick="saveP(${i},${pl})"><i class="icons btn-icon"></i>Save</button>
|
<button class="btn btn-p" onclick="saveP(${i},${pl})"><i class="icons btn-icon"></i>Save</button>
|
||||||
${(i>0)?'<button class="btn btn-p" id="p'+i+'del" onclick="delP('+i+')"><i class="icons btn-icon"></i>Delete':'<button class="btn btn-p" onclick="resetPUtil()">Cancel'}</button>
|
${(i>0)?'<button class="btn btn-p" id="p'+i+'del" onclick="delP('+i+')"><i class="icons btn-icon"></i>Delete':'<button class="btn btn-p" onclick="resetPUtil()">Cancel'}</button>
|
||||||
@ -1941,8 +1956,8 @@ function makePlEntry(p,i)
|
|||||||
<td class="c">#${i+1}</td>
|
<td class="c">#${i+1}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="c" width="40%"><input class="noslide segn" type="number" placeholder="Duration" max=6553.0 min=0.2 step=0.1 oninput="pleDur(${p},${i},this)" value="${plJson[p].dur[i]/10.0}">s</td>
|
<td class="c" width="40%"><input class="segn" type="number" placeholder="Duration" max=6553.0 min=0.2 step=0.1 oninput="pleDur(${p},${i},this)" value="${plJson[p].dur[i]/10.0}">s</td>
|
||||||
<td class="c" width="40%"><input class="noslide segn" type="number" placeholder="Transition" max=65.0 min=0.0 step=0.1 oninput="pleTr(${p},${i},this)" value="${plJson[p].transition[i]/10.0}">s</td>
|
<td class="c" width="40%"><input class="segn" type="number" placeholder="Transition" max=65.0 min=0.0 step=0.1 oninput="pleTr(${p},${i},this)" value="${plJson[p].transition[i]/10.0}">s</td>
|
||||||
<td class="c"><button class="btn btn-pl-del" onclick="delPl(${p},${i})"><i class="icons btn-icon"></i></button></div></td>
|
<td class="c"><button class="btn btn-pl-del" onclick="delPl(${p},${i})"><i class="icons btn-icon"></i></button></div></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -2740,7 +2755,7 @@ function hasIroClass(classList)
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
//required by rangetouch.js
|
||||||
function lock(e)
|
function lock(e)
|
||||||
{
|
{
|
||||||
if (pcMode) return;
|
if (pcMode) return;
|
||||||
@ -2754,7 +2769,7 @@ function lock(e)
|
|||||||
|
|
||||||
_C.classList.toggle('smooth', !(locked = true));
|
_C.classList.toggle('smooth', !(locked = true));
|
||||||
}
|
}
|
||||||
|
//required by rangetouch.js
|
||||||
function move(e)
|
function move(e)
|
||||||
{
|
{
|
||||||
if(!locked || pcMode) return;
|
if(!locked || pcMode) return;
|
||||||
|
@ -127,19 +127,19 @@
|
|||||||
<p class="label h">RGB channels</p>
|
<p class="label h">RGB channels</p>
|
||||||
<div id="rwrap" class="il">
|
<div id="rwrap" class="il">
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderR" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
<input id="sliderR" class="noslide" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
</div><br>
|
</div><br>
|
||||||
<div id="gwrap" class="il">
|
<div id="gwrap" class="il">
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderG" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
<input id="sliderG" class="noslide" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
</div><br>
|
</div><br>
|
||||||
<div id="bwrap" class="il">
|
<div id="bwrap" class="il">
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderB" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
<input id="sliderB" class="noslide" onchange="fromRgb()" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
</div><br>
|
</div><br>
|
||||||
@ -147,14 +147,14 @@
|
|||||||
<div id="wwrap" class="center">
|
<div id="wwrap" class="center">
|
||||||
<p class="label h">White channel</p>
|
<p class="label h">White channel</p>
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderW" onchange="setColor(0)" max="255" min="0" type="range" value="128" />
|
<input id="sliderW" class="noslide" onchange="setColor(0)" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="wbal">
|
<div id="wbal">
|
||||||
<p class="label h">White balance</p>
|
<p class="label h">White balance</p>
|
||||||
<div class="sliderwrap il">
|
<div class="sliderwrap il">
|
||||||
<input id="sliderA" onchange="setBalance(this.value)" max="255" min="0" type="range" value="128" />
|
<input id="sliderA" class="noslide" onchange="setBalance(this.value)" max="255" min="0" type="range" value="128" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -551,7 +551,7 @@ function populateSegments(s)
|
|||||||
<div class="il">
|
<div class="il">
|
||||||
<i class="icons slider-icon pwr ${powered[i] ? "act":""}" id="seg${i}pwr" onclick="setSegPwr(${i})" title="${inst.n}"></i>
|
<i class="icons slider-icon pwr ${powered[i] ? "act":""}" id="seg${i}pwr" onclick="setSegPwr(${i})" title="${inst.n}"></i>
|
||||||
<div id="sliderSeg${i}Bri" class="sliderwrap il">
|
<div id="sliderSeg${i}Bri" class="sliderwrap il">
|
||||||
<input id="seg${i}bri" class="noslide" onchange="setSegBri(${i})" oninput="updateTrail(this)" max="255" min="1" type="range" value="${inst.bri}" />
|
<input id="seg${i}bri" onchange="setSegBri(${i})" oninput="updateTrail(this)" max="255" min="1" type="range" value="${inst.bri}" />
|
||||||
<div class="sliderdisplay"></div>
|
<div class="sliderdisplay"></div>
|
||||||
</div>
|
</div>
|
||||||
<output class="sliderbubble"></output>
|
<output class="sliderbubble"></output>
|
||||||
@ -1379,7 +1379,7 @@ function hasIroClass(classList)
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
//required by rangetouch.js
|
||||||
function lock(e)
|
function lock(e)
|
||||||
{
|
{
|
||||||
var l = e.target.classList;
|
var l = e.target.classList;
|
||||||
@ -1392,7 +1392,7 @@ function lock(e)
|
|||||||
|
|
||||||
_C.classList.toggle('smooth', !(locked = true));
|
_C.classList.toggle('smooth', !(locked = true));
|
||||||
}
|
}
|
||||||
|
//required by rangetouch.js
|
||||||
function move(e)
|
function move(e)
|
||||||
{
|
{
|
||||||
if(!locked) return;
|
if(!locked) return;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// Autogenerated from wled00/data/style.css, do not edit!!
|
// Autogenerated from wled00/data/style.css, do not edit!!
|
||||||
const uint16_t PAGE_settingsCss_length = 847;
|
const uint16_t PAGE_settingsCss_length = 847;
|
||||||
const uint8_t PAGE_settingsCss[] PROGMEM = {
|
const uint8_t PAGE_settingsCss[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x55, 0xc1, 0x8e, 0x9b, 0x30,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x55, 0xc1, 0x8e, 0x9b, 0x30,
|
||||||
0x10, 0xfd, 0x15, 0xaa, 0x68, 0xa5, 0xad, 0x14, 0x10, 0x10, 0xc8, 0xa6, 0x46, 0x95, 0xaa, 0xde,
|
0x10, 0xfd, 0x15, 0xaa, 0x68, 0xa5, 0xad, 0x14, 0x10, 0x10, 0xc8, 0xa6, 0x46, 0x95, 0xaa, 0xde,
|
||||||
0x7b, 0xab, 0xaa, 0x4a, 0xd5, 0x1e, 0x0c, 0x1e, 0x82, 0x15, 0x63, 0x23, 0xdb, 0x74, 0x49, 0x11,
|
0x7b, 0xab, 0xaa, 0x4a, 0xd5, 0x1e, 0x0c, 0x1e, 0x82, 0x15, 0x63, 0x23, 0xdb, 0x74, 0x49, 0x11,
|
||||||
0xff, 0x5e, 0xdb, 0xc0, 0x42, 0xb2, 0x68, 0x7b, 0xa9, 0xa2, 0x44, 0xc4, 0x63, 0xc6, 0x6f, 0xde,
|
0xff, 0x5e, 0xdb, 0xc0, 0x42, 0xb2, 0x68, 0x7b, 0xa9, 0xa2, 0x44, 0xc4, 0x63, 0xc6, 0x6f, 0xde,
|
||||||
@ -67,7 +67,7 @@ const uint8_t PAGE_settingsCss[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_length = 992;
|
const uint16_t PAGE_settings_length = 992;
|
||||||
const uint8_t PAGE_settings[] PROGMEM = {
|
const uint8_t PAGE_settings[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x56, 0x6d, 0x6f, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0x6d, 0x6f, 0xdb, 0x36,
|
||||||
0x10, 0xfe, 0xee, 0x5f, 0xc1, 0xb0, 0x58, 0x23, 0xa1, 0xb2, 0xec, 0x38, 0xc3, 0xb0, 0xc9, 0x96,
|
0x10, 0xfe, 0xee, 0x5f, 0xc1, 0xb0, 0x58, 0x23, 0xa1, 0xb2, 0xec, 0x38, 0xc3, 0xb0, 0xc9, 0x96,
|
||||||
0x8b, 0x35, 0x2f, 0x9b, 0x87, 0x04, 0x0d, 0x90, 0xa4, 0xdd, 0x80, 0x7d, 0xa1, 0xc9, 0x93, 0xcc,
|
0x8b, 0x35, 0x2f, 0x9b, 0x87, 0x04, 0x0d, 0x90, 0xa4, 0xdd, 0x80, 0x7d, 0xa1, 0xc9, 0x93, 0xcc,
|
||||||
0x46, 0x22, 0x05, 0xf2, 0xe4, 0xc4, 0x73, 0xf3, 0xdf, 0x77, 0x94, 0x9d, 0xb7, 0x26, 0x18, 0x86,
|
0x46, 0x22, 0x05, 0xf2, 0xe4, 0xc4, 0x73, 0xf3, 0xdf, 0x77, 0x94, 0x9d, 0xb7, 0x26, 0x18, 0x86,
|
||||||
@ -135,7 +135,7 @@ const uint8_t PAGE_settings[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_wifi_length = 2098;
|
const uint16_t PAGE_settings_wifi_length = 2098;
|
||||||
const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xb5, 0x58, 0x6b, 0x6f, 0xdb, 0xca,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x58, 0x6b, 0x6f, 0xdb, 0xca,
|
||||||
0x11, 0xfd, 0xae, 0x5f, 0xb1, 0xde, 0x16, 0x06, 0x09, 0xd3, 0x94, 0x64, 0x35, 0x69, 0x60, 0x8b,
|
0x11, 0xfd, 0xae, 0x5f, 0xb1, 0xde, 0x16, 0x06, 0x09, 0xd3, 0x94, 0x64, 0x35, 0x69, 0x60, 0x8b,
|
||||||
0x4a, 0xfd, 0xd0, 0x8d, 0xdd, 0x3a, 0x8e, 0x0a, 0x19, 0xd7, 0x28, 0xd2, 0xe0, 0x5e, 0x9a, 0x1c,
|
0x4a, 0xfd, 0xd0, 0x8d, 0xdd, 0x3a, 0x8e, 0x0a, 0x19, 0xd7, 0x28, 0xd2, 0xe0, 0x5e, 0x9a, 0x1c,
|
||||||
0x49, 0x1b, 0x93, 0xbb, 0xbc, 0xdc, 0xa5, 0x64, 0xc3, 0xd6, 0x7f, 0xef, 0xcc, 0x2e, 0xf5, 0xb4,
|
0x49, 0x1b, 0x93, 0xbb, 0xbc, 0xdc, 0xa5, 0x64, 0xc3, 0xd6, 0x7f, 0xef, 0xcc, 0x2e, 0xf5, 0xb4,
|
||||||
@ -273,7 +273,7 @@ const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_leds_length = 7500;
|
const uint16_t PAGE_settings_leds_length = 7500;
|
||||||
const uint8_t PAGE_settings_leds[] PROGMEM = {
|
const uint8_t PAGE_settings_leds[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xdd, 0x3c, 0xed, 0x76, 0xda, 0xc8,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x3c, 0xed, 0x76, 0xda, 0xc8,
|
||||||
0x92, 0xff, 0x79, 0x8a, 0x76, 0xcf, 0x8c, 0x23, 0x5d, 0x64, 0x90, 0xf8, 0xc8, 0x38, 0x80, 0xf0,
|
0x92, 0xff, 0x79, 0x8a, 0x76, 0xcf, 0x8c, 0x23, 0x5d, 0x64, 0x90, 0xf8, 0xc8, 0x38, 0x80, 0xf0,
|
||||||
0x1a, 0xc7, 0xc9, 0xf8, 0x5e, 0x7b, 0xe2, 0x63, 0x3c, 0xc9, 0xbd, 0x27, 0x93, 0x93, 0x08, 0xd1,
|
0x1a, 0xc7, 0xc9, 0xf8, 0x5e, 0x7b, 0xe2, 0x63, 0x3c, 0xc9, 0xbd, 0x27, 0x93, 0x93, 0x08, 0xd1,
|
||||||
0x80, 0x62, 0x21, 0x71, 0x25, 0x61, 0x9b, 0xb5, 0xd9, 0x67, 0xda, 0x67, 0xd8, 0x27, 0xdb, 0xaa,
|
0x80, 0x62, 0x21, 0x71, 0x25, 0x61, 0x9b, 0xb5, 0xd9, 0x67, 0xda, 0x67, 0xd8, 0x27, 0xdb, 0xaa,
|
||||||
@ -748,7 +748,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_dmx_length = 1612;
|
const uint16_t PAGE_settings_dmx_length = 1612;
|
||||||
const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
|
||||||
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
|
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
|
||||||
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
|
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
|
||||||
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
|
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
|
||||||
@ -855,7 +855,7 @@ const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_ui_length = 3181;
|
const uint16_t PAGE_settings_ui_length = 3181;
|
||||||
const uint8_t PAGE_settings_ui[] PROGMEM = {
|
const uint8_t PAGE_settings_ui[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x59, 0x6d, 0x77, 0xda, 0x38,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x59, 0x6d, 0x77, 0xda, 0x38,
|
||||||
0x16, 0xfe, 0xce, 0xaf, 0x50, 0xd5, 0x39, 0x19, 0x38, 0x71, 0x81, 0xb4, 0xb3, 0x67, 0x5b, 0xc0,
|
0x16, 0xfe, 0xce, 0xaf, 0x50, 0xd5, 0x39, 0x19, 0x38, 0x71, 0x81, 0xb4, 0xb3, 0x67, 0x5b, 0xc0,
|
||||||
0x64, 0x9b, 0x34, 0xd3, 0x66, 0x4e, 0x3a, 0xed, 0x96, 0x74, 0x3b, 0x73, 0xba, 0x3d, 0x19, 0x63,
|
0x64, 0x9b, 0x34, 0xd3, 0x66, 0x4e, 0x3a, 0xed, 0x96, 0x74, 0x3b, 0x73, 0xba, 0x3d, 0x19, 0x63,
|
||||||
0x0b, 0x50, 0x63, 0x5b, 0x1e, 0x4b, 0x0e, 0xc9, 0x52, 0xfe, 0xfb, 0x3e, 0x57, 0xb2, 0xc1, 0x90,
|
0x0b, 0x50, 0x63, 0x5b, 0x1e, 0x4b, 0x0e, 0xc9, 0x52, 0xfe, 0xfb, 0x3e, 0x57, 0xb2, 0xc1, 0x90,
|
||||||
@ -1058,222 +1058,223 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
|
|||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_sync_length = 3304;
|
const uint16_t PAGE_settings_sync_length = 3318;
|
||||||
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x5a, 0xeb, 0x73, 0xda, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x1a, 0x6b, 0x53, 0xdb, 0xb8,
|
||||||
0x12, 0xff, 0xae, 0xbf, 0x62, 0xac, 0xad, 0xca, 0xc2, 0x1a, 0xf3, 0xb2, 0x71, 0x1c, 0x1b, 0x29,
|
0xf6, 0xbb, 0x7f, 0x85, 0xf0, 0xce, 0x74, 0x93, 0x25, 0xe4, 0x01, 0x84, 0x52, 0x88, 0xdd, 0x0b,
|
||||||
0x67, 0x0c, 0xb1, 0xb9, 0x8b, 0x6d, 0x02, 0xf6, 0x26, 0x5b, 0x75, 0x55, 0x5b, 0x83, 0x34, 0x80,
|
0x84, 0x42, 0xee, 0x2d, 0x34, 0x4d, 0xe8, 0xb6, 0x3b, 0x73, 0x67, 0x76, 0x14, 0x5b, 0x49, 0x04,
|
||||||
0x6c, 0x49, 0xa3, 0xd5, 0x8c, 0xfc, 0xa8, 0x6c, 0xfe, 0xf7, 0xeb, 0x9e, 0x91, 0x04, 0xc8, 0xbc,
|
0xb6, 0xe5, 0xb5, 0x64, 0x1e, 0xd3, 0xed, 0x7f, 0xbf, 0xe7, 0x48, 0xb6, 0x93, 0x98, 0xbc, 0x7a,
|
||||||
0x72, 0xb5, 0x1f, 0x82, 0xc5, 0xa8, 0xbb, 0xa7, 0xa7, 0x1f, 0xbf, 0xee, 0x1e, 0xd2, 0xde, 0xeb,
|
0x67, 0x3f, 0x34, 0xd8, 0xd2, 0x39, 0x47, 0xe7, 0xfd, 0x90, 0xdb, 0xd9, 0xe9, 0x7e, 0xba, 0xb8,
|
||||||
0xde, 0x5e, 0xdc, 0xfd, 0x31, 0xe8, 0x91, 0x99, 0x0c, 0x7c, 0xbb, 0x8d, 0x9f, 0xc4, 0xa7, 0xe1,
|
0xfb, 0xa3, 0x7f, 0x49, 0xa6, 0x2a, 0x0c, 0xdc, 0x0e, 0xfe, 0x92, 0x80, 0x46, 0x13, 0xc7, 0x66,
|
||||||
0xd4, 0x32, 0x59, 0x68, 0xc2, 0x77, 0x46, 0x5d, 0xbb, 0x1d, 0x30, 0x49, 0x49, 0x48, 0x03, 0x66,
|
0x91, 0x0d, 0xef, 0x8c, 0xfa, 0x6e, 0x27, 0x64, 0x8a, 0x92, 0x88, 0x86, 0xcc, 0xb1, 0x1f, 0x39,
|
||||||
0x99, 0x4f, 0x1e, 0x7b, 0x8e, 0x78, 0x2c, 0x4d, 0xe2, 0xf0, 0x50, 0xb2, 0x50, 0x5a, 0xe6, 0xb3,
|
0x7b, 0x8a, 0x45, 0xa2, 0x6c, 0xe2, 0x89, 0x48, 0xb1, 0x48, 0x39, 0xf6, 0x13, 0xf7, 0xd5, 0xd4,
|
||||||
0xe7, 0xca, 0x99, 0xd5, 0xaa, 0xd7, 0x4d, 0xdb, 0xd0, 0xa4, 0x46, 0xe1, 0x9d, 0xcb, 0x9e, 0x3c,
|
0x69, 0x37, 0x9b, 0xb6, 0x6b, 0x19, 0x50, 0xab, 0xb4, 0xe7, 0xb3, 0x47, 0xee, 0xb1, 0x3d, 0xfd,
|
||||||
0x87, 0x1d, 0xa8, 0x2f, 0x15, 0x2f, 0xf4, 0xa4, 0x47, 0xfd, 0x03, 0xe1, 0x50, 0x9f, 0x59, 0x8d,
|
0x52, 0xe3, 0x11, 0x57, 0x9c, 0x06, 0x7b, 0xd2, 0xa3, 0x01, 0x73, 0x5a, 0xb5, 0x90, 0x3e, 0xf3,
|
||||||
0x4a, 0x40, 0x5f, 0xbc, 0x20, 0x09, 0xf2, 0xef, 0x89, 0x60, 0xb1, 0xfa, 0x42, 0xc7, 0xf0, 0x3d,
|
0x30, 0x0d, 0x8b, 0xf7, 0x54, 0xb2, 0x44, 0xbf, 0xd0, 0x11, 0xbc, 0x47, 0xc2, 0x26, 0x56, 0xe9,
|
||||||
0xe4, 0x26, 0x31, 0x0a, 0x5b, 0xa7, 0x0a, 0x39, 0x33, 0x1a, 0x0b, 0x06, 0x9b, 0x24, 0x72, 0x72,
|
0xe8, 0x8c, 0x21, 0x6f, 0x4a, 0x13, 0xc9, 0xe0, 0x90, 0x54, 0x8d, 0xf7, 0x8e, 0x61, 0x55, 0x71,
|
||||||
0x70, 0x02, 0xab, 0xd2, 0x93, 0x3e, 0xb3, 0x47, 0xaf, 0xa1, 0x43, 0x46, 0x4c, 0x4a, 0x2f, 0x9c,
|
0x15, 0x30, 0x77, 0xf8, 0x12, 0x79, 0x64, 0xc8, 0x94, 0xe2, 0xd1, 0x44, 0x76, 0x1a, 0x66, 0xb1,
|
||||||
0x8a, 0x76, 0x4d, 0x2f, 0xb6, 0x85, 0x13, 0x7b, 0x91, 0xb4, 0x8d, 0x27, 0x1a, 0x13, 0x9f, 0x3b,
|
0x23, 0xbd, 0x84, 0xc7, 0xca, 0xb5, 0x1e, 0x69, 0x42, 0x02, 0xe1, 0xf1, 0xb8, 0xe6, 0x3b, 0xbe,
|
||||||
0x5e, 0x54, 0x71, 0x2d, 0x97, 0x3b, 0x49, 0x00, 0x6a, 0x56, 0x60, 0xc1, 0xda, 0x6b, 0x9c, 0x4d,
|
0xf0, 0xd2, 0x10, 0xd8, 0xac, 0xc1, 0x82, 0xb3, 0xd3, 0x3a, 0x1d, 0xa7, 0x91, 0xa7, 0xb8, 0x88,
|
||||||
0x92, 0xd0, 0x91, 0x1e, 0x0f, 0xc9, 0xb4, 0xef, 0x96, 0x58, 0xf9, 0x7b, 0xcc, 0x64, 0x12, 0x87,
|
0xc8, 0xa4, 0xe7, 0x57, 0x58, 0xf5, 0x7b, 0xc2, 0x54, 0x9a, 0x44, 0xc4, 0xaf, 0x4f, 0x98, 0xba,
|
||||||
0xc4, 0xad, 0x4e, 0x99, 0xec, 0xf9, 0x0c, 0x49, 0x3b, 0xaf, 0xea, 0xd5, 0x8f, 0x9c, 0x54, 0xf2,
|
0x0c, 0x18, 0x82, 0x9e, 0xbf, 0xe8, 0xad, 0x1f, 0x05, 0xa8, 0x12, 0x93, 0x49, 0xc0, 0x10, 0xda,
|
||||||
0xe9, 0xd4, 0x67, 0x48, 0xad, 0x99, 0xaa, 0x8e, 0x4f, 0x85, 0xf8, 0xec, 0x09, 0x59, 0x4d, 0x5f,
|
0x20, 0xd5, 0xbd, 0x80, 0x4a, 0xf9, 0x91, 0x4b, 0x55, 0xcf, 0xb6, 0xec, 0x29, 0xf7, 0x99, 0x5d,
|
||||||
0x99, 0x33, 0xcf, 0x65, 0x66, 0xb9, 0x82, 0xef, 0xcd, 0x1b, 0x6e, 0xee, 0x6f, 0x20, 0x9a, 0xcb,
|
0xad, 0xe1, 0xbe, 0x7d, 0x2b, 0xec, 0xdd, 0x35, 0x40, 0x33, 0xba, 0xd7, 0x95, 0xea, 0xf7, 0x27,
|
||||||
0xbd, 0x2a, 0x95, 0xbf, 0x3f, 0x7b, 0xa1, 0xcb, 0x9f, 0xab, 0x3c, 0x62, 0x21, 0x10, 0x48, 0x19,
|
0x1e, 0xf9, 0xe2, 0xa9, 0x2e, 0x62, 0x16, 0x01, 0x80, 0x52, 0xb1, 0x3c, 0x69, 0x34, 0x1e, 0x22,
|
||||||
0x89, 0xd3, 0x5a, 0xed, 0x31, 0xe4, 0xd5, 0x67, 0x9f, 0xa1, 0x52, 0x35, 0x0f, 0xac, 0x1c, 0x4f,
|
0x51, 0x7f, 0x0a, 0x18, 0x32, 0xd5, 0xe0, 0xa0, 0xe5, 0x64, 0x4c, 0x3d, 0x26, 0x1b, 0xa9, 0x1f,
|
||||||
0xa8, 0xc3, 0x44, 0x2d, 0x71, 0xa3, 0x83, 0x90, 0x4b, 0x6f, 0xe2, 0xb1, 0xb8, 0xb6, 0x28, 0xa8,
|
0xef, 0x45, 0x42, 0xf1, 0x31, 0x67, 0x49, 0x63, 0x9e, 0xd0, 0x79, 0x99, 0x50, 0x43, 0x66, 0xba,
|
||||||
0x53, 0x14, 0x54, 0x13, 0xa9, 0x6d, 0xcc, 0x8a, 0xf9, 0xa7, 0x60, 0xfe, 0x64, 0x91, 0x9a, 0xba,
|
0xb1, 0x6b, 0xf6, 0x9f, 0x92, 0x05, 0xe3, 0x79, 0x68, 0xea, 0xdf, 0x03, 0xfc, 0xd1, 0x61, 0xfb,
|
||||||
0x0f, 0x40, 0x7f, 0x7c, 0xd4, 0x3a, 0xb2, 0x2c, 0xb7, 0x3a, 0x9a, 0x54, 0xbb, 0xfd, 0xea, 0x13,
|
0xd0, 0x71, 0xfc, 0xfa, 0x70, 0x5c, 0xef, 0xf6, 0xea, 0x8f, 0x34, 0x48, 0xd9, 0xfb, 0x56, 0xb6,
|
||||||
0xf5, 0x13, 0xf6, 0xb1, 0x91, 0x2e, 0xf4, 0xee, 0xf5, 0xc2, 0xbb, 0x77, 0xa5, 0xa5, 0xef, 0x56,
|
0x70, 0xf9, 0xc5, 0x2c, 0xbc, 0x79, 0x53, 0x59, 0x78, 0x77, 0x9a, 0xd5, 0x93, 0x76, 0xfb, 0xe8,
|
||||||
0xbd, 0x7c, 0xda, 0x6a, 0x1d, 0x9f, 0x14, 0xf8, 0x80, 0xac, 0x9e, 0x2d, 0x9d, 0x2f, 0x73, 0x66,
|
0xb8, 0x84, 0x07, 0x60, 0xcd, 0x7c, 0xe9, 0x6c, 0x11, 0x33, 0x7f, 0x77, 0x5a, 0xd5, 0x5a, 0x73,
|
||||||
0xdf, 0xad, 0x46, 0xb9, 0x52, 0xdf, 0x26, 0xbd, 0x51, 0x5e, 0xd0, 0xd2, 0xe7, 0xd4, 0xfd, 0xf7,
|
0x13, 0xf5, 0x56, 0x75, 0x8e, 0xcb, 0x40, 0x50, 0xff, 0xdf, 0xc3, 0x0a, 0xab, 0x29, 0x67, 0xa7,
|
||||||
0xa8, 0xc4, 0x2a, 0xd2, 0xda, 0xab, 0x97, 0xbf, 0xfb, 0x4c, 0x12, 0x0e, 0xfc, 0x4e, 0xcc, 0xa8,
|
0x59, 0xfd, 0x1e, 0x30, 0x45, 0x04, 0xe0, 0x7b, 0x09, 0xa3, 0x8a, 0x65, 0x96, 0xaa, 0xd8, 0xc6,
|
||||||
0x64, 0xa9, 0xa7, 0x4a, 0xa6, 0x76, 0xb9, 0x59, 0x3e, 0xe3, 0x55, 0x38, 0xf2, 0xb9, 0x94, 0xb1,
|
0xe4, 0x76, 0xf5, 0x54, 0xd4, 0x41, 0xe4, 0x33, 0xa5, 0x12, 0x3e, 0x4a, 0x15, 0xe8, 0x5a, 0x26,
|
||||||
0x37, 0x4e, 0x24, 0xd8, 0x5a, 0xc4, 0x8e, 0x59, 0x61, 0xe5, 0x4a, 0x71, 0x5d, 0xbe, 0x46, 0x0c,
|
0x9e, 0x5d, 0x63, 0xd5, 0x5a, 0x79, 0x5d, 0xbd, 0xc4, 0x0c, 0x94, 0xa2, 0xd8, 0xb3, 0x6a, 0xdc,
|
||||||
0x8c, 0x22, 0xd9, 0x8b, 0xac, 0x3d, 0xd0, 0x27, 0x9a, 0x09, 0x78, 0x43, 0x48, 0x05, 0xc4, 0x98,
|
0xd3, 0x47, 0x9a, 0x13, 0x78, 0x05, 0x48, 0x25, 0xf8, 0x98, 0x5d, 0x53, 0xd5, 0x9a, 0x5f, 0x1f,
|
||||||
0x59, 0x91, 0xe5, 0x8a, 0x5b, 0x1d, 0x73, 0xf7, 0xb5, 0x4a, 0x23, 0x30, 0xad, 0x7b, 0x31, 0xf3,
|
0x09, 0xff, 0xa5, 0x4e, 0x63, 0x50, 0xad, 0x7f, 0x31, 0xe5, 0x81, 0x5f, 0x11, 0x08, 0x4f, 0x7d,
|
||||||
0x7c, 0xb7, 0xc4, 0x91, 0x9e, 0xba, 0x6e, 0xef, 0x09, 0xb4, 0x40, 0x1f, 0xb3, 0x90, 0xc5, 0x25,
|
0xff, 0xf2, 0x11, 0xb8, 0x40, 0x1b, 0xb3, 0x88, 0x25, 0x15, 0x1b, 0x79, 0xb6, 0x6b, 0x95, 0xaa,
|
||||||
0x13, 0x75, 0x36, 0x2b, 0xa5, 0xb2, 0x65, 0x7f, 0xbf, 0x64, 0xf2, 0xf7, 0x52, 0xb9, 0x02, 0x31,
|
0xe3, 0x7e, 0xbf, 0x62, 0xea, 0xf7, 0x4a, 0xb5, 0x06, 0x3e, 0xfa, 0x3b, 0x0d, 0x2a, 0xd5, 0x1f,
|
||||||
0xfa, 0x3b, 0xf5, 0x4b, 0xe5, 0x1f, 0xab, 0x19, 0x58, 0x1c, 0xf3, 0x18, 0xf4, 0x04, 0x06, 0x48,
|
0xcb, 0x11, 0x58, 0x92, 0x88, 0x04, 0xf8, 0x04, 0x04, 0x08, 0x27, 0x29, 0x02, 0x56, 0x0f, 0xc4,
|
||||||
0x27, 0xc1, 0x7d, 0x56, 0xf5, 0xf9, 0xb4, 0x64, 0xf6, 0x70, 0x9d, 0xa4, 0x56, 0x00, 0x3f, 0x92,
|
0xa4, 0x62, 0x5f, 0xe2, 0x3a, 0xc9, 0xb4, 0x00, 0x76, 0x24, 0x63, 0x1e, 0x30, 0x2d, 0x0f, 0xc4,
|
||||||
0x89, 0xe7, 0x33, 0x75, 0x1e, 0xc8, 0x9f, 0x18, 0xce, 0xfd, 0x39, 0x5d, 0xe7, 0x13, 0xcc, 0xd1,
|
0x4f, 0x02, 0x72, 0x7f, 0xcc, 0xd6, 0xc5, 0x18, 0x63, 0x74, 0xcc, 0x27, 0x69, 0x42, 0xb5, 0xda,
|
||||||
0x89, 0x37, 0x4d, 0x62, 0xaa, 0xcc, 0xa6, 0xcf, 0x43, 0x26, 0xd4, 0xc3, 0xf8, 0xf9, 0x6f, 0xd8,
|
0x8c, 0x3c, 0x64, 0x4c, 0x39, 0xfa, 0xcf, 0x7f, 0xa3, 0x5e, 0xe4, 0x89, 0x30, 0x06, 0xed, 0x31,
|
||||||
0x0f, 0x1d, 0x1e, 0x44, 0x60, 0x3d, 0x46, 0x22, 0x3a, 0x65, 0xc4, 0xa5, 0x92, 0xee, 0x41, 0x34,
|
0x12, 0xd3, 0x09, 0x23, 0x3e, 0x55, 0x74, 0x07, 0xbc, 0x61, 0x4e, 0xd3, 0x1f, 0x2e, 0xc0, 0x1d,
|
||||||
0x2c, 0x58, 0xfa, 0xd3, 0x05, 0x84, 0xc3, 0x84, 0xc7, 0xa5, 0x07, 0xab, 0x7e, 0xf6, 0xd0, 0x3e,
|
0xc6, 0x22, 0xa9, 0xdc, 0x3b, 0xcd, 0xd3, 0xfb, 0xce, 0xf1, 0xe9, 0xfd, 0xee, 0x6e, 0x55, 0x7b,
|
||||||
0x39, 0x7b, 0xd8, 0xdf, 0x2f, 0xab, 0x48, 0xbe, 0x34, 0xf7, 0x4b, 0x0f, 0xfb, 0xe0, 0x96, 0xaa,
|
0xf2, 0x95, 0xbd, 0x5b, 0xb9, 0xdf, 0x05, 0xb3, 0xd4, 0xbd, 0x29, 0xf3, 0x1e, 0x98, 0xef, 0x98,
|
||||||
0x33, 0x63, 0xce, 0x23, 0x73, 0x2d, 0xbd, 0x3c, 0x32, 0xcb, 0xda, 0x65, 0xb6, 0xfd, 0xf0, 0xae,
|
0xe5, 0xa1, 0x5d, 0x35, 0x26, 0x73, 0xdd, 0xfb, 0x37, 0x2d, 0xe3, 0xf5, 0x83, 0x15, 0xb0, 0x83,
|
||||||
0xa1, 0xa3, 0x7e, 0xb8, 0x86, 0x76, 0xb8, 0x44, 0x3b, 0xdf, 0xf5, 0x12, 0x77, 0xc5, 0x4c, 0x85,
|
0x05, 0xd8, 0xd9, 0xa9, 0x57, 0x78, 0x2a, 0x46, 0x2a, 0x78, 0x15, 0xd8, 0xb8, 0x59, 0x13, 0x0e,
|
||||||
0xa8, 0x02, 0x1f, 0xd7, 0x2b, 0xdc, 0x82, 0xec, 0x2c, 0x68, 0xc1, 0xf6, 0xad, 0xd5, 0x8a, 0xfc,
|
0x44, 0x67, 0x89, 0x0b, 0xb6, 0xeb, 0x2c, 0x67, 0xe4, 0x37, 0x51, 0x53, 0xd9, 0xde, 0x60, 0xc9,
|
||||||
0xc6, 0x2b, 0x32, 0x7d, 0x37, 0x5c, 0xf1, 0x8e, 0xff, 0x66, 0x35, 0xcf, 0x0a, 0xba, 0x5a, 0xac,
|
0x9e, 0xf8, 0xcd, 0xd9, 0x3f, 0x2d, 0xf1, 0xea, 0xb0, 0x5a, 0x89, 0x23, 0x47, 0xcd, 0xd8, 0x19,
|
||||||
0x52, 0xd0, 0xc8, 0x92, 0x73, 0x75, 0x46, 0x83, 0x5c, 0x9d, 0xa5, 0xd8, 0xd6, 0x52, 0x5e, 0x22,
|
0xf6, 0x0b, 0x76, 0x16, 0x7c, 0xdb, 0x50, 0x79, 0x8e, 0x01, 0x47, 0xaa, 0x17, 0xb0, 0x8f, 0xcf,
|
||||||
0xe0, 0x11, 0xf2, 0x15, 0xfc, 0xe3, 0x7a, 0x22, 0xf2, 0xe9, 0xab, 0xc5, 0xec, 0xfa, 0x47, 0x33,
|
0x65, 0x1c, 0xd0, 0x17, 0x87, 0xb9, 0xcd, 0xf7, 0x76, 0x24, 0x22, 0x66, 0x9f, 0xd8, 0x23, 0x48,
|
||||||
0xe4, 0x21, 0x33, 0x4f, 0xcd, 0x31, 0x80, 0xcb, 0x23, 0xb8, 0xc7, 0xae, 0xe7, 0x31, 0x3d, 0xc8,
|
0x2e, 0x0f, 0x60, 0x1e, 0xb7, 0x59, 0xf8, 0x74, 0x3f, 0x3f, 0x74, 0x4e, 0xd1, 0xb9, 0x33, 0x7c,
|
||||||
0x36, 0x5d, 0x30, 0x74, 0x16, 0x0c, 0xdf, 0xc5, 0xb3, 0x27, 0x9d, 0x59, 0x29, 0x42, 0x6c, 0xeb,
|
0x97, 0x4f, 0x5c, 0x79, 0xd3, 0x4a, 0x8c, 0xb9, 0xad, 0x07, 0x6e, 0xbc, 0x80, 0x52, 0xad, 0x7e,
|
||||||
0x43, 0x18, 0x2f, 0xb1, 0x94, 0xcb, 0xdf, 0x1d, 0x2a, 0x18, 0xc1, 0x44, 0x3b, 0x5d, 0xd2, 0xc5,
|
0xf7, 0xa8, 0x64, 0x04, 0x03, 0xed, 0x64, 0x81, 0x17, 0x07, 0x97, 0x4e, 0x47, 0x10, 0x01, 0x0f,
|
||||||
0xc2, 0xa5, 0xb3, 0x31, 0x64, 0xc0, 0xe3, 0x99, 0x22, 0xc1, 0x1c, 0x2e, 0x90, 0xe0, 0xd2, 0x22,
|
0xa7, 0x1a, 0x04, 0x63, 0xb8, 0x04, 0x82, 0x4b, 0xf3, 0x20, 0x87, 0xcd, 0xc3, 0x32, 0x15, 0x5c,
|
||||||
0xc9, 0x51, 0xfd, 0xa8, 0x28, 0x05, 0x97, 0x7e, 0xe0, 0x79, 0x2b, 0xe8, 0xf9, 0x05, 0xf5, 0x40,
|
0xfa, 0x81, 0xf2, 0xd6, 0xd0, 0xf2, 0x73, 0xec, 0x01, 0x67, 0x36, 0x3a, 0xda, 0x89, 0xed, 0x38,
|
||||||
0x33, 0x13, 0x03, 0xed, 0xd4, 0xb4, 0xac, 0x14, 0x4e, 0xe0, 0x60, 0x2a, 0xae, 0xaa, 0x51, 0xcc,
|
0x59, 0x3a, 0x01, 0xc1, 0xb4, 0x5f, 0xd5, 0xe3, 0x44, 0x28, 0xe1, 0x89, 0x00, 0x04, 0xd4, 0x99,
|
||||||
0x25, 0x77, 0xb8, 0x0f, 0x07, 0x54, 0x48, 0x5a, 0xaf, 0x94, 0x14, 0xc4, 0x5a, 0x48, 0xe1, 0x8f,
|
0xb4, 0x59, 0xab, 0xe8, 0x14, 0xeb, 0x20, 0x44, 0x30, 0x54, 0x22, 0x01, 0xef, 0xc2, 0x24, 0xda,
|
||||||
0x24, 0x8f, 0x21, 0xba, 0x10, 0x44, 0xfb, 0x92, 0x05, 0x98, 0x09, 0x4e, 0x1f, 0x6c, 0x56, 0xfe,
|
0x53, 0x2c, 0xc4, 0x48, 0xf0, 0x7a, 0xa0, 0xb3, 0xea, 0xdf, 0x7f, 0x67, 0x60, 0x80, 0x1f, 0xc6,
|
||||||
0xfb, 0xef, 0x94, 0x0c, 0xf8, 0x83, 0x08, 0x02, 0xf7, 0x13, 0xc8, 0x27, 0xd7, 0xdc, 0x65, 0x55,
|
0xe0, 0xb8, 0x1f, 0x80, 0x3e, 0xb9, 0x11, 0x3e, 0xab, 0x93, 0x7e, 0xc0, 0x90, 0x43, 0x86, 0x09,
|
||||||
0x32, 0xf0, 0x19, 0x6a, 0xc8, 0x10, 0xe0, 0xc8, 0xd7, 0xcf, 0xbd, 0x2e, 0xe9, 0x0f, 0x20, 0x34,
|
0x8e, 0x7c, 0xfd, 0x78, 0xd9, 0x25, 0xbd, 0x3e, 0xb8, 0x66, 0x6d, 0x81, 0xa2, 0x5c, 0xa4, 0x58,
|
||||||
0x2b, 0x4b, 0x12, 0xc5, 0xb2, 0xc4, 0x8a, 0x92, 0x56, 0x2e, 0x23, 0x95, 0xc2, 0x07, 0x14, 0xff,
|
0xd3, 0xd4, 0xaa, 0x55, 0x84, 0xd2, 0xf9, 0x01, 0xc9, 0xbf, 0xd7, 0x89, 0x13, 0xf2, 0xa6, 0xbd,
|
||||||
0x51, 0x01, 0x27, 0xe0, 0xa6, 0xb9, 0xaf, 0x5e, 0x9f, 0x9a, 0x66, 0x79, 0x7f, 0x8e, 0x81, 0x35,
|
0xab, 0xb7, 0x4f, 0x6c, 0xbb, 0xba, 0x3b, 0xcb, 0x81, 0x0d, 0x59, 0xbf, 0x97, 0xef, 0x63, 0xe7,
|
||||||
0x51, 0x7d, 0x10, 0x1f, 0x23, 0xeb, 0xc8, 0xac, 0xec, 0x35, 0xca, 0x3f, 0x8c, 0x76, 0x2d, 0x2d,
|
0xd0, 0xae, 0xed, 0xb4, 0xaa, 0x3f, 0xac, 0x4e, 0x23, 0x2b, 0x14, 0x1d, 0x6d, 0x51, 0xf7, 0x5f,
|
||||||
0x14, 0x6d, 0xe5, 0x51, 0xfb, 0x5f, 0x5e, 0x80, 0x25, 0x87, 0x24, 0xb1, 0x0f, 0xb8, 0xa1, 0x9c,
|
0x3c, 0xc4, 0x92, 0x43, 0xd2, 0x24, 0x80, 0xbc, 0xa1, 0x8d, 0xec, 0x49, 0x09, 0x39, 0x05, 0x00,
|
||||||
0xec, 0x08, 0x01, 0x98, 0x02, 0x84, 0x8a, 0xa0, 0x5d, 0xd3, 0x25, 0x12, 0x61, 0x00, 0x92, 0x12,
|
0x35, 0x40, 0xa7, 0x61, 0x4a, 0x24, 0xa6, 0x01, 0x08, 0x4a, 0x3c, 0xd9, 0xb1, 0x41, 0x5b, 0x50,
|
||||||
0x77, 0xb6, 0x4c, 0xb0, 0x16, 0x94, 0x23, 0x08, 0xd8, 0xc0, 0x20, 0x1e, 0x7c, 0xc7, 0xa7, 0x3f,
|
0x8e, 0xc0, 0x61, 0x43, 0x8b, 0x70, 0x78, 0xc7, 0xa7, 0x3f, 0xa5, 0x9d, 0x95, 0xd0, 0xe1, 0xd8,
|
||||||
0x85, 0x99, 0x96, 0xd0, 0xd1, 0xc4, 0x24, 0x50, 0xc0, 0x66, 0x1c, 0xde, 0x44, 0x5c, 0x40, 0x29,
|
0x26, 0x50, 0xc0, 0xa6, 0x02, 0x76, 0x62, 0x21, 0xa1, 0x94, 0x42, 0x78, 0xa7, 0xa3, 0x90, 0x43,
|
||||||
0x85, 0xf4, 0x4e, 0xc6, 0x81, 0x07, 0xa5, 0x0c, 0x23, 0x1f, 0x58, 0x5d, 0xef, 0x89, 0xa8, 0x1a,
|
0x29, 0x43, 0xcf, 0x07, 0x54, 0x9f, 0x3f, 0x12, 0x5d, 0x23, 0x1c, 0x5b, 0x09, 0x50, 0xcf, 0x53,
|
||||||
0x61, 0x99, 0x92, 0x83, 0x79, 0x9e, 0xd3, 0x35, 0x23, 0x5d, 0x9c, 0x31, 0x3f, 0xea, 0xc0, 0x1a,
|
0xb6, 0x66, 0x65, 0x8b, 0x53, 0x16, 0xc4, 0xe7, 0xb0, 0x06, 0xe9, 0x48, 0x61, 0x11, 0x82, 0xc4,
|
||||||
0xc0, 0x91, 0xc4, 0x22, 0x04, 0xc0, 0x65, 0x99, 0xfa, 0x0b, 0x4a, 0x73, 0x7c, 0xcf, 0x79, 0xb4,
|
0xe5, 0xd8, 0xe6, 0x05, 0xa9, 0x79, 0x01, 0xf7, 0x1e, 0x1c, 0xfb, 0x1a, 0x69, 0xbd, 0xef, 0x34,
|
||||||
0xcc, 0x2b, 0x94, 0xf5, 0xb1, 0x5d, 0xd3, 0x2f, 0x40, 0x55, 0x10, 0x91, 0xf3, 0x18, 0x6b, 0x98,
|
0xcc, 0x06, 0xb0, 0x0a, 0x24, 0x0a, 0x1c, 0x6b, 0x05, 0xd2, 0x39, 0x22, 0x9d, 0x53, 0xef, 0x61,
|
||||||
0x3a, 0xc8, 0xd4, 0xa1, 0xce, 0xe3, 0x9c, 0x6f, 0x69, 0x17, 0xad, 0xa9, 0x69, 0x8f, 0xe8, 0x13,
|
0x86, 0xb7, 0x70, 0x8a, 0xe1, 0xd4, 0x76, 0x87, 0xf4, 0x91, 0xcd, 0x40, 0xa6, 0x09, 0xd4, 0x7e,
|
||||||
0x9b, 0x93, 0xcc, 0x62, 0xa8, 0xfd, 0x5a, 0xfe, 0xac, 0xa9, 0x4b, 0x30, 0x98, 0x38, 0x89, 0xc0,
|
0x43, 0x7f, 0xba, 0x6f, 0x4a, 0x30, 0xa8, 0x38, 0x8d, 0x41, 0x3d, 0xfb, 0xb0, 0x74, 0xe0, 0x6a,
|
||||||
0x3c, 0x4d, 0x58, 0x3a, 0xb4, 0x95, 0x0f, 0x3b, 0x31, 0x98, 0x07, 0x42, 0x4f, 0xc2, 0xf2, 0xa1,
|
0x1b, 0x9e, 0x27, 0xa0, 0x1e, 0x70, 0x3d, 0x05, 0xcb, 0x07, 0xee, 0x97, 0x6e, 0x9f, 0xf4, 0x41,
|
||||||
0x7d, 0xdf, 0x1d, 0x90, 0x01, 0x18, 0xf7, 0x94, 0xb4, 0xbd, 0x30, 0x4a, 0x64, 0x6a, 0x9e, 0xfb,
|
0xb9, 0x27, 0xa4, 0xc3, 0xa3, 0x38, 0x55, 0x99, 0x7a, 0xbe, 0xf4, 0xed, 0x9c, 0xb9, 0x28, 0x0d,
|
||||||
0x81, 0x99, 0x29, 0x17, 0x26, 0xc1, 0x98, 0xc5, 0x60, 0x2d, 0x2f, 0xb4, 0xcc, 0x06, 0xfc, 0xa5,
|
0x47, 0x2c, 0x01, 0x6d, 0xf1, 0xc8, 0xb1, 0x5b, 0xf0, 0x97, 0x3e, 0x3b, 0xf6, 0x51, 0xbb, 0x7d,
|
||||||
0x2f, 0x96, 0x79, 0xdc, 0x6a, 0x1d, 0xb6, 0xcc, 0xcc, 0x3c, 0x2e, 0x3c, 0xc6, 0xec, 0xaf, 0xc4,
|
0xd0, 0xb6, 0x73, 0xf5, 0xf8, 0xf0, 0x98, 0xb0, 0xbf, 0x52, 0x9e, 0x30, 0xb4, 0x42, 0xe2, 0xee,
|
||||||
0x8b, 0x19, 0x7a, 0x21, 0xb6, 0x9b, 0xa1, 0xbb, 0x2c, 0x35, 0xed, 0x1e, 0xee, 0x9b, 0x26, 0xf9,
|
0x47, 0xfe, 0x22, 0xd5, 0xac, 0x7b, 0xf8, 0xb2, 0x6f, 0x93, 0xff, 0x9f, 0x2a, 0x8a, 0x60, 0x69,
|
||||||
0xff, 0xa5, 0xe2, 0x11, 0x0c, 0x75, 0xac, 0x69, 0xcc, 0x93, 0x48, 0xa8, 0x03, 0x2c, 0xa9, 0x0d,
|
0xb1, 0x26, 0x89, 0x48, 0x63, 0xa9, 0x05, 0x58, 0x60, 0x1b, 0x92, 0x89, 0xb6, 0x35, 0xfe, 0x5d,
|
||||||
0x60, 0xa2, 0x7c, 0x8d, 0x7f, 0x97, 0xf7, 0x51, 0x81, 0x02, 0x32, 0x35, 0x38, 0x9c, 0x2a, 0x5c,
|
0x3c, 0x47, 0x3b, 0x0a, 0xd0, 0x34, 0xc9, 0xe1, 0x44, 0xe7, 0x05, 0x97, 0x58, 0x8b, 0xd8, 0x83,
|
||||||
0xb0, 0x89, 0xb1, 0xcc, 0x3d, 0x4c, 0xb9, 0x87, 0x3b, 0x71, 0xb7, 0x25, 0x36, 0x47, 0xc4, 0x48,
|
0x0c, 0x7b, 0xb0, 0x15, 0x76, 0x47, 0x61, 0x73, 0x44, 0xac, 0x6c, 0x33, 0xa4, 0xc9, 0x84, 0x47,
|
||||||
0x5f, 0x06, 0x34, 0x9e, 0x7a, 0xe1, 0x69, 0x9d, 0xd0, 0x44, 0x72, 0x7c, 0x0b, 0x0a, 0x4b, 0x50,
|
0x27, 0x4d, 0x42, 0x53, 0x25, 0x70, 0x17, 0x18, 0x56, 0xc0, 0x78, 0x03, 0x7f, 0xe0, 0x5f, 0xab,
|
||||||
0xbc, 0x86, 0x1f, 0xf0, 0xaf, 0x91, 0x3f, 0x35, 0xf3, 0xa7, 0xc3, 0xfc, 0xe9, 0x28, 0x7f, 0x6a,
|
0x78, 0xda, 0x2f, 0x9e, 0x0e, 0x8a, 0xa7, 0xc3, 0xe2, 0xa9, 0x6d, 0x15, 0x8f, 0x47, 0xc5, 0xd3,
|
||||||
0x19, 0xf9, 0xe3, 0x71, 0xfe, 0xf4, 0x3e, 0x7f, 0x3a, 0xd1, 0x4f, 0x35, 0x25, 0x5e, 0x6f, 0x31,
|
0xdb, 0xe2, 0xe9, 0xd8, 0x3c, 0x35, 0x34, 0x79, 0x73, 0xc4, 0x10, 0xca, 0xde, 0x49, 0x01, 0x90,
|
||||||
0x82, 0xb2, 0x77, 0x9a, 0x13, 0x64, 0x16, 0xd7, 0x27, 0x50, 0x90, 0x3b, 0xe6, 0x2f, 0xe9, 0xc9,
|
0x6b, 0xdc, 0x48, 0xa0, 0x53, 0xee, 0x48, 0x3c, 0x67, 0x92, 0xb5, 0x72, 0xff, 0x87, 0x27, 0xb7,
|
||||||
0x1a, 0x59, 0xfc, 0xc3, 0x93, 0x5d, 0x64, 0x59, 0xc9, 0xd1, 0xcc, 0x5b, 0x3f, 0x78, 0xdc, 0x8d,
|
0x8c, 0xb2, 0x14, 0x63, 0xbf, 0x68, 0xfd, 0xe0, 0x71, 0x3b, 0x94, 0x83, 0xe2, 0x90, 0x83, 0xd7,
|
||||||
0xe5, 0x30, 0xdf, 0xe4, 0xf0, 0x2d, 0xc7, 0x6a, 0xbd, 0x8e, 0x72, 0x96, 0xa3, 0x1d, 0x37, 0x69,
|
0x18, 0xcb, 0xf9, 0x3a, 0x2c, 0x50, 0x0e, 0xb7, 0x3c, 0xa4, 0x3d, 0xe3, 0xab, 0xbd, 0x25, 0xca,
|
||||||
0xcd, 0xf5, 0x6a, 0xed, 0xc8, 0x72, 0x9c, 0x6f, 0x72, 0xbc, 0xab, 0x5e, 0xef, 0x73, 0x96, 0xf7,
|
0x51, 0x71, 0xc8, 0xd1, 0xb6, 0x7c, 0xbd, 0x2d, 0x50, 0xde, 0x6e, 0x79, 0xc8, 0xf1, 0x8c, 0xaf,
|
||||||
0x3b, 0x6e, 0x72, 0x32, 0xd7, 0xeb, 0x24, 0x63, 0x59, 0x74, 0xd6, 0x90, 0x39, 0xcc, 0x7b, 0x62,
|
0xe3, 0x1c, 0x65, 0xde, 0x58, 0x03, 0xe6, 0x31, 0xfe, 0xc8, 0x4e, 0xb6, 0x21, 0x36, 0x68, 0x15,
|
||||||
0xa7, 0xbb, 0x08, 0x1b, 0x36, 0x72, 0x61, 0xc3, 0x1d, 0xfd, 0x35, 0x6c, 0x66, 0x1a, 0x0f, 0x9b,
|
0xc4, 0x06, 0x5b, 0xda, 0x6b, 0xb0, 0x9f, 0x73, 0x3c, 0xd8, 0xdf, 0x52, 0xc8, 0x41, 0x61, 0xaf,
|
||||||
0x3b, 0x1e, 0x72, 0x98, 0xfb, 0x6b, 0x78, 0xb8, 0xe3, 0x26, 0x47, 0x73, 0xbd, 0x76, 0xf4, 0xd7,
|
0xc1, 0xc1, 0x96, 0x87, 0x1c, 0xce, 0xf8, 0xda, 0xd2, 0x5e, 0x83, 0x76, 0x71, 0x48, 0x7b, 0x5b,
|
||||||
0xb0, 0x95, 0x6f, 0xd2, 0xda, 0x55, 0xaf, 0xdc, 0x5f, 0xc3, 0xe3, 0x1d, 0x37, 0x79, 0x3f, 0xd7,
|
0xbe, 0x0a, 0x7b, 0x0d, 0x8e, 0xb6, 0x3c, 0xe4, 0xed, 0x8c, 0xaf, 0x2d, 0xed, 0x35, 0x38, 0x2e,
|
||||||
0x6b, 0x47, 0x7f, 0x0d, 0x4f, 0xf2, 0x4d, 0x96, 0xdd, 0x55, 0x53, 0xd9, 0x0d, 0x80, 0x0a, 0xc0,
|
0x0e, 0x59, 0x34, 0x57, 0x43, 0x47, 0x37, 0x24, 0x54, 0x48, 0x3c, 0x85, 0xcd, 0x22, 0xf1, 0x94,
|
||||||
0x93, 0xfb, 0x2c, 0xe4, 0xcf, 0x31, 0x8d, 0xd6, 0xc9, 0x4b, 0xe5, 0x40, 0x4d, 0xe8, 0xc4, 0xde,
|
0xd0, 0x78, 0x15, 0xbd, 0x8c, 0x0e, 0xd4, 0x84, 0xf3, 0x84, 0x4f, 0xa6, 0x2a, 0x62, 0x52, 0xd6,
|
||||||
0x74, 0x26, 0x43, 0x26, 0x44, 0xa5, 0x5d, 0x4b, 0x99, 0x8c, 0xdd, 0xb8, 0x2f, 0x4c, 0xfb, 0x82,
|
0x3a, 0x8d, 0x0c, 0xc9, 0xda, 0x0e, 0xfb, 0xc2, 0x76, 0x2f, 0x44, 0x20, 0x92, 0x19, 0x62, 0x8e,
|
||||||
0xfb, 0x3c, 0x9e, 0x33, 0x66, 0x7c, 0x14, 0x40, 0x75, 0x9d, 0xbd, 0x52, 0xe6, 0x6f, 0xa6, 0xdd,
|
0x47, 0x21, 0xa9, 0xae, 0xd2, 0x57, 0x86, 0xfc, 0xcd, 0x76, 0x2f, 0xc7, 0x63, 0xe6, 0x29, 0x39,
|
||||||
0x9b, 0x4c, 0x98, 0x23, 0xc5, 0x9c, 0x1b, 0x81, 0x73, 0xd3, 0x8e, 0xa3, 0x5b, 0x18, 0x19, 0xa1,
|
0xc3, 0xc6, 0xc4, 0xb9, 0xee, 0xc4, 0xe1, 0x27, 0x18, 0x19, 0xa1, 0xf5, 0x99, 0x60, 0xc3, 0x4e,
|
||||||
0xf5, 0x99, 0x62, 0xc3, 0x4e, 0x78, 0x84, 0xdd, 0x84, 0xa8, 0x90, 0xcd, 0x3c, 0x97, 0x00, 0x9e,
|
0x44, 0x8c, 0xdd, 0x84, 0xac, 0x91, 0xf5, 0x38, 0x57, 0x90, 0x3c, 0x47, 0x22, 0x8d, 0x7c, 0x89,
|
||||||
0x63, 0x9e, 0x84, 0xae, 0x40, 0xf9, 0x06, 0x22, 0x10, 0xd1, 0x93, 0x8f, 0x6e, 0x47, 0x04, 0xf6,
|
0xf4, 0x2d, 0xcc, 0x40, 0xc4, 0x4c, 0x3e, 0xa6, 0x1d, 0x91, 0xd8, 0x1b, 0xfb, 0x90, 0xb9, 0x3d,
|
||||||
0xc6, 0x2e, 0x20, 0xb7, 0x23, 0x71, 0x44, 0x0c, 0xa7, 0xec, 0x74, 0x8b, 0xc4, 0xae, 0x69, 0x6f,
|
0x85, 0x23, 0x62, 0x34, 0x61, 0x27, 0x1b, 0x28, 0x76, 0x6d, 0x77, 0x0d, 0xa9, 0xac, 0xfa, 0xc5,
|
||||||
0x10, 0x95, 0x56, 0xbf, 0x28, 0x06, 0x93, 0x12, 0xe8, 0xbc, 0xfb, 0xc3, 0x6d, 0xf2, 0x3a, 0x8b,
|
0x09, 0xa8, 0x94, 0x40, 0xe7, 0xdd, 0x1b, 0x6c, 0xa2, 0x77, 0x3e, 0x4f, 0xef, 0x2c, 0x60, 0xcf,
|
||||||
0xf2, 0xce, 0x7d, 0xf6, 0x42, 0x97, 0xa5, 0x6e, 0xe3, 0x3f, 0x5f, 0xe4, 0x1f, 0xc0, 0x50, 0xe1,
|
0x74, 0x91, 0xea, 0x26, 0xfc, 0xb3, 0x79, 0xfc, 0x3e, 0x0c, 0x15, 0x3c, 0x96, 0xe4, 0x3a, 0x65,
|
||||||
0x45, 0x82, 0x5c, 0x25, 0x2c, 0x3d, 0xce, 0xcf, 0x09, 0xbb, 0x5a, 0x14, 0x76, 0x4d, 0x9d, 0x98,
|
0x99, 0x38, 0x3f, 0x47, 0xec, 0x7a, 0x9e, 0xd8, 0x0d, 0xf5, 0x12, 0xf1, 0x73, 0xf8, 0x37, 0x19,
|
||||||
0xff, 0x1c, 0xff, 0x75, 0xca, 0x8f, 0xd5, 0x3a, 0x82, 0xb6, 0x00, 0x66, 0x2d, 0x98, 0x8b, 0x63,
|
0x3e, 0x56, 0xeb, 0x18, 0xda, 0x02, 0x98, 0xb5, 0x60, 0x2e, 0x4e, 0x68, 0x24, 0x43, 0x2e, 0xe5,
|
||||||
0x1a, 0x8a, 0xc0, 0x13, 0x62, 0x49, 0x42, 0x5a, 0x68, 0x87, 0x2b, 0x0b, 0x6d, 0x3d, 0x2d, 0xb4,
|
0x02, 0x85, 0xac, 0xd0, 0x0e, 0x96, 0x16, 0xda, 0x66, 0x56, 0x68, 0x0f, 0xe0, 0xc1, 0x5a, 0x59,
|
||||||
0x87, 0xf0, 0x60, 0xac, 0x2d, 0xb3, 0x2a, 0x62, 0x20, 0xe8, 0xc7, 0x9c, 0xcb, 0xfc, 0x15, 0x0c,
|
0x66, 0xb5, 0xc7, 0x80, 0xd3, 0x8f, 0x84, 0x50, 0xc5, 0x16, 0x0c, 0xd9, 0x04, 0x26, 0xac, 0xe0,
|
||||||
0xd9, 0x04, 0x26, 0x2c, 0xff, 0x35, 0x35, 0x80, 0xa8, 0xb6, 0x6b, 0x1e, 0xf6, 0x1c, 0xb9, 0x20,
|
0x25, 0x53, 0x80, 0xac, 0x77, 0x1a, 0x1c, 0x7b, 0x8e, 0x82, 0x90, 0x0c, 0x03, 0x5b, 0xd7, 0xe8,
|
||||||
0x11, 0xf8, 0xa6, 0xaa, 0xd1, 0xfd, 0x50, 0x48, 0x1a, 0x3a, 0x8c, 0xe0, 0x1c, 0xa5, 0x8a, 0x74,
|
0x5e, 0x24, 0x15, 0x8d, 0x3c, 0x46, 0x70, 0x8e, 0xd2, 0x45, 0xfa, 0x32, 0xd2, 0xa5, 0x92, 0xe7,
|
||||||
0x2f, 0x54, 0xa5, 0xd2, 0xcb, 0x5e, 0xf8, 0xf0, 0x62, 0xed, 0x99, 0xd3, 0x0c, 0xbe, 0xf9, 0xac,
|
0x1b, 0x01, 0x6c, 0xac, 0x94, 0x39, 0x8b, 0xe0, 0xdb, 0x8f, 0x46, 0xe8, 0x1b, 0xfa, 0xc0, 0x88,
|
||||||
0x0f, 0x7d, 0x4d, 0x1f, 0x19, 0x91, 0x33, 0x4f, 0xcc, 0xd9, 0xa1, 0x0e, 0x3b, 0xfc, 0x89, 0xc5,
|
0x9a, 0x72, 0x39, 0x43, 0x87, 0x3a, 0xec, 0x89, 0x47, 0x96, 0x20, 0xd1, 0x0d, 0xaa, 0xbb, 0x3d,
|
||||||
0x28, 0x74, 0x8b, 0xe9, 0x6e, 0x3a, 0x78, 0x21, 0x02, 0x5a, 0x16, 0x95, 0x1c, 0x32, 0xea, 0x4b,
|
0xc7, 0x0b, 0x11, 0xe0, 0xb2, 0xcc, 0xe4, 0x80, 0xd1, 0x40, 0xf1, 0x90, 0x69, 0xfe, 0xb2, 0x00,
|
||||||
0x2f, 0x60, 0x4a, 0xbf, 0x34, 0xc1, 0x09, 0xda, 0x37, 0x4e, 0x5f, 0x6c, 0xd3, 0x6f, 0x98, 0x46,
|
0x27, 0xa8, 0xdf, 0x24, 0xdb, 0xd8, 0xc4, 0xdf, 0x20, 0xf3, 0xd8, 0x2f, 0xd0, 0x22, 0x87, 0x94,
|
||||||
0xec, 0x3d, 0xb4, 0xc8, 0x01, 0xf5, 0x60, 0xb2, 0xcb, 0x52, 0x28, 0xf4, 0x5f, 0xb7, 0x68, 0x75,
|
0xc3, 0x64, 0x97, 0x87, 0x50, 0x14, 0xbc, 0x6c, 0xe0, 0xea, 0xe6, 0x93, 0x5d, 0xa8, 0x1a, 0x7a,
|
||||||
0x7d, 0x6b, 0xe6, 0xa6, 0x86, 0x1e, 0xc4, 0xbe, 0x61, 0xf2, 0x99, 0xc7, 0x8f, 0xa4, 0x7b, 0xfd,
|
0x10, 0xf7, 0x96, 0xa9, 0x27, 0x91, 0x3c, 0x90, 0xee, 0xcd, 0x37, 0xa2, 0xf1, 0xb4, 0x6e, 0x61,
|
||||||
0x8d, 0x28, 0x3e, 0x65, 0x5b, 0x78, 0x79, 0x07, 0xec, 0x20, 0x4b, 0x30, 0x1f, 0x33, 0x49, 0x33,
|
0xf3, 0x0e, 0xd0, 0x81, 0x96, 0x64, 0x01, 0x46, 0x92, 0x41, 0xee, 0xf6, 0x74, 0xa7, 0xa8, 0xad,
|
||||||
0x77, 0xfb, 0xaa, 0x53, 0x54, 0x5e, 0x80, 0xd8, 0xc0, 0x39, 0x41, 0xdd, 0x18, 0xe0, 0x41, 0x75,
|
0x00, 0xbe, 0x81, 0x73, 0x82, 0xbe, 0x31, 0x40, 0x41, 0x4d, 0xf8, 0x12, 0x33, 0x47, 0xd8, 0x38,
|
||||||
0xfa, 0x12, 0x3d, 0x47, 0x98, 0x38, 0x8e, 0x00, 0x22, 0x34, 0xaa, 0x87, 0x0d, 0x52, 0x12, 0xe7,
|
0x8e, 0x40, 0x46, 0x68, 0xd5, 0x0f, 0x5a, 0xa4, 0x22, 0xcf, 0x2e, 0x6e, 0xab, 0x9d, 0x86, 0x81,
|
||||||
0x17, 0x37, 0xe5, 0x76, 0x4d, 0x53, 0xd8, 0x05, 0x4a, 0x9c, 0x4a, 0x4c, 0xfb, 0x3c, 0x96, 0x07,
|
0x70, 0x4b, 0x90, 0x38, 0x95, 0xd8, 0xee, 0x59, 0xa2, 0xf6, 0x80, 0x95, 0x02, 0xa8, 0x4c, 0x0f,
|
||||||
0xa0, 0x4a, 0x4e, 0x54, 0x94, 0x07, 0x51, 0xa3, 0x35, 0x81, 0xe1, 0xd1, 0xcc, 0x9e, 0x00, 0xaf,
|
0xbc, 0xc6, 0x70, 0x02, 0xc3, 0xa3, 0x9d, 0x3f, 0x41, 0xbe, 0x4a, 0xa5, 0x12, 0x21, 0xc1, 0x1e,
|
||||||
0x12, 0x21, 0x79, 0x40, 0xb0, 0x47, 0x9f, 0xcb, 0xaf, 0xe9, 0xf7, 0xfa, 0x98, 0xaa, 0x6d, 0x46,
|
0x7d, 0x46, 0xbf, 0x61, 0xf6, 0x8d, 0x98, 0xba, 0x6d, 0xc6, 0x74, 0x0b, 0x73, 0x9a, 0xbb, 0xa4,
|
||||||
0xb8, 0x85, 0x39, 0xcd, 0x5e, 0xd1, 0x6e, 0xf6, 0x06, 0xbb, 0xf4, 0x85, 0x8b, 0xa7, 0xda, 0x10,
|
0xdd, 0xbc, 0xec, 0x6f, 0xd3, 0x17, 0xce, 0x4b, 0xb5, 0xc6, 0x7d, 0x75, 0x07, 0x7c, 0x93, 0x82,
|
||||||
0xbe, 0xaa, 0x03, 0xbe, 0x4e, 0xc0, 0x89, 0xd8, 0xe5, 0x6e, 0xf1, 0x44, 0x2f, 0x4b, 0xad, 0x91,
|
0x11, 0xb1, 0xcb, 0xdd, 0x60, 0x89, 0xcb, 0x3c, 0xb4, 0x86, 0x8a, 0xe2, 0x88, 0x11, 0x81, 0x1b,
|
||||||
0xa4, 0x38, 0x62, 0x84, 0x10, 0x06, 0x30, 0xf4, 0x15, 0xf5, 0xbb, 0xdf, 0x98, 0x4e, 0xc7, 0x87,
|
0xc0, 0xd0, 0x57, 0xe6, 0xef, 0xcb, 0xda, 0x70, 0x3a, 0x3a, 0x78, 0xf7, 0xee, 0x5d, 0x89, 0x0d,
|
||||||
0x1f, 0x3e, 0x7c, 0x28, 0xa8, 0x61, 0xbc, 0x4d, 0x21, 0x95, 0x31, 0xe4, 0x02, 0x35, 0x20, 0x1c,
|
0xeb, 0x75, 0x08, 0xe9, 0x88, 0x21, 0x17, 0xc8, 0x01, 0x11, 0x40, 0xbb, 0x43, 0xc9, 0x34, 0x61,
|
||||||
0x64, 0xb7, 0x29, 0x99, 0xc5, 0x6c, 0x62, 0xe5, 0xd7, 0x4a, 0x53, 0x4f, 0xce, 0x92, 0x71, 0xd5,
|
0x63, 0xa7, 0xb8, 0x56, 0x9a, 0x70, 0x35, 0x4d, 0x47, 0x75, 0x4f, 0x84, 0x8d, 0x8f, 0xcc, 0xff,
|
||||||
0xe1, 0x41, 0xed, 0x33, 0x73, 0x3f, 0xbd, 0xe8, 0x4f, 0xec, 0xc4, 0xa1, 0xb7, 0xc4, 0x4b, 0xb6,
|
0xf0, 0x6c, 0x7e, 0xb1, 0x13, 0x87, 0xde, 0x12, 0x2f, 0xd9, 0xfe, 0x1c, 0x05, 0x34, 0x7a, 0xb0,
|
||||||
0x3f, 0xc7, 0x3e, 0x0d, 0x1f, 0x4d, 0x5b, 0xad, 0xb7, 0x6b, 0xd4, 0xde, 0xc3, 0xad, 0x46, 0x8f,
|
0x5d, 0xbd, 0xde, 0x69, 0x50, 0x77, 0x07, 0x8f, 0x1a, 0x3e, 0xf0, 0x18, 0x09, 0xee, 0x89, 0xf1,
|
||||||
0x5e, 0x84, 0x02, 0x0f, 0xf8, 0xe4, 0x40, 0xc0, 0x5e, 0x0c, 0x73, 0x44, 0xc3, 0xc4, 0x1c, 0x17,
|
0x9e, 0x84, 0xb3, 0x18, 0xc6, 0x88, 0x49, 0x13, 0xb3, 0xbc, 0xb0, 0xa2, 0x64, 0x5c, 0x0e, 0x8d,
|
||||||
0xd6, 0x94, 0x8c, 0xde, 0x48, 0x9f, 0x1f, 0x23, 0x4f, 0x28, 0x13, 0x50, 0xd7, 0x45, 0x94, 0x2d,
|
0xfc, 0xe8, 0x79, 0x52, 0xab, 0x80, 0xfa, 0x3e, 0x66, 0xd9, 0x92, 0x06, 0xba, 0x67, 0x65, 0x0d,
|
||||||
0x58, 0xa0, 0x7b, 0x5e, 0xb4, 0x80, 0xb1, 0xe4, 0xa2, 0x56, 0xa3, 0x5e, 0x30, 0x80, 0x92, 0x98,
|
0x58, 0x0b, 0x26, 0x6a, 0xb7, 0x9a, 0x25, 0x05, 0x68, 0x8a, 0x59, 0x48, 0x48, 0xe0, 0x06, 0x26,
|
||||||
0xa6, 0x84, 0x00, 0x6d, 0x60, 0xd2, 0x2b, 0xc8, 0xfc, 0xf6, 0x6d, 0xf5, 0x90, 0x91, 0x99, 0xb5,
|
0xbd, 0x12, 0xcd, 0x6f, 0xdf, 0x96, 0x0f, 0x19, 0xb9, 0x5a, 0x5b, 0xed, 0x32, 0x4d, 0xe3, 0xca,
|
||||||
0xd1, 0x5a, 0x25, 0x33, 0x80, 0xd9, 0xf4, 0x4d, 0x4a, 0xa0, 0x17, 0x75, 0xe4, 0x19, 0xf3, 0x60,
|
0x7a, 0x18, 0x8c, 0x13, 0x2e, 0x12, 0xae, 0x5e, 0xca, 0x23, 0x46, 0xff, 0x8f, 0xb5, 0xa6, 0xda,
|
||||||
0xb5, 0xbb, 0x9e, 0x40, 0x88, 0x70, 0xd7, 0x45, 0x3d, 0xf4, 0x54, 0x23, 0x50, 0x0b, 0x90, 0x69,
|
0x6f, 0x2e, 0xe3, 0x33, 0x84, 0x79, 0x77, 0x16, 0x66, 0x19, 0xa5, 0x2e, 0xba, 0x46, 0x39, 0x00,
|
||||||
0x78, 0xd9, 0x79, 0x43, 0x64, 0xa4, 0x54, 0xcd, 0x9c, 0xaa, 0xbb, 0x8a, 0x2c, 0xa5, 0x3a, 0xcc,
|
0xdc, 0x2e, 0x97, 0x98, 0x76, 0xfc, 0x55, 0x91, 0x04, 0x7d, 0xda, 0x10, 0x44, 0x85, 0x6c, 0x37,
|
||||||
0x4a, 0xef, 0x5a, 0x39, 0xef, 0x33, 0x0a, 0xb2, 0x4f, 0xbe, 0xce, 0x3c, 0xc9, 0xd6, 0x89, 0x3a,
|
0xb8, 0x3a, 0xb7, 0x56, 0x41, 0xed, 0x17, 0x50, 0x5d, 0x00, 0x5b, 0x05, 0x75, 0x90, 0x97, 0xf3,
|
||||||
0xc9, 0x09, 0xd3, 0xaa, 0xbc, 0x36, 0x21, 0x3f, 0x14, 0x29, 0xb7, 0x89, 0x86, 0x24, 0x57, 0x99,
|
0x95, 0x11, 0xf9, 0x36, 0x87, 0x20, 0xbb, 0xe4, 0xeb, 0x94, 0x2b, 0xb6, 0x8a, 0xd4, 0x71, 0x01,
|
||||||
0x81, 0x07, 0x36, 0xd6, 0x11, 0xb5, 0xd0, 0x72, 0x41, 0x00, 0x43, 0xff, 0x3e, 0xc9, 0xa9, 0xd7,
|
0x98, 0x55, 0xfa, 0x95, 0xac, 0xbd, 0x2b, 0x43, 0x6e, 0x22, 0x0d, 0x89, 0xc3, 0xd2, 0xe1, 0x46,
|
||||||
0x22, 0x07, 0xc0, 0x4e, 0x4e, 0xf4, 0x75, 0xad, 0xa5, 0xc1, 0x1b, 0x03, 0x08, 0x2b, 0xb6, 0x0e,
|
0xd6, 0x88, 0xd2, 0x46, 0xcd, 0x85, 0x21, 0x4b, 0x80, 0xda, 0x6a, 0x60, 0x2b, 0x4f, 0x47, 0xb6,
|
||||||
0x21, 0x28, 0x31, 0x96, 0x73, 0x61, 0xcd, 0x15, 0x2b, 0x43, 0x30, 0x3b, 0x70, 0x83, 0x97, 0x1a,
|
0x5b, 0x00, 0x7d, 0x5d, 0xa9, 0x69, 0xb0, 0x46, 0x1f, 0x5c, 0x95, 0xad, 0xca, 0x3a, 0x94, 0x58,
|
||||||
0xc4, 0x63, 0x21, 0x2b, 0x34, 0xd0, 0x79, 0xe1, 0x84, 0x63, 0x6a, 0xa8, 0xce, 0xed, 0x0e, 0x80,
|
0x8b, 0xf1, 0xb5, 0xe2, 0xda, 0x96, 0xa1, 0x57, 0xed, 0xf9, 0xe1, 0x73, 0x03, 0x5c, 0xa7, 0x14,
|
||||||
0x1c, 0x32, 0xa3, 0x98, 0xce, 0x77, 0x5b, 0xe0, 0xa6, 0x5e, 0x5f, 0x8c, 0x3c, 0x12, 0xe8, 0x2e,
|
0x69, 0xc6, 0xe3, 0x78, 0x34, 0x16, 0x18, 0x6e, 0xba, 0x1b, 0xbc, 0x83, 0xe2, 0x00, 0xd1, 0x56,
|
||||||
0xe7, 0x13, 0x8f, 0x1d, 0xc4, 0xfa, 0x17, 0x32, 0xce, 0xfb, 0xbb, 0x2d, 0xf0, 0xf2, 0x29, 0x6b,
|
0x4e, 0x11, 0x77, 0x1b, 0x52, 0x58, 0x73, 0xc1, 0xf3, 0x48, 0x68, 0x3a, 0xa7, 0x0f, 0x22, 0xf1,
|
||||||
0x43, 0xd2, 0x50, 0xcc, 0xab, 0x0b, 0x99, 0xd2, 0x20, 0xa0, 0xc4, 0xe1, 0x31, 0xf6, 0x48, 0x60,
|
0xb0, 0x7e, 0x3c, 0x93, 0x51, 0xd1, 0x33, 0x6e, 0x48, 0x59, 0x1f, 0xf2, 0xd6, 0x26, 0x73, 0xc5,
|
||||||
0x8f, 0x2d, 0x82, 0x86, 0x97, 0xa9, 0xa0, 0xac, 0x6e, 0x11, 0x9c, 0xe5, 0xf9, 0x64, 0x02, 0x26,
|
0xa2, 0x62, 0x91, 0x09, 0x0d, 0x43, 0x4a, 0x3c, 0x91, 0x60, 0xdf, 0x05, 0xfa, 0xd8, 0x40, 0x68,
|
||||||
0x2d, 0x9c, 0xee, 0xeb, 0xed, 0xca, 0xd3, 0x1d, 0x34, 0x5b, 0xad, 0xf4, 0x80, 0xea, 0xc9, 0x98,
|
0x70, 0x95, 0x11, 0xca, 0x6b, 0x21, 0xc1, 0xfb, 0x01, 0x31, 0x1e, 0x83, 0x4a, 0x4b, 0xd2, 0x7d,
|
||||||
0x67, 0xd6, 0x8a, 0xf2, 0xa8, 0x3b, 0xa6, 0xdf, 0xb9, 0x07, 0x27, 0x3e, 0x87, 0x16, 0x03, 0x2b,
|
0xfd, 0xb4, 0x54, 0xba, 0xbd, 0xfd, 0x76, 0x3b, 0x0f, 0x2c, 0x7c, 0xb2, 0x66, 0x91, 0xb5, 0xa4,
|
||||||
0xaf, 0xae, 0xe5, 0x0a, 0xcc, 0x11, 0xcb, 0x6f, 0xb8, 0x22, 0x9a, 0x43, 0xb1, 0xba, 0x3e, 0xb7,
|
0xe4, 0x9a, 0x2e, 0xec, 0x77, 0xc1, 0x41, 0xe2, 0x33, 0x68, 0x5b, 0xb0, 0x9a, 0x9b, 0xfe, 0x40,
|
||||||
0xdb, 0x2c, 0xc8, 0xe6, 0x65, 0x07, 0x1b, 0xd9, 0xd3, 0x5f, 0x26, 0x14, 0x7f, 0x95, 0xb8, 0xc3,
|
0x17, 0x08, 0xac, 0x0f, 0xb7, 0x42, 0x03, 0xcd, 0xd2, 0xbb, 0xbe, 0x92, 0x77, 0x3b, 0x2c, 0xcc,
|
||||||
0x12, 0x3e, 0xf1, 0xe2, 0xe0, 0x99, 0xc6, 0x0c, 0x1a, 0x3a, 0xcf, 0x77, 0x89, 0xcb, 0x99, 0xc0,
|
0x67, 0x70, 0x0f, 0x9b, 0xe3, 0x93, 0x5f, 0xc6, 0x14, 0xbf, 0x74, 0xdc, 0x61, 0x5b, 0x30, 0xe6,
|
||||||
0x4e, 0x08, 0x9c, 0xe6, 0xf8, 0x89, 0xcb, 0xd2, 0x46, 0x4d, 0x24, 0x11, 0x16, 0x93, 0xaa, 0x86,
|
0x49, 0xf8, 0x44, 0x13, 0x06, 0x4d, 0x22, 0x0f, 0x7c, 0xe2, 0x0b, 0x26, 0xb1, 0xbb, 0x02, 0xa3,
|
||||||
0x73, 0x16, 0x2c, 0xe0, 0xfa, 0xbc, 0x94, 0xe8, 0xcd, 0xed, 0x5e, 0x90, 0xf8, 0x54, 0x66, 0x9c,
|
0x79, 0x41, 0xea, 0xb3, 0xac, 0xf9, 0x93, 0x69, 0x8c, 0x79, 0xa3, 0x6e, 0x4a, 0x04, 0x0b, 0xe7,
|
||||||
0xfa, 0x47, 0x8e, 0x2d, 0xb6, 0x3c, 0x4f, 0x3b, 0x0b, 0x43, 0xf3, 0x78, 0xe1, 0x53, 0x7a, 0x89,
|
0x6a, 0xc5, 0xac, 0x3c, 0x99, 0xc3, 0xdd, 0xcb, 0x30, 0x0d, 0xa8, 0xca, 0x31, 0xcd, 0x87, 0x93,
|
||||||
0xa6, 0xde, 0x17, 0x98, 0xf1, 0x22, 0x3a, 0x67, 0xec, 0x2b, 0x03, 0xfa, 0x2c, 0x9c, 0xca, 0x19,
|
0x0d, 0xba, 0x3c, 0xcb, 0xba, 0x15, 0xcb, 0xe0, 0xf0, 0xe8, 0x31, 0xbb, 0x98, 0xd3, 0xfb, 0x25,
|
||||||
0xa4, 0x7c, 0x33, 0x97, 0x23, 0x38, 0x61, 0xa9, 0x22, 0x5a, 0x05, 0x81, 0xfd, 0x92, 0x43, 0x7d,
|
0x64, 0xbc, 0xdc, 0x2e, 0x10, 0x7b, 0x5a, 0x81, 0x01, 0x8b, 0x26, 0x6a, 0x0a, 0x21, 0xbf, 0x5f,
|
||||||
0x1f, 0x5a, 0x17, 0x86, 0xc7, 0x16, 0x72, 0xd9, 0x4b, 0xe7, 0x6f, 0x4a, 0x5e, 0xe6, 0x82, 0x0c,
|
0xd0, 0x91, 0x82, 0xb0, 0x8c, 0x11, 0xc3, 0x82, 0xc4, 0x1e, 0xcc, 0xa3, 0x41, 0x00, 0xed, 0x10,
|
||||||
0x5a, 0x33, 0x18, 0x5c, 0xac, 0x2c, 0xaa, 0x03, 0x06, 0x58, 0xcf, 0xfb, 0xb4, 0xf4, 0xba, 0xa7,
|
0x43, 0xb1, 0xa5, 0x5a, 0xb4, 0xd2, 0xd9, 0xab, 0x32, 0x9a, 0x9b, 0x20, 0x4f, 0xd7, 0x79, 0x1a,
|
||||||
0xe0, 0x40, 0x65, 0xa4, 0x15, 0x4e, 0x78, 0xf7, 0xcb, 0x87, 0x93, 0x93, 0x93, 0x33, 0xd2, 0x1e,
|
0x9c, 0xaf, 0x56, 0xba, 0xab, 0x86, 0x52, 0x51, 0xf4, 0x7e, 0xd9, 0x15, 0x52, 0xc9, 0x80, 0x5a,
|
||||||
0xdb, 0xd7, 0x5f, 0xee, 0xee, 0x08, 0x8e, 0x14, 0xd8, 0xd3, 0xe2, 0x55, 0x3a, 0x41, 0x65, 0x1d,
|
0x49, 0x4b, 0x8c, 0xf0, 0xe6, 0x97, 0x77, 0xc7, 0xc7, 0xc7, 0xa7, 0xa4, 0x33, 0x72, 0x6f, 0x3e,
|
||||||
0x1e, 0x86, 0x08, 0x27, 0xa0, 0x3c, 0x9c, 0x9b, 0xc5, 0x21, 0xf5, 0xc9, 0x8c, 0x0b, 0x29, 0xf6,
|
0xdf, 0xdd, 0x11, 0x1c, 0x53, 0xb0, 0x4f, 0xc6, 0xeb, 0x79, 0x82, 0xcc, 0x7a, 0x22, 0x8a, 0x30,
|
||||||
0x74, 0x3a, 0xa1, 0x0f, 0x03, 0xfa, 0x4a, 0xbc, 0x00, 0x10, 0x5d, 0xaa, 0xb3, 0x81, 0x42, 0x11,
|
0x9d, 0x00, 0xf3, 0x20, 0x37, 0x4b, 0x22, 0x1a, 0x90, 0xa9, 0x90, 0x4a, 0xee, 0x98, 0x70, 0x42,
|
||||||
0x34, 0xa0, 0x50, 0x37, 0x43, 0xd5, 0x9c, 0x4f, 0xd4, 0x55, 0x21, 0xd4, 0xba, 0xf1, 0x82, 0x86,
|
0x1b, 0x86, 0xf4, 0x85, 0xf0, 0x10, 0xaa, 0x84, 0xd2, 0xb2, 0x01, 0x43, 0x31, 0x34, 0xb5, 0x50,
|
||||||
0x98, 0x3b, 0x64, 0xcc, 0x04, 0x16, 0x43, 0x01, 0x68, 0x01, 0x03, 0x06, 0xb6, 0x49, 0x24, 0x81,
|
0x8b, 0x23, 0xdd, 0xf0, 0x8f, 0xf5, 0xf5, 0x23, 0xd4, 0xcf, 0xd1, 0x1c, 0x87, 0x18, 0x3b, 0x64,
|
||||||
0xe6, 0x89, 0x87, 0x0c, 0xb9, 0x40, 0x16, 0x7c, 0x11, 0x2c, 0xd6, 0xe6, 0xa3, 0x50, 0x89, 0x08,
|
0xc4, 0x24, 0x16, 0x58, 0x09, 0xd9, 0x02, 0x86, 0x16, 0x6c, 0xbd, 0x48, 0x0a, 0x0d, 0x99, 0x88,
|
||||||
0x06, 0xba, 0x8a, 0x02, 0xa3, 0x04, 0x51, 0x8f, 0xea, 0x48, 0xd8, 0xc7, 0x7f, 0xad, 0xe4, 0x8a,
|
0x18, 0x62, 0x01, 0x2d, 0x78, 0x91, 0x2c, 0x31, 0xea, 0xa3, 0x50, 0xdd, 0x08, 0x3a, 0xba, 0xf6,
|
||||||
0x42, 0xb0, 0x30, 0x78, 0x76, 0x49, 0x6f, 0x34, 0x40, 0xad, 0x41, 0x4a, 0xa0, 0x8e, 0x85, 0x92,
|
0x02, 0xab, 0x02, 0x5e, 0x8f, 0xec, 0x28, 0x38, 0x27, 0x78, 0xa9, 0x15, 0x8c, 0x82, 0xb3, 0x30,
|
||||||
0x51, 0x3d, 0x6c, 0xe9, 0xf0, 0x78, 0xe5, 0x95, 0xad, 0x2a, 0x5a, 0xa1, 0x18, 0xd5, 0xb8, 0x96,
|
0x78, 0xf6, 0xc9, 0xe5, 0xb0, 0x8f, 0x5c, 0x03, 0x95, 0x50, 0x8b, 0x85, 0x94, 0x91, 0x3d, 0x6c,
|
||||||
0x7b, 0xe3, 0x1f, 0x88, 0x69, 0x65, 0xe9, 0xb7, 0x21, 0x3d, 0x0f, 0x67, 0xdc, 0x56, 0x6d, 0x6a,
|
0x13, 0x51, 0xbc, 0xea, 0xd2, 0xf6, 0x17, 0xb5, 0x50, 0xf6, 0x6a, 0x5c, 0x2b, 0xac, 0xf1, 0x0f,
|
||||||
0x1b, 0x69, 0xa3, 0x8c, 0xdf, 0xb6, 0xb5, 0x90, 0x5f, 0x74, 0xf0, 0x75, 0x62, 0xfe, 0xc8, 0xe2,
|
0xf8, 0xb4, 0xd6, 0xf4, 0x6b, 0x97, 0x9e, 0xb9, 0x33, 0x1e, 0xab, 0x0f, 0x75, 0xad, 0xac, 0xf9,
|
||||||
0x95, 0x41, 0x9b, 0x36, 0xaa, 0xd7, 0xa3, 0x37, 0x51, 0xbb, 0xea, 0xca, 0xef, 0xfa, 0xcb, 0xe0,
|
0xc6, 0xb7, 0x4d, 0x6d, 0xe9, 0x67, 0xe3, 0x7c, 0xe7, 0x89, 0x78, 0x60, 0xc9, 0x52, 0xa7, 0xcd,
|
||||||
0x76, 0xb8, 0x16, 0x18, 0x8d, 0xd5, 0x17, 0x74, 0x69, 0x17, 0x8b, 0x96, 0x48, 0x0f, 0xea, 0x40,
|
0x6a, 0xe3, 0xcd, 0xf0, 0x95, 0xd7, 0x2e, 0xbb, 0x46, 0xbc, 0xf9, 0xdc, 0xff, 0x34, 0x58, 0x99,
|
||||||
0x98, 0x42, 0x21, 0xf2, 0xa8, 0x0f, 0x3e, 0x8c, 0xd1, 0xa1, 0xd8, 0x12, 0x43, 0x53, 0x05, 0x5e,
|
0x18, 0xad, 0xe5, 0x97, 0x7e, 0x59, 0x67, 0x8c, 0x9a, 0xc8, 0x04, 0xf5, 0xc0, 0x4d, 0xa1, 0x10,
|
||||||
0x81, 0xf6, 0x0a, 0xbc, 0x95, 0xe0, 0x34, 0x91, 0xfa, 0x0f, 0x6f, 0xae, 0x95, 0x7f, 0x6f, 0x18,
|
0x71, 0x1a, 0x80, 0x0d, 0x13, 0x34, 0x28, 0xb6, 0xd9, 0xd0, 0xa8, 0x81, 0x55, 0xa0, 0x65, 0x03,
|
||||||
0x92, 0x64, 0x4e, 0x53, 0x92, 0x22, 0xd8, 0x04, 0xba, 0x62, 0x97, 0x4c, 0x38, 0x32, 0x73, 0x78,
|
0x6b, 0xa5, 0x38, 0xa1, 0x64, 0xf6, 0xc3, 0xdb, 0x70, 0x6d, 0xdf, 0x5b, 0x86, 0x20, 0xb9, 0xd1,
|
||||||
0x11, 0x67, 0xf1, 0xb1, 0x97, 0x85, 0x17, 0x74, 0xdf, 0xf1, 0x52, 0xd6, 0x1a, 0x6f, 0xd3, 0xf6,
|
0x34, 0xa5, 0x18, 0x0e, 0x81, 0x4e, 0xdb, 0x27, 0x63, 0x81, 0xc8, 0x02, 0x36, 0x92, 0xdc, 0x3f,
|
||||||
0xfa, 0xcb, 0xfd, 0xa8, 0x37, 0x5c, 0x32, 0xc2, 0x51, 0x5d, 0xab, 0x3e, 0x48, 0xf7, 0x28, 0xd8,
|
0x76, 0x72, 0xf7, 0x82, 0x8e, 0x3e, 0x59, 0x88, 0x5a, 0xeb, 0x75, 0xd8, 0xde, 0x7c, 0xfe, 0x32,
|
||||||
0x2f, 0xdb, 0x7a, 0x6e, 0xc3, 0x2f, 0x83, 0xf3, 0xd1, 0xb2, 0x1d, 0x8f, 0x8f, 0xb4, 0x88, 0x0b,
|
0xbc, 0x1c, 0x2c, 0x28, 0xe1, 0xb0, 0x69, 0x58, 0xef, 0x67, 0x67, 0x94, 0xf4, 0x97, 0x1f, 0x3d,
|
||||||
0xdf, 0xc3, 0x23, 0xf6, 0xbb, 0x1b, 0x80, 0xe3, 0xfa, 0xcb, 0x45, 0xbf, 0xab, 0x8d, 0x58, 0xd4,
|
0xd3, 0xe1, 0xe7, 0xfe, 0xd9, 0x70, 0x51, 0x8f, 0x47, 0x87, 0x86, 0xc4, 0x45, 0xc0, 0x51, 0xc4,
|
||||||
0xa0, 0xab, 0xe0, 0x82, 0xdc, 0xf1, 0xc8, 0x73, 0x36, 0x49, 0xe8, 0xbe, 0x71, 0xa2, 0xca, 0xc8,
|
0x5e, 0x77, 0x4d, 0xe2, 0xb8, 0xf9, 0x7c, 0xd1, 0xeb, 0x1a, 0x25, 0x96, 0x39, 0xe8, 0xea, 0x74,
|
||||||
0x4b, 0xbc, 0x09, 0xdd, 0xce, 0x7d, 0xb9, 0x1a, 0xb8, 0x06, 0xc9, 0x18, 0x46, 0xb1, 0x59, 0x71,
|
0x41, 0xee, 0x44, 0xcc, 0xbd, 0x75, 0x14, 0xba, 0xaf, 0x8c, 0xa8, 0x23, 0xf2, 0x0a, 0x6f, 0x57,
|
||||||
0xc2, 0xde, 0x12, 0x7a, 0x9d, 0xb4, 0x67, 0x86, 0x0e, 0xd7, 0xd8, 0x3a, 0x25, 0x12, 0x35, 0xca,
|
0x37, 0x63, 0x5f, 0x2d, 0x4f, 0x5c, 0xfd, 0x74, 0x04, 0xe3, 0xdd, 0xb4, 0x3c, 0xb5, 0x6f, 0x70,
|
||||||
0xec, 0x5a, 0xde, 0x83, 0xbf, 0xa4, 0x5c, 0x51, 0xd9, 0x55, 0x3c, 0x64, 0x85, 0x3d, 0x45, 0x14,
|
0xbd, 0xf3, 0xac, 0x0f, 0x87, 0xae, 0xd9, 0xda, 0x38, 0x79, 0x12, 0x3d, 0x1e, 0x6d, 0x5b, 0xde,
|
||||||
0x4c, 0xdf, 0x85, 0xb9, 0xbc, 0x98, 0xc5, 0xb0, 0xf4, 0x4f, 0x26, 0xf1, 0xe2, 0x0d, 0xc0, 0xa6,
|
0xc3, 0xbf, 0x94, 0x5a, 0x52, 0xd9, 0xb5, 0x3f, 0xe4, 0x85, 0x3d, 0xcb, 0x28, 0x18, 0xbe, 0x73,
|
||||||
0x5c, 0x56, 0xa5, 0x09, 0xf7, 0x56, 0xd6, 0xf9, 0x83, 0x27, 0x50, 0x04, 0x42, 0x90, 0x0e, 0x88,
|
0xb3, 0x7e, 0x39, 0x8a, 0x61, 0xe9, 0x9f, 0x0c, 0xe2, 0xf9, 0x5b, 0x85, 0x75, 0xb1, 0xac, 0x4b,
|
||||||
0x84, 0x81, 0x0d, 0x8d, 0x83, 0x3b, 0x65, 0xa4, 0x3f, 0x50, 0x18, 0x85, 0x2b, 0x3e, 0x76, 0x12,
|
0x13, 0x9e, 0xad, 0xb5, 0xf3, 0x87, 0x48, 0xa1, 0x08, 0x44, 0x40, 0x1d, 0x32, 0x12, 0x3a, 0x36,
|
||||||
0x44, 0xa7, 0x1b, 0xec, 0xa6, 0xd6, 0x7e, 0x3d, 0x1f, 0x43, 0xd3, 0xf2, 0x2b, 0x42, 0x9b, 0x2a,
|
0x34, 0x0e, 0xfe, 0x84, 0x91, 0x5e, 0x5f, 0xe7, 0x28, 0x5c, 0x09, 0xb0, 0x93, 0x20, 0x26, 0xdc,
|
||||||
0x4b, 0x1a, 0x1d, 0xc9, 0x0c, 0xf6, 0x06, 0xe3, 0x56, 0x8d, 0x6c, 0x3a, 0x1c, 0x70, 0x80, 0x6c,
|
0xe0, 0x34, 0xbd, 0xf6, 0xeb, 0xd9, 0x08, 0x9a, 0x96, 0x5f, 0x31, 0xb5, 0xe9, 0xb2, 0x64, 0xb2,
|
||||||
0xd4, 0x48, 0x0b, 0x59, 0x4a, 0xe7, 0xab, 0xcf, 0x1b, 0x7b, 0x1c, 0x98, 0x57, 0x6c, 0x82, 0x39,
|
0x23, 0x99, 0xc2, 0xd9, 0xa0, 0xdc, 0xba, 0x95, 0x4f, 0x9c, 0x7d, 0x01, 0x29, 0x1b, 0x39, 0x32,
|
||||||
0xf7, 0x5a, 0xb8, 0x04, 0xbf, 0xea, 0xaf, 0xe6, 0xab, 0xd7, 0x97, 0xba, 0x23, 0x6c, 0x8a, 0xb6,
|
0x44, 0x16, 0xc2, 0xf9, 0xfa, 0xe3, 0xda, 0x1e, 0x07, 0x66, 0x20, 0x97, 0x60, 0xcc, 0xbd, 0x94,
|
||||||
0xcd, 0x16, 0x57, 0x03, 0x1d, 0x27, 0x80, 0x0d, 0x61, 0x05, 0x42, 0x44, 0xcf, 0xd8, 0x1b, 0x43,
|
0x2e, 0xd6, 0xaf, 0x7b, 0xcb, 0xf1, 0x9a, 0xcd, 0x85, 0xee, 0x08, 0x9b, 0xa2, 0x4d, 0xf3, 0xca,
|
||||||
0xeb, 0x4a, 0x5d, 0x46, 0xdd, 0x86, 0xb5, 0xdb, 0xc9, 0x64, 0xcb, 0x1d, 0xd4, 0x15, 0xb4, 0x56,
|
0x75, 0xdf, 0xf8, 0x09, 0xe4, 0x86, 0xa8, 0x06, 0x2e, 0x62, 0xe6, 0xf6, 0xb5, 0xae, 0x75, 0xad,
|
||||||
0x64, 0xe1, 0xa2, 0x8d, 0x6c, 0xbf, 0x1f, 0xbb, 0xba, 0x00, 0x16, 0x75, 0xbb, 0x86, 0x6a, 0xa1,
|
0x2f, 0xb8, 0x3e, 0x45, 0x8d, 0x4f, 0xe3, 0xf1, 0x86, 0x7b, 0xad, 0x6b, 0x68, 0xad, 0xc8, 0xdc,
|
||||||
0xe1, 0x3a, 0x99, 0x3f, 0x4e, 0x17, 0xee, 0xc9, 0x52, 0xe2, 0xfa, 0x9b, 0xe9, 0x64, 0x5e, 0xa1,
|
0xe5, 0x1d, 0xd9, 0x7c, 0xe7, 0x76, 0x7d, 0x01, 0x28, 0xfa, 0xc6, 0x0e, 0xd9, 0x42, 0xc5, 0x9d,
|
||||||
0x97, 0x0a, 0x34, 0xb6, 0x53, 0x36, 0xa9, 0x16, 0xec, 0xdf, 0x78, 0x33, 0x30, 0xfd, 0x14, 0x7b,
|
0xe7, 0xf6, 0x38, 0x99, 0xbb, 0x7b, 0xcb, 0x80, 0x9b, 0xaf, 0x26, 0x9e, 0x59, 0x85, 0x5e, 0x9c,
|
||||||
0x73, 0x7d, 0x7b, 0x90, 0x71, 0x1b, 0x1b, 0xd8, 0x0f, 0xb7, 0xb3, 0xcf, 0xb9, 0x33, 0x10, 0x1f,
|
0x53, 0xa0, 0x9d, 0x72, 0x49, 0xbd, 0xa4, 0xff, 0xd6, 0xab, 0x21, 0xec, 0xa7, 0xd0, 0xf7, 0x57,
|
||||||
0xa8, 0xeb, 0x35, 0x0c, 0xb5, 0x28, 0x11, 0x33, 0xdf, 0x0b, 0x1f, 0x33, 0x58, 0xe0, 0xe1, 0x42,
|
0xb7, 0x07, 0x39, 0xb6, 0xb5, 0x06, 0xfd, 0x60, 0x33, 0xfa, 0x0c, 0x3b, 0x4f, 0xe2, 0x7d, 0x7d,
|
||||||
0xf8, 0x82, 0xa9, 0x27, 0xf8, 0x93, 0xa0, 0x9c, 0x41, 0x91, 0x16, 0xf4, 0x29, 0xbd, 0x9e, 0xc1,
|
0x65, 0x87, 0xae, 0x16, 0xa7, 0x72, 0x1a, 0xf0, 0xe8, 0x21, 0x4f, 0x0b, 0x22, 0x9a, 0x73, 0x5f,
|
||||||
0x9f, 0xaf, 0x73, 0x5c, 0x36, 0x4a, 0xcf, 0xe0, 0xf5, 0xb4, 0xf1, 0xc9, 0xc0, 0x3e, 0x9c, 0x96,
|
0x50, 0xf5, 0x18, 0x3f, 0x33, 0xaa, 0x29, 0x14, 0x69, 0x49, 0x1f, 0xb3, 0x2b, 0x1f, 0xfc, 0x24,
|
||||||
0x33, 0xc3, 0x43, 0x3f, 0x29, 0x13, 0x8c, 0x20, 0x18, 0x0d, 0xc3, 0x5c, 0x39, 0x2f, 0x9a, 0x0f,
|
0x5e, 0xe4, 0x65, 0xab, 0xf2, 0x04, 0x56, 0xcf, 0x1a, 0x9f, 0x3c, 0xd9, 0x47, 0x93, 0x6a, 0xae,
|
||||||
0x6d, 0x3a, 0x19, 0x40, 0xae, 0xca, 0x48, 0xfc, 0x51, 0x10, 0x28, 0xf3, 0x86, 0xe7, 0xd0, 0x1e,
|
0x78, 0xe8, 0x27, 0x55, 0x8a, 0x1e, 0x04, 0xe3, 0x66, 0x54, 0x30, 0xc7, 0xe3, 0xd9, 0xd0, 0x66,
|
||||||
0xb1, 0x18, 0x8a, 0x8c, 0x4a, 0xfb, 0x0e, 0x4d, 0x5c, 0x12, 0x43, 0xf3, 0x55, 0x9c, 0x0b, 0x3b,
|
0x82, 0x01, 0xe8, 0xea, 0x88, 0xc4, 0x0f, 0x8d, 0x00, 0x59, 0x34, 0x3c, 0x07, 0xee, 0x90, 0x25,
|
||||||
0x5d, 0xf3, 0xcd, 0x24, 0xd2, 0x68, 0x21, 0x76, 0xe2, 0x9f, 0x7a, 0x7d, 0xdd, 0xb8, 0xd2, 0x3c,
|
0x50, 0x64, 0x74, 0xd8, 0x9f, 0xd3, 0xd4, 0x27, 0x09, 0x34, 0x5f, 0xe5, 0xeb, 0x97, 0xf3, 0xee,
|
||||||
0xac, 0x03, 0xba, 0xe3, 0xe7, 0x7a, 0x9a, 0xa3, 0xe3, 0x3a, 0x0c, 0x6a, 0xf8, 0x59, 0xaf, 0xaf,
|
0xab, 0xb1, 0xb0, 0xd5, 0x6a, 0x63, 0xee, 0xc4, 0x3f, 0xcd, 0xe6, 0xca, 0x91, 0xef, 0xa0, 0x09,
|
||||||
0x1f, 0xa5, 0x54, 0xae, 0xe0, 0xe7, 0x7a, 0x41, 0xad, 0xf7, 0xc7, 0x48, 0x03, 0x9f, 0x1b, 0x04,
|
0xd9, 0x1d, 0x7f, 0x57, 0xc3, 0x1c, 0x1e, 0x35, 0x61, 0x50, 0xc3, 0xdf, 0x66, 0x73, 0xe5, 0x80,
|
||||||
0x7d, 0x68, 0x36, 0x60, 0xd2, 0xc2, 0xcf, 0xf5, 0x82, 0x1a, 0x75, 0xb5, 0x9b, 0xfa, 0xb3, 0x41,
|
0x66, 0x62, 0x05, 0x7f, 0x57, 0x13, 0x6a, 0xbf, 0x3d, 0x42, 0x18, 0xf8, 0x5d, 0x43, 0xe8, 0xdd,
|
||||||
0x54, 0x43, 0x2b, 0xd5, 0x28, 0x6a, 0xb5, 0x34, 0x8f, 0x01, 0x78, 0xfd, 0x87, 0xb1, 0x08, 0xdb,
|
0x7e, 0x0b, 0x06, 0x2d, 0xfc, 0x5d, 0x4d, 0xa8, 0xd5, 0xd4, 0xa7, 0xe9, 0x3f, 0x6b, 0x48, 0xb5,
|
||||||
0x30, 0x6d, 0x2a, 0x44, 0x76, 0x2c, 0xcf, 0xfd, 0x20, 0x8a, 0xf9, 0x53, 0x95, 0x8c, 0x38, 0xcc,
|
0x0c, 0x53, 0xad, 0x32, 0x57, 0x0b, 0xf3, 0x18, 0x24, 0xaf, 0xff, 0x30, 0x16, 0x63, 0x1b, 0x66,
|
||||||
0x20, 0x63, 0x4e, 0x63, 0x57, 0x77, 0x84, 0x08, 0x96, 0x29, 0x30, 0x92, 0x19, 0x24, 0xa5, 0xf2,
|
0x54, 0x85, 0x99, 0x1d, 0xcb, 0x73, 0x2f, 0x8c, 0x13, 0xf1, 0x58, 0x27, 0x43, 0x01, 0x33, 0xc8,
|
||||||
0x47, 0x7e, 0x49, 0x88, 0xc5, 0x6a, 0xe3, 0xcf, 0xa4, 0x3f, 0xf3, 0x8b, 0xa7, 0xb1, 0xf0, 0x6b,
|
0x48, 0xd0, 0xc4, 0x37, 0x1d, 0x21, 0x26, 0xcb, 0x2c, 0x31, 0x92, 0x29, 0x04, 0xa5, 0xb6, 0x47,
|
||||||
0x2a, 0xfe, 0xaa, 0x0b, 0x7f, 0xf0, 0x97, 0x5f, 0xfc, 0x19, 0x18, 0xff, 0xff, 0xd4, 0xff, 0x00,
|
0x71, 0xf1, 0x88, 0xc5, 0x6a, 0xed, 0xa7, 0xd7, 0x9f, 0xf9, 0x8a, 0x6a, 0xcd, 0x7d, 0xa1, 0xc5,
|
||||||
0xfb, 0x96, 0x87, 0x40, 0x4f, 0x25, 0x00, 0x00
|
0x2f, 0xc5, 0xf0, 0x07, 0xbf, 0x26, 0xe3, 0xa7, 0x65, 0xfc, 0x3f, 0x59, 0xff, 0x03, 0x7a, 0xb5,
|
||||||
|
0xbc, 0x3e, 0xa3, 0x25, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_time_length = 3313;
|
const uint16_t PAGE_settings_time_length = 3313;
|
||||||
const uint8_t PAGE_settings_time[] PROGMEM = {
|
const uint8_t PAGE_settings_time[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
|
||||||
0xf6, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0x98, 0x78, 0x70, 0x9e, 0x90, 0x16, 0x92, 0xd8, 0xdd, 0x10,
|
0xf6, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0x98, 0x78, 0x70, 0x9e, 0x90, 0x16, 0x92, 0xd8, 0xdd, 0x10,
|
||||||
0xd2, 0x42, 0x4b, 0x02, 0x67, 0x92, 0x0e, 0xbb, 0xd3, 0xf6, 0x4c, 0x15, 0x5b, 0x49, 0x0c, 0x8e,
|
0xd2, 0x42, 0x4b, 0x02, 0x67, 0x92, 0x0e, 0xbb, 0xd3, 0xf6, 0x4c, 0x15, 0x5b, 0x49, 0x0c, 0x8e,
|
||||||
0xe4, 0xb5, 0x65, 0x02, 0x4b, 0xf9, 0xef, 0x7b, 0x25, 0x39, 0xce, 0xd3, 0xd0, 0x76, 0x66, 0x3f,
|
0xe4, 0xb5, 0x65, 0x02, 0x4b, 0xf9, 0xef, 0x7b, 0x25, 0x39, 0xce, 0xd3, 0xd0, 0x76, 0x66, 0x3f,
|
||||||
@ -1487,7 +1488,7 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_sec_length = 2407;
|
const uint16_t PAGE_settings_sec_length = 2407;
|
||||||
const uint8_t PAGE_settings_sec[] PROGMEM = {
|
const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xa5, 0x58, 0x6d, 0x53, 0xdb, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x58, 0x6d, 0x53, 0xdb, 0x48,
|
||||||
0x12, 0xfe, 0xee, 0x5f, 0x31, 0x9e, 0x54, 0xb1, 0xd6, 0x45, 0x58, 0x40, 0x72, 0x5b, 0x09, 0x58,
|
0x12, 0xfe, 0xee, 0x5f, 0x31, 0x9e, 0x54, 0xb1, 0xd6, 0x45, 0x58, 0x40, 0x72, 0x5b, 0x09, 0x58,
|
||||||
0xce, 0x41, 0x20, 0x1b, 0xae, 0x20, 0x50, 0xd8, 0x6c, 0xee, 0x2a, 0x97, 0x4a, 0x8d, 0xa5, 0xb1,
|
0xce, 0x41, 0x20, 0x1b, 0xae, 0x20, 0x50, 0xd8, 0x6c, 0xee, 0x2a, 0x97, 0x4a, 0x8d, 0xa5, 0xb1,
|
||||||
0x35, 0xb1, 0xac, 0xd1, 0xce, 0x8c, 0x70, 0x7c, 0xd9, 0xfd, 0xef, 0xf7, 0xf4, 0x48, 0x32, 0x86,
|
0x35, 0xb1, 0xac, 0xd1, 0xce, 0x8c, 0x70, 0x7c, 0xd9, 0xfd, 0xef, 0xf7, 0xf4, 0x48, 0x32, 0x86,
|
||||||
@ -1644,7 +1645,7 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_um_length = 2786;
|
const uint16_t PAGE_settings_um_length = 2786;
|
||||||
const uint8_t PAGE_settings_um[] PROGMEM = {
|
const uint8_t PAGE_settings_um[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xcd, 0x59, 0x6d, 0x73, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0x6d, 0x73, 0xdb, 0x36,
|
||||||
0x12, 0xfe, 0xee, 0x5f, 0x41, 0x23, 0x1e, 0x9b, 0x1c, 0xd1, 0x94, 0x9c, 0xb4, 0x33, 0xa9, 0x24,
|
0x12, 0xfe, 0xee, 0x5f, 0x41, 0x23, 0x1e, 0x9b, 0x1c, 0xd1, 0x94, 0x9c, 0xb4, 0x33, 0xa9, 0x24,
|
||||||
0xd2, 0x97, 0x38, 0x69, 0xa3, 0xcb, 0x8b, 0x3d, 0xe3, 0xb4, 0x9d, 0x1b, 0xc7, 0x17, 0x53, 0x22,
|
0xd2, 0x97, 0x38, 0x69, 0xa3, 0xcb, 0x8b, 0x3d, 0xe3, 0xb4, 0x9d, 0x1b, 0xc7, 0x17, 0x53, 0x22,
|
||||||
0x24, 0x21, 0xa6, 0x00, 0x16, 0x04, 0xfd, 0x72, 0xb2, 0xfe, 0xfb, 0x3d, 0x0b, 0xbe, 0x88, 0x72,
|
0x24, 0x21, 0xa6, 0x00, 0x16, 0x04, 0xfd, 0x72, 0xb2, 0xfe, 0xfb, 0x3d, 0x0b, 0xbe, 0x88, 0x72,
|
||||||
@ -1825,7 +1826,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_2D_length = 3161;
|
const uint16_t PAGE_settings_2D_length = 3161;
|
||||||
const uint8_t PAGE_settings_2D[] PROGMEM = {
|
const uint8_t PAGE_settings_2D[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xc5, 0x59, 0x5b, 0x77, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xc5, 0x59, 0x5b, 0x77, 0xdb, 0x36,
|
||||||
0x12, 0x7e, 0xd7, 0xaf, 0x80, 0xd1, 0xae, 0x4b, 0x5a, 0xd4, 0xcd, 0x4d, 0x7a, 0x5a, 0x49, 0xa4,
|
0x12, 0x7e, 0xd7, 0xaf, 0x80, 0xd1, 0xae, 0x4b, 0x5a, 0xd4, 0xcd, 0x4d, 0x7a, 0x5a, 0x49, 0xa4,
|
||||||
0x36, 0x8e, 0xd3, 0xd8, 0x7b, 0xe2, 0x44, 0xc7, 0x72, 0xed, 0xe4, 0xb4, 0x3d, 0x2d, 0x4d, 0x42,
|
0x36, 0x8e, 0xd3, 0xd8, 0x7b, 0xe2, 0x44, 0xc7, 0x72, 0xed, 0xe4, 0xb4, 0x3d, 0x2d, 0x4d, 0x42,
|
||||||
0x12, 0x12, 0x0a, 0x60, 0x49, 0x50, 0xb6, 0xeb, 0xf8, 0xbf, 0xef, 0x0c, 0xc0, 0x9b, 0x28, 0xd9,
|
0x12, 0x12, 0x0a, 0x60, 0x49, 0x50, 0xb6, 0xeb, 0xf8, 0xbf, 0xef, 0x0c, 0xc0, 0x9b, 0x28, 0xd9,
|
||||||
@ -2029,7 +2030,7 @@ const uint8_t PAGE_settings_2D[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_pin_length = 471;
|
const uint16_t PAGE_settings_pin_length = 471;
|
||||||
const uint8_t PAGE_settings_pin[] PROGMEM = {
|
const uint8_t PAGE_settings_pin[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
|
||||||
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0x6c, 0xa8, 0xa8, 0x04, 0xaa, 0xbd, 0x42,
|
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0x6c, 0xa8, 0xa8, 0x04, 0xaa, 0xbd, 0x42,
|
||||||
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x52, 0x55, 0x55, 0xe5, 0xd8, 0xb3, 0x89, 0x55, 0x7f, 0x2c,
|
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x52, 0x55, 0x55, 0xe5, 0xd8, 0xb3, 0x89, 0x55, 0x7f, 0x2c,
|
||||||
0xb6, 0x37, 0x21, 0x54, 0xfc, 0x77, 0xc6, 0xbb, 0xa1, 0xa0, 0x5c, 0xd6, 0x7e, 0x33, 0xe3, 0x37,
|
0xb6, 0x37, 0x21, 0x54, 0xfc, 0x77, 0xc6, 0xbb, 0xa1, 0xa0, 0x5c, 0xd6, 0x7e, 0x33, 0xe3, 0x37,
|
||||||
|
1219
wled00/html_simple.h
1219
wled00/html_simple.h
File diff suppressed because it is too large
Load Diff
3862
wled00/html_ui.h
3862
wled00/html_ui.h
File diff suppressed because it is too large
Load Diff
@ -125,36 +125,43 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
|
|||||||
JsonArray colarr = elem["col"];
|
JsonArray colarr = elem["col"];
|
||||||
if (!colarr.isNull())
|
if (!colarr.isNull())
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < 3; i++)
|
if (seg.getLightCapabilities() & 3) {
|
||||||
{
|
// segment has RGB or White
|
||||||
int rgbw[] = {0,0,0,0};
|
for (size_t i = 0; i < 3; i++)
|
||||||
bool colValid = false;
|
{
|
||||||
JsonArray colX = colarr[i];
|
int rgbw[] = {0,0,0,0};
|
||||||
if (colX.isNull()) {
|
bool colValid = false;
|
||||||
byte brgbw[] = {0,0,0,0};
|
JsonArray colX = colarr[i];
|
||||||
const char* hexCol = colarr[i];
|
if (colX.isNull()) {
|
||||||
if (hexCol == nullptr) { //Kelvin color temperature (or invalid), e.g 2400
|
byte brgbw[] = {0,0,0,0};
|
||||||
int kelvin = colarr[i] | -1;
|
const char* hexCol = colarr[i];
|
||||||
if (kelvin < 0) continue;
|
if (hexCol == nullptr) { //Kelvin color temperature (or invalid), e.g 2400
|
||||||
if (kelvin == 0) seg.setColor(i, 0);
|
int kelvin = colarr[i] | -1;
|
||||||
if (kelvin > 0) colorKtoRGB(kelvin, brgbw);
|
if (kelvin < 0) continue;
|
||||||
|
if (kelvin == 0) seg.setColor(i, 0);
|
||||||
|
if (kelvin > 0) colorKtoRGB(kelvin, brgbw);
|
||||||
|
colValid = true;
|
||||||
|
} else { //HEX string, e.g. "FFAA00"
|
||||||
|
colValid = colorFromHexString(brgbw, hexCol);
|
||||||
|
}
|
||||||
|
for (size_t c = 0; c < 4; c++) rgbw[c] = brgbw[c];
|
||||||
|
} else { //Array of ints (RGB or RGBW color), e.g. [255,160,0]
|
||||||
|
byte sz = colX.size();
|
||||||
|
if (sz == 0) continue; //do nothing on empty array
|
||||||
|
|
||||||
|
copyArray(colX, rgbw, 4);
|
||||||
colValid = true;
|
colValid = true;
|
||||||
} else { //HEX string, e.g. "FFAA00"
|
|
||||||
colValid = colorFromHexString(brgbw, hexCol);
|
|
||||||
}
|
}
|
||||||
for (size_t c = 0; c < 4; c++) rgbw[c] = brgbw[c];
|
|
||||||
} else { //Array of ints (RGB or RGBW color), e.g. [255,160,0]
|
|
||||||
byte sz = colX.size();
|
|
||||||
if (sz == 0) continue; //do nothing on empty array
|
|
||||||
|
|
||||||
copyArray(colX, rgbw, 4);
|
if (!colValid) continue;
|
||||||
colValid = true;
|
|
||||||
|
seg.setColor(i, RGBW32(rgbw[0],rgbw[1],rgbw[2],rgbw[3]));
|
||||||
|
if (seg.mode == FX_MODE_STATIC) strip.trigger(); //instant refresh
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
if (!colValid) continue;
|
// non RGB & non White segment (usually On/Off bus)
|
||||||
|
seg.setColor(0, ULTRAWHITE);
|
||||||
seg.setColor(i, RGBW32(rgbw[0],rgbw[1],rgbw[2],rgbw[3]));
|
seg.setColor(1, BLACK);
|
||||||
if (seg.mode == FX_MODE_STATIC) strip.trigger(); //instant refresh
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,7 +204,9 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
|
|||||||
getVal(elem["ix"], &seg.intensity);
|
getVal(elem["ix"], &seg.intensity);
|
||||||
|
|
||||||
uint8_t pal = seg.palette;
|
uint8_t pal = seg.palette;
|
||||||
if (getVal(elem["pal"], &pal)) seg.setPalette(pal);
|
if (seg.getLightCapabilities() & 1) { // ignore palette for White and On/Off segments
|
||||||
|
if (getVal(elem["pal"], &pal)) seg.setPalette(pal);
|
||||||
|
}
|
||||||
|
|
||||||
getVal(elem["c1"], &seg.custom1);
|
getVal(elem["c1"], &seg.custom1);
|
||||||
getVal(elem["c2"], &seg.custom2);
|
getVal(elem["c2"], &seg.custom2);
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// version code in format yymmddb (b = daily build)
|
// version code in format yymmddb (b = daily build)
|
||||||
#define VERSION 2302150
|
#define VERSION 2302230
|
||||||
|
|
||||||
//uncomment this if you have a "my_config.h" file you'd like to use
|
//uncomment this if you have a "my_config.h" file you'd like to use
|
||||||
//#define WLED_USE_MY_CONFIG
|
//#define WLED_USE_MY_CONFIG
|
||||||
|
Loading…
Reference in New Issue
Block a user