fix sorting and use regex char classes

Ok, this reduces the gzipped size of the minified library from 5537 bytes to 3093, which is pretty cool considering the version 1 library without diversity or zero width joiner emoji was 4226 bytes gzipped.
It does this by combing adjacent char sequences with common prefixes.
Example: "aab", "aac", "aad", "aag", "ba" becomes "aa[b-dg]|ba"
Remaining questions

does this perform as well (speed wise) ? I did not test that.
do some proxies or browsers get tripped up by character ranges on half of a UTF-16 surrogate pair

There was also a bug in that when uglifer minified this
rawText.indexOf('\u200D') < 0
it converted the string literal into an actual unicode code point, which broke things. The safe way to deal with partial unicode is to use a regex literal, since uglify leaves those alone.
/\u200D/.test(rawText)

if performance is a concern, using an inline fresh new RegExp object per each check is a perf and memory killer for old, non smart, non JIT, browsers.
I'd rather pass uglify a flag to not mungle strings at all.
Since I've never had this problem before, I think I'll just force the usage of uglifyjs 1 which is compatible with very old browsers and shouldn't break anything.

We've had issues with uglify and unicode char escapes and literals in
twitter-text on twitter.com as well.
It might be safer to just cache the /u200D/ regex in a var like you did for
UFE0F if you are concerned about old browser perf, then you don't rely on
special minimizer preferences.Some people make take the uniminized file and
pull it into their project as a bundle and minimize it together with other
things. Twitter.com does with twitter-text)
U200D = /\u200D/,
Is indexOf really all that much faster?
On Wed, Mar 2, 2016 at 12:15 AM, Andrea Giammarchi<EMAIL_ADDRESS>
wrote:

Merged #125 https://github.com/twitter/twemoji/pull/125.
—
Reply to this email directly or view it on GitHub
https://github.com/twitter/twemoji/pull/125#event-574298019.

is not much faster but is linear in terms of performance and memory usage.
RegExp that have no g flags could also be problematic in JS because they might need a hard reset to be sure so that resetting each time plus using it instead of an indexOf will be potentially slower.
The current solution looks fine to me but maybe I can put online a benchmark to stress-test these cases and see how it goes?

I've added a little benchmark on top of the preview page:
http://twitter.github.io/twemoji/2/test/preview.html
http://twitter.github.io/twemoji/2/test/preview-svg.html
maybe we should keep an eye on it, or do tests locally.
However, testing on Desktop + powerful machines doesn't give us much info about performance on crappy browsers, tests on VM and IE6 or higher might be a better comparison matrix.

FYI I've put the same little bench on V1 previews too. In some device I have like 5X performance (18 secs for V1 previe wpage VS 87 secs for V2 preview page).
Double emoji but more than tripled parse time so far.
I'd be lovely to be able to switch your latest grouping change on or off at generation time (somehow) to be able to test at least locally.
I have tons of devices of various OS, age, and performance.

If you want to disable the grouping temporarily, change
if (prefix !== currentPrefix) {
flushCharClass();
}
to
var enableGrouping = false;if (!enableGrouping || prefix !== currentPrefix) {
flushCharClass();
}
On Wed, Mar 2, 2016 at 3:15 AM, Andrea Giammarchi<EMAIL_ADDRESS>wrote:

FYI I've put the same little bench on V1 previews too. In some device I
have like 5X performance (18 secs for V1 previe wpage VS 87 secs for V2
preview page).
Double emoji but more than tripled parse time so far.
I'd be lovely to be able to switch your latest grouping change on or off
at generation time (somehow) to be able to test at least locally.
I have tons of devices of various OS, age, and performance.
—
Reply to this email directly or view it on GitHub
https://github.com/twitter/twemoji/pull/125#issuecomment-191192608.

Andrea,
Can you merge that last U200D fix and then I'll purge the cache of the /2
js files on MAXCDN?

Tom

On Wed, Mar 2, 2016 at 6:51 AM, Tom Wuttke<EMAIL_ADDRESS>wrote:

If you want to disable the grouping temporarily, change
if (prefix !== currentPrefix) {
flushCharClass();
}
to
var enableGrouping = false;if (!enableGrouping || prefix !== currentPrefix) {
flushCharClass();
}
On Wed, Mar 2, 2016 at 3:15 AM, Andrea Giammarchi <
<EMAIL_ADDRESS>wrote:

FYI I've put the same little bench on V1 previews too. In some device I
have like 5X performance (18 secs for V1 previe wpage VS 87 secs for V2
preview page).
Double emoji but more than tripled parse time so far.
I'd be lovely to be able to switch your latest grouping change on or off
at generation time (somehow) to be able to test at least locally.
I have tons of devices of various OS, age, and performance.
—
Reply to this email directly or view it on GitHub
https://github.com/twitter/twemoji/pull/125#issuecomment-191192608.

merged and pushed with updated package.json
published on npm too
your hint didn't work ... there are more functions on their way so I can't have a non compressed RegExp but I guess that's not such bug deal, I can use a temporary build that use V1 assets instead and see how it performs compared with old V1

Ok, /2 .js cdn caches flushed, everything looks good now.
This hint:
var enableGrouping = false;if (!enableGrouping || prefix !== currentPrefix) {
flushCharClass();
}
worked for me, I just tried it. It generates this:
re = /\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67|\ud83d\udc41\u200d\ud83d\udde8|(?:\u0039|\u0038|\u0037|\u0036|\u0035|\u0034|\u0033|\u0032|\u0031|\u0030|\u002a|\u0023)\ufe0f?\u20e3|(?:(?:\u270c|\u261d)(?:\ufe0f|(?!\ufe0e))|\ud83e\udd18|\ud83d\udc42|\ud83d\udc43|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6e|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc7c|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udcaa|\ud83d\udd75|\ud83d\udd90|\ud83d\udd95|\ud83d\udd96|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\udea3|\ud83d\udeb4|\ud83d\udeb5|\ud83d\udeb6|\ud83d\udec0|\ud83c\udf85|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc7|\ud83c\udfca|\ud83c\udfcb|\u270d|\u270b|\u270a|\u26f9)(?:\ud83c\udffb|\ud83c\udffc|\ud83c\udffd|\ud83c\udffe|\ud83c\udfff|)|\ud83c\udde6\ud83c\udde8|\ud83c\udde6\ud83c\udde9|\ud83c\udde6\ud83c\uddea|\ud83c\udde6\ud83c\uddeb|\ud83c\udde6\ud83c\uddec|\ud83c\udde6\ud83c\uddee|\ud83c\udde6\ud83c\uddf1|\ud83c\udde6\ud83c\uddf2|\ud83c\udde6\ud83c\uddf4|\ud83c\udde6\ud83c\uddf6|\ud83c\udde6\ud83c\uddf7|\ud83c\udde6\ud83c\uddf8|\ud83c\udde6\ud83c\uddf9|\ud83c\udde6\ud83c\uddfa|\ud83c\udde6\ud83c\uddfc|\ud83c\udde6\ud83c\uddfd|\ud83c\udde6\ud83c\uddff|\ud83c\udde7\ud83c\udde6|\ud83c\udde7\ud83c\udde7|\ud83c\udde7\ud83c\udde9|\ud83c\udde7\ud83c\uddea|\ud83c\udde7\ud83c\uddeb|\ud83c\udde7\ud83c\uddec|\ud83c\udde7\ud83c\udded|\ud83c\udde7\ud83c\uddee|\ud83c\udde7\ud83c\uddef|\ud83c\udde7\ud83c\uddf1|\ud83c\udde7\ud83c\uddf2|\ud83c\udde7\ud83c\uddf3|\ud83c\udde7\ud83c\uddf4|\ud83c\udde7\ud83c\uddf6|\ud83c\udde7\ud83c\uddf7|\ud83c\udde7\ud83c\uddf8|\ud83c\udde7\ud83c\uddf9|\ud83c\udde7\ud83c\uddfb|\ud83c\udde7\ud83c\uddfc|\ud83c\udde7\ud83c\uddfe|\ud83c\udde7\ud83c\uddff|\ud83c\udde8\ud83c\udde6|\ud83c\udde8\ud83c\udde8|\ud83c\udde8\ud83c\udde9|\ud83c\udde8\ud83c\uddeb|\ud83c\udde8\ud83c\uddec|\ud83c\udde8\ud83c\udded|\ud83c\udde8\ud83c\uddee|\ud83c\udde8\ud83c\uddf0|\ud83c\udde8\ud83c\uddf1|\ud83c\udde8\ud83c\uddf2|\ud83c\udde8\ud83c\uddf3|\ud83c\udde8\ud83c\uddf4|\ud83c\udde8\ud83c\uddf5|\ud83c\udde8\ud83c\uddf7|\ud83c\udde8\ud83c\uddfa|\ud83c\udde8\ud83c\uddfb|\ud83c\udde8\ud83c\uddfc|\ud83c\udde8\ud83c\uddfd|\ud83c\udde8\ud83c\uddfe|\ud83c\udde8\ud83c\uddff|\ud83c\udde9\ud83c\uddea|\ud83c\udde9\ud83c\uddec|\ud83c\udde9\ud83c\uddef|\ud83c\udde9\ud83c\uddf0|\ud83c\udde9\ud83c\uddf2|\ud83c\udde9\ud83c\uddf4|\ud83c\udde9\ud83c\uddff|\ud83c\uddea\ud83c\udde6|\ud83c\uddea\ud83c\udde8|\ud83c\uddea\ud83c\uddea|\ud83c\uddea\ud83c\uddec|\ud83c\uddea\ud83c\udded|\ud83c\uddea\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\uddea\ud83c\uddf9|\ud83c\uddea\ud83c\uddfa|\ud83c\uddeb\ud83c\uddee|\ud83c\uddeb\ud83c\uddef|\ud83c\uddeb\ud83c\uddf0|\ud83c\uddeb\ud83c\uddf2|\ud83c\uddeb\ud83c\uddf4|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde6|\ud83c\uddec\ud83c\udde7|\ud83c\uddec\ud83c\udde9|\ud83c\uddec\ud83c\uddea|\ud83c\uddec\ud83c\uddeb|\ud83c\uddec\ud83c\uddec|\ud83c\uddec\ud83c\udded|\ud83c\uddec\ud83c\uddee|\ud83c\uddec\ud83c\uddf1|\ud83c\uddec\ud83c\uddf2|\ud83c\uddec\ud83c\uddf3|\ud83c\uddec\ud83c\uddf5|\ud83c\uddec\ud83c\uddf6|\ud83c\uddec\ud83c\uddf7|\ud83c\uddec\ud83c\uddf8|\ud83c\uddec\ud83c\uddf9|\ud83c\uddec\ud83c\uddfa|\ud83c\uddec\ud83c\uddfc|\ud83c\uddec\ud83c\uddfe|\ud83c\udded\ud83c\uddf0|\ud83c\udded\ud83c\uddf2|\ud83c\udded\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udded\ud83c\uddf9|\ud83c\udded\ud83c\uddfa|\ud83c\uddee\ud83c\udde8|\ud83c\uddee\ud83c\udde9|\ud83c\uddee\ud83c\uddea|\ud83c\uddee\ud83c\uddf1|\ud83c\uddee\ud83c\uddf2|\ud83c\uddee\ud83c\uddf3|\ud83c\uddee\ud83c\uddf4|\ud83c\uddee\ud83c\uddf6|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf8|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddea|\ud83c\uddef\ud83c\uddf2|\ud83c\uddef\ud83c\uddf4|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddea|\ud83c\uddf0\ud83c\uddec|\ud83c\uddf0\ud83c\udded|\ud83c\uddf0\ud83c\uddee|\ud83c\uddf0\ud83c\uddf2|\ud83c\uddf0\ud83c\uddf3|\ud83c\uddf0\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf0\ud83c\uddfc|\ud83c\uddf0\ud83c\uddfe|\ud83c\uddf0\ud83c\uddff|\ud83c\uddf1\ud83c\udde6|\ud83c\uddf1\ud83c\udde7|\ud83c\uddf1\ud83c\udde8|\ud83c\uddf1\ud83c\uddee|\ud83c\uddf1\ud83c\uddf0|\ud83c\uddf1\ud83c\uddf7|\ud83c\uddf1\ud83c\uddf8|\ud83c\uddf1\ud83c\uddf9|\ud83c\uddf1\ud83c\uddfa|\ud83c\uddf1\ud83c\uddfb|\ud83c\uddf1\ud83c\uddfe|\ud83c\uddf2\ud83c\udde6|\ud83c\uddf2\ud83c\udde8|\ud83c\uddf2\ud83c\udde9|\ud83c\uddf2\ud83c\uddea|\ud83c\uddf2\ud83c\uddeb|\ud83c\uddf2\ud83c\uddec|\ud83c\uddf2\ud83c\udded|\ud83c\uddf2\ud83c\uddf0|\ud83c\uddf2\ud83c\uddf1|\ud83c\uddf2\ud83c\uddf2|\ud83c\uddf2\ud83c\uddf3|\ud83c\uddf2\ud83c\uddf4|\ud83c\uddf2\ud83c\uddf5|\ud83c\uddf2\ud83c\uddf6|\ud83c\uddf2\ud83c\uddf7|\ud83c\uddf2\ud83c\uddf8|\ud83c\uddf2\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfa|\ud83c\uddf2\ud83c\uddfb|\ud83c\uddf2\ud83c\uddfc|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddf2\ud83c\uddfe|\ud83c\uddf2\ud83c\uddff|\ud83c\uddf3\ud83c\udde6|\ud83c\uddf3\ud83c\udde8|\ud83c\uddf3\ud83c\uddea|\ud83c\uddf3\ud83c\uddeb|\ud83c\uddf3\ud83c\uddec|\ud83c\uddf3\ud83c\uddee|\ud83c\uddf3\ud83c\uddf1|\ud83c\uddf3\ud83c\uddf4|\ud83c\uddf3\ud83c\uddf5|\ud83c\uddf3\ud83c\uddf7|\ud83c\uddf3\ud83c\uddfa|\ud83c\uddf3\ud83c\uddff|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c\udde6|\ud83c\uddf5\ud83c\uddea|\ud83c\uddf5\ud83c\uddeb|\ud83c\uddf5\ud83c\uddec|\ud83c\uddf5\ud83c\udded|\ud83c\uddf5\ud83c\uddf0|\ud83c\uddf5\ud83c\uddf1|\ud83c\uddf5\ud83c\uddf2|\ud83c\uddf5\ud83c\uddf3|\ud83c\uddf5\ud83c\uddf7|\ud83c\uddf5\ud83c\uddf8|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf5\ud83c\uddfc|\ud83c\uddf5\ud83c\uddfe|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c\uddea|\ud83c\uddf7\ud83c\uddf4|\ud83c\uddf7\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf7\ud83c\uddfc|\ud83c\uddf8\ud83c\udde6|\ud83c\uddf8\ud83c\udde7|\ud83c\uddf8\ud83c\udde8|\ud83c\uddf8\ud83c\udde9|\ud83c\uddf8\ud83c\uddea|\ud83c\uddf8\ud83c\uddec|\ud83c\uddf8\ud83c\udded|\ud83c\uddf8\ud83c\uddee|\ud83c\uddf8\ud83c\uddef|\ud83c\uddf8\ud83c\uddf0|\ud83c\uddf8\ud83c\uddf1|\ud83c\uddf8\ud83c\uddf2|\ud83c\uddf8\ud83c\uddf3|\ud83c\uddf8\ud83c\uddf4|\ud83c\uddf8\ud83c\uddf7|\ud83c\uddf8\ud83c\uddf8|\ud83c\uddf8\ud83c\uddf9|\ud83c\uddf8\ud83c\uddfb|\ud83c\uddf8\ud83c\uddfd|\ud83c\uddf8\ud83c\uddfe|\ud83c\uddf8\ud83c\uddff|\ud83c\uddf9\ud83c\udde6|\ud83c\uddf9\ud83c\udde8|\ud83c\uddf9\ud83c\udde9|\ud83c\uddf9\ud83c\uddeb|\ud83c\uddf9\ud83c\uddec|\ud83c\uddf9\ud83c\udded|\ud83c\uddf9\ud83c\uddef|\ud83c\uddf9\ud83c\uddf0|\ud83c\uddf9\ud83c\uddf1|\ud83c\uddf9\ud83c\uddf2|\ud83c\uddf9\ud83c\uddf3|\ud83c\uddf9\ud83c\uddf4|\ud83c\uddf9\ud83c\uddf7|\ud83c\uddf9\ud83c\uddf9|\ud83c\uddf9\ud83c\uddfb|\ud83c\uddf9\ud83c\uddfc|\ud83c\uddf9\ud83c\uddff|\ud83c\uddfa\ud83c\udde6|\ud83c\uddfa\ud83c\uddec|\ud83c\uddfa\ud83c\uddf2|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddfa\ud83c\uddfe|\ud83c\uddfa\ud83c\uddff|\ud83c\uddfb\ud83c\udde6|\ud83c\uddfb\ud83c\udde8|\ud83c\uddfb\ud83c\uddea|\ud83c\uddfb\ud83c\uddec|\ud83c\uddfb\ud83c\uddee|\ud83c\uddfb\ud83c\uddf3|\ud83c\uddfb\ud83c\uddfa|\ud83c\uddfc\ud83c\uddeb|\ud83c\uddfc\ud83c\uddf8|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c\uddea|\ud83c\uddfe\ud83c\uddf9|\ud83c\uddff\ud83c\udde6|\ud83c\uddff\ud83c\uddf2|\ud83c\uddff\ud83c\uddfc|\ud83e\udd10|\ud83e\udd11|\ud83e\udd12|\ud83e\udd13|\ud83e\udd14|\ud83e\udd15|\ud83e\udd16|\ud83e\udd17|\ud83e\udd80|\ud83e\udd81|\ud83e\udd82|\ud83e\udd83|\ud83e\udd84|\ud83e\uddc0|\ud83d\udc00|\ud83d\udc01|\ud83d\udc02|\ud83d\udc03|\ud83d\udc04|\ud83d\udc05|\ud83d\udc06|\ud83d\udc07|\ud83d\udc08|\ud83d\udc09|\ud83d\udc0a|\ud83d\udc0b|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc0f|\ud83d\udc10|\ud83d\udc11|\ud83d\udc12|\ud83d\udc13|\ud83d\udc14|\ud83d\udc15|\ud83d\udc16|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2a|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc3f|\ud83d\udc40|\ud83d\udc41|\ud83d\udc44|\ud83d\udc45|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc65|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6c|\ud83d\udc6d|\ud83d\udc6f|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc84|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcab|\ud83d\udcac|\ud83d\udcad|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb6|\ud83d\udcb7|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcec|\ud83d\udced|\ud83d\udcee|\ud83d\udcef|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf5|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf8|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udcfd|\ud83d\udcff|\ud83d\udd00|\ud83d\udd01|\ud83d\udd02|\ud83d\udd03|\ud83d\udd04|\ud83d\udd05|\ud83d\udd06|\ud83d\udd07|\ud83d\udd08|\ud83d\udd09|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd15|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2c|\ud83d\udd2d|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd49|\ud83d\udd4a|\ud83d\udd4b|\ud83d\udd4c|\ud83d\udd4d|\ud83d\udd4e|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\udd5c|\ud83d\udd5d|\ud83d\udd5e|\ud83d\udd5f|\ud83d\udd60|\ud83d\udd61|\ud83d\udd62|\ud83d\udd63|\ud83d\udd64|\ud83d\udd65|\ud83d\udd66|\ud83d\udd67|\ud83d\udd6f|\ud83d\udd70|\ud83d\udd73|\ud83d\udd74|\ud83d\udd76|\ud83d\udd77|\ud83d\udd78|\ud83d\udd79|\ud83d\udd87|\ud83d\udd8a|\ud83d\udd8b|\ud83d\udd8c|\ud83d\udd8d|\ud83d\udda5|\ud83d\udda8|\ud83d\uddb1|\ud83d\uddb2|\ud83d\uddbc|\ud83d\uddc2|\ud83d\uddc3|\ud83d\uddc4|\ud83d\uddd1|\ud83d\uddd2|\ud83d\uddd3|\ud83d\udddc|\ud83d\udddd|\ud83d\uddde|\ud83d\udde1|\ud83d\udde3|\ud83d\udde8|\ud83d\uddef|\ud83d\uddf3|\ud83d\uddfa|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude00|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude07|\ud83d\ude08|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0e|\ud83d\ude0f|\ud83d\ude10|\ud83d\ude11|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude15|\ud83d\ude16|\ud83d\ude17|\ud83d\ude18|\ud83d\ude19|\ud83d\ude1a|\ud83d\ude1b|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude1f|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude26|\ud83d\ude27|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2c|\ud83d\ude2d|\ud83d\ude2e|\ud83d\ude2f|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude34|\ud83d\ude35|\ud83d\ude36|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude41|\ud83d\ude42|\ud83d\ude43|\ud83d\ude44|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude80|\ud83d\ude81|\ud83d\ude82|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude86|\ud83d\ude87|\ud83d\ude88|\ud83d\ude89|\ud83d\ude8a|\ud83d\ude8b|\ud83d\ude8c|\ud83d\ude8d|\ud83d\ude8e|\ud83d\ude8f|\ud83d\ude90|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude94|\ud83d\ude95|\ud83d\ude96|\ud83d\ude97|\ud83d\ude98|\ud83d\ude99|\ud83d\ude9a|\ud83d\ude9b|\ud83d\ude9c|\ud83d\ude9d|\ud83d\ude9e|\ud83d\ude9f|\ud83d\udea0|\ud83d\udea1|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea6|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeae|\ud83d\udeaf|\ud83d\udeb0|\ud83d\udeb1|\ud83d\udeb2|\ud83d\udeb3|\ud83d\udeb7|\ud83d\udeb8|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udebf|\ud83d\udec1|\ud83d\udec2|\ud83d\udec3|\ud83d\udec4|\ud83d\udec5|\ud83d\udecb|\ud83d\udecc|\ud83d\udecd|\ud83d\udece|\ud83d\udecf|\ud83d\uded0|\ud83d\udee0|\ud83d\udee1|\ud83d\udee2|\ud83d\udee3|\ud83d\udee4|\ud83d\udee5|\ud83d\udee9|\ud83d\udeeb|\ud83d\udeec|\ud83d\udef0|\ud83d\udef3|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf0f|\ud83c\udf10|\ud83c\udf11|\ud83c\udf12|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf19|\ud83c\udf1a|\ud83c\udf1b|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf21|\ud83c\udf24|\ud83c\udf25|\ud83c\udf26|\ud83c\udf27|\ud83c\udf28|\ud83c\udf29|\ud83c\udf2a|\ud83c\udf2b|\ud83c\udf2c|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf30|\ud83c\udf31|\ud83c\udf32|\ud83c\udf33|\ud83c\udf34|\ud83c\udf35|\ud83c\udf36|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4b|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf50|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf7c|\ud83c\udf7d|\ud83c\udf7e|\ud83c\udf7f|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udf96|\ud83c\udf97|\ud83c\udf99|\ud83c\udf9a|\ud83c\udf9b|\ud83c\udf9e|\ud83c\udf9f|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc5|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfc9|\ud83c\udfcc|\ud83c\udfcd|\ud83c\udfce|\ud83c\udfcf|\ud83c\udfd0|\ud83c\udfd1|\ud83c\udfd2|\ud83c\udfd3|\ud83c\udfd4|\ud83c\udfd5|\ud83c\udfd6|\ud83c\udfd7|\ud83c\udfd8|\ud83c\udfd9|\ud83c\udfda|\ud83c\udfdb|\ud83c\udfdc|\ud83c\udfdd|\ud83c\udfde|\ud83c\udfdf|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe4|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83c\udff3|\ud83c\udff4|\ud83c\udff5|\ud83c\udff7|\ud83c\udff8|\ud83c\udff9|\ud83c\udffa|\ud83c\udffb|\ud83c\udffc|\ud83c\udffd|\ud83c\udffe|\ud83c\udfff|\ue50a|\u27bf|\u27b0|\u2797|\u2796|\u2795|\u2763|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u2721|\u271d|\u2705|\u26f8|\u26f7|\u26f4|\u26f1|\u26f0|\u26e9|\u26d3|\u26d1|\u26cf|\u26ce|\u26c8|\u26b1|\u26b0|\u269c|\u269b|\u2699|\u2697|\u2696|\u2694|\u2692|\u2638|\u262f|\u262e|\u262a|\u2626|\u2623|\u2622|\u2620|\u2618|\u2604|\u2603|\u2602|\u23fa|\u23f9|\u23f8|\u23f3|\u23f2|\u23f1|\u23f0|\u23ef|\u23ee|\u23ed|\u23ec|\u23eb|\u23ea|\u23e9|\u23cf|\u2328|(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u303d|\u3030|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u2639|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u203c|\u00ae|\u00a9)(?:\ufe0f|(?!\ufe0e))/g,
Instead of this:
re = /\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc67\udc66]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc67\udc66]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc69\udc68]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc67\udc66]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc41\u200d\ud83d\udde8|(?:[\u0039\u0038\u0037\u0036\u0035\u0034\u0033\u0032\u0031\u0030\u002a\u0023])\ufe0f?\u20e3|(?:(?:[\u270c\u261d])(?:\ufe0f|(?!\ufe0e))|\ud83e\udd18|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd75\udd90\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0]|\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca\udfcb]|[\u270d\u270b\u270a\u26f9])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83e[\udd10-\udd17\udd80-\udd84\uddc0]|\ud83d[\udc00-\udc41\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfd\udcff-\udd3d\udd49-\udd4e\udd50-\udd67\udd6f\udd70\udd73\udd74\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecb-\uded0\udee0-\udee5\udee9\udeeb\udeec\udef0\udef3]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf21\udf24-\udf84\udf86-\udf93\udf96\udf97\udf99-\udf9b\udf9e-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcc-\udff0\udff3-\udff5\udff7-\udfff]|[\ue50a\u27bf\u27b0\u2797\u2796\u2795\u2763\u2755\u2754\u2753\u274e\u274c\u2728\u2721\u271d\u2705\u26f8\u26f7\u26f4\u26f1\u26f0\u26e9\u26d3\u26d1\u26cf\u26ce\u26c8\u26b1\u26b0\u269c\u269b\u2699\u2697\u2696\u2694\u2692\u2638\u262f\u262e\u262a\u2626\u2623\u2622\u2620\u2618\u2604\u2603\u2602\u23fa\u23f9\u23f8\u23f3\u23f2\u23f1\u23f0\u23ef\u23ee\u23ed\u23ec\u23eb\u23ea\u23e9\u23cf\u2328]|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37]|[\u3299\u3297\u303d\u3030\u2b55\u2b50\u2b1c\u2b1b\u2b07\u2b06\u2b05\u2935\u2934\u27a1\u2764\u2757\u2747\u2744\u2734\u2733\u2716\u2714\u2712\u270f\u2709\u2708\u2702\u26fd\u26fa\u26f5\u26f3\u26f2\u26ea\u26d4\u26c5\u26c4\u26be\u26bd\u26ab\u26aa\u26a1\u26a0\u2693\u267f\u267b\u2668\u2666\u2665\u2663\u2660\u2653\u2652\u2651\u2650\u264f\u264e\u264d\u264c\u264b\u264a\u2649\u2648\u263a\u2639\u2615\u2614\u2611\u260e\u2601\u2600\u25fe\u25fd\u25fc\u25fb\u25c0\u25b6\u25ab\u25aa\u24c2\u231b\u231a\u21aa\u21a9\u2199\u2198\u2197\u2196\u2195\u2194\u2139\u2122\u2049\u203c\u00ae\u00a9])(?:\ufe0f|(?!\ufe0e))/g,
The bigger regex still has some groups () but no character classes []
If you also want to explode all of the combinations of diversity, you could
hack the groups out even more with a switch like useGroupings:
var useGroupings = false;
q.emojiSource.forEach(function (codePoints) {
var u;
var codePointsWithoutKeycap;
codePoints = codePoints.replace(/\b[A-F0-9]+\b/g, function (hex) {
// Pad all hex numbers to have at least 4 digits to match variantsSensitive
return hex.length < 4 ? ('000' + hex).slice(-4) : hex;
});
if (q.ignore.indexOf(codePoints) < 0) {
u = toJSON(codePoints);
codePointsWithoutKeycap = codePoints.replace(/-20E3$/, '');
if (codePoints.indexOf('200D') >= 0) {
zwj.push(u);
} else if (codePoints != codePointsWithoutKeycap &&
q.variantsSensitive.indexOf(codePointsWithoutKeycap) >= 0) {
if (useGroupings) {
sensitiveKeycaps.push(toJSON(codePointsWithoutKeycap));
} else {
regular.push(u.replace(/\u20e3/, '\ufe0f?$&'));
}
} else if (q.diversityBase.indexOf(codePoints.replace(/-1F3F[B-F]$/,
'')) >= 0) {
// This is a diversity Emoji with or without a skin tone modifier
// Add it to the regex if this is the base without the modifier
if (useGroupings) {
if (q.diversityBase.indexOf(codePoints) >= 0) {
if (q.variantsSensitive.indexOf(codePoints) < 0) {
diversity.push(u);
} else {
diversitySensitive.push(u);
}
}
} else {
if (q.diversityBase.indexOf(codePoints) >= 0) {
if (q.variantsSensitive.indexOf(codePoints) < 0) {
regular.push(u);
} else {
sensitive.push(u);
}
} else {
if (q.variantsSensitive.indexOf(codePoints.replace(/-1F3F[B-F]$/,
'')) < 0) {
regular.push(u);
} else {
regular.push(u.replace(/\ud83c\udff[b-f]/, '\ufe0f?$&'));
}
}
}
} else if (q.variantsSensitive.indexOf(codePoints) < 0) {
regular.push(u);
} else {
sensitive.push(u);
}
}
});
This produces a giant regex that crashes gmail when I paste it in, so here
it is:
http://codepen.io/twuttke/pen/pyJwZe?editors=0010#

Tom

On Wed, Mar 2, 2016 at 11:21 AM, Andrea Giammarchi<EMAIL_ADDRESS>
wrote:

merged and pushed with updated package.json
published on npm too
your hint didn't work ... there are more functions on their way so I
can't have a non compressed RegExp but I guess that's not such bug deal, I
can use a temporary build that use V1 assets instead and see how it
performs compared with old V1

—
Reply to this email directly or view it on GitHub
https://github.com/twitter/twemoji/pull/125#issuecomment-191382626.

Thanks Tom, but I've had already created a V2 RegExp version to deal with V1 assets and the result is the following:
http://twitter.github.io/twemoji/1/test/preview.html
VS the original
http://twitter.github.io/twemoji/preview.html
Will check my devices soon and see if there's anything to worry about.

Cheers


Use binary name as the namespace

Today everything embedded in HelmVM (openebs, kotsadm, etc) is deployed under the helmvm namespace. We want to use the binary name as the namespace so if one has HelmVM binary named as myapp everything will be deployed under the myapp namespace.
Open questions

Wouldn't be better to move OpenEBS out to its own namespace ?

Moved to Shortcut.


refactor(frontend): Rename entries in BtcPendingSentTransactionsStatus

Motivation
Rename entries for BtcPendingSentTransactionsStatus as suggested here for readability purposes.
Changes

Rename PRESENT to SOME and EMPTY to NONE in BtcPendingSentTransactionsStatus enum.

Tests
Everything still works.

@peterpeterparker please review


winPB: convert 'raw' modules to 'win_shell' when making symlinks

Use win_shell instead of the raw module when creating symlinks in the Windows Playbook. This was prompted by getting an error message whilst investigating #1485 :
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: winrm.exceptions.WinRMError: Access is denied.  (extended fault data: {'transport_message': 'Bad HTTP response returned from server. Code 500', 'http_status_code': 500, 'wsmanfault_code': '2147942405', 'fault_code': 's:Receiver', 'fault_subcode': 'w:InternalError'})
fatal: [<IP_ADDRESS>]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout":

This seems to only be specific to the Windows machines I was provisioning (@lumpfish didn't get this issue when using machines from the same provider), however I found the win_shell module didn't cause this error message. In addition, the raw module isn't meant to be used when it can be avoided: https://docs.ansible.com/ansible/latest/modules/raw_module.html#synopsis. (It's main use seems to be communicating with a guest that doesn't have python installed). Due to this, I thought I'd just change them anyway :-)

Pretty sure the travis errors are unrelated as they're related to CentOS7 docker image creation so I'm OK to merge this.


can i chanche the user volume

i want to chanche the user volume with commands for the bot im making and to find out if there is a way to play youtube videos in discordie

I need to do the same but I can't find a way :c I'd like to change the sound volume

There is a way to do this. Just look at the documentation under encoders and ffmpeg encoder.


Correct Alpine's ODBC v17 downloads signature filename

The verification will fail otherwise because the filename is not the same as what is downloaded above.

#sign-off


email validation does not allow<EMAIL_ADDRESS>during account setup

while setting up the site,my email in the form of<EMAIL_ADDRESS>was not allowed, most likely caused by the '.' in the name.
Fortunately, I could fake one and then change it to the correct one later after login, in which case, the email was not validated and saved without problem.

Thanks for your feedback, we will fix this bug in 1.0.2

not yet in v1.0.4


Installation not possible with rtc=mcp7941x

Hi,
hwclock fails to run. Once installed, I added "dtoverlay=i2c-rtc,mcp7941x" to config.txt and it worked just fine.
I guess there's something missing with installer "boot" environment. Maybe i2c is not enabled, or we're missing some overlays. I'll try to look into a it but your help would be welcome.
Regards, Adam.

Adding
dtparam=i2c_arm=on

Did not help.
When getting into the emergency initrd shell, hwclock says: cannot access /dev/misc/rtc
dmesg has no reference to i2c or rtc :/
I don't have much more ideas...

I don't see why, because I have no installer-config.txt from you. :)
Did you use rtc=mcp7941x there?

Yes exactly and I noticed the installer restarts once to add dtolverlay=i2c-rtc,mcp7941x but then hwclock does not work.
I replaced "| fail" by "| true" and the installation went fine and clock was working properly at first boot.

Looks like a missing dependency in the stretch installer environment...

Is there any way to see if the kernel actually sees the I2C clock ?
I'm still thinking about something kernel/overlays related...

i2cdetect from i2c-tools should help here.

Yes but it's not available in installer initrd

Right you've to copy that in place manually. I'm checking the problem with an ds3231 on a B+ and report.

Problem confirmed.

Checkout and try the current devel branch. I'm still testing but think, it should be fixed.

Cannot do at the moment. Friday for sure, but I'll try to have a colleague feedback on Monday.
Thanks !

Successfully tested with DS3231 on 7ffcaf3. Please report.

Hi,
Installation seems to start fine when moving to devel branch so I guess it's fixed.
Test has been done by a colleague but we confirmed it was failing, then switched branch and confirm installation continues so I think it's fine.
Thanks a lot for this great fork.
Adam.


Proxy and SSL : the CONNECT request fails on some proxy (cntlm) as the request is HTTP 1.0 instead of 1.1

It looks like requests (or urllib3 ?) is creating a CONNECT request that fails with some proxies when trying to initiate the SSL tunnel:
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): api.hipchat.com
send: 'CONNECT api.hipchat.com:443 HTTP/1.0\r\n'
send: '\r\n'
as we can, it generates an HTTP/1.0 header which seems to be inaccurate. I could not find any definition of the CONNECT command in the HTTP/1.0 RFC, and seems to have been really defined in HTTP 1.1 RFC.
By manually telneting to my cntlm, i could make the CONNECT work by replacing 1.0 by 1.1.
This makes the requests library fail to work on my side where i have to use CNTLM because our usual proxy is using Kerberos/CNTLM for authentication.
Is there any way to have this reviewed ?
best,

Unfortunately, this is not something we can easily change in urllib3 at the moment, because this CONNECT is actually created by httplib. Simply changing to HTTP/1.1 is not sufficient because that CONNECT request is then not HTTP/1.1 compliant (it has no Host header field). We'd need to change both.
Ultimately, the upcoming urllib3 v2 release will resolve this issue by removing our dependence on httplib. Until then, the only way to fix this is to monkeypatch or override httplib's tunnel() logic.

Found some additional information here : http://stackoverflow.com/questions/1841730/how-can-urllib2-httplib-talk-http-1-1-for-https-connections-via-a-squid-proxy/1841740#1841740


Updated state management APIs

Update state management APIs by moving them into the table view, instead of having a wrapping presenter.

Ended up keeping the tableview-based source – instead made the content be backed by the source presenter.


Unable to use upgrade plan after disabling quality in mod settings

If I deactivate Quality in the mod settings, I can no longer use the upgrade plan for assembly machines and furnaces.

I do not understand, what do you mean by upgrade plan?

I've not deactivated Quality, but can also not use the upgrade plan.
I can only sellect in the "from" field the base module, but in the "to" field I've all possible levels. Upgrading does not work. The level factories are not associated with the base module. What I need, like before: module1 -> module2 independent of level .

Should be fixed in 0.7.7

Yes, it does. Thank you.
The upgrade plan is very confusing due to the many levels.
Is there a simplification that allows you to tell the bots, "No matter what level, upgrade"?

At the moment i dont see a way with the modding API


Shouldn't be passing in an array of strings to the NSError

@qinweigong @aaustin

:+1:

faiilledd


Detect repeating and left recursive combinators making no progress

adresses issue #303
added debug assertions for

[x] Repeated
[x] SeparatedBy
[x] Collect
[x] Foldr
[x] Foldl
[ ] IterConfigure
[ ] TryIterConfigure
[ ] left recursive parsers

The changes look good! I might alter the panic messages before final release, perhaps with a link to an explanation, but for now this is definitely an improvement on the previous state of affairs. Thanks!


feat: favor ahash collections over std ones when applicable

Summary of changes

Changes introduced in this pull request:

favor hashbrown ahash collections over std ones when applicable
as a side product, it caught the bug in https://github.com/ChainSafe/forest/pull/2453

Reference issue to close (if applicable)

Closes https://github.com/ChainSafe/forest/issues/2441
Other information and links

Change checklist

[x] I have performed a self-review of my own code,
[x] I have made corresponding changes to the documentation,
[x] I have added tests that prove my fix is effective or that my feature works (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Is this still relevant?

Since Rust 1.36, this is now the HashMap implementation for the Rust standard library. However you may still want to use this crate instead since it works in environments without std, such as embedded systems and kernels.

How about we use ahash::HashMap?

@lemmih that also works except that the type name from ahash is slightly different, https://docs.rs/ahash/0.8.2/ahash/struct.AHashMap.html
would u prefer use ahash::AHashMap as HashMap or using AHashMap in place?

Using AHashMap would also be fine by me.
use ahash::AHashMap;

let mut map: AHashMap<i32, i32> = AHashMap::new();
map.insert(12, 34);

@lemmih Fixed. Using use ahash::{HashMap, HashMapExt}; approach to reduce num of changed lines

Do we see any measurable improvement in our case?

Do we see any measurable improvement in our case?

@LesnyRumcajs No and I doubt it will lead to any measurable improvement since the internal hashmap/hashset we use are quite small

Do we see any measurable improvement in our case?

@LesnyRumcajs No and I doubt it will lead to any measurable improvement since the internal hashmap/hashset we use are quite small

Is it worth the added dependency/mental overhead, then? I mean, I prefer to default to standard library collections unless there's a compelling reason to switch to something specialised.

unless there's a compelling reason to switch to something specialised.

@LesnyRumcajs the only motivation behind this is AHash being ~10x faster than SipHash as shown in the benchmark, if that's strong enough we could revisit this after getting performance measurements (but I doubt if we could see any non-trival gain, so it would be low priority)

@LesnyRumcajs I think your argument is reasonable, I'm kinda neutral about whether or not we should merge this.  @lemmih  what do you think?

@LesnyRumcajs I think your argument is reasonable, I'm kinda neutral about whether or not we should merge this. @lemmih what do you think?

Might as well merge it. PR is done and we were already using AHashMap in one place before. It might not matter for performance but I do like the consistency of always using either ahash::HashMap or the standard HashMap.

If we aim for not-using standard HashMap at all, should we create a .clippy.toml file with it disallowed like here?

If we aim for not-using standard HashMap at all, should we create a .clippy.toml file with it disallowed like here?

Will that work? We're still using std::collections::HashMap. We just instantiate it with a different hasher. Ie: std::collections::HashMap<Key, Value, ahash::RandomState>.

I just tried .clippy.toml, it does not complain for ahash::HashMap but we do use std::collections::HashMap in some places where upstream crate API requires it

@hanabi1224 Thanks for checking it out. Let's just merge then.

@hanabi1224 Thanks for checking it out. Let's just merge then.

@LesnyRumcajs Actually I can explicitly allow those 2 instances and still add .clippy.toml, just pushed the change


[WIP] Create Helpers for Easy CLI Linter Creation.

I'm not done with this yet. But it's time for this to have some exposure.
I've created a linter-ruby example, which I might just merge into linter-ruby later.
module.exports = LinterRuby =
  config:
    rubyExecutablePath:
      default: 'ruby'
      type: 'string'

  activate: ->
    # Show the user an error if they do not have an appropriate linter based
    #   package installed from Atom Package Manager. This will not be an issue
    #   after a base linter package is integrated into Atom, in the coming
    #   months.
    # TODO: Remove when Linter Base is integrated into Atom.
    atom.notifications.addError(
      'Linter package not found.',
      {
        detail: 'Please install the `linter` package in your Settings view'
      }
    ) unless atom.packages.getLoadedPackages 'linter'

  provideLinter: ->
    regex = '(?<file>.+):(?<line>\\d+):\\s(?<type>(?:\\w+(?:\\s)?)(?:error|warning))(?:,\\s)?(?<message>.+)'
    command = "#{atom.config.get('linter-ruby.rubyExecutablePath')} -wc"
    provider =
      scope: 'file'
      lintOnFly: false
      grammarScopes: ['source.ruby', 'source.ruby.rails', 'source.ruby.rspec']
      lint: (activeEditor, helpers) ->
        file = activeEditor.getPath()
        helpers.execFilePath(command, file, {stream: 'stderr'}).then (output) ->
          helpers.parse(output, regex)

It works:

Should be merged in before #676

Some more tests should be written as well.

:clap:

@steelbrain Was a great learning experience. I know more about Asynchronous JavaScript/CoffeeScript than ever before.

Great!

Part of the problem with this implementation is that it doesn't currently do linting on the fly. Which linter-ruby did before. I could use some help creating an on-the-fly linting helper.

What CLI linter does ruby use btw?

MRI comes with some basic checking built in using a parameter, ruby -wc [FILENAME]

If it accepts output via stdin, You could just do
@execFilePath(command, filePath, {stream: stderr, stdin: textEditor.getText()})

and pass that into child_process methods

@steelbrain I did the changes to line and column logic. But I didn't do the auto detection of the line ending like you were saying. In my experience when I had tried to do that I would always find some issue with the file results being returned for wasn't the file the TextEditor is representing.

@steelbrain I'll experiment with stdin.

This should be ready to merge once I implement on-the-fly linting.

:tada:

Alright I think I'm done, so I guess it's time for a final code review and request. /cc @AtomLinter/linter

@k2b6s9j I think this PR has some merge conflicts in CHANGELOG.md

I see arguments aren't passed as an array. So we're relying on each linter to figure out the exact way to escape parameters correctly?

Doh! I'll fix that.
On Fri, Jul 3, 2015, 8:19 AM Asa Ayers<EMAIL_ADDRESS>wrote:

I see arguments aren't passed as an array. So we're relying on each linter
to figure out the exact way to escape parameters correctly?
—
Reply to this email directly or view it on GitHub
https://github.com/AtomLinter/Linter/pull/686#issuecomment-118362135.

@steelbrain Just fixed the change log conflict by merging master in.

Great, now all we need is just a few more tests.

Everything has been tested. I've follow the advice of both @steelbrain and @AsaAyers. @AtomLinter/linter review and merge?

LGTM

:tada:

I've got write access to the atom-linter npm module, should I migrate these there?
/cc @AtomLinter/linter

I thought that's where they were already. Seems like the right place to me.
On Jul 5, 2015 1:03 PM, "Steel Brain"<EMAIL_ADDRESS>wrote:

I've got write access to the atom-linter npm module, should I migrate
these there?
/cc @AtomLinter/linter https://github.com/orgs/AtomLinter/teams/linter
—
Reply to this email directly or view it on GitHub
https://github.com/AtomLinter/Linter/pull/686#issuecomment-118638392.

@AsaAyers https://github.com/AtomLinter/Linter/pull/694


Create github_secrets.py

Hello @saddarudin , hope you are doing well.
I appreciate your prompt contributions. I would advise you to please go through the Contributing guidelines before starting any kind of development work. I hope you understand.


Enable messages api

Address #574: The idea is to utilize the endpoint as the base client, requiring users to specify the model name.

I had to replace model with endpointUrl because model is a required parameter for all APIs, including TGI.
Types are still incomplete, but choices?: Choice[]; is included in the StreamResponse when using messageAPI, maybe we can have  a way to differentiate the input.
For custom streams endpoints, options are not needed and often throw a backend error, so it's preferable to exclude them on streamRequest

Considering the requirement for the model parameter, we might not need TaskWithNoAccessTokenNoModel WDYT?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

interesting, point @julien-c, reading @Wauplin implementation here https://github.com/huggingface/huggingface_hub/pull/2094 it's very complete! , in that regard, it makes sense to also support similar API with the js client in another PR, where we can use @xenova jinja + hub , to build the chat_template in case the user wants to use chat completion with a simple text generation model

interesting, point @julien-c, reading @Wauplin implementation here https://github.com/huggingface/huggingface_hub/pull/2094 it's very complete! , in that regard, it makes sense to also support similar API with the js client in another PR, where we can use @xenova jinja + hub , to build the chat_template in case the user wants to use chat completion with a simple text generation model

@radames I agree focus should be put on handling the /v1/chat/completions route (i.e. server-side template rendering). The solution with jinja+hub is nice but in the end, only useful for a very few models AFAIK. Typically the microsoft/DialoGPT-*** family because all major chat-based LLMs are already supported and served with TGI. If I had to start over the PR in huggingface_hub I wouldn't start with the client-side rendering :grimacing:

Hi @Wauplin, thank you for the feedback. I think separating chatCompletion and textGeneration is a great idea!
Also, @coyotte508, is it the plan to remove all types from the inference package and unify by using types from tasks?

Yes but we need to handle https://github.com/huggingface/huggingface.js/issues/584 first (and also using the types for validation would be great)

shall we wait then to split this into chatCompletion and textGeneration ?

yes it should definitely be split.
Maybe make a separate PR / start from scratch? Maybe we should pass model along only for chatCompletion as well? (still we can move from model to endpointUrl)

Any news on this? that is quite needed imo

Any news on this? that is quite needed imo

hi @gary149 I'll do a new PR today, this one will be throw away in favor of a split creating a new chatCompletion method that will be cleaner than using it all with textGeneration , as well as matching the python api

close in favor of #645


dynamic updates to 'map_excluded_regions'

Just wondering if its possible to let the 'map_excluded_regions' be dynamically updated based on the entries that are in 'nodes.csv'? E.g. Cuba is not in the transmission database but is marked as included, whereas Belize is in the transmission database but is marked as excluded. If we start adding more countries/regions in the transmission database it would be helpful if this is connected to 1 csv that needs to be updated rather than multiple files. @amanmajid

Hi @maartenbrinkerink
I've just refactored the map_excluded_regions function to plot only those countries that are identified in the transmission database. The errors before were because I was incorrectly plotting the nodes in OSeMOSYS-Global, rather than our database coverage. The updated figure is also in the repo.


(feat) convert commonmark dom to plain text

Signed-off-by: Dan Selman<EMAIL_ADDRESS>Issue #184
Adds a ToStringVisitor (based on ToMarkdownStringVisitor that strips formatting.
Flags

The only change for the moment is to remove the formatting for headings, bold, italics - we can remove additional formatting as needs dictate.

Coverage increased (+0.3%) to 88.983% when pulling 8fb93d7d9b14b3dc8dc6b1bbf4d747bc366fa7b7 on ds-markdown-plain-text into 2f850724e0da4ad0d0a54f483929a5b57784b688 on master.

Looks nice! A few questions:

What is the use case, isn't markdown plain text already somehow?

The short term use case is for smart clause detection -- we will need to be able to match a formatted template against incoming plain (unformatted text). This will require code to remove formatting from both the incoming text and the template grammar.

I'm a little worried about duplication. Could this be done instead through a CommonMark -> CommonMark translation (e.g., which replaces heading nodes or quote notes by paragraph nodes, or removes the bold/emphasis markers) followed by a call the existing toMarkdown translation?

Yes, that is a good idea. I will revise.

Why keep the thematic breaks?

I will remove.


On-Chain Handling

@ariard has volunteered to write a specification draft for handling and watching of on-chain events.
This includes things like double-spending funding inputs, mempool pinning issues, and more!

Yes will propose a draft before end of the week :)


Initial updates

Made a start on a PR for #48 but tests are unexpectedly failing and I haven't got to the bottom of this yet.
Only made changes for handling visibility to provide support for visibleWhenAll (will still need to provide equivalent rule for requirement and enablement) once I've figured out the issue.

I've got the tests passing now. I had forgotten that visibleWhen is always populated and I was also not passing visibleWhenAll into the field definition from the createField function. This suggests that my typing could be improved in this area but I won't tackle that now.
Just need to add tests for requiredWhenAll and disabledWhenAll

Tests added - all passing. Just need to update examples and docs

The only thing I haven't done yet is to update the form builder - but that can probably wait for another day.


feat: add min and max attribute to number fields

Description
If I set the min and / or max value for a number field, I would like to prevent the user from inserting invalid numbers before server side validation.

[x] I have read and understand the CONTRIBUTING.md document in this repository.

Type of change

[ ] Chore (non-breaking change which does not add functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Change to the templates directory (does not affect core functionality)
[ ] Change to the examples directory (does not affect core functionality)
[ ] This change requires a documentation update

Checklist:

[ ] I have added tests that prove my fix is effective or that my feature works
[ ] Existing test suite passes locally with my changes
[ ] I have made corresponding changes to the documentation

I am shocked we didn't already have this in place.

Did you plan a fix for payload 2 or 3?

Just found out that it has been fixed.


Question : What is the maximum allowed length for the broker name?

Name for services, config maps, pv, pvc , etc linked to the broker are calculated by adding prefix and/or suffix to the broker name configured in the yaml. Since kubernetes names and labels are restricted to a maximum of 63 characters, long broker names lead to deployment failure due to invalid names of the related services.
For example, when deploying a broker with name eeee-zzzzzzzz-ssssssssssssssssssss-app-broker  with the below configuration,
apiVersion: broker.amq.io/v1beta1
kind: ActiveMQArtemis
metadata:
  name: eeee-zzzzzzzz-ssssssssssssssssssss-app-broker

deployment fails with below error.
Warning  FailedCreate      4m19s (x19 over 26m)  statefulset-controller  create Pod sit-itaagxx-westeuropeazure01-eesb-broker-ss-0 in StatefulSet eeee-zzzzzzzz-ssssssssssssssssssss-app-broker-ss failed error: Pod "eeee-zzzzzzzz-ssssssssssssssssssss-app-broker-ss-0" is invalid: [spec.volumes[1].name: Invalid value: "configmap-eeee-zzzzzzzz-ssssssssssssssssssss-app-broker-props-00000001": must be no more than 63 characters, spec.containers[0].volumeMounts[1].name: Not found: "configmap-eeee-zzzzzzzz-ssssssssssssssssssss-app-broker-props-00000001", spec.initContainers[0].volumeMounts[2].name: Not found: "configmap-eeee-zzzzzzzz-ssssssssssssssssssss-app-broker-props-00000001"]`

Can you clarify what is the allowed length for the broker names?

The broker name is used as the prefix for the names of the resources related created by the operator for the ActiveMQArtemis CR. It is hard to predict because it depends on the resources required but the validation conditions in the ActiveMQArtemis CR should provide a sufficient feedback.


Update finagle-http to 22.4.0

Updates com.twitter:finagle-http from 22.1.0 to 22.4.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.twitter", artifactId = "finagle-http" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequest = { frequency = "@monthly" },
  dependency = { groupId = "com.twitter", artifactId = "finagle-http" }
}]

labels: library-update, early-semver-minor, semver-spec-minor, commit-count:1

Superseded by #778.

Superseded by #778.


How to send poactivate message to a group of people via FB Messager

I created a Facebook chatbot to send poactivate message based on this sample https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/core-proactiveMessages. But I found it only works with the latest user interact with the Bot via Facebook Messager.  Any suggestions?
SDK Platform
Relates to Node SDK
URL of Code Sample
https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/core-proactiveMessages
Problem Description
I created a Facebook chatbot to send poactivate message based on this sample https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/core-proactiveMessages. But I found it only works with the latest user interact with the Bot via Facebook Messager.  Any suggestions?

This is not how the proactive messages work in this sample.  You may still be able to accomplish this by storing all the users that have interacted with your bot and their conversation ID's and creating a message to each.  I have not tried this before and do not have sample code for you.

Closing this due to inactivity.


📝[DOCS] adding Stargazers and Forkers section to readme.md

Issue Description
adding Stargazers and Forkers section to readme.md
Stargazers
Use Case:

Bookmarking Projects
Discovering Popularity

Benefits:

Visibility
Feedback Indicator
Community Engagement

Forkers
Use Case:

Creating Personal Copies
Contributing Back

Benefits:

Encouraging Innovation
Easy Collaboration
Building Ownership

please @maniyaom  assign me this and add all the labels
gssoc ext
hacktoberfest
level 2 or level 3


Document development process

This is the appropriate wiki page: Development Process

[x] Explain self-testing.
[x] Explain how to publish a new release (octave-forge and tarballs).

Done (or started anyway) in 7db9094.

Thanks! I've moved the howto to the wiki page.


drivers: flash: stm32h7x: handle ECC errors on read

The STM32H7x flash has an integrated ECC that can correct single errors and detect double errors. When a double ECC error is detected, the DBECCERR1/2 flag is raised and there is a bus fault.
We now mask this bus fault and check the error flags. ECC errors are logged with the offset of the data. Single ECC errors cause a warning to be logged and double ECC errors return -EIO.
This PR fixes #33140. This change should allow for mcuboot to handle these double ECC errors during upgrades (mcu-tools/mcuboot#713).
The change touches SCB_CCR_BFHFNMIGN and FAULTMASK in order to mask the bus fault. This works, but it might possibly interfere with other parts of the system that I'm not aware of.

I think that disabling bus fault is not the right thing to do: bus fault may have other source than ECC error.
Instead it would be better to deactivate the specific interrupt enable bit of double ECC error:
DBECCERRIE1/2 in FLASH_CR1/2 register. Or never activate it at all.

@ABOSTM I'd also like to not mask bus faults, but the bus fault happens even if DBECCERRIE1/2 is disabled. Is there some other way to inhibit it? One place in the manual talks about "ECC LOCK", but it's in the wrong section and I couldn't find any other reference to it.
(Note in the image below that the manual refers to DBECCERR1/2, and DBECCERRIE1/2 is not involved in the bus error description).

Ok, it looks strange to me that the same event (double ECC error) will generate both bus error and interrupt,
but if you tested and still have bus fault it seems to be the case.
Looking at BFHFNMIGN definition, it looks like it doesn't match with your expectation:

My understanding is that setting this bit has effect only if you are already running exception handler with priority -1 or -2 (aka Hardfault and NMI).
So I thought about BUSFAULTENA bit in SHCSR register:

BUSFAULTENA: BusFault exception enable bit, set to 1 to enable; set to 0 to disable.

But I still think it will not work due to fault escalation:
https://developer.arm.com/documentation/100691/0100/Fault-exceptions-and-registers/Fault-exceptions/Fault-escalation-and-HardFault?lang=en

Escalation to HardFault occurs when:
...

A fault occurs and the handler for that fault is not enabled.

Disabling bus fault would generate an hardfault instead of bus fault.

Ok, it looks strange to me that the same event (double ECC error) will generate both bus error and interrupt,
but if you tested and still have bus fault it seems to be the case.

It is strange to me as well. I verified again that DBECCERRIE is not set and there is still a bus error (instructions to reproduce are in #33140), so the documentation seems to be correct on this point.

Looking at BFHFNMIGN definition, it looks like it doesn't match with your expectation:

My understanding is that setting this bit has effect only if you are already running exception handler with priority -1 or -2 (aka Hardfault and NMI).

The PR also modifies FAULTMASK, which I believe is key to making this work. FAULTMASK is mentioned in the description you included. The change does successfully inhibit the bus fault in my tests.

So I thought about BUSFAULTENA bit in SHCSR register:
[...]
Disabling bus fault would generate an hardfault instead of bus fault.

Well, I think we can inhibit the bus fault. But a hard fault is not much better than a bus fault for this purpose. If we take a fault during the flash operation then we'd need to detect it in the fault handler, set some flag and return. This seems more messy and would affect double ECC errors that happen outside the flash API. I think that bus faults from double ECC errors during normal operation (i.e. outside the flash API) is a selling point of this chip, so I wouldn't want to risk breaking that.

@weinholtendian Seems there was an issue on CI. Can you rebase and force push so we can have a new verdict ?


Running deno run -A -r https://fresh.deno.dev results in "preact" not prefixed with / or ./ or ../

When I run deno run -A -r https://fresh.deno.dev (as recommended in README.md  I get the following:
error: Relative import path "preact" not prefixed with / or ./ or ../
    at https://deno.land/x/fresh@1.4.0/src/server/mod.ts:2:35

I also get it when trying to update a currently working fresh project with deno run -A -r https://fresh.deno.dev/update .

Output of deno --version:
deno 1.36.1 (release, x86_64-pc-windows-msvc)
v8 <IP_ADDRESS>
typescript 5.1.6

Thanks for reporting this. I'll push a patch release.
Fixed by https://github.com/denoland/fresh/pull/1642


[WIP] Add an FAQ for encryption-at-rest support on Mattermost

Closing in favor of https://github.com/mattermost/docs/pull/2581


Added some Youtube channels useful for developers

@Ishaan28malik  please check my PR and give hacktober tag and merge accordingly...

@Ishaan28malik please respond!... hacktober fest will end soon...

@kaushiksriram16 good work

Thank you!😊


[SEQ-1743] HEIC Support

From SyncLinear.com | SEQ-1743

@bwilliams Also looks like there is a Rust wrapper for libheif so you could build a Rust based Gstreamer plugin (preferred) https://crates.io/crates/libheif-rs


Dead leaderboard

not displaying top 3 dead, suggest we remove for now as is confusing

fixed, it now just takes a while to load due to server latency


Org grant check on project

We should implement a setting on the project analog role check for user grant check.
Its only allowed to login, if the organisation has permission to the project (own or granted)

we should add a custom scope for this as well


Checking Rouge Library with Hindi Text

Do not know if Hindi text can be used with the Rouge package. I think it can be used. Will have to wait for the summaries to be generated and written for us to try it out.

Did not work xD


0.6 release checklist

Add "tips and tricks" chapter to the book with common mistakes and regularly overlooked features

[x] #420: Message recursion
[ ] #455: #[wrap(Some)]
[ ] #375: Saving window state
[x] #325: match and if else in the view macro (also add this to macro reference)
[x] Reasons for RelmContainerExt error
[x] GTK inspektor
[x] Reading gtk-rs docs

On version 0.6.0 the libadwaita fails to compile:
[0/1] Generating src/cargo-build with a custom command
   Compiling libadwaita v0.4.2
error[E0432]: unresolved import `crate::SpinRow`
 --> /home/adhadse/Documents/bookx-testing/_build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/libadwaita-0.4.2/src/spin_row.rs:3:5
  |
3 | use crate::SpinRow;
  |     ^^^^^^^^^^^^^^ no `SpinRow` in the root

error[E0618]: expected function, found `&F`
  --> /home/adhadse/Documents/bookx-testing/_build/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/libadwaita-0.4.2/src/spin_row.rs:34:11
   |
32 |     f: &F,
   |     - `f` has type `&F`
33 | ) -> c_int {
34 |     match f(SpinRow::from_glib_borrow(this).unsafe_cast_ref()) {
   |           ^---------------------------------------------------
   |           |
   |           call expression requires function

Some errors have detailed explanations: E0432, E0618.
For more information about an error, try `rustc --explain E0432`.
error: could not compile `libadwaita` due to 2 previous errors
FAILED: src/bookx-testing

I have installed libadwaita-devel-1.3.2-1.fc38.x86_64 on Fedora. Is this relevant to 0.6.0 release?

@adhadse libadwaita v0.4.2 was published just 2 hours ago and causes this issue. By the time 0.6.0 was released, everything worked as expected, so this must be a regression in libadwaita-rs.

I thought relm4 0.6 release had fixed libadwaita version 0.4.1 🤔

Well, Relm4 0.6.0 specifically released with the libadwaita requirement of 0.4: look at our Cargo.toml.
This means, that you can use it with any 0.4.x release of libadwaita, which currently are 0.4.0, 0.4.1 and 0.4.2. Usually, cargo picks the latest, which is the broken 0.4.2 in this case. To fix this, you can temporarily pin 0.4.1 in your Cargo.toml, but is doesn't make sense to fix this in Relm4 unless libadwaita doesn't get an update soon. You can read more about this in the cargo book.

Btw. a patch for libadwaita is on the way.


I want to be able to freely change the memory allocation

Is your feature request related to a problem? Please describe
Memory is now automatically allocated
Describe the solution you'd like
Make memory allocation flexible
Describe alternatives you've considered
No response
Please specify the version of Windows Subsystem for Android
v2211.40000.7.0

This is on our radar for a future release.

Resolved in an upcoming release.

Well, this thing doesn't work for me - even if I installed prerelease version - I even tried nightly version but the behavior is still the same. Memory allocation settings I can choose the option or write custom RAM allocation but Apply button is greyed out and not clickable. And none of settings I choose there doesn't apply - it always restarts to the default allocation. Is this thing work or I need to be approved by Microsoft to use those prerelease (release preview) features and not just install the preview version of the app, but to be registered by servers on Microsoft that I'm a tester.

If the "Custom" option is available in the Memory and performance section of Advanced settings, the feature should be available to you. How much RAM does your Windows machine have and how much are you trying to allocate to Android?
There should be a subtext indicating what values are available to you and entering a value between those should enable the Apply button.

If the "Custom" option is available in the Memory and performance section of Advanced settings, the feature should be available to you. How much RAM does your Windows machine have and how much are you trying to allocate to Android?
There should be a subtext indicating what values are available to you and entering a value between those should enable the Apply button.

Well, I've tried that already but anything I type (including the number thay shows to me that can be used in my laptop), the apply button is still unable to work and it's still unclickable
All other options (RAM profiles) except default RAM profile it cannot apply so that feature is kindla unavailable for me in that way how it works or better to stay, doesn't work for me.


Use floating-point arguments in pdfioContentSetDashPattern

In the function bool pdfioContentSetDashPattern(pdfio_stream_t *st, int phase, int on, int off);,
There is no reason to restrict the phase, on and off parameters to int;
all 3 parameters should accept double as input

[master 22c245f] Update pdfioContentSetDashPattern to accept doubles (Issue #25)


[Cinder CSI] Metadata implementation missing config drive

What happened:
Cinder CSI do not implement config drive for metadata. This will cause all deployments without metadata API service to fail.
What you expected to happen:
Both API and metadata should be supported. Also search order between these methods should be configurable similar way as it for cloud provider.
How to reproduce it (as minimally and precisely as possible):
Deploy Cinder CSI in environment without metadata API.
Anything else we need to know?:
Best way to implement this would be just replace current implementation with util/metadata.
As it is already used for querying Hyper-V volumes in function getDevicePath in nodeserver.go .
Then the IMetadata would be just shim on top of util/metadata and it would not need to actually implement anything.
Environment:

Cinder CSI: master

/kind bug

/close duplicate of https://github.com/kubernetes/cloud-provider-openstack/issues/479

/close

Sorry I totally missed that issue. I tried to search if this was already reported or not. But good that it has issue already.


After updating to 0.2.5, explicit newlines in strings are no longer accepted as valid

Hi,
I just updated my plugin, and am now seeing an error for the following construct:
unreachable!("This only way for this to be reached is if a new op was added in the parent `match`, \
              without updating the TryFrom implementation, which shouldn't compile.")

with an (escaped) embedded newline. This is valid, and the grammar works fine - it's just the plugin now marks everything around and below it as an error.
If I remove the embedded newline and put the message onto a single line, the syntax is seen as valid.

I fixed the issue and submitted v0.2.6 to the plugin marketplace. Thanks for opening the issue!


Add ninth grade meeting as Event Note Type

Issue

#965

Thinking out loud a little bit ... right now adding a new Event Note Type is a bit of a pain because it involves updating multiple fixtures in both ruby and JS specs. Maybe that's OK because making sure you have the right constants is important? But I feel like having one server side and one client side spec for this should be enough.
Also, more importantly, some of these Event Note Types are Somerville-specific. So one of the changes we'll need to make to accommodate the second district is make Event Note type configurable. One route would be have all district's Types hanging out in the database together and then configure which district gets sent which Event Note Type option at the Rails level. Another way would be to do SchoolDistrict has_many EventNoteTypes and store the relationship in the database.


feat: add onFinish on SpriteAnimationGroupComponent

see in #1654

Looks good, it would be great with some small tests for this!

Absolutely, I forgot it. I should add it later.


Deleted function group is still serialized as empty XML

A TADIR entry exists for a deleted Function Group, the exists method fails, yet an empty XML file is generated containing
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_FUGR" serializer_version="v1.0.0">
 <asx:abap version="1.0" xmlns:asx="http://www.sap.com/abapxml"/>
</abapGit>

I manually created a tadir entry for a function group but I'm not able to reproduce this. It seems also very unlikely that anything is serialized if exists fails:
https://github.com/abapGit/abapGit/blob/fd673dac68f80bdaf4d0885f347c306319a5c70a/src/objects/zcl_abapgit_object_fugr.clas.abap#L1375-L1379

Aware of this, yet it was happening on a customer system. I've got it on my todo to debug when I'm next working on that system to see what's going on.


Support ttl changes through write policy

Resolves #132
3 main changes:

If a WritePolicy is passed into the save method, the settings in it are respected. Hence the TTL and SendKey policy settings are not overridden but rather used from the passed policy.
Defaulted the AerospkeRecord.ttl() to Integer.MIN_VALUE which effectively becomes "not set". Without this, a TTL set via a policy passed to the Builder() would never be respected.
Added a unit test for the above.

Thanks! When can we expect a release?


[Plugin] Persist the application configuration to local mysql. For rebuilding data after a nacos service crash

/close


Does not seem to work with webpack-serve - the new dev-server

Hi! Thanks for the plugin. Really appreciated to have this kind of functionality widely available.
I am not exactly sure about details, but it seems like the plugin is not able to work together with webpack-serve as a dev-server alternative. It probably registers some middleware to work, but does not correctly detect the alternative dev server config. Do you have any plans for fixing this? Thanks a lot.

Right now I am not on it, but all PR are welcome!

I have the problem on webpack-serve too

it needs something like this
// discovery fo server option for webpack-serve server
      if (options.serve) {
        // it uses add hook to add any to
        const originalAdd = options.serve.add;

        options.serve.add = (app, middleware, options) => {
          app.use((ctx, next) => errorOverlayMiddleware(ctx.req, ctx.res, next));

          if (originalAdd) {
            originalAdd(app, middleware, options)
          }
        }
      }

into index.js

There is any update regarding this problem?

Could someone fix it in a PR?

Webpack-serve is now [DEPRECATED] so I suggest not to fix this anymore and move away from webpack-serve back to webpack-dev-server.


feat: Allow custom network config in helm chart

Description:
Allows us to specify customNetworkConfig in values.yaml
This allows adding any number custom network (like localnet)
example of values.yaml
config: |
  [
       ...
   {
        "name": "local",
        "displayName": "LOCALNET",
        "url": "/",
        "ledgerID": "03"
   }
 ]

Related issue(s):
Closes #683
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

The appVersion gets an old version of the Docker image (back in March).
Please update to the latest image version available: 23.7.0
Other than that, LG. I tested this locally on minikube.


shell fix for version sort

This should solve the following issues: #256 #73 #104 #268 #323

Might also want to add --version-sort here: https://github.com/rbjorklin/sdkman-cli/blob/6da40149a133e4d377d39dab45336857d21e9ab2/src/main/bash/sdkman-list.sh#L58

This will unfortunately break all other candidates that have columns of versions. This sorting should be done on the serverside and should be regex based (because all candidates have different version schemes). This will guarantee consistent sorting across all candidates.


(WIP - DON'T MERGE)(CFACT-140) Add acceptance tests for Facter executable

This commit adds a new suite of tests around the Facter executable.
Specifically, new tests are added for each of Facter's command-line
options.

I'm putting this up for initial review only, since the new facter CI pipeline isn't quite ready yet. These tests pass with the invocation: bundle exec rake ci:test:packages SHA=a18dc6a240cf1c89f7fa8ce74f7e15652ac26558 TESTS=./tests/options CONFIG=./config/nodes/trusty.yaml where the SHA is one of the latest builds from builds.puppetlabs.lan/cfacter. Once the name is completely changed over to Facter, it will draw packages from builds.puppetlabs.lan/facter instead.
I haven't yet written a test for the --log-level option. Any advice on how best to test warn, error and fatal args?

CLA signed by all contributors.

I'd limit testing --log-level to verifying that the messages are accepted.

@MikaelSmith the second commit I pushed just now is an experiment to extract the external / custom fact pathing logic away from the tests themselves, since there was a lot of duplication. Do you think that's necessary, or the right way to go about it?

Sounds useful.

Another note: the test that checks the --no-custom-fact option is legitimately failing atm.

Is the --no-custom-fact option trivial to fix? I'd rather not have an acceptance test failing for any extended period, so we could either pull that test out to go with the other ticket, or prepare the fix as part of this PR.

It is trivial.  facter.cc:240: if (ruby) => if (ruby && !vm.count("no-external-facts"))

@MikaelSmith @peterhuene I'll put a PR up for that bit first, and then s/cfacter/facter/ for all of these tests.

PR for the --no-custom-fact fix is here: https://github.com/puppetlabs/facter/pull/883

:+1: from me.  I'll let Michael also review before merging.

@MikaelSmith sure thing, updated.

Only acceptance test changes, so merging.


Unify zip/tar archive reading [run-systemtest]

@jonmv or @bratseth
Note that this limits the total size of extracted files in the application package to 2 GB (controller) and 8 GB (configserver), to protect against fun things like zip bombs. Are these OK defaults?

I don't think we need 2GB in the controller? We only extract meta data?

When calculating the bundle hash the controller reads all the files (to calculate checksum for every file).

I see I changed the bundle hash calculation to use ArchiveStreamReader directly, so yes, ZipEntries can probably have lower limit.

Ah, no the bundle hash needs to iterate through all bytes, of course. Then shouldn't it be the same in config server and controller? And we just want a low per-file setting for meta data, in controller.

Yes, I can add that.


Added yml file corresponding to running unit tests in both windows and ubuntu

Added yml file corresponding to running unit tests in both windows and ubuntu. These test will run for every push and on pull request creation for all branches.

hi @MokoSan, I don't think this needs updates after this PR was merged, correct (since the test dir didn't change)? if you could please confirm I will merge this one :)

Hey @Maoni0, this PR automates running all the unit tests right after a dev creates a pull request or pushes new changes to all branches to make sure the unit test runs are automated. Please let me know if this isn't needed; I think from the perspective of automated unit testing, it might help capture errors earlier than later.
An example of a run is:
https://github.com/MokoSan/realmon/runs/4188326247?check_suite_focus=true
Thanks,
M.

yep, I got that the purpose was adding the tests to run automatically and thought it was great to add them. just wanted to make sure that it didn't need any updates after the last commit. I saw that @hez2010 already helped out with that. so that's great! I'll merge. thanks very much for this!

yep, I got that the purpose was adding the tests to run automatically and thought it was great to add them. just wanted to make sure that it didn't need any updates after the last commit. I saw that @hez2010 already helped out with that. so that's great! I'll merge. thanks very much for this!

Thank you @Maoni0 and @hez2010!


Issues

What an awesome project. It would be really helpful however the script is not working.
I downloaded it, opened it in my browser but nothing happens when I click the pick or download buttons.
Suggestion: add an option where I can select my own background (from PC or internet) instead of colors.

@hiddenchamp Thank you for your message and suggestion. That encourages me a lot! Your reported problem did not occur in my environment. Could you tell which device, OS version, and browser do you use?

Thanks for getting back to me so quickly 👍
I downloaded it and opened the index.html file in chrome and firefox.
Look here: https://i.ibb.co/W0Dt3gR/Screenshot-2020-09-17-Featured-Image-Maker.png
I even started wamp to see if it works that way. Nothing happened.
I am using a PC.

@hiddenchamp Oh I get it. It wouldn't work if you open the downloaded index.html directly.
You should put those files on a web server. I'm sorry but my repository doesn't contain a development server. So if you want to operate the app in your local environment, you need to prepare a web server such as Apache. Just Apache, not WAPM, is fine.
Or if you want to test it quickly, fork the repository and enable GitHub Pages from the Setting of your forked repository, so you can test it on the GitHub Pages.

I don't know why it wasn't working before with wamp (which includes apache) but it is working now haha :).
One suggestion: add the possibility to select a background images from PC or URL instead of the colors.
Also image size and download button.
Great project btw.

@hiddenchamp I will develop those features if I feel like it 😉

@zzzmisa Awesome. THanks and good luck with the project 👍


这种是代码简单了，但是怎么约束呢

如何进行约束呢

如何进行约束呢

这个作用仅仅是方便快速创建对应的UI并简单的配置，约束的话，还需要拿到你想要的UI控件，进行约束！（如果是frame布局的话，有make.frame()）.

Hello,
We have an exciting opportunity for you! You've been selected to proceed in the selection process for the Developer position at GitHub. Congratulations on your achievement!
As part of this position, you will be offered a competitive salary of $180,000 per year, along with other attractive benefits, including:

Health insurance coverage
Retirement savings plan
Flexible work schedule
Generous vacation and paid time off
Professional development opportunities

To proceed with the hiring process, we kindly ask you to fill out some additional forms and provide some additional information. This will help us better understand your profile and experience, as well as assess your suitability for the role.
Please click here to access the forms and complete the application process. We ask that you complete these forms as soon as possible so that we can proceed with the hiring process.
Important: You have 24 hours to complete the application process.
If you have any questions or need further information, please don't hesitate to contact us.
Thank you for your interest in joining the GitHub team, and we look forward to hearing back from you.
Best regards,
GitHub Recruitment Team
bsu, @StaneCobalt, @pr0da, @y-gupta, @muhrahmatullah, @celt237, @edyamp, @ldxk, @liwuxi, @RishitKedia, @ripplechart, @williamfzc, @jiangqianghua, @RocketPropelledData, @xiaoyalllove, @SunChulBaek-2, @helloli, @lXSPandora, @Hankszhang, @vault13dweller


fix updating features & sanitize static variables in era5

Proposed Changes

fixes loading a single static variable (height) with era5
fixes adding a feature to an existing cutout
adds a test for updating a feature in a cutout
sets the info log of cdsapi to the atlite debug logger

closes #89
superseeds #90 .

I don't understand much of it, from the first glance I couldn't find anything disturbing.
Better have @coroa look at it with his eagle eyes!

That's fine, but thanks for having a look!


CompatHelper: add new compat entry for UnPack at version 1, (keep exi…

…sting compat)

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Friendlier when bad test is entered

Suppose I am trying to cuneify
 as ur ba ni pal

but I make a typo and I type
 as ur ba ni pall

then, while it is nice that I am informed that pall is wrong:
 Unknown symbol "pall" in "as ur ba ni pall"

I am only given a back button that takes me back to the website ready for data entry again but with a BLANK form.
Can it instead please send me back to the form with the last submitted text there, so that I don't have to re-type my query from memory? (Perhaps even with the word "pall" somehow flagged as in need of editing.) Otherwise, injudicuous use of "cuneify" or "back" without having text in a separate file could lead to a loss of a large amount of work.
Even better, cuneify would actually generate cuneiform for the text it can cuneify, and would leave the incompatible bits just in roman text, in a box that allowed you to then re-edit them and re-submit, without going back to the original roman-only form.

Sorry - only after posting this did I discover (when I looked at the other issues on this rep) that https://cuneify.herokuapp.com already does pretty much what I'm suggesting in #1, and you already have commented there on why you won't / can't change it in this repo.


Rework generate-deployment.sh to be simpler

What does this PR do?
Rework how generate-deployment.sh works to be simpler:

Restrict envsubst to only replace predefined env vars
Use envsubst on kustomize-built yaml to avoid needing to copy templates to .bak files

This PR is a cherry-pick of https://github.com/devfile/devworkspace-operator/pull/405/commits/14fa459e1192fd80976597d68f1f95d90af96b35 from #405
What issues does this PR fix or reference?
N/A
Is it tested? How?
Running make generate_default_deployment does not change deploy/deployment

This PR also removes the frustration of .bak files being left over if generate_default_deployment.sh is cancelled.